Allow to create missing flags/ switches / samples from JS

If one checks the state of e.g a flag via the wafflejs tag as per documentation (and only in JS), then the flag isn't looked up directly and thus not auto-created even if WAFFLE_CREATE_MISSING_FLAGS is set.
We can probably implement this, via an extra query in JS... But, I think the overhead (and potential security issue) will make this "DEBUG only feature", or maybe we let the user decide and only issue a strong warning in the docs?

Given the security concerns, I would personally never use this functionality. I am not in favor of adding support for this.


[ ] HttpRequest missing attributes
[ ] HttpResponse missing attributes
[ ] Manager missing attributes
[ ] Message missing attributes
[ ] Realm missing attributes
[ ] RealmEmoji missing attributes
[ ] RedisUtilsTest missing attributes
[ ] UserProfile missing attributes
[ ] QuerySet related
[ ] Incompatible Promise
[ ] Message is not indexable
[ ] UserProfile is not indexable
[ ] UserProfile is not str
[ ] Settings missing attributes
[ ] RealmAuditLog incompatible type
[ ] QueryDict is immutable
[ ] HttpResponse incompatible return type
[ ] QuerySet incompatible return type
[ ] QuerySet generic
[ ] Type narrowing

[attr-defined]	"HttpResponse" has no attribute "url" zerver/tests/test_signup.py:5754

I assume these are for checking redirects? I bet we could address this class of things by adding an test helper
self.assert_is_redirect_with_url(result, "https://example.com/...")
The migrations also seem like they'll benefit from common code.

Adding assert isinstance(repsonse, HttpResponseRedirect) suffices to make mypy aware of response.url.

Cool, merged #22152 for the redirects issue, which is a pretty big chunk of errors :)

A similar big chunk of errors is "HttpResponse" has no attribute "json" in the tests. Most of these could be dealt with using the return value of assert_json_success or get_json_error:
--- a/zerver/tests/test_zcommand.py
+++ b/zerver/tests/test_zcommand.py
@@ -31,4 +31,4 @@ class ZcommandTest(ZulipTestCase):
         result = self.client_post("/json/zcommand", payload)
-        self.assert_json_success(result)
-        self.assertIn("Changed to dark theme", result.json()["msg"])
+        success = self.assert_json_success(result)
+        self.assertIn("Changed to dark theme", success["msg"])

To rebase, https://github.com/typeddjango/django-stubs/issues/977#issue-1255617814 needs to be resolved first.

A similar big chunk of errors is "HttpResponse" has no attribute "json" in the tests. Most of these could be dealt with using the return value of assert_json_success or get_json_error:
--- a/zerver/tests/test_zcommand.py
+++ b/zerver/tests/test_zcommand.py
@@ -31,4 +31,4 @@ class ZcommandTest(ZulipTestCase):
         result = self.client_post("/json/zcommand", payload)
-        self.assert_json_success(result)
-        self.assertIn("Changed to dark theme", result.json()["msg"])
+        success = self.assert_json_success(result)
+        self.assertIn("Changed to dark theme", success["msg"])

Created #22185 for this

@zulipbot To rebase, typeddjango/django-stubs#977 (comment) needs to be resolved first, as django-stubs does not support mypy==0.960 yet.

Their version bound has already been raised in Git: typeddjango/django-stubs#973. I opened typeddjango/django-stubs#979 to remove the upper bound completely.

Do we want to put django-stubs-ext in common.in?

Yeah, I think that’s right.
We have more entry points where we need to call django_stubs_ext.monkey_patch(). It’s probably enough to call it at the top of zproject/settings.py, but we’ll have to see if all our django.setup() calls are early enough.

This pull request is currently blocked by:

typeddjango/django-stubs#1086
typeddjango/django-stubs#1072
typeddjango/django-stubs#1037
15five/django-scim2#90

When django-scim2 supports the alternative authentication method, we will need to adjust the middleware in a separate PR as well.

zerver/lib/rate_limiter.py:533: error: Incompatible return value type (got "_VT", expected "List[Tuple[int, int]]")  [return-value]
zerver/lib/rate_limiter.py:533: error: Invalid index type "str" for "dict"; expected type "_KT"  [index]

This seems to be a django-stubs plugin bug: typeddjango/django-stubs#312.

zerver/lib/rate_limiter.py:533: error: Incompatible return value type (got "_VT", expected "List[Tuple[int, int]]")  [return-value]
zerver/lib/rate_limiter.py:533: error: Invalid index type "str" for "dict"; expected type "_KT"  [index]

This seems to be a django-stubs plugin bug: typeddjango/django-stubs#312.

That looks like the case. Looking into a fix.

Your latest rebase has undid the fixes I pushed here yesterday. I’ve put them back (diff).

An unsatisfying setattr should make the attribute error for scim_user go away. Before this gets fixed upstream, I think we can additionally reset request.user to AnonymousUser with a custom get_is_authenticated predicate.

I’ve reordered and squashed some of the commits to preserve bisectability. I think this is now ready.

I didn't full read models: Implicitly type model fields with django-stubs, which at least needs a commit message tweak; and also I guess the last commit should close the original issue? But I didn't see any significant impediments to merging this (requested a few comment tweaks above).

For reviewing purposes, this is the script that generates c5af1e7dfee1a2d5192cabd04f5399ada2132b15.
#!/usr/bin/bash

# Run this with ./ptmp/patch_models
# This removes all the type annnotations for model fields

set -ex

TARGETS=$(find . -name models.py)
# Remove method type annotations
sed -i "s|:.*\( = models.*\)|\1|g" $TARGETS

@zulipbot add "integration review"

This looks good; did some small edits to the comments and I've tagged this to merge once CI finishes.
Huge thanks for doing this project! It's been a long slog and I think very meaningful for the codebase.

Can you post in #backend an announcement about this having been integrated? And do an edit pass on our mypy documentation to reference that we now do this, perhaps with examples/links that may be helpful.


Handle the old key when writing configuration, but write the new one

Summary
Our current configuration key for the GH app provider is "github-app" which
is problematic to use as a key in protobuf. Let's rename the key to
"github_app", but do it in steps - first, this patch ensures that any
new providers are written with underscore, but the old providers
continue to work. As the next step, we're going to migrate the database
records in order to not risk a race where we migrate the database but
the code would still be creating providers with the old key.
Related: #3569
Change Type
Mark the type of change your PR introduces:

[ ] Bug fix (resolves an issue without affecting existing features)
[ ] Feature (adds new functionality without breaking changes)
[ ] Breaking change (may impact existing functionalities or require documentation updates)
[ ] Documentation (updates or additions to documentation)
[x] Refactoring or test improvements (no bug fixes or new functionality)

Testing
manual + adjusted unit tests
Review Checklist:

[x] Reviewed my own code for quality and clarity.
[ ] Added comments to complex or tricky code sections.
[ ] Updated any affected documentation.
[x] Included tests that validate the fix or feature.
[ ] Checked that related changes are merged.

coverage: 53.158% (+0.02%) from 53.137%
when pulling 575ad828679e78c094f4a2edce4e83ff0f6c8ba9 on jhrozek:github_app_underscore
into 8e16fe5c57fce077aa96f2609cd43dbb19c84c31 on stacklok:main.


Implement VOLUME_CONDITION capability

Describe the feature you'd like to have
Healer Controller checks if a volume is still mounted and usable. To check whether a volume is usable, the CSI driver shall check if filesystem is corrupted, whether there are bad blocks, etc. in this RPC.
Instead of adding a new RPC, we can leverage the existing NodeGetVolumeStats RPC.
In the NodeGetVolumeStatsRequest, there are volume_id, volume_path, and staging_target_path. CSI driver can figure out whether a volume is still mounted based on these parameters.
A new message volume_condition will be added to NodeGetVolumeStatsResponse. A new Node capability VOLUME_CONDITION will be added to indicate whether a CSI driver has implemented this function. In a volume_condition message, there is a boolean parameter abnormal indicating whether the volume is normal or not and a message that describes the details of the volume condition.
What new functionality do you want?
Provide a way to check the volume health status
What is the value to the end-user? (why is it a priority?)
The healer controller can leverage this to auto-fix the volume without user intervention.
Additional context
Read more at https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1432-volume-health-monitor#add-node-volume-health-function

There is already issue exist for this https://github.com/ceph/ceph-csi/issues/1356 .. lets use that.

Here is what we can do to validate volume_condition with different volume mode persistent volumes

FileSystem Volume Mode

if mounter is userspace check if its associated process is running, we can make this by reading MetaStashFile
if FS is writable, Attempt to write something on the target path

Block Volume Mode

if mounter is userspace check if its associated process is running, we can make this by reading MetaStashFile
attempt read first few blocks from the device path

Any other ideas?
@ceph/ceph-csi-contributors ?

@Madhu-1 and I had an opportunity to discuss on this and the idea was to just implement this with a simple stat for now. And additionally for userspace mounters check for ps
Any more thoughts?

@pkalever isnt this issue duplicate of https://github.com/ceph/ceph-csi/issues/1356 ?

@pkalever isnt this issue duplicate of #1356 ?

Nope, this is a subtask, the issue you pointed out intends to implement this for both controller and node, but this issue is only covers node cap. Thanks!

@pkalever isnt this issue duplicate of #1356 ?

Nope, this is a subtask, the issue you pointed out intends to implement this for both controller and node, but this issue is only covers node cap. Thanks!

SubTasks can be part of Parent Issue Tracker.. Will add to that any way.. Thanks .


readme says this is an ascii test but both p5 and p6 scripts use utf8

thanks, i will be adding utf8- and ascii-specific variants so all four read types combination may be compared.


Release mobile app to f-droid

As a free and open source project, its equally important that the software be released onto a platform that supports free and open source software. Releasing the keybase app to f-droid would allow those of us who don't use Google services to be in the loop.

I agree with F-Droid release.
This would also make it available to countries with special rules or whatever excuse making it unavailable through Google Play (like France)

Agreed.

+1 with daily more regular builds please :)

+1

+1 also :)à

Please do not post “+1” messages—it sends a useless notification to whoever has subscribed to this thread—use the 👍 reaction on the first post instead.

@Albirew wait keybase is blocked in France?

@Serkan-devel Not any more, it finally got released on 2017-10-03 (9 days ago).

It looks like pushing an .apk to the mainline F-Droid repo is a nontrivial process - for the app creator and for the F-Droid team.
While keybase/keybase-client is being updated frequently that could be a lot of extra work.
How would it be to publish the Keybase Android app in a simple binary repository users could add through their F-Droid mobile app?

Can pushing apks to the main repo be automated?

Yes! There are multiple ways a repo is checked for new releases. It can be done with repository tags, Looking at the Android Manifest, commit strings and so on.

The current README.md seems to say the code in this repo is not ready for deployment:

Warnings
We'd love you to read our source code.
But - some of the things in this repo are explorations, and the app you build
from source just might not do what it says it's doing.

Are the release-tagged keybase-client source bundles fit for automated build-and-deploy to the main F-Droid repo?
/cc @cjb who cut the most recent releases

Also Sailfish OS devices would potentially be able to use the Android app if it was available on F-Droid or as a separate APK download.

Isn't one of the biggest problems that the keybase android client is not actually licensed under an proper open source licence? (As fdroid requires that)
http://www.gnu.org/licenses/license-list.html#SoftwareLicenses
If it would be, we as community would be able to apply the app for the fdroid base repo: "Note that you can propose inclusion even you are not a developer or maintainer of the proposed application itself" - Fdroid
https://f-droid.org/en/docs/Inclusion_How-To/
Until the license is changed I think we will not see Keybase in Fdroid.
If the licence would be changed the application process is in not more then submitting an issue to fdroid with some base data and wait. (Or help the fdroid folks by commiting an already prepared meta data file)
Hope the see keybase licensed as proper open source soon - L1am0

@L1am0 Why do you say the Android app isn't licensed properly? It's built from code in this repo, which has a LICENSE file:
https://github.com/keybase/client/blob/master/LICENSE

I was pointing out the Fdroid statement that they are compatible with the listed open source licences.
The one in the license file is none of them, so I am not sure if it's compatible. (With the mentioned one it definitely would me) - But that is my not a lawyer point of view.
If anyone is sure it is compatible we could start applying to Fdroid right away by adding it to the queue:
"Proposal by Submission Queue
This is the simplest way to get the application included. But due to an amount of reviewer labor required for each application, this is the slowest method.
Do this by creating a new ticket at the F-Droid Submission Queue on GitLab, add all details required by the minimal issue template; and wait for people in F-Droid team to review the application and do all necessary steps for you."
BR

@L1am0

3-clause BSD is obviously a free software license. It even says so on the page you linked to.
Opening a packaging request is the easy part. So easy, in fact, that it was already done several months ago. Now, someone just needs to do the actual work.

And due to it connecting to a poprietary service, some <a href="https://f-droid.org/wiki/page/AntiFeatures>anti features need to be noted.
/)

That is nice that is already done.
Have not seen it :D
Looking forward having Keebase on my phone (y)

Has any progress been made on this issue? Seems like it's a relatively important one to work on.

I decided to sign up to Keybase but put the progressing in using it on hold for now until I can install Keybase from F-Droid... I didn't realize it expects me to install something from Play Store which I don't generally want to do.

The app depends of privative google play services so I'll test but can be hard to patch it and with google play services is not eligible to F-droid: https://github.com/keybase/client/blob/master/shared/react-native/android/app/build.gradle#L185
https://f-droid.org/en/docs/Inclusion_Policy/

So what are the Google Play services used for?

the GCM for notification I think

Just for reference, here is where Signal added support for running without GCM. I'm not sure if this also required a server-side change, but it's worth noting that there's some precedent for falling back to a non-GCM option gracefully to support devices without Google Play Services.

@jonafato  Signal don't allow include the app on F-droid

@vxcamiloxv I'm aware of that, but that's not because of a hard dependency on GCM. If the concern here is related to GCM, that can possibly be addressed by someone (depending on whether or not the maintainers would accept such a fallback into the app).

Keybase could just roll its own repo.

@zsoltsandor they could also just attach the APK to its corresponding release here. But both wouldn't increase visibility much. It would be much preferred for an app being available in the "main channel" to be found and used easily.
But that's hard to achieve if F-Droid doesn't even get a reply when running into build problems (see the linked issue just above your post). This issue here is open for 2 years now, and still not a single commitment from the team behind the app. That doesn't look promising 😢

It is sad that keybase isn't working on this at all. https://gitlab.com/fdroid/rfp/issues/191

I'd like to add that the lack of a Keybase APK available outside of the Google Play Store blocks Keybase users who don't want to run Google software on their devices. For example, security-conscious users of GrapheneOS have no good way of download a pre-built Keybase client.
Even a really simple download link to a pre-built APK (ideally with a signature) would be helpful.

23 participants, 37 comments of interested users, 159 upvotes, almost 2.5 years – and not one of the team even chiming in for an explanation. I don't know what signal that's supposed to send – but I guess I need not say what impression that leaves with me. At F-Droid, we've meanwhile closed the request for packaging, as without even a single word back in 2+ years, we cannot build it anyway just for the proprietary dependencies alone. Looks like privacy-focused and FOSS-preferring users are not part of the target group here, sadly.

But most GPG users are privacy-focused and FOSS-preferring users. ;-)
But if keybase does not like us, anyway. Have my keys signed since 2004 face to face on Keysign parties & CAcert. And use keys.openpgp.org since SKS Keyserver Network gets attacked.

Considering that keybase opted into Android App Bundle distribution (which requires sharing their private APK signing key with Google), there's no trusted APK source anymore.

Solution here would be providing their own repository for F-Droid's app, Keybase doesn't have to use the official F-Droid repository.

A separate repository is no different from direct downloading an APK, just a little more convenient to get updates. When I get an app from the official F-Droid repository I know that it has no proprietary parts included, and it was built independently using the source code provided.

@Nexion
You're incorrect. First, the download always comes from the same place, you'll get an .apk not a bundle, you can easily get notified of updates and F-Droid doesn't muck up the developer's signatures which means you can update from anywhere later without worries. If anything it's superior to both Google Play and F-Droid official packaging.

When I get an app from the official F-Droid repository I know that it has no proprietary parts included, and it was built independently using the source code provided.

Can you, really? Last I checked most builds weren't reproducible.

@Avamander I didn't say they are reproducible. You can check the build logs, but of course that still implies that you have to trust F-Droid repo maintainers. Whether you trust them or not, it would be really good to have a possibility to build Keybase app without proprietary code included. In that case even if you don't trust F-Droid, you can easily build it on your own.

If they aren't reproducible then you don't really know if it contains proprietary code or not.

Considering that keybase opted into Android App Bundle distribution (which requires sharing their private APK signing key with Google), there's no trusted APK source anymore.

Do you have any source about keybase opted into Android App Bundle?
Anyways, as this issue is open since more than two years already, I wonder if keybase has any interest in releasing a mobile version without proprietary code.
And after a look in their terms of usage, I wonder why anybody would still want to use their service as an "open source" alternative:

CONTENT
When providing Keybase or the Service with content, such as your name, username, photos, social media names, data or files, or causing content to be posted, stored or transmitted using or through the Service (“Your Content”), including but not limited to the Registration Data and any other personal identification information that you provide, you hereby grant to us a non-exclusive, worldwide, perpetual, irrevocable, royalty-free, transferable (in whole or in part), fully-paid and sublicensable right, subject to the Privacy Policy, to use, reproduce, modify, transmit, display and distribute Your Content in any media known now or developed in the future, in connection with our provision of the Service. Further, to the fullest extent permitted under applicable law, you waive your moral rights and promise not to assert such rights or any other intellectual property or publicity rights against us, our sublicensees, or our assignees.
[…]

The emphasis was added by me. Source: https://keybase.io/docs/terms
Sorry guys, but my hope in this project is gone :/

I wonder why anybody would still want to use their service as an "open source" alternative:

First, please don't confuse open-source software with libre software. Second, that legalese talks about the content that is publicly accessible from your content and that they may serve it without you claiming a royalty for say distributing your book you uploaded to Keybase. Standard CYA policy.
The public audit did not find any way to compromise the integrity of E2E chats, that's the reason people might want to use it over just insecure or insecure-by-default libre alternatives. I'd love to know if you do know of any.

Sorry guys, but my hope in this project is gone :/

Thankfully it doesn't need your hope.

Free and Open Source on F-droid:
End-to-end encryption with either OMEMO, OTR or OpenPGP: Conversations, Pix-Art Messenger, Conv6ations for Sum7.  Your own or any free XMPP server is usable. I use that.
https://conversations.im/omemo/audit.pdf
Or Riot.im / matrix.org
keybase currently only use all because of the Stellar AirDrops ;-)

XMPP and Matrix both are insecure by default, setting up is incredibly cumbersome, onboarding even more so, all futher worsened with multiple devices. Not to mention XMPP's and Matrix's encrypted group chats are a pain or simply unencrypted by default. Not to mention all XMPP Android clients seem lack certain XEP implementations and Matrix's have been sub-par in some aspects for people to use.
I really wish they were good alternatives though. I've tried majority of chat platforms out there with various configurations, plus tried getting people to use them (for them to be of any use) but so far no dice, except with Keybase.

Do you have any source about keybase opted into Android App Bundle?

APKs downloaded from Google Play (using Raccoon) are split APKs. Can't say for sure, but I think they were like that since at least August.

@Avamander XEP implementations is mostly server-side, looking for one of everything supports. Because of security, I trust what some German security experts said me.
Entering a username in Conversations is easier than configuring a mail client ;-)
But I would't like to talk further about other messengers here. This has nothing to do with keybase & everyone should use what he wants. I use Conversations (because of privacy) & keybase (because of the wallet).

Do you have any source about keybase opted into Android App Bundle?

APKs downloaded from Google Play (using Raccoon) are split APKs. Can't say for sure, but I think they were like that since at least August.

From reading the docs on Multiple APKs, I get the impression that split APKs doesn't necessarily imply that Android App Bundle is being used.

From reading the docs on Multiple APKs, I get the impression that split APKs doesn't necessarily imply that Android App Bundle is being used.

I'm pretty sure this article is about different flavors of the same app. Even the first paragraph of another article (linked to in the article mentioned by you) clearly says "a complete and independent version of your application".
However, I would be happy to hear that there is a way to publish "App Bundled" apps to Play without compromising security.

From reading the docs on Multiple APKs, I get the impression that split APKs doesn't necessarily imply that Android App Bundle is being used.

I'm pretty sure this article is about different flavors of the same app. Even the first paragraph of another article (linked to in the article mentioned by you) clearly says "a complete and independent version of your application".
However, I would be happy to hear that there is a way to publish "App Bundled" apps to Play without compromising security.

I've researched this further, and unfortunately you appear to be correct... It looks like Multiple APKs is for building multiple standalone APKs that support different things, not generating split APKs in the way that Android App Bundle does.
This looks like split APKs to me:
$ pm path io.keybase.ossifrage
package:/data/app/io.keybase.ossifrage-sh4qPtx8RqCr-LMhEy37bg==/base.apk
package:/data/app/io.keybase.ossifrage-sh4qPtx8RqCr-LMhEy37bg==/split_config.arm64_v8a.apk
package:/data/app/io.keybase.ossifrage-sh4qPtx8RqCr-LMhEy37bg==/split_config.en.apk
package:/data/app/io.keybase.ossifrage-sh4qPtx8RqCr-LMhEy37bg==/split_config.xxhdpi.apk

The implication of this is that Google does possess the keys used to sign Keybase's APKs.

This issue is now almost 3 (three!) years old and the most upvoted issue in this whole repo! (only followed by 2FA support, which has nearly ½ of all upvotes though)
And if really only GCM/Firebase support is limiting this, which should be able to be removed (and I don't need push notifications in this app), then I don't see why this is do complicated/Keybase does not want to support this.

Almost all friends, colleagues and family members have uninstalled keybase again. Because of the Stellar Airdrop drama. I use it as long as it is in the debian repo.
I'm fed up with android.
In the next weeks or months I will get my Librem 5 Handy with PureOS.
(Debian based ;-)

Because of the Stellar Airdrop drama.

"Oh no some aren't eligible for getting free stuff", I frankly don't get the entitlement.

I got a lot. ;-) And hodl many thousands of XLM

Avamander<EMAIL_ADDRESS>hat am 9. März 2020 um 19:18 geschrieben:

Because of the Stellar Airdrop drama.

"Oh no some aren't eligible for getting free stuff", I frankly don't get the entitlement.
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/keybase/client/issues/6899#issuecomment-596696276

I'm moving away from the Play store entirely so this would be amazing to resolve.

As someone who has just switched to CopperheadOS and is trying to avoid Google Services in every way for the sake of privacy, not having an easy way to access Keybase is a huge loss.
This should be in F-Droid, or at a minimum have APKs available to download with verification steps.

As someone who has just switched to CopperheadOS and is trying to avoid Google Services in every way for the sake of privacy, not having an easy way to access Keybase is a huge loss.
This should be in F-Droid, or at a minimum have APKs available to download with verification steps.

Since Keybase has been acquired by zoom, i believe this issue have now little to no hope to be fixed.

Since Keybase has been acquired by zoom, i believe this issue have now little to no hope to be fixed.

Keybase development is almost nonexistent. Who knows how long the servers will still be running. More and more commutities are leaving keybase. (monero, cryptorado) :-(

Keybase development is almost nonexistent. Who knows how long the servers will still be running. More and more commutities are leaving keybase. (monero, cryptorado) :-(

As someone who has just switched to CopperheadOS and is trying to avoid Google Services in every way for the sake of privacy, not having an easy way to access Keybase is a huge loss.

Sorry for the unrelated comment, but you should be wary of CopperheadOS. GrapheneOS is likely what you're looking for: https://grapheneos.org/#history

As someone who has just switched to CopperheadOS and is trying to avoid Google Services in every way for the sake of privacy, not having an easy way to access Keybase is a huge loss.

Sorry for the unrelated comment, but you should be wary of CopperheadOS. GrapheneOS is likely what you're looking for: https://grapheneos.org/#history

Keybase development is almost nonexistent. Who knows how long the servers will still be running. More and more commutities are leaving keybase. (monero, cryptorado) :-(

Where have they moved to instead? Is there a viable alternative to keybase at this point?

Keybase development is almost nonexistent. Who knows how long the servers will still be running. More and more commutities are leaving keybase. (monero, cryptorado) :-(

Where have they moved to instead? Is there a viable alternative to keybase at this point?


Public Headers

When building the framework, the following headers aren't Public, Private or Project.

TLTransitionLayout.h
UICollectionView+TLTransitioning.h

This renders the .framework useless at the moment when built via Carthage (but I suppose that'd be the case for anything else as well)
Could you please include those headers in the framework as well. I've tried this locally but forgot to fork it and send a PR. If you'd like, I could do that tomorrow.

This is fixed in 1.0.9. I also had to change the name of the AHEasing framework from AHEasing_iOS to just AHEasing. So you'll need re-add AHEasing your project after updating Carthage.


Support raw strings where characters don't have to be escaped

Currently, various characters have to be escaped when typing strings. This is especially painful when typing regular expressions. River could support a way to input a "raw" string without having to escape it, similar to Go's backtick feature.
Some relevant discussions on this:

String interpolation proposal: we may or may not be able to use backticks, depending on how we want string interpolation to be implemented.
A discussion about backticks and interpolated strings.

After this feature is implemented, we should update the docs for components that may contain a regex/LogQL/OTTL, so we can let users know about this feature. Such components include:

otelcol.processor.attributes
otelcol.processor.transform
loki.process

I am personally in favour of using backticks for raw strings. For string interpolation we could use a format function as described in this comment.


Support for the HTML5 Gamepad API

I would like to see support for the Gamepad API.
Every current browser supports it: https://caniuse.com/?search=Gamepad
https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API
https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
I think it would be great for this kind of games, to have an easy access using the gamepad.
All the classic rpg games we are fond of, did run on a system with only controllers.
If I understand the architecture more, I maybe could provide a patch, but currently I only want to report it as a feature request.
And keep track on it and the interest.

thanks a lot for the feedback. i thought of adding the gamepad but there are other features to do before.
Indeed, if you want, you can do it (take the last version of RPGJS)

You have to create a module

https://docs.rpgjs.dev/guide/create-module.html
You can generate it:
npx rpgjs generate module <directory-name>

In the generated folder, put a package.json (npm init)

You can then test the module in your game. Just use the properties and hooks of the client (https://docs.rpgjs.dev/classes/client.html#rpgclient-decorator).

Then, just publish the package

Help:
When you press a key on the gamepad, use the method applyControl (https://docs.rpgjs.dev/classes/keyboard.html#apply-control)
You can also look at the module that manages joystick on the mobile.
https://github.com/RSamaium/RPG-JS/tree/v3/packages/plugins/mobile-gui
Of course, in case you do this module, I will not hesitate to quote you in the RPGJS project ;)

The plugin is present in the latest version
https://docs.rpgjs.dev/guide/gamepad.html


Disable runtime compilation for 4.4

Cherry picks of fff58755351a7da48f8063e2fd43d3d23f97bcbe 4b33a72f4e950dc9e06869db18a918a486cbcfde 96b77a6e3c90c9d2420a21c8a455d83c25912d5d.
Awaiting approval now.

Just curious, why was this disabled for 4.4?

@dmcdougall The in-library code generator is currently implemented in Python.  Currently, we'll try to start up a Python interpreter inside the library to generate FFT kernels.
This turns out to be a bad idea, because we're often being invoked by a Python interpreter.  And Python doesn't like having another Python started inside of it.
The release branch was made in the middle of us discovering why this wouldn't work, so we just needed to finish disabling the feature for 4.4.

Ah ok.  Thanks!


 From logs, we keep re-pulling each blob/layer each time whether we should just use the image config digest to see if the image is already on disk (thanks to content addressable storage we should be able to replicate what docker does, not sure this need a lot of changes to c/storage though).
Last thing: @nalind notice how the last image listing stacks all the nginx:alpine images while redis:alpine aren't stacked together, do you know why?
@nalind @mtrmac PTAL

@mtrmac @nalind I've also noticed we first copy layers in c/image's copy and then config. We should come up with something to check for config first...

I've also noticed we first copy layers in c/image's copy and then config. We should come up with something to check for config first...

Why does that matter? (We do it this way because config format depends on supported schema in the output; i.e. we always copy the same layers, but we may try several config+manifest formats until one is accepted.)
(To be pedantic, do you have data indicating that the time is really spent copying layers? It is a good guess, to be sure.)
Ideally storageImageDestination.HasBlob should detect that the layers are present and avoid copying them. That did work at some point IIRC. Though looking at it now, it only looks at s.BlobList, which is not populated from the containers/storage backing store in newImageDestination, AFAICS.

(Broadly speaking, IIRC from conversations in https://github.com/containers/image/pull/63 , c/storage, or perhaps the combination of c/storage+c/image, had difficulties in identifying layers using the uncompressed vs. compressed digests, when the necessary values are not always available. But I’ll leave that up to @nalind as an expert.)

@nalind Is this still an issue?

When the image is being pulled multiple times, it's getting assigned a new ID each time, and the tag is being moved to the most-recently-pulled copy each time.  (The output of ocic image list lists each image's ID, then its zero or more tags.)
HasBlob() doesn't currently detect "blobs" that are part of images that have previously been pulled, since they aren't blobs any more at this point.  Some of the features we've added to containers/storage recently make it easier/possible to look for the content locally using when-they-were-compressed and uncompressed digests.
I've been working on changes to teach the image library to use the digests to make HasBlob() smarter, and can work on the assigning-new-IDs part while working on getting the smaller bits that were pared off as separate PRs to past review.


Why can everyone hear me?!?!!

I have tried looking in configs to see where I could change this but I can't find it anywhere.
Where can I find this config???
Sorry for having to make a github issue for this.

Doesn't follow any issue format, probably didn't even read the README file.


Commits Behind

Why:
Closes [issue link]

What's being changed:

Check off the following:

[x] I have reviewed my changes in staging (look for "Automatically generated comment" and click Modified to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

git checkout -b github-main main
git pull https://github.com/github/docs.git main


trakt to sonarr options [question/request]

So I stumbled upon the sonarr_list plugin while googling for ways to import lists from trakt to sonarr, and it looks nice and all and I plan on using it but I was wondering if there was any options to set "Root Path", "Profile", "Series Type" and "Season Folder"? As the only options I currently see that are available are options to set how the show is monitored.
If these are not options currently then I kindly request them to be added if at all possible..

Please request new features via feathub

@liiight so going by your comment I guess these are not options then??

Correct

Well damn, guess I'll add a request to feathub in hopes that it gets picked up quickly as I now have to wait for these options before I can use flexget any.

It shouldn't be to hard to implement I think.
have set up the request on feathub now as well so you can take a better look at what options I'm requesting. https://feathub.com/Flexget/Flexget/+49

@liiight hows possibly getting the request implemented going? and I forgot to ask as well, does the trakt/sonarr plugins (mainly trakt to sonarr) support private lists or does it only support public lists?

Well, it's been around 24 hours so I'd say I accomplished a good 0% already, give or take...
And trakt list works with private lists just fine if you authenticate, check out the wiki

@liiight lol well didn't know if you had looked things up at some point and was doing stuff behind the scenes and just hadn't pushed anything to github yet xD and good to hear, as I have my sonarr lists set to private.
So then I have two questions while I wait for things to get implemented into flexget,

If I was to go into flexget/plugins folder and change the default show['qualityProfileId '] = 1 to let's say show['qualityProfileId '] = 2 in the sonarr_list.py script would it change the qualityprofile trakt to sonarr uses, or would it still default to 1?

Does trakt to sonarr currently take whatever the rootpath is set at in sonarr. so for example if I was to have a paths like

D:\Media\TV
D:\Media\Anime
F:\Media\Anime

in sonarr currently and my default path when adding shows was currently set to "D:\Media\TV" would trakt to sonarr use that as the rootfolder? or does the plugin go and create it's own rootfolder path?

This issue has been closed, Please continue this on our forums or Gitter/IRC.
Locked.


A special case that causes issues

Hi, I have discovered a special case that causes issues in the simulation.
When the gravity is {0,0}, two identical mass circles that are not rotating are moving toward each other with equal speeds in opposite directions. When the separation between the two circles is 0, the calculated impulse will result in both of them having a linear velocity of 0, causing them to stop moving afterwards. However, they should actually collide and exchange velocities, bouncing back.
Thanks!

That is an inelastic collision and is the correct behavior.
https://en.wikipedia.org/wiki/Inelastic_collision

That is an inelastic collision and is the correct behavior.
https://en.wikipedia.org/wiki/Inelastic_collision

Yes, I had previously overlooked the fact that this algorithm does not conserve momentum. Thank you.


Kubeflow GPU Jupyter Notebook Will not compete

OS Ubuntu 20.04
Nvidia Driver
NVIDIA-SMI 460.56       Driver Version: 460.56       CUDA Version: 11.2
Enabling kubeflow works as expected.  CPU based notebooks are able to be initiated without issue.  GPU notebooks are not able to be spun up.
Actions Taken:
microk8s ctr run --rm --gpus 0 docker.io/nvidia/cuda:11.0-base nvidia-smi nvidia-smi
Results in working Nvidia SMI
/var/snap/microk8s/current/args/containerd.toml contains:
default_runtime_name = "nvidia-container-runtime"

This sudo microk8s kubectl -n kube-system logs pod/nvidia-device-plugin-daemonset-94ggw     displays:
2021/03/19 04:09:45 Loading NVML                                                                                2021/03/19 04:09:45 Failed to initialize NVML: could not load NVML library.                                                                                2021/03/19 04:09:45 If this is a GPU node, did you set the docker default runtime to `nvidia`?                                                                                2021/03/19 04:09:45 You can check the prerequisites at: https://github.com/NVIDIA/k8s-device-plugin#prerequisites                                                                                2021/03/19 04:09:45 You can learn how to set the runtime at: https://github.com/NVIDIA/k8s-device-plugin#quick-start

/etc/docker/daemon.json contains the following:
{                                                                                "default-runtime": "nvidia",                                                                                "runtimes": {                                                                                "nvidia": {                                                                                "path": "/usr/bin/nvidia-container-runtime",                                                                       "runtimeArgs": []                                                                                }                                                                                }                                                                                }                                                                                {                                                                                "insecure-registries" : ["localhost:32000"]                                                                                }

inspection-report-20210319_112755.tar.gz

Have tried to reproduce this with KubeFlow on MicroK8s | v1.20.4 | 2074 | 1.20/stable, sat on an AWS g3.4xlarge instance, using the Nvidia 460.39 driver (latest from ubuntu-drivers binary).
The notebook came up fine:
Name:         gpu-book-0
Namespace:    admin
Priority:     0
Node:         ip-172-31-16-153/<IP_ADDRESS>
Start Time:   Fri, 19 Mar 2021 20:32:00 +0000
Labels:       app=gpu-book
              controller-revision-hash=gpu-book-68db55484c
              notebook-name=gpu-book
              statefulset=gpu-book
              statefulset.kubernetes.io/pod-name=gpu-book-0
Annotations:  cni.projectcalico.org/podIP: <IP_ADDRESS>/32
              cni.projectcalico.org/podIPs: <IP_ADDRESS>/32
Status:       Running
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  StatefulSet/gpu-book
Containers:
  gpu-book:
    Container ID:   containerd://61efcf9e08a26f74bba06946304db16dfa32ba2a07b52cd750b178ce1cf404f3
    Image:          gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0
    Image ID:       gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu@sha256:551237d347a9d658e477fde0263e328c54f82d5cd62407586ead62dee68033bd
    Port:           8888/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 19 Mar 2021 20:34:19 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:             4
      memory:          4Gi
      nvidia.com/gpu:  1
    Requests:
      cpu:             4
      memory:          4Gi
      nvidia.com/gpu:  1
    Environment:
      NB_PREFIX:  /notebook/admin/gpu-book
    Mounts:
      /dev/shm from dshm (rw)
      /home/jovyan from workspace-gpu-book (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-editor-token-t5nm4 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  workspace-gpu-book:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  workspace-gpu-book
    ReadOnly:   false
  dshm:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     Memory
    SizeLimit:  <unset>
  default-editor-token-t5nm4:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-editor-token-t5nm4
    Optional:    false
QoS Class:       Guaranteed
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  21m   default-scheduler  Successfully assigned admin/gpu-book-0 to ip-172-31-16-153
  Normal  Pulling    21m   kubelet            Pulling image "gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0"
  Normal  Pulled     19m   kubelet            Successfully pulled image "gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0" in 2m8.037017876s
  Normal  Created    18m   kubelet            Created container gpu-book
  Normal  Started    18m   kubelet            Started container gpu-book

Is it a possibility to try with the same driver version?  I note yours is slightly advanced of the one I tested with.  I also need to go through the inspection report.

I'm reinstalling the driver version that you have in addition to the microk8s 1.20 stable.  I'll report back the results when i get the install complete.

Thank you!  We do also have an option, in beta, for greenfield instances without any drivers installed.

Unfortunately, i'm back at the same place :  i can give greenfield instance a try tomorrow and see if that works.
0/1 nodes are available: 1 Insufficient nvidia.com/gpu

Name:           gpu-test-0                                                                                Namespace:      admin                                                                                Priority:       0                                                                                Node:           <none>                                                                                Labels:         app=gpu-test                                                                                controller-revision-hash=gpu-test-75986d5765                                                                                notebook-name=gpu-test                                                                                statefulset=gpu-test                                                                                statefulset.kubernetes.io/pod-name=gpu-test-0                                                                                Annotations:    <none>                                                                                Status:         Pending                                                                                IP:                                                                                IPs:            <none>                                                                                Controlled By:  StatefulSet/gpu-test                                                                                Containers:                                                                                gpu-test:                                                                                Image:      gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-cpu:1.0.0                                                                                Port:       8888/TCP                                                                                Host Port:  0/TCP                                                                                Limits:                                                                                cpu:             500m                                                                                memory:          1Gi                                                                                nvidia.com/gpu:  1                                                                                Requests:                                                                                cpu:             500m                                                                                memory:          1Gi                                                                                nvidia.com/gpu:  1                                                                                Environment:                                                                                NB_PREFIX:  /notebook/admin/gpu-test                                                                                Mounts:                                                                                /dev/shm from dshm (rw)                                                                                /home/jovyan from workspace-gpu-test (rw)                                                                                /var/run/secrets/kubernetes.io/serviceaccount from default-editor-token-hk2ds (ro)                                                                                Conditions:                                                                                Type           Status                                                                                PodScheduled   False                                                                                Volumes:                                                                                workspace-gpu-test:                                                                                Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)                                                                                ClaimName:  workspace-gpu-test                                                                                ReadOnly:   false                                                                                dshm:                                                                                Type:       EmptyDir (a temporary directory that shares a pod's lifetime)                                                                                Medium:     Memory                                                                                SizeLimit:  <unset>                                                                                default-editor-token-hk2ds:                                                                                Type:        Secret (a volume populated by a Secret)                                                                                SecretName:  default-editor-token-hk2ds                                                                                Optional:    false                                                                                QoS Class:       Guaranteed                                                                                Node-Selectors:  <none>                                                                                Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s                                                                                node.kubernetes.io/unreachable:NoExecute op=Exists for 300s                                                                                Events:                                                                                Type     Reason            Age                 From               Message                                                                                ----     ------            ----                ----               -------                                                                                Warning  FailedScheduling  59s (x15 over 14m)  default-scheduler  0/1 nodes are available: 1 Insufficient nvidia.com/gpu.

What GPU have you got?
Also, if you run microk8s describe node [node], does it show the GPU?

I have ran into similar situation:

microk8s at 1.20
Ubuntu 20.04
10 nodes with 4 gpu nodes each has two Tesla T4
Nvidia  Driver Version: 460.91.03
CUDA Version: 11.2
microk8s gpu enabled, nvidia-device-plugin-daemonset shows fine: Starting to serve on /var/lib/kubelet/device-plugins/nvidia.sock
kubectl describe nodes  |  tr -d '\000' | sed -n -e '/^Name/,/Roles/p' -e '/^Capacity/,/Allocatable/p' -e '/^Allocated resources/,/Events/p'  | grep -e Name  -e  nvidia.com  | perl -pe 's/\n//'  |  perl -pe 's/Name:/\n/g' | sed 's/nvidia.com\/gpu:\?//g'  | sed '1s/^/Node Available(GPUs)  Used(GPUs)/' | sed 's/$/ 0 0 0/'  | awk '{print $1, $2, $3}'  | column -t shows 2 GPU available, 0 used
when creating a jupyterlab using kubeflow, this is what it shows:
Error: failed to create containerd task: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused "process_linux.go:385: running prestart hook 0 caused \"error running hook: exit status 1, stdout: , stderr: exec command: [/snap/microk8s/2143/usr/bin/nvidia-container-cli --load-kmods configure --device=GPU-08d00120-26c0-40dd-2303-834017f2a40b,GPU-749ddcd7-d398-5ad9-6939-6371c3227042 --compute --utility --pid=2662486 /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v2.task/k8s.io/jupyterlab-gpu/rootfs]\\nnvidia-container-cli: ldcache error: process /sbin/ldconfig.real failed with error code: 1\\n\""": unknown
run command 7 again showed 2 GPU available, 2 used.

Container keeps crushloop

I tried to install nvidia-container-toolkit via https://www.server-world.info/en/note?os=Ubuntu_20.04&p=nvidia&f=2 then all seems to be fixed:

By installing nvidia-container-toolkit, it installed the following packages
'Selecting previously unselected package libnvidia-container1:amd64.
(Reading database ... 151337 files and directories currently installed.)
Preparing to unpack .../libnvidia-container1_1.4.0-1_amd64.deb ...
Unpacking libnvidia-container1:amd64 (1.4.0-1) ...
Selecting previously unselected package libnvidia-container-tools.
Preparing to unpack .../libnvidia-container-tools_1.4.0-1_amd64.deb ...
Unpacking libnvidia-container-tools (1.4.0-1) ...
Selecting previously unselected package nvidia-container-toolkit.
Preparing to unpack .../nvidia-container-toolkit_1.5.1-1_amd64.deb ...
Unpacking nvidia-container-toolkit (1.5.1-1) ...
Setting up libnvidia-container1:amd64 (1.4.0-1) ...
Setting up libnvidia-container-tools (1.4.0-1) ...
Setting up nvidia-container-toolkit (1.5.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
'
then even if I remove nvidia-container-toolkit, the pods were able to schedule fine.


[EGv2] generate with newer emitter

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-eventgrid


Fix second half of proof of Theorem 3.4 in infinite_models.tex

This PR is a continuation of #347 which was fixing issues in the blueprint presentation of Theorem 3.4. In this PR, I move on to fixing a logic error in the argument that the presented magma is indeed a model of the law being considered. The logic error lies in the claim that (1 \op x) \op w = x whenever w is a power of two. This claim does not hold for the magma under consideration, since (1 \op 1) \op 2 = 4 rather than 1 as claimed. Fortunately a weaker claim suffices. While working on this, I observed that the choice of magma is not unique and if one wished to optimize for proof elegance, there may be other magmas that admit simpler proofs. However, I did not pursue this because the benefit appears to be less than the cost of introducing clashes with the other places this specific magma is used (such as in the Lean implementation and in the literature).

Thanks!  (This is a good example of why we formalize our proofs :).)


Fixes #428 stock photos

We not have a "custom_image" field that saves the image supplied by a user (if any) and an "image" field that saves the image that is actually selected. This ensures that even accidentally switching to a stock image won't make the custom image unavailable.

Coverage remained the same at 100.0% when pulling 7f7f26001a8b72f99a366bb3ff80633f2be157e7 on 428_stock_photos into 2fa2092791b5b97c08583c8be32432626a7e3f16 on dev.

Code looks good to me. Everything works fine.
I'd by glad if someone could take a quick second look at the code though.

Coverage remained the same at 100.0% when pulling 67587bb11bef579fa05acaaec77cc8b0b3ffd6bd on 428_stock_photos into 2fa2092791b5b97c08583c8be32432626a7e3f16 on dev.

Looks good to me now :)

Coverage remained the same at 100.0% when pulling d1257bacc4cbb2bece26fffb28ec229bfed9f4df on 428_stock_photos into 4a91b91497e7bd01cc4c31a1b62e936105941dd8 on dev.


In addTextTrackAsync in SRC_EQUALS mode the unmodified input language gets compared to the normalised one

Have you read the FAQ and checked for duplicate open issues?
Yes
If the problem is related to FairPlay, have you read the tutorial?

Not applicable
What version of Shaka Player are you using?

4.6.0
Can you reproduce the issue with our latest release version?
Yes
Can you reproduce the issue with the latest code from main?
In the demo player
Are you using the demo app or your own custom app?
Demo
If custom app, can you reproduce the issue using our demo app?
Yes
What browser and OS are you using?
Firefox on Windows 10
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Not applicable
What are the manifest and license server URIs?

Call Player.load() with any MP4 file, so that the player uses the SRC_EQUALS load mode.
What configuration are you using?  What is the output of player.getConfiguration()?

Default
What did you do?

Load an MP4 asset or an HLS stream on iOS
await document.getElementById('player').ui.getControls().getPlayer().addTextTrackAsync('data:text/vtt,WEBVTT', 'zh-Hans', 'captions', 'text/vtt')
What did you expect to happen?
No error to be thrown
What actually happened?

A CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS error is thrown, but the text track is added to the DOM and appears in the text track selector.
By the looks of it, shaka-player compares the input language zh-Hans against the language on the track, which contains the normalised language zh-HANS and then throws an error because they don't match.

@absidue are you interested on send a PR to fix it? Thanks!

If shaka-player didn't have a CLA, I would consider it opening pull requests, but I don't particularly fancy doxxing myself and signing my life away to Google, just to do a one line change. Especially as shaka-player is just used in a project I work on in my free time, nothing corporate.
Also with shaka-player's non-standard build system, it would probably take me multiple hours to setup a shaka-player development environment, which seems overkill for a one line change. I would be willing to do that if the CLA didn't exist.


fix(dep): Bump useragent to fix HeadlessChrome version

Bump useragent to 2.3.0 to pull in ua-parser/uap-core#263 in which Headless Chrome version detected to be 0.0.0.
Update tests to reflect latest useragent OS major version string identifiers.
Per https://github.com/ua-parser/uap-core/pull/286 , useragent purposely sets the Windows Vista family to Windows and major version to Vista. The change to useragent was intentional, and the maintainer advises upstream consumers to update tests to reflect the change.
Per https://github.com/3rd-Eden/useragent/issues/120 , there is an open question to change the stringified OS to not include 0 for missing version numbers. For example:
family: 'Windows'
major: 'Vista'
minor:
patch:
patch_minor:

would display as "Windows Vista" instead of "Windows Vista.0.0".
That open question not withstanding, this commit is an incremental improvement: You can now see both Chrome Headless version and Windows version information in your console output. In general, useragent consumers that perform int() conversions on 'major' should be aware.
Fixes #2762

Thanks, I fixed the commit message and updated the PR. All checks are passing now.


ARROW-18350: [C++] Use std::to_chars instead of std::to_string

std::to_chars is locale-independent unlike std::to_string; it may also be faster.
This PR does neither bother with test and benchmark files, nor with debug output strings.

Darn, std::to_chars is not implemented for floating-point on all C++ standard libraries :-(
https://stackoverflow.com/questions/63963961/what-is-the-correct-way-to-call-stdto-chars

Are there any cases where std::to_string should be preferred you think?

I don't think so (unless locale-dependence is desired).

Or, are most formatting functions that output to the user already going through some other kind of string formatting function?

Places where performance is important generally use our home-grown formatting routines, yes.

@bkietz Can you think of a simple way to solve the incompleteness issue?

Darn, std::to_chars is not implemented for floating-point on all C++ standard libraries :-(

@westonpace Thanks a lot. I'm trying to come with a more condensed version.

@github-actions crossbow submit -g cpp

@github-actions crossbow submit -g cpp

Wow, turns out <charconv> isn't even provided in some cases.

Revision: 32f378caf1cbd5931f6ac85f0e61ba03571c333f
Submitted crossbow builds: ursacomputing/crossbow @ ARROW-18350-to-chars-0

Task
Status

test-alpine-linux-cpp

test-build-cpp-fuzz

test-conda-cpp

test-conda-cpp-valgrind

test-cuda-cpp

test-debian-10-cpp-amd64

test-debian-10-cpp-i386

test-debian-11-cpp-amd64

test-debian-11-cpp-i386

test-fedora-35-cpp

test-ubuntu-18.04-cpp

test-ubuntu-18.04-cpp-release

test-ubuntu-18.04-cpp-static

test-ubuntu-20.04-cpp

test-ubuntu-20.04-cpp-20

test-ubuntu-20.04-cpp-bundled

test-ubuntu-20.04-cpp-thread-sanitizer

test-ubuntu-22.04-cpp

I'm gonna merge now that CI is green.

On my Mac M1 laptop, the compilation looks good but linking complains about undefined symbols:
[ 63%] Built target arrow-io-file-test
[ 63%] Built target arrow-io-memory-test
[ 63%] Linking CXX executable ../../../debug/arrow-utility-test
Undefined symbols for architecture arm64:
  "std::__1::to_chars(char*, char*, double)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > arrow::internal::ToChars<double>(double) in string_test.cc.o
  "std::__1::to_chars(char*, char*, float)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > arrow::internal::ToChars<float>(float) in string_test.cc.o
ld: symbol(s) not found for architecture arm64
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [debug/arrow-utility-test] Error 1
make[1]: *** [src/arrow/util/CMakeFiles/arrow-utility-test.dir/all] Error 2
make: *** [all] Error 2

It looks like I am hitting an old issue: https://stackoverflow.com/questions/58923623/stdto-chars-compile-but-not-linking-on-macos-clang/59672017#59672017

@wgtmac Sigh :-( As I understand it, you should be able to upgrade your Mac to a newer libc++ version (not sure how that's done, though)?


Bug in txnbuild/change_trust.go func BuildXDR

func (ct *ChangeTrust) BuildXDR() (xdr.Operation, error) {
	...
	op := xdr.Operation{Body: body}
	SetOpSourceAccount(&op, ct.SourceAccount)
	return xdr.Operation{Body: body}, nil
}

Should return op not the xdr.Operation{Body: body}

Thank you, great catch!
@poliha would you raise a PR for this to go in the 1.2 release?
op := xdr.Operation{Body: body}
SetOpSourceAccount(&op, ct.SourceAccount)
return xdr.Operation{Body: body}, nil```

It should be
op := xdr.Operation{Body: body}
SetOpSourceAccount(&op, ct.SourceAccount)
return op, nil```

just make a PR. Not sure if it works this way. But here's my PR -> https://github.com/stellar/go/pull/1298

Thanks for the PR. Normally we would accept that, but today we are in the middle of a release so needed to do this ourselves from the correct branch. Looking forward to your next contribution!

Fixed in #1299


Request for adding a modifier to add classes to style the 'arrow' of the ngx-popper

Would it be difficult to add a ' [popperApplyArrowClass]’ modifier to put a css class directly on the arrow component?
I feel like that would make the css cleaner, right now I need to specify an extra class ‘popover-content' on the actual ‘popover-content’ element to create extra specificity and get the arrow css to be applied properly.
Perhaps it could work similarly to the popperApplyClass modifier you added here: https://github.com/MrFrankel/ngx-popper/issues/2#issuecomment-376868587
Thank you for your help so far!

@IBYuMe released in v2.7.0, please verify.


Outline / Stroke text font

Hello, hope you're doing well. Love Ebiten!   Do we know if something like this is possible, e.g. with shaders etc?

Hi, thank you for using Ebiten!
There is no such feature unfortunately so far. I'll add a task as a new feature.
Yes, I think it's possible with shaders. Rendering a text on an offscreen once and rendering the offscreen onto the destination with a shader (to render the border) should work. Let me think for a while...

Thank you! If it helps anyone else, a nice workaround I'm using now is to just use a font that has both a filled and an outlined variant, for example: https://www.dafont.com/becak.font
I found this by searching "font with outline and fill"

A rough, but simple way to work around this is to simply render the font multiple times, offsetting it and changing the color to make outlines or shadows.

@eihigh already has a solution on this issue :-)
https://github.com/eihigh/canvas

Yes, I believe its functionality is adequate.
https://github.com/eihigh/canvas/blob/v0.0.2/font/font.go#L20-L32

I see.
I think I can implement a similar thing with the semi-official library<EMAIL_ADDRESS>and Ebitengine's vector library.

I've succeeded to render a sfnt glyph with the vector package

Though I didn't add any new APIs, I could make a proof of concept.
In order to make a new API, we have to consider an API to accept sfnt.Font instead of font.Face...

If we add a new API, we have to consider other things related to text.

#675
#2454

I'll reset the milestone to v2.6.0. We need to redesign text-related things.

In case anyone arrives here looking for practical solutions, today I learned that you can easily use FontForge to create an outlined version of a font. There are multiple libraries that can render font outlines by algorithmically processing lines and bézier curves and splitting and intersecting them (e.g. libass has a very nice open implementation of this), but in practice generating a static file can often be even better. Open a font with FontForge, select all glyphs with CTRL + A, go to Element > Style > Outline, set the thickness, apply. To export, use File > Generate Fonts. Licensing and others might apply.


didSelectItemAt not called and tabbar not sliding on iOS 11

Not sure if anyone else has had this issue but I've just tested one of my applications with xCode 9 beta and iOS 11 beta and all of a sudden the tabbar will not slide and I am not able to select any of the other tabs.

Here too

Same issue with XCode 9 and iOS 11.. Not working when i click on upper tab not clickable.


CORE-354 - Admin 404 on non-member

Closes CORE-354

:tada: This PR is included in version 4.8.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


File level ownership matching

Feature description
Hi! Would it be feasible to support more granular ownership matching?
I.e. down to the file level, such as in a GitHub CODEOWNERS file?
Maybe even accept a CODEOWNERS file as input for ownership?
Reasoning

Being able to deal with modules with split ownership
Not having to maintain two separate lists of ownership

Thanks for the feature request! We actually thought about adding file-level ownership support but decided against it back in the day. The reason was that (based on our experience) mixed ownership inside one module can lead to confusion and conflicts. Our recommendation is to split the files into separate modules, which then can have different owners.
That being said, if this is a feature that would help a lot of people we are not super opposed to it. I'd say let's keep this issue open to see how many people are interested in this.

We're not quite as far along the modularisation path as Spotify is, so we do still have a massive App module with lots of owners of different subparts. Although I completely agree with your analysis, from a practical perspective we would appreciate it a bunch. :D

That being said, if this is a feature that would help a lot of people we are not super opposed to it. I'd say let's keep this issue open to see how many people are interested in this.

Sounds great!

+1 to this feature request.
In my experience, I like to keep code-ownership and code-modularization completely separate. A large company could re-org three times over, creating new teams, morphing old teams, but that doesn't mean we should refactor the whole codebase. Modularize code based on need, not based on ownership.

This is now supported in the 1.2.0 release. Feel free to try it out and let us know what you think!

Awesome, thank you! Will give it a spin!


Prepare distribution via Homebrew

I think that I do not have to introduce [Homebrew] to you. It makes Mac as easy to maintain like Linux distros :-) My favourite maintenance command is:
brew update && brew upgrade && brew cleanup

I would like to include lite-xl in installable and upgradable packages too. Would you with a Homebrew cask for lite-xl too?
I did the following:

Prepare a cask
Confirm that it works
Your feedback (questions)
Submit the cask to the official Homebrew repo (not yet)

1. Prepare a cask
You can review the cask source lite-xl.rb and test it like this:
brew install --cask prantlf/tap/lite-xl

Or install the tap for regular updates:
brew tap prantlf/tap
brew update
brew install --cask lite-xl

Installation and audit succeed:
$ brew install -v --cask Casks/lite-xl.rb
==> Downloading https://github.com/franko/lite-xl/releases/download/v1.16.11/lite-xl-macos-x86-64.dmg
Already downloaded: /Users/prantlf/Library/Caches/Homebrew/downloads/99247f3abe52b1a2d96dce5dcce6dee31658bbbd4d2caefbd74c674150dc01bf--lite-xl-macos-x86-64.dmg
==> Verifying checksum for cask 'lite-xl'
All formula dependencies satisfied.
==> Installing Cask lite-xl
hdiutil attach -plist -nobrowse -readonly -mountrandom /private/tmp/d20210603-25344-1ouhw00 /Users/prantlf/Library/Caches/Homebrew/downloads/99247f3abe52b1a2d96dce5dcce6dee31658bbbd4d2caefbd74c674150dc01bf--lite-xl-macos-x86-64.dmg
mkbom -s -i /private/tmp/20210603-25344-ll1k01.list -- /private/tmp/20210603-25344-phx5tf.bom
ditto --bom /private/tmp/20210603-25344-phx5tf.bom -- /private/tmp/d20210603-25344-1ouhw00/dmg.m6pUaK /private/tmp/d20210603-25344-1591k19
diskutil info -plist /private/tmp/d20210603-25344-1ouhw00/dmg.m6pUaK
diskutil eject disk2s1
cp -pR /private/tmp/d20210603-25344-1591k19/lite-xl.app/. /usr/local/Caskroom/lite-xl/1.16.11/lite-xl.app
chmod -Rf +w /private/tmp/d20210603-25344-1591k19
==> Moving App 'lite-xl.app' to '/Applications/lite-xl.app'
==> Linking Binary 'lite-xl' to '/usr/local/bin/lite-xl'
🍺  lite-xl was successfully installed!

$ brew audit --cask --strict Casks/lite-xl.rb
audit for lite-xl: passed

2. Confirm that it works

Works when launched from Spotlight.
Works when launched on the command line by /Applications/lite-xl.app/Contents/MacOS/lite-xl.
Does not work when launched using a symlink /usr/local/bin/lite-xl to binary above.

The application can be started from the application launcher or Spotlight, but it is probably not what you see the most. It starts lite-xl showing the file system root in the tree panel. You usually start lite-xl in the project directory. Homebrew creates a symlink to the binary in /usr/local/bin for this purpose. You simply start TextMate by typing mate of Visual Studio Code by typing code from the command line.
I let a symlink lite-xl be created during the installation, but launching the application using the symlink failed:
$ lite-xl
Error: cannot open /usr/local/bin/core/start.lua: No such file or directory
stack traceback:
[C]: in function 'xpcall'
[string "local core..."]:2: in main chunk

Apparently, the path to the Resources directory was computed from the unresolved symlink location:
$ ls -l /usr/local/bin/lite-xl
... /usr/local/bin/lite-xl -> /Applications/lite-xl.app/Contents/MacOS/lite-xl

How to make sure that the symlink is resolved and the path to the resources computes from original location of the application executable? I used executablePath with "/../../Resources" instead of resourcePath to get it working. But I am only a seasonal Mac developer and I do not know if it is the proper way how to deal with this. I opened #249 with this fix.
3. Your feedback (questions)

Should the symlink be called lite instead of lite-xl. It is shorter to type. I do not expect people installing both lite and lite-xl for production. There is o cask for lite right now. If there is one created in the future, installing both can be prevented by declaring conflicts_with in the cask. Of course, people who develop lite and lite-xl know how to run either of them from a custom built binary.

I noticed that the official binary is a lot bigger that the binary that I get from a build using build-packages.sh. The official one is probably liked statically:
$ ls -l /Applications/lite-xl.app/Contents/MacOS
...   343680  3 Jun 02:38 lite-xl
...  2168736 28 Mai 16:38 lite-xl.orig

Do you want to continue with this approach or do you want to link it dynamically? The Homebrew package could declare the required dependencies in that case:
depends_on formula: "freetype"
depends_on formula: "libagg"
depends_on formula: "libx11"
depends_on formula: "pcre2"
depends_on formula: "sdl2"

Lua is liked statically and system dependencies are ensured by declaring the minimum OSX version as 10.3 (high_sierra).

Is the new web site ready? I used the repo readme URL in the cask for the time being:

url "https://github.com/franko/lite-xl/releases/download/v#{version}/lite-xl-macos-x86-64.dmg"
name "Lite XL"
desc "Lightweight text editor written in Lua"
homepage "https://github.com/franko/lite-xl#readme"

Once a better home page is ready on a different host, it can be updated, for example:
url "https://github.com/franko/lite-xl/releases/download/v#{version}/lite-xl-macos-x86-64.dmg",
    verified: "github.com/franko/lite-xl/"
name "Lite XL"
desc "Lightweight text editor written in Lua"
homepage "https://franko.github.io/lite-xl/"

4. Submit the cask to the official Homebrew repo
People should be able to discover and install lite-xl by running brew search lite without having to install a custom tap before. For example:
$ brew search lite
==> Formulae
dlite             libspatialite     literate-git      rqlite            sqlite ✔          ...
==> Casks
ableton-live-lite          lite-xl ✔                  ....

$ brew install --cask lite-xl
....

I showed the way how to maintain casks outside the main Homebrew package list with the brew tap prantlf/tap example above. Once you like the cask, I could create a merge request about it for the official Homebrew repo.

Thank you for all this work on macOS, I appreciate.
I went another route to create a self-contained executable in a notarized package but having a homebrew recipe is great!

1. Should the symlink be called `lite` instead of `lite-xl`. It is shorter to type. I do not expect people installing both `lite` and `lite-xl` for production. There is o cask for `lite` right now. If there is one created in the future, installing both can be prevented by declaring `conflicts_with` in the cask. Of course, people who develop lite and lite-xl know how to run either of them from a custom built binary.

It is customary to keep the executable called lite and we can align with this also on macOS which is an exception for no good reason.

2. I noticed that the official binary is a lot bigger that the binary that I get from a build using `build-packages.sh`. The official one is probably liked statically:
   $ ls -l /Applications/lite-xl.app/Contents/MacOS
   ...   343680  3 Jun 02:38 lite-xl
   ...  2168736 28 Mai 16:38 lite-xl.orig

The binary you see is not linked statically but it links SDL2, freetype2, libagg and lua as static libraries and this is meant to be like this. I don't see any advantage to use SDL2 as a dynamic library, it just happens that homebrew does this by default like most linux distributions.
In addition my binary use a special version of the SDL library that use zero CPU when idle. This is not the case for the stock SDL you are using and lite-xl will always use the CPU a little bit even when minimized or unfocused.
The modified SDL library can be found there:
https://github.com/franko/SDL-4d
and here the tag for the 2.0.14 release:
https://github.com/franko/SDL-4d/releases/tag/release-2.0.14-s4d-2

Do you want to continue with this approach or do you want to link it dynamically? The Homebrew package could declare the required dependencies in that case:

It is okay for me that distributions and homebrew build lite-xl as they prefer based on their standards. On the other side for the binaries I craft I prefer static linking to the external libraries.
In theory static linking with the modified SDL library and freetype is better but I understand this is non-standard for a homebrew package.

Lua is liked statically and system dependencies are ensured by declaring the minimum OSX version as 10.3 (high_sierra).

Right.

1. Is the new web site ready? I used the repo readme URL in the cask for the time being:

The Website is ready since today, the varnish is still fresh! Please use the new website for the URL if you prepare a cask.

Should the symlink be called lite instead of lite-xl?

It is customary to keep the executable called lite and we can align with this also on macOS which is an exception for no good reason.

Sounds good, I renamed the symlink to lite.

I noticed that the official binary is a lot bigger that the binary that I get from a build using build-packages.sh. The official one is probably liked statically:

The binary you see is not linked statically but it links SDL2, freetype2, libagg and lua as static libraries and this is meant to be like this. I don't see any advantage to use SDL2 as a dynamic library, it just happens that homebrew does this by default like most linux distributions.

Yes, I agree. SDL and freetype are not libraries that would be too big to bundle or too critical to get patched quickly and often.

In addition my binary use a special version of the SDL library that use zero CPU when idle. This is not the case for the stock SDL you are using and lite-xl will always use the CPU a little bit even when minimized or unfocused.

This is very important. Now I know why my build was eating 3% CPU constantly, even in the background, but yours was idling with 0%.

The modified SDL library can be found there:
https://github.com/franko/SDL-4d
and here the tag for the 2.0.14 release:

Thank you! Unfortunately, It fails building on my machine with one redefined and many missing identifiers from X11. Apparently it does not like the contents of my /opt/X11/include. But it is not so important. I use my builds for testing purposes and I will stick with the official ones for the production.

Do you want to continue with this approach or do you want to link it dynamically? The Homebrew package could declare the required dependencies in that case:
It is okay for me that distributions and homebrew build lite-xl as they prefer based on their standards. On the other side for the binaries I craft I prefer static linking to the external libraries.

In theory static linking with the modified SDL library and freetype is better but I understand this is non-standard for a homebrew package.

I did compare the unified way to lookup, install and maintain Homebrew packages to a Linux distro, but it is by no means so coherent. Homebrew packages are are not developed together for a common release, like forcing all applications to use SDL2.0 for 2021.04, for example. That is why trying to reuse the shared packages as much as possible does not improve the maintenance as much as in a Linux distro. While Homebrew formulae describe how to build many packages from source on Mac, Homebrew casks are meant for describing how to download and unpack binaries using installers published by software vendors. Symlinking the binaries installed to /Applications in /usr/local/bin is a nifty trick to prevent the PATH from blowing up.
In case of lite-xl, I do not see it worth having a special Homebrew build using shared libraries from other Homebrew packages. As long as there is no other reason and the binary installed by Homebrew can be the same as you distribute, there will be less work to maintain it and less risk of problems.

Is the new web site ready? I used the repo readme URL in the cask for the time being:

The Website is ready since today, the varnish is still fresh! Please use the new website for the URL if you prepare a cask.

Yay, it is shining so nicely! :-) I put it to the cask in progress. I will wait for 1.16.12 with #249 before I send it to the homebrew-cask repo.
Thank you!

The modified SDL library can be found there:
https://github.com/franko/SDL-4d
and here the tag for the 2.0.14 release:

Thank you! Unfortunately, It fails building on my machine with one redefined and many missing identifiers from X11. Apparently it does not like the contents of my /opt/X11/include. But it is not so important. I use my builds for testing purposes and I will stick with the official ones for the production.

If it fails to build on your machine it means the standard SDL2 release 2.0.14 will fail too. My modification do not touch the building system and the dependencies.
You may use lhelper, it knows how to build it for you. It works nicely with homebrew. To build the standard SDL2 library:
# from inside an lhelper environment
lhelper install sdl2

to install the modified version:
lhelper install sdl2 2.0.14-wait-event-timeout-1

On the other side, to be honest, I didn't test on macOS when the x11 libraries are installed so it may fail at well.
By the way, in the same way you can build the freetype library:
lhelper install freetype2

Yay, it is shining so nicely! :-) I put it to the cask in progress. I will wait for 1.16.12 with #249 before I send it to the homebrew-cask repo.

Great, thank you.

In addition my binary use a special version of the SDL library that use zero CPU when idle. This is not the case for the stock SDL you are using and lite-xl will always use the CPU a little bit even when minimized or unfocused.

This is very important. Now I know why my build was eating 3% CPU constantly, even in the background, but yours was idling with 0%.

The modified SDL library can be found there:
https://github.com/franko/SDL-4d
and here the tag for the 2.0.14 release:

My modification to the SDL library was merged, like one hour ago!
https://github.com/libsdl-org/SDL/pull/4419
So it should be included with the next great release of the SDL library!


How do I call APIs?

I've got it all setup and configured, and I have my Access Token.  Are folks using fetch or is there some missing documentation on how to call the APIs via objects created in the init process?  Did I miss some doc somewhere?

What is your problem exactly? Did you achieved to sign in the user?

I'm wondering the same thing. We end up with a logged in user, complete with accessToken, idToken, etc. How do we use that to query the calendar API, for example? What's the best option to interact with google APIs in general in React Native?

In an effort to clean the issues up, this is being closed. Please open a new issue if you're still experiencing a problem.

I am also experiencing this issue. Spent the last 6 hours trying to figure out how to use the access token to access the Drive API, but still haven't found a solution

@CharlieOrlando can you open a new issue so others can try to help you, please add some information to the whole thing and also if possible a reproducible example.


Rename snapshot.png > screenshot.png

To be used in Hugo Theme site.
The README said both variants, so the confusion is understandable.
See https://github.com/spf13/hugoThemesSite/issues/16

Bump.


How can I set auto token refreshing in password flow?

How can I set auto token refreshing in password flow?
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    OAuthModule.forRoot({
      resourceServer: {
        allowedUrls: [`${environment.protocol}://${environment.hostname}`],
        sendAccessToken: true
      }
    })
  ],
  providers: [
    { provide: LocationStrategy, useClass: HashLocationStrategy },
    { provide: OAuthStorage, useValue: sessionStorage },
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

  private readonly authConfig: AuthConfig = {
    issuer: 'issuer',
    oidc: false,
    clientId: 'clientId',
    scope: 'openid username role apps full-api offline_access'
  };

In service constructor:
    this.oAuthService.configure(this.authConfig);
    this.oAuthService.setupAutomaticSilentRefresh();

1., .loadDiscoveryDocument()
2., .fetchTokenUsingPasswordFlowAndLoadUserProfile()
Login successful, user logged in.
After a while, it tries to call:
Request URL: http://<IP_ADDRESS>:10/connect/authorize?response_type=token&client_id=clientId&state=ZEx4dGR2alltRC02V2J3NEowWTJoa1pNbXp4R2lNaHNBTEZOTlVRZlB5T0dC&redirect_uri=&scope=openid%20username%20role%20apps%20full-api%20offline_access&prompt=none
Request Method: GET
Status Code: 302 Found

And I got an error after that:
http://<IP_ADDRESS>:10/home/error?errorId=CfDJ8PFLaJy2spFGuE1ynrI...
Request Method: GET
Status Code: 404 Not Found
Remote Address: <IP_ADDRESS>:10
Referrer Policy: no-referrer-when-downgrade

Why does it want to call /connect/authorize for token refreshing, why not call connect/token?
What is wrong with my config?
Desktop

OS: Windows 10 latest
Browser: Chrome latest
Version: 10.0.3 latest

Hmm, interesting. It seems to be using the hidden-iframe silent refresh mechanism used for interactive (Code/Implicit) flows instead of the refresh token one.

@jeroenheijmans , you are right, the iframe appears in DOM when it tries to refresh the token.
It looks like a bug?

The relevant docs do suggest Password flow is not supported. Not sure what gives though.

@jeroenheijmans can you suggest a method to refresh the token? I did not find sample project for password flow unfortunately.

No, sorry, no idea. RPO flow is deprecated and I don't need to use or support it anywhere.
If I would need to use it (e.g. with a legacy server) I would probably not use a library but some form of handcrafted solution instead. RPO is so small that an entire library almost feels like overkill, usually.
Not really an answer to your questions, sorry. Possibly another community member can help out? Or you could dig through the code to see how things should work, and let us know what you found. Good luck!

We're using a password flow based auth mechanism and handle token refresh like so:
@Injectable({
  providedIn: 'root',
})
export class AuthService {
    constructor(private _oAuthService: OAuthService) {
        this._oAuthService.configure(authConfig);
        this._oAuthService.loadDiscoveryDocument();
        this._oAuthService.events.subscribe((e) => {
            switch (e.type) {
                case 'token_received':
                    this._oAuthService.loadUserProfile();
                    break;
                case 'discovery_document_loaded':
                    if (this._oAuthService.hasValidAccessToken()) this._oAuthService.loadUserProfile();
                    break;
                case 'token_expires':
                    this._oAuthService.refreshToken();
                    break;
                default:
                    break;
            }
        }
    }
}

This also handles loading of the user profile after getting an access token, and loading the user profile if the user still has a valid access token (from storage), which is in this way IMHO handled more elegantly than the provided examples in the documentation.
The token_expires event case will ensure that the token is refreshed when needed.


Could we disable ssl validation on python client

This issue is duplicated with #15461, but it has not resolved yet seemingly...

Well, we could disable ssl verification in C++ by TlsChannelCredentialsOptions#set_verify_server_certs, but I could not find the counterpart of python...


using hloc for reconstruct with existed matches

Hello, if I already have images and matches between them, can I use the hloc to build and reconstruct 3D model? if I can so how?
I saw it has a stage for feature extraction, but I have already the matches ready for reconstruction, can I skip this stage?

Sorry for the late reply. You'd need to write keypoints to a feature h5 file and matches between them to another h5 files. Then you can call hloc.reconstruction. More details on the format:
features:
{
  image_name: {
    'keypoints': array with shape Nx2
  },
}

matches:
{
  image_name_1/image_name_2: {
    'matches': array with shape N, where N is the number of keypoints in image 1
  },
}

很抱歉回复晚了。您需要将关键点写入特征 h5 文件，并将它们之间的匹配项写入另一个 h5 文件。然后你可以调用 hloc.reconstruction。有关格式的更多详细信息，请参阅 loading functions：
特征：
{
  image_name: {
    'keypoints': array with shape Nx2
  },
}

比赛：
{
  image_name_1/image_name_2: {
    'matches': array with shape N, where N is the number of keypoints in image 1
  },
}

Hello! I am also interested in this question. How can I read the feature points from the database.db file of colmap and save them in two .h5 files with the feature matching, and ensure that the format is consistent with the matches.h5 file obtained by running in hloc?


mqtt.js clinet can not SUB.

Environment

OS: Ubuntu 16.04
Erlang/OTP: 20.1
EMQ: 2.3.5

Description
var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://q.emqtt.com:1883')

client.on('connect', function () {
	console.log('-------------')
  	client.subscribe('presence')
  	client.publish('presence', 'Hello mqtt')
})

client.on('message', function (topic, message) {
  // message is Buffer
  	console.log('+++++++++++++++++++');
  	console.log(message.toString())
  	client.end()
})

A description of the issue
I use emqtt to simulate PUB/SUB.
It can not output:
"+++++++++++++++++++
Hello mqtt"
I don't know what is the problem.
Thanks for any helps.

JavaScript uses an event-driven, non-blocking I/O model.
Subscribe and publish are almost executed at the same time. The client publish a message without a topic before it was subscribe successful if you running slow network.
...
client.on('connect', function () {
	console.log('-------------')

  	client.subscribe('presence')
  	setTimeout(function publish() {
                // Luckily 1000ms is enough
                client.publish('presence', 'Hello mqtt')
        }, 1000)
})
...

It is necessary to use a callback function or a time drive to solve the timing problem.
...

client.on('connect', function() {
  console.log('-------------')
  client.subscribe('presence', function callback(error) {
    console.log(error && error.toString() || 'Subscribe Success')
    client.publish('presence', 'Hello mqtt')
  })
})

...

it's worked for me.
Thanks for the response.

@hung119 EMQ R3 will ensure an subscription take effect when the client received 'SUBACK'.


Multiple entrypoints for @pika/plugin-bundle-web

Add support for array of entrypoints for @pika/plugin-bundle-web. This would be useful if we need to set entrypoints for multiple CDNs like unpkg, jsdelivr... at same time.
For backward compatibility, it should also allow string as one entrypoint. But if there is a list, it should add all of them.

+1, that makes sense to me. So the change would be:
- entrypoint: string,
+ entrypoint: string | string[],

Do you want to make the change? Happy to review a PR if so

Ok, I will create PR later today.

@FredKSchott I created #74.

Thanks @filips123!


getstate error for remote devices

[9/4/2024, 1:43:46 PM] [RPi] rpi4b2g: warning: heartbeat error: invalid state: Bad control character in string literal in JSON at position 235
[9/4/2024, 1:43:46 PM] [RPi] rpi3b: warning: heartbeat error: invalid state: Bad control character in string literal in JSON at position 234
I am getting these errors all the time from local hombridge on another rpi which does not throws the error for itself and works fine. I rebooted service and device and still getting these every 15 seconds on hearbeart check intervals. Just change the get state script to the latest one as you suggested in the latest update of the plugin.
remote test:
rpi -H REMOTEIP info
rpi info: error: invalid state: Bad control character in string literal in JSON at position 234
local is fine.
Edit: removed this line from script
"swap": "$(swapon --show=size,used --noheadings --bytes)",
it is working for remote devices now but getting the warning of "old getstate is used in the plugin"
homebridge latest stable
nide.js 20 latest stable
plugin latest stable

What version of Raspberry Pi OS do you have?
What's the output of the command swapon --show=size,used --noheadings --bytes when executed on the Pi?

Hm, do you have multiple swap files configured?  What's the output of swapon --show?

it is working for remote devices now but getting the warning of "old getstate is used in the plugin"

Just change the line to swap: 0, to suppress the warning.

Yes, the script doesn't take into account that (apparently) there can be multiple swap files.  This is probably an edge case.
Can you disable /var/swap, using only the ZRAM partition?  Otherwise, change the script line to only return the last line (assuming /dev/zram0 is listed last on all Pi-s):
"swap": "$(swapon --show=size,used --bytes | tail -1)",

Yes, the script doesn't take into account that (apparently) there can be multiple swap files. This is probably an edge case.
Can you disable /var/swap, using only the ZRAM partition? Otherwise, change the script line to only return the last line (assuming /dev/zram0 is listed last on all Pi-s):
"swap": "$(swapon --show=size,used --bytes | tail -1)",

"swap": "$(swapon --show=size,used --bytes | tail -1)",
used this and it is working as it should. Thanks


chore: Adds new test file for onboarding start from scratch userflow

Description
This pull request adds a new test file for the onboarding start from scratch userflow.

It also includes an assertion for building block cards on the canvas.
Additionally, it includes changes to the templates and dataSources files to support the test.

PR fixes following issue(s)
Fixes #30384
Media

A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video

Type of change

Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
Chore (housekeeping or task changes that don't impact user perception)
This change requires a documentation update

Testing

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration.
Delete anything that is not relevant

[ ] Manual
[ ] JUnit
[ ] Jest
[ ] Cypress

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Speedbreak features have been covered
[ ] Test plan covers all impacted features and areas of interest
[ ] Test plan has been peer reviewed by project stakeholders and other QA members
[ ] Manually tested functionality on DP
[ ] We had an implementation alignment call with stakeholders post QA Round 2
[ ] Cypress test cases have been added and approved by SDET/manual QA
[ ] Added Test Plan Approved label after Cypress tests were reviewed
[ ] Added Test Plan Approved label after JUnit tests were reviewed

/ok-to-test<EMAIL_ADDRESS>

/ok-to-test<EMAIL_ADDRESS>


added starter kit link

Added link to webpack config tool that lets users create webpack project with React and Typescript

Thanks a lot! Got merged :tada:

thanks both!!


Make marks and registers plugin respect timeoutlen

Make the popup window does not appear instantly when pressing @,",`, or '.
The same modification as in #156 done to the other triggers in marks.lua and registers.lua.

I think this feature is really useful, I think immediately triggering marks and registers is also annoying! May I ask you about why you closes this PR?

Also wondering why this was closed, and planning on resubmitting the exact same changes.