[WIP] New notifier refactor

NOTE: ~Everything here is still a draft, mostly untested, and meant for discussion still.~ Getting mostly up to snuff at this point, though still open for other changes.
Motivation for changes:
Further separate the different types of notification generation plugins for simplification, and easier customization of each message type. Simplify the framework to not need advanced knowledge about the context of a message.
Detailed changes:

The notification framework only sends one message at a time now, and doesn't have knowledge of the 'context' of the message. (also makes a future log notifier easier, which isn't task or entry context)
plugins in the 'notifier' group now get params as (title, message, config) with all templates already rendered. title and message will be the message as constructed by one of the notification message generator plugins (notify_abort, notify_task, etc.), and config is the config for the transport plugin (email, prowl, etc.) as specified and validated by its schema (any text fields in the config will have jinja templates rendered against the appropriate context before being passed to transport plugin though)
to send a message, you send (title, message, outputs, [template_renderer]) where outputs is a list of configured notifier output plugins. template_renderer should be a function that renders jinja strings or templates against the appropriate context for the message. It will be applied to title, message, and any string keys in the output plugin configs.
[x] Remove title and message params from each notifier plugin?
A function can be passed in which will be used to render all text fields in the notification config for convenience (so each notification generator doesn't have to do it themselves.)
The common base class was removed from the notification generators, and split into multiple separate files which now handle the different contexts of the notifications themselves.
Move notifications to a new notify phase. Add a way to suppress task aborts from this phase. (Is the way I did this okay? Is there something nicer?)
notify_task now only notifies when there are accepted or failed entries. Removed and tweaked templates so that we don't generate blank emails anymore.
Notifications are sent on --test runs now too.
[x] Update the notification output plugins to take the title and message (add url as a default message field too?) separate than the output plugin config. (all of them now done, question about url as a default field remains open though)

Breaking changes
I've changed some names that I thought made sense, but we could backtrack if they don't seem worth it to break backwards compatibility in places.

[x] ~notify_entries -> notify_entry ? I feel this has more parity with the singular notify_task, plus it sends a notification per entry like notify_task does per task~
[x] combined notify_entries and notify_task, and notify_abort back into notify plugin, with 'task',  'entries', and 'abort' subkeys.
[x] the template folder 'entries' to 'entry', as that's the rendering context
[x] file_template -> template I changed the option in notify_task and notify_entry to just 'template' to specify one of the templates from disk.
[x] 'to' -> 'via' any of the plugins that send messages take the notifier configs under the 'via' key now.
[x] Backwards compatibility with the notifiers allowed directly in task is gone.
[x] The notifier transport plugins no longer allow title, message, or template (or file_template) in their schemas.
[x] 'notify' plugin was used as a framework for any other plugins that wanted to send messages before. Put that functionality into 'notify_framework' plugin now.
[x] sns is now a regular output plugin again. (I did move it to the new notify phase so that errors don't fail the task, but I'm not sure if that's good or not.)
[x] rename notify_osd to on_screen_display, to line up with other notifier names better

Things to finish before merging

[x] Make the sns notifier a regular output plugin again.
[x] Combine notify_task, _entry, _abort, again? I'm still not really certain about that one, I sorta like the split.
[x] Notify_task and _entries are combined, should _abort go in there too?
[x] The common framework used to send notifications is now named notification_framework so that the task plugin can be named notify. Not great, but it's only used from other plugins, not user facing.
[ ] Consider the case where there are no other output plugins in a task but a notifier. In this instance it may be desirable to let failures in the notification cause entry failures/task aborts, as there won't be any side effects.
~Consider whether the notification framework should provide 'url' as a default field. There are several notifiers which all support 'url', but it wouldn't be 100%. 'subject' is already included though, and that isn't used 100% either, so url might be just as appropriate.~ Leaning to 'no' on this.

I was also wondering if 'via' might be more appropriate for the list of notifier outputs, e.g.:
notify_task:
  via:
  - email:
      to<EMAIL_ADDRESS>
Eliminates the double nested 'to' option in the email case. I think it's a bit more accurate description as well, i.e. the notification is being sent 'via' one of the transport plugins, and 'to' a recipient defined in that transport plugin config. (BTW, maybe need some more consistent terminology to discuss these plugins. What do we call the message generators, (notify_task, notify_abort, etc.,) vs the transport ones, (email, pushbullet, etc.?) similar to the problem of 'list plugins' (list_match, list_add, etc.) vs 'list_plugins' (imdb_list, trakt_list, etc.))

I like using via but I'm not sure if this warrants ANOTHER upgrade actions in spite all the noise this change already made...
About the semantics, I suggest we lock down the manged list semantics first :stuck_out_tongue:

About the semantics, I suggest we lock down the manged list semantics first

I think the terminology should be the same. We have a pattern of defining an api the plugins in a certain group should implement. We then have plugins in that group, and plugins that use plugins in that group. This applies both to the list plugins, and the notification plugins. I just want to figure out what the hell to call things when discussing. 😛

for me the email should be very simple, it should be HTML and be sent at every new DOWNLOAD, like this:
http://i.imgur.com/l5E0Pwh.png

and for me one thing is not clear, what is the different between

notify_task

and

notify_entry

?
Thanks for the hard work to make this happen!

@alneven notify_task sends notification per task execution, notify_entry (or notify_entires as it currently exists) will send a notification per entry in the task, for each accepted entry by default.,

In my case I would need notify_entry as I have one task to download TV shows, and for each downloaded episode I would need one email as notification. With the old HTML email template, pimped with the "title" as release_name.

This really isn't the place for this, pick this up in the forum.

@gazpachoking i'd say add url as a default and keep the separation of notify_task and notify_entry.

i'd say add url as a default and keep the separation of notify_task and notify_entry.

I'm leaning the same way on keeping notify_task and _entry split.
I'm starting to lean the other way on the url thing though, here's some of my questions:

Should url have a default value if user hasn't configured it?

What would it be for notify_task (or notify_entry for that matter?)

What should plugins that don't take the url field do? Edit the message to include it? Ignore it?
Might be a bit confusing that configuring that field does nothing depending on your notifier transport.
(I actually have similar concerns about the notifiers that don't accept 'subject', but I'm not really as concerned about that.)

Just converted sns plugin back out of the notifier system. I don't think it fit, as it ignored the 'message' parameter that the notification system passed in and made its own (it seems to output structured json, not just a message.) I moved it to the on_task_notify phase, which means the task won't fail (and entries won't be tried to add to sns after fail) if the sns posting doesn't work. I'm a bit hesitant on the whole thing because I have absolutely no idea what the sns plugin is being used for, and whether these change will affect said users.

I probably shouldn't have refactored sns. I'd say just revert to to how it was before 2.8.

about url, I agree that it doesn't make sense to when using task scope, that's why I had it default to empty string. But I do think it's a nice default to have in entry scope,  maybe default to imdb or tvdb url.
someday we'll have generic lookup support we could use that instead

Okay, I finished the combination of notify_task and notify_entries back under just notify plugin. Right now I renamed the framework plugin (that other plugins use to send notifications,) to notify_, which isn't so nice. Open for suggestions on what to do with that.

Also, should notify_abort be combined back to notify plugin as well?

@paranoidi @liiight Any comments on the last 3 todo items?

I'd say making notify_abort work like the other two makes sense, no need to have two schema paradigms.
About having no output plugins in the task, I don't know how common of an issue that is, and if it's worth supporting as a real life scenario. maybe handle that problem if and when it arises?

@liiight I wanted to comment on the "no other output plugins" consideration since I was the one to raise this concern.  Although I agree its probably not common, the email plugin used to be just a normal output so there was nothing wrong with this configuration.  I raised the concern to address the changes in the behavior resulting from introduction of the notify phase and discuss how to best maintain the previous functionality while still implementing the improvements.  As a result of the changes associated with the notify_phase, a task that only has a notification output will no longer retry sending the notification if the notification fails.  I think that if the notification is the only output, and the notification fails, it should consider that entry to be failed
As an alterantive, I'm not sure if this was considered, but the best way of handling may be to create a notification queue.  This way, regardless of the output, any failed notifications could be retried on the next run of the task and would be sent to the user without the program re-downloading

@gazpachoking notifyosd is a crappy name but it's not original name https://wiki.ubuntu.com/NotifyOSD

@gazpachoking notifyosd is a crappy name but it's not original name https://wiki.ubuntu.com/NotifyOSD

Oh hmm. It works with this too, right? https://wiki.archlinux.org/index.php/Desktop_notifications 'notify osd' seems to be just one implementation for unity.

I have no idea...

Sweet, windows osd. Works on 7 and up I suppose?

Sweet, windows osd. Works on 7 and up I suppose

Works on 10 at least, (though not optimal integration with the new action center,) not sure how far back it goes, I assume it works fine on 7.

What should we call the osd notifier now that it's a bit more generic? Would 'popup' or 'desktop' or something be more appropriate?

I think on_screen_display is generic enough. Also, I think it's schema should also be a Boolean, so you could just do on_screen_display: yes

Hmm,got this crash while testing it:
4 VERBOSE  task          ser             ACCEPTED: `series.s01e01.720p.hdtv-flexget` by accept_all plugin                           2017-01-06 01:14 VERBOSE  details       ser             Summary - Accepted: 1 (Rejected: 0 Undecided: 0 Failed: 0)                                 2017-01-06 01:14 WARNING  task          ser             Task doesn't have any output plugins, you should add (at least) one!                       2017-01-06 01:14 CRITICAL task          ser             BUG: Unhandled error in plugin notify: Missing parentheses in call to 'print' (__init__.py, line 39)                                        Traceback (most recent call last):
  File "/data/data/com.termux/files/home/Flexget/flexget/task.py", line 490, in __run_plugin          return method(*args, **kwargs)
  File "/data/data/com.termux/files/home/Flexget/flexget/event.py", line 23, in __call__              return self.func(*args, **kwargs)              File "/data/data/com.termux/files/home/Flexget/flexget/plugins/notifiers/notify.py", line 129, in on_task_notify                                     send_notification(config['task']['title'], template, config['task']['via'], template_renderer=task.render)                                       File "/data/data/com.termux/files/home/Flexget/flexget/plugins/notifiers/notification_framework.py", line 120, in send_notification                  notifier.notify(title, message, rendered_config)  # TODO: Update notifiers for new api          File "/data/data/com.termux/files/home/Flexget/flexget/plugins/notifiers/on_screen_display.py", line 28, in linux_notify                             from gi.repository import Notify               File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/gi/__init__.py", line 39          print url                                                ^                                    SyntaxError: Missing parentheses in call to 'print'

I'm not so sure anymore about the via keyword now that we have the task and entries levels:
notify:                                                                                task:                                                                                via:                                                                                - on_screen_display: {}

This feels too much to me...


Added docs for Google Cloud Storage

This time commiting to the correct branch. Fixed the one typo your pointed out and an error that caused my code to throw an error (I missed the r in one of the requires). I think there was one more error, but I honestly cannot remember what it was...I think it was a change I made to make the code suit my application. Needless to say, after correcting small errors, the code will indeed run.

@sethmurphy18

I think there was one more error, but I honestly cannot remember what it was

It is still persists? (Didn't get it)

Yeah, it didn't persist. I guess I got the error whenever I modified the code.


Compatibility with other S3-compliant solutions (e.g. DigitalOcean Spaces)

Hi Robin, thanks for developing and maintaining this plugin. Though I'm not confident enough in my ability to create a robust and testable PR for this, I think it'd be fairly easy to change the way the plugin conducts AWS auth in order to make it compatible with other S3-compliant solutions such as DigitalOcean spaces.
The current authentication process involves the AWS config object:
const { aws: awsConfig, buckets } = pluginOptions;
AWS.config.update(awsConfig);
  const s3 = new AWS.S3();

To expand this plugin's compatibility with other S3-compliant solutions, couldn't we add a configurable endpoint to the plugin options (one that still defaults to an S3 endpoint and uses the region property) and perhaps just pass the config object to the s3 constructor?
const someOtherS3CompliantEndpoint = `https://${region}.digitaloceanspace.com`; // e.g.
const s3 = new AWS.S3({
    endpoint: someOtherS3CompliantEndpoint,
    accessKeyId: process.env.CLIENT_KEY,
    secretAccessKey: process.env.CLIENT_SECRET
});

After thinking about it for 20 minutes, this is a total copout - I'm going to try my hand at a PR! Hopefully I can learn stuff along the way

Hey @brendanbond, sorry for my late reply, I was away for a bit 🙂
I think that this is a great idea! I'll reopen the issue to keep track of it, if you don't mind.
I'm not very familiar with the differences between S3 and S3-compliant solutions, but I'd be more than happy to review and help test a PR. Is this still something you're interested to contribute? Anything I can do to help?

Thanks for your interest in gatsby-source-s3. This plugin is moving into the Gatsby User Collective and this repo will be archived. Please open an issue in that repositor, submit a PR if you'd like to see this implemented, or Join us on Discord if you have questions!


Fix Hub API test branch checkout

Updating script checking out hub API tests to be able checkout diverged branches (previous git pull command failed on this).

TIER2 failure is expected.

Hi @aufi
Should it be cherry-picked in the release branches?


Defining Attribute Types

Is your suggestion related to an experience ? Please describe.
When attributes are added from console -> Manage -> Attributes -> Attributes -> New Attribute, the type of attribute ( ex :- boolean) cannot be declared.
Describe the improvement
Being able to declare the type of attribute when defining them will be an advantage.

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


convert config from property to method

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#554  👈
#553
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jlewitt1 and the rest of your teammates on  Graphite

i think @carolineechen had recommended we keep config_for_rns as is as a property.
then we separately introduce config() as a function, and config_for_rns calls that for BC, everything else uses config()
then later we can move it to just config

@rohinb2 as of this PR config_for_rns is a property which just calls into config (now a function). are you seeing otherwise?

o missed this lgtm


Fetch fails if Content-Type is missing

Description
If the Content-Type response header is missing from a .json file (if the web host doesn't add it for some reason), then page transitions where data is needed will fail.
Steps to reproduce
This is a bit tricky because you'd have to create a host which doesn't add Content-Type headers...
Expected result
The route transition should happen anyway.
Actual result
Exception is thrown: Resource at ${jsonPath} is not JSON
Environment

Libs:
- gridsome version: 0.6.5
- @gridsome/cli version: 0.2.1

Browser:
- [x] Chrome (desktop) version XX
- [x] Chrome (Android) version XX
- [x] Chrome (iOS) version XX
- [x] Firefox version XX
- [x] Safari (desktop) version XX
- [x] Safari (iOS) version XX
- [x] IE version XX
- [x] Edge version XX

Other notes
I was able to get this working in production by removing this from app/fetch.js:
if (contentType && /application\/json/.test(contentType)) {
}

Is this check really necessary? What if we throw an exception only if the JSON doesn't parse?

This bit me today. Wasted an hour on it. Rolled back to 0.6.4 and the issue seemed to go away.

@brandonpittman Sorry for that... Just publish a new version on npm (v0.6.6) that should fix it.

Awesome. Thanks for the fast response @hjvedvik.

@dweldon @hjvedvik Thanks for the fix. Glad to know I wasn't just crazy. 😀 Worked on the staging server but not the production server.


Apply KYC on the farmers

Is your feature request related to a problem? Please describe
Farmers should go through KYC process if they want to interact with any farming features
Describe the solution you'd like
Farmers should go through KYC process if they want to interact with any farming features

Work in progress:

Farmers can't create or edit wallet unless the farm's wallet is verified.

Verified on Android 14,
Threefold-Connect: 4.0.0-184
APK:12-12-2024
Farmers cannot create a new farm if their KYC is not verified.

https://github.com/user-attachments/assets/93a41354-1d87-46aa-b23b-280b205ce27c
Related Link:

https://app.testlodge.com/a/26076/projects/40893/suites/246368?expand_section=455595#case_4435696


[feature] Allow to adjust font size in the diff/preview view

I find the font size to be somewhat small for the diff/preview view.
Would be awesome to get a slider and/or text box to change the font size in the main settings for that!
Cheers :)

@GlassedSilver see #222 (comment)

So i dont know.. i'm open to PRs, out of maybe 150 issues here I only ever received 2-3 PR's and the rest is me doing the work.... so I'm open to PR's..

A better PR would be to change to a real UI toolkit, if you look, the UI toolkit is pretty lightweight and ad-hoc, its an old version of PureCSS, but I really have no time for using a CSS framework that requires 2-4 gigabytes of node/npm package build and nodes subsequent, inevitable issues which makes it even more difficult for people to submit PR's..

so yeah.. PR please :)

I repeat, please submit a PR, it's pretty much me doing all the work here for free, when I should be doing more paid work

No hard feelings, but what's with the hold-up on my PR?
If there's something to fix please let me know, because I'd love to learn as well and maybe even provide a better PR in the process. If my PR is superceded by someone else's work that's on the way then that's cool as well, but since you repeatedly asked for a PR I thought I could maybe hear back from you after providing the code?

font is now larger


support exec commands

Context
if your project uses persistent containers, palm can't exec them. womp.
Is your feature request related to a problem? Please describe.
it's totally reasonable to architect projects from scratch to always use new run instances. but sometimes you really might need to exec a running instance - OR it just might be a better pattern that makes more sense
Describe the solution you'd like
context.obj has run_in_docker
it would be cool if it also had exec_in_docker so you could palm up and then palm migrate which runs exec commands on the container from the up command.
Describe alternatives you've considered
re-architect the project to use only run commands, but there are some things that just isn't going to work for I don't think.
Is there an existing feature request for this?

[x]  I have searched the existing issues

I think this feature maps well to larger projects with multiple containers. I've used similar workflows when working with rails, for example.
I definitely think we will want something like this, but we should build it with multi-container apps in mind


Accept runtime arguments from environment variables and config files

These will make the server easier to deploy in certain contexts, particularly inside container orchestration systems.

We need more information before we do this, because we need to know what type of load balancer, orchestrator, etc. that people are using.
We could just try to handle all of the commonly things that are used and handle them on an if-basis. (Obviously requires more work)

Should we do this? This would give the user an alternative to command-line arguments, even without regard to load balancing, orchestration, etc. More config options for those things and others can be added later.
This is of course what zcashd does with ~/.zcash/zcash.config (which we got from bitcoin). I think the format zcashd and bitcoin uses is: https://en.wikipedia.org/wiki/INI_file
There is a golang package that implements this format: https://github.com/go-ini/ini

We do already use go-ini for parsing Zcash config files over in the RPC client, so that's not out of our way.
This was more referring to allowing cluster orchestrators to pass port assignments and such through environment variables or mounting a config, whatever is idiomatic. Someone's going to need it someday, but not until they start deploying lots of lightwalletd instances on k8s or marathon or something.

Added an example of this functionality with the cobra and viper packages here https://github.com/zcash-hackworks/lightwalletd/pull/165
I really want to provide alternative for parsing zcash.conf, but feel like this is a first step.


Rename RollingDisc submodel disc to wheel improving consistency

This PR deprecates RollingDisc.disc and replaces it with RollingDisc.wheel. This better matches the naming of the actual submodel classes and the naming of the submodels of the bicycle models.

This PR also re-enables the cache environment for the doctest, which was temporarily disabled in #128 because the cache did not contain the newest version of SymPy.


Add retry decorator for flakey tests

Update doc strings

Signed-off-by: Jhon Honce<EMAIL_ADDRESS>

@baude @TomSweeneyRedHat @umohnani8 Please review.  Thanks.

LGTM

@TomSweeneyRedHat That is the very flake we're trying to beat into submission. :) I added some debugging to see if I can determine more.

@TomSweeneyRedHat @baude Updating delay worked on this iteration.  Time will tell how much improvement we get.

Lets give it a go ... good show @jwhonce !

@rh-atomic-bot r+


Field elevation not taken into consideration

When filtering reachable locations, the field elevation is not taken into consideration at all. While the error is reasonably small at less than 100ft in the HH region, it is a critical error which causes wrong indications!

The elevation differences in the area covered so far are within 170ft at the extremes. While this is a non-negligible amount, calculating the range profiles for each different elevation would increase the overall computational by the factor of the locations covered. While certainly possible, the simulation lag does not seem worth it and thus the better solution would be to simply inform users about this in advance.
The picture below depicts the terrain elevation across most of the current service area:

Available here.
This decision may be revised at a later date.


[v6] nonexported action creators mistake?

The action creators: registerField, unregisterField, updateSyncErrors, are not exported in index.js. Is this intentional?

Yes. Those are meant for internal use only.


Draft of HTC passthrough (XR_HTC_passthrough) support with OpenXR

initial stab on supporting devices like HTC XR Elite with pass-through.
However, this raises design questions in openxr_interface.cpp in regards to how to share or differentiate Meta passthrough from HTC (and later potential Apple). At the moment is_passthrough_supported, is_passthrough_enabled, start_passthrough, stop_passthrough are using an internal instance to OpenXRFbPassthroughExtensionWrapper
HTC passthrough is rather simple but supports controlled alpha blending.
Reference: https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_HTC_passthrough
Open to comments @BastiaanOlij

If this is specific to HTC, it may be more appropriate in https://github.com/GodotVR/godot_openxr_vendors

OMG, with clearly defined pass through approaches, why do vendors keep doing their own thing... sigh
HTC has been off my radar because I lack hardware to test and develop with sadly.
Most AR devices (e.g. Hololens, ML2, Lynx R1) just assume the images we provide has alpha applied and the primary layer has its blend mode set to Alpha. The Lynx is the exceptional case here because it actually uses cameras, but it will just render the camera underneath to simulate AR. For Hololens and ML2 it doesn't really matter due to the way the image is projected.
I suspect Apple, if it ever gets OpenXR support (highly doubt it) will go this way too.
As far as I'm aware this is the "official" way to do passthrough in OpenXR.
Meta went a lot further creating a camera layer so there is more control over where the camera image is shown, without exposing that camera image to the user for privacy reasons. Pico basically adopted this extension for their pass through too.
It seems HTC decided to create a competing extension. Fun.
So extension wise your PR looks fine, it's now indeed a matter of tying it into the system. Godot supports the "ML2/Lynx R1/Standard OpenXR" approach out of the box, just seeing it as AR. It off course isn't passthrough for real AR devices and the Lynx R1 just emulates it as an AR first device.
So when we talk about passthrough, we're talking about the exceptional case where we need to enable a mode where the camera image is used. The design here was to try and keep it agnostic to the actual platform. So XRInterface just has an is_passthrough_supported, is_passthrough_enabled, start_passthrough and stop_passthrough method that needs to be implemented on the actual interface for the given platform.
For OpenXR that means we check the various implementations, it is unlikely that both FB and HTC wrappers are available and enabled.
So in OpenXRInterface the current passthrough_wrapper needs to be renamed to fb_passthrough_wrapper and we add a htc_passthrough_wrapper.
Then is_passthrough_supported changes to something like:
bool OpenXRInterface::is_passthrough_supported() {
	if ((fb_passthrough_wrapper != nullptr) && (fb_passthrough_wrapper->is_passthrough_supported())) {
		return true;
	} else if ((htc_passthrough_wrapper != nullptr) && (htc_passthrough_wrapper->is_passthrough_supported())) {
		return true;
	} else {
		return false;
	}
}

And similar changes need to happen to is_passthrough_enabled, start_passthrough and stop_passthrough, we first check which extension is enabled, and then use that extension to setup passthrough.

If this is specific to HTC, it may be more appropriate in https://github.com/GodotVR/godot_openxr_vendors

In this case we decided long ago to handle the vendor specific changes inside of Godot, though I really hope one day soon it can all be replaced by a Khronos extension.

@BastiaanOlij the situation with is_passthrough_enabled, start_passthrough and stop_passthrough is indeed complicated design-wise. Because once the passthrough is requested with xrCreatePassthroughHTC (btw. there is also another flag triggering a mode similar to Meta devices with a custom mesh, which the current OpenXR backend doesn't allow, hence I ignored this; would allow for something like Augmented Virtuality) ... anyways. Once passthrough is requested, it is on and the alpha member in the color part of the struct controls how much comes through. Hence, the question how to fiddle this into the current API design? Make start_passthrough set it to 1.0f and stop_passthrough to 0.0f? It would be hacky but at least we would hide the underlying differences. Or we make the Meta passthrough react on a threshold of 0.5f of a alpha member and support the blending mode in the HTC devices.
I will try to extend my PR with something to tying it in as it was currently (binary on/off).

If this is specific to HTC, it may be more appropriate in https://github.com/GodotVR/godot_openxr_vendors

In this case we decided long ago to handle the vendor specific changes inside of Godot, though I really hope one day soon it can all be replaced by a Khronos extension.

@BastiaanOlij We'll need to review this approach.. By that same logic, all the current Meta vendor extensions that are being added to the vendors plugin should be added directly inside of Godot as well.

@BastiaanOlij We'll need to review this approach.. By that same logic, all the current Meta vendor extensions that are being added to the vendors plugin should be added directly inside of Godot as well.

You misunderstood me here, the passthrough logic is the exception to the rule because we decided to do it this way, a long time ago, mostly because when we did this we started with the VrAPI implementation, and then when we switched to OpenXR we only supported Meta on Android.
It's actually the use case that shows the problem with this approach, where we've exposed a passthrough mode to the end user, that only works for one vendor while for other vendors different approaches have to be taken. This means that any vendor that does not adopt the official way, nor Metas way, suddenly breaks even though we give the illusion that we support passthrough in the core. This is the danger of accepting Vendor specific logic in the core.
The "official" OpenXR way, as I understand it, is using the blend mode on the image being submitted, which we have exposed as the environment blend mode.
So:

XR_ENVIRONMENT_BLEND_MODE_OPAQUE/XR_ENV_BLEND_MODE_OPAQUE means we don't show the background, we are in full VR mode
XR_ENVIRONMENT_BLEND_MODE_ADDITIVE/XR_ENV_BLEND_MODE_ADDITIVE means the image is overlayed on top of the background, many true AR devices use this (and only support this mode because the way the optics work leave no choice).
XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND/XR_ENV_BLEND_MODE_ALPHA_BLEND means the image is overlayed on top of the background but using the alpha channel to mix, this mode is intended to trigger passthrough on camera based devices, but is also used by true AR devices (such as Magic Leap) that are able to black out the background.

So the "proper" way forward is to put pressure on Meta, Pico and HTC to support the above, and only use their extensions to unlock device specific passthrough features, and then remove the passthrough logic from the core and purely offer the blend mode solution in core.
But I think that ship sailed a long time ago and we're stuck with the choice we made here, might as well keep the exception and follow through with it.

So the "proper" way forward is to put pressure on Meta, Pico and HTC to support the above, and only use their extensions to unlock device specific passthrough features, and then remove the passthrough logic from the core and purely offer the blend mode solution in core.
But I think that ship sailed a long time ago and we're stuck with the choice we made here, might as well keep the exception and follow through with it.

So, it sounds like the plan is (1) keep vendor extensions for passthrough in Godot itself and (2) wait until all vendors to support the official OpenXR way so we can remove the vendor extensions from Godot.
I think this plan is OK, but I worry that if we keep adding new vendor extensions for passthrough, it could make nr 2 take much longer to happen (or maybe never happen if one of the vendors never adopts the official OpenXR way).
It may be worth considering coming up with a way to add new vendor passthrough extensions in the 'godot_openxr_vendors' repo, so that nr 2 only involves waiting for the vendors that we've already made exceptions for, rather than making the list of vendors longer and longer.

@dsnopek I'd be for moving all the logic into vendors but the problem we have is that we'll likely end up breaking backwards compatibility. This is why I have an position that we should try and do the right thing for new APIs, but where we're dealing with older choices we accept the status quo.
It's really hard to judge whether other vendors will go down this path. The introduction of the passthrough APIs have muddied the water a lot because it's putting vendors now tackling this on the wrong foot.
I also have some personal opinions here I won't divulge in public but you're free to ask me on rocket chat :P

I'd be for moving all the logic into vendors but the problem we have is that we'll likely end up breaking backwards compatibility.

To be clear, I wasn't suggesting moving everything into 'godot_openxr_vendors' right away. The idea was to make it possible to implement passthrough extension in 'godot_openxr_vendors', but keep the current Meta extension for this in Godot. Then we can add HTC or any other future passthrough-related vendor extensions into 'godot_openxr_vendors', and we only have to wait for Meta (just one vendor) to switch to the official OpenXR way in order to remove its extension from Godot (rather than having to wait for Meta, HTC and any others that may get added later).
This would hopefully allow us to transition without breaking backwards compatibility.
Anyway, probably best to discuss in a higher bandwidth format, maybe at the next XR meeting?

I'd be for moving all the logic into vendors but the problem we have is that we'll likely end up breaking backwards compatibility.

To be clear, I wasn't suggesting moving everything into 'godot_openxr_vendors' right away. The idea was to make it possible to implement passthrough extension in 'godot_openxr_vendors', but keep the current Meta extension for this in Godot. Then we can add HTC or any other future passthrough-related vendor extensions into 'godot_openxr_vendors', and we only have to wait for Meta (just one vendor) to switch to the official OpenXR way in order to remove its extension from Godot (rather than having to wait for Meta, HTC and any others that may get added later).
This would hopefully allow us to transition without breaking backwards compatibility.
Anyway, probably best to discuss in a higher bandwidth format, maybe at the next XR meeting?

I'm also inclined toward that approach. I think even with regard to the existing Meta passthrough functionality, we can leave it as is to avoid breaking backward compatibility, but add a logging message (and update the documentation accordingly) to recommend users to instead use the vendors plugin to access the full functionality.
As mentioned, let's follow up during the next XR meeting; I've added the PR to the list of PRs to review

One of the options I was thinking off is to make this purely work the way OpenXR intended.
Eg:

we deprecate the is_passthrough_enabled, is_passthrough_supported, start_passthrough and stop_passthrough methods in XRInterface
we make it clear in the documentation that get_supported_environment_blend_modes returns the available modes and what they mean
we make it clear in the documentation that set_environment_blend_mode should be used for passthrough/AR

Now in the vendor plugin, for any vendor that requires additional logic, we check what environment blend mode is set to and perform the additional logic.
We could add the ability to register a callback or emit a signal when set_environment_blend_mode changes the blend mode to make starting and stopping passthrough easier for those runtimes that require that.
To keep backwards compatibility we can:

make sure that is_passthrough_enabled and is_passthrough_supported return true if XR_ENV_BLEND_MODE_ALPHA_BLEND is returned by get_supported_environment_blend_modes
have start_passthrough set our environment blend mode to XR_ENV_BLEND_MODE_ALPHA_BLEND
have stop_passthrough set our environment blend mode to XR_ENV_BLEND_MODE_OPAQUE

Also, kind of on a tangent but this has been a long outstanding 'wish' on my part. The project setting for environment blend modes should be an order. On AR only devices the only blend mode supported is XR_ENV_BLEND_MODE_ADDITIVE, which gives an error with our default XR_ENV_BLEND_MODE_OPAQUE value.
This way you can correctly set whether you want a game to start in AR/Passthrough mode and only fallback on opaque if you're on hardware not capable to do AR, or you can default to opaque but fall back to additive for VR games.

@BastiaanOlij That sounds like a decent way to do it!

Now that Meta's passthrough extension has moved to the godot_openxr_vendors repo via PR https://github.com/godotengine/godot/pull/87630 and https://github.com/GodotVR/godot_openxr_vendors/pull/79, this PR should probably be redone for godot_openxr_vendors as well. I imagine that most of the code will be able to be reused.

Now that Meta's passthrough extension has moved to the godot_openxr_vendors repo via PR #87630 and GodotVR/godot_openxr_vendors#79, this PR should probably be redone for godot_openxr_vendors as well. I imagine that most of the code will be able to be reused.

Unfortunately, neither me or any of my students will have time to work on it. If somebody wants to reuse this PR please have a look at my repo.

@seichter I finally found time to convert this over, see https://github.com/GodotVR/godot_openxr_vendors/pull/151
Thanks for the work you did here, made it much easier to get this up and running!


Allow scrollLeft to be animated

Accepts scrollDirection argument (defaulted to 'scrollTop', but accepts 'scrollLeft')  and animated accordingly.

@marekhrabe whats the status of this? using my forked version in production but would love to use your repo

This looks nice, don't know why they din't merge it, I was going to also implement and do a pull-request but I dont think the project is maintained.
Going to use your fork, thank you.


Abort update if dotfiles are dirty

When there are commits pending in the dotfiles directory the dotfiles-update script should abort to prevent merge fail.

Fixed in fc14be8215698fa5019f18f59cde50703191fd6c


Control_LED_Picovoice demo compile issue

Hi,
I would like to try Control_LED_Picovoice demo for "Arduino Nano 33 BLE".
I have failed the compile with the error messages as follows:
If you have any advice, please let me know.
Arduino：1.8.19 (Windows Store <IP_ADDRESS>) (Windows 10), ボード："Arduino Nano 33 BLE"
C:\Users\ユーザー\OneDrive\デスクトップ\Control_LED_Picovoice.ino: In function 'void setup()':
Control_LED_Picovoice:10:32: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
C:\Users\ユーザー\OneDrive\デスクトップ\Control_LED_Picovoice\Control_LED_Picovoice.ino:170:13: note: in expansion of macro 'MEMORY_BUFFER_SIZE'
Control_LED_Picovoice:180:20: error: invalid conversion from 'int8_t* {aka signed char*}' to 'int32_t {aka long int}' [-fpermissive]
Control_LED_Picovoice:172:19: error: invalid conversion from 'unsigned int' to 'void*' [-fpermissive]
Control_LED_Picovoice:180:20: error: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'int32_t {aka long int}' [-fpermissive]
Control_LED_Picovoice:180:20: error: cannot convert 'const float' to 'const void*' for argument '5' to 'pv_status_t pv_picovoice_init(const char*, int32_t, void*, int32_t, const void*, float, void ()(), int32_t, const void, float, bool, void ()(pv_inference_t), pv_picovoice_t**)'
exit status 1
invalid conversion from 'int' to 'const char*' [-fpermissive]

Thank you for reporting this @jackieken. The LED demo on the Arduino Cloud is out of date. I'll let you know when it's updated to use the latest Picovoice package.

Thank you for your advice.
I have updated LED demo and Picovoice library.
Finally I have completed the compilation of demo.
I appreciate your help.


Product page translation

I've two language website English and French... I'm using silverstripe-shop module with SilverStripe v2.4.7
Product Group translation is working properly but when I translate a product item I get the following error:
RROR [User Error]: Uncaught Exception: Object->__call(): the method 'productgroups_original' does not exist on 'Product'
IN POST /SilverStripe-v2.4.7/admin/getitem?ID=23&locale=fr_FR&ajax=1
Line 724 in D:\server\www\SilverStripe-v2.4.7\sapphire\core\Object.php
Source
715:
716: 				default :
717: 					throw new Exception (
718: 						"Object->__call(): extra method $method is invalid on $this->class:" . var_export($config,
true)
719: 					);
720: 			}
721: 		} else {
722: 			// Please do not change the exception code number below.
723:

724: 			throw new Exception("Object->__call(): the method '$method' does not exist on '$this->class'",
2175);
725: 		}
726: 	}
727:
728: 	//
-----------------------------------------------------------------------------------------------------------------
729:
730: 	/**

Trace
Object->__call(ProductGroups_original,Array)
line 117 of HasManyComplexTableField.php
Product->ProductGroups_original()
line 117 of HasManyComplexTableField.php
HasManyComplexTableField->selectedItemIDs()
line 126 of HasManyComplexTableField.php
HasManyComplexTableField->ExtraData()
line 369 of ViewableData.php
ViewableData->obj(ExtraData,,,1)
line 446 of ViewableData.php
ViewableData->XML_val(ExtraData,,1)
line 763 of .cache.sapphire.templates.RelationComplexTableField.ss
include(C:\Windows\Temp\silverstripe-cacheD--server-www-SilverStripe-v2.4.7.cache.sapphire.templates.RelationComplexTableField.ss)
line 429 of SSViewer.php
SSViewer->process(ManyManyComplexTableField)
line 342 of ViewableData.php
ViewableData->renderWith(RelationComplexTableField)
line 275 of ComplexTableField.php
ComplexTableField->FieldHolder()
line 64 of HasManyComplexTableField.php
HasManyComplexTableField->FieldHolder()
line 93 of CompositeField.php
CompositeField->FieldHolder()
line 369 of ViewableData.php
ViewableData->obj(FieldHolder,,,1)
line 446 of ViewableData.php
ViewableData->XML_val(FieldHolder,,1)
line 73 of .cache.sapphire.templates.TabSetFieldHolder.ss
include(C:\Windows\Temp\silverstripe-cacheD--server-www-SilverStripe-v2.4.7.cache.sapphire.templates.TabSetFieldHolder.ss)
line 429 of SSViewer.php
SSViewer->process(TabSet)
line 342 of ViewableData.php
ViewableData->renderWith(TabSetFieldHolder)
line 80 of TabSet.php
TabSet->FieldHolder()
line 369 of ViewableData.php
ViewableData->obj(FieldHolder,,,1)
line 446 of ViewableData.php
ViewableData->XML_val(FieldHolder,,1)
line 58 of .cache.sapphire.templates.TabSetFieldHolder.ss
include(C:\Windows\Temp\silverstripe-cacheD--server-www-SilverStripe-v2.4.7.cache.sapphire.templates.TabSetFieldHolder.ss)
line 429 of SSViewer.php
SSViewer->process(TabSet)
line 342 of ViewableData.php
ViewableData->renderWith(TabSetFieldHolder)
line 80 of TabSet.php
TabSet->FieldHolder()
line 369 of ViewableData.php
ViewableData->obj(FieldHolder,,,1)
line 446 of ViewableData.php
ViewableData->XML_val(FieldHolder,,1)
line 77 of .cache.sapphire.templates.Includes.Form.ss
include(C:\Windows\Temp\silverstripe-cacheD--server-www-SilverStripe-v2.4.7.cache.sapphire.templates.Includes.Form.ss)
line 429 of SSViewer.php
SSViewer->process(Form)
line 342 of ViewableData.php
ViewableData->renderWith(Array)
line 1108 of Form.php
Form->forTemplate()
line 1135 of Form.php
Form->formHtmlContent()
line 391 of LeftAndMain.php
LeftAndMain->getitem(SS_HTTPRequest)
line 193 of Controller.php
Controller->handleAction(SS_HTTPRequest)
line 143 of RequestHandler.php
RequestHandler->handleRequest(SS_HTTPRequest)
line 147 of Controller.php
Controller->handleRequest(SS_HTTPRequest)
line 282 of Director.php
Director::handleRequest(SS_HTTPRequest,Session)
line 125 of Director.php
Director::direct(/admin/getitem)
line 127 of main.php
Hope there is a solution for this problem
Thank you

Hi jnckka, I'll have a look to see if I can find out what is wrong. If you find a fix, please let me know :)

Hello @jedateach
Hope @burnbright can find quick solution for this problem.. It is urgent.
I've accutually launced a client website and I'm in a bad situation now... They cann't translate product page or even can't make a product order in French language :(
I would like to contribute to SS Shop and I'm Beginner in PHP.

@jedateach translating a product is important for multilingual websites.. Hope you find a fix soon :)

@jedateach sorry Jeremy! I didn't realize that you are from @burnbright :P

I think I just need to find out how to exclude certain fields from being translatable...or whatever the alternative is.

Related issues: http://www.silverstripe.org/e-commerce-module-forum/show/19010
and possibly: http://www.silverstripe.org/general-questions/show/7567

Line 511 of Translatable.php includes all many_many fields as translatable
...I'm still trying to figure out why the ProductGroups (ManyManyComplexTableField) field is included for translation. It doesn't need to be.

BTW, I can translate product group and product subgroup , but when I translate product page the above error occurred.
To know the problem more I've added a product in English and I've added the same product in French, so on English front-end when I added the product to the cart and switch back to French and I get the following problem:
Debug (Versioned::get_version() in line 978 of Versioned.php)
SELECT "SiteTree_versions"."ClassName", ....
Debug (Versioned::get_version() in line 979 of Versioned.php)
(bool) false
[User Error] Versioned::get_version: Couldn't get Product.389, version 2
GET /SilverStripe-v2.4.7/products/filter/
Line 980 in D:\server\www\SilverStripe-v2.4.7\sapphire\core\model\Versioned.php
Source
971 		Versioned::set_reading_mode('');
972
973 		$baseTable = ClassInfo::baseDataClass($class);
974 		$query = singleton($class)->buildVersionSQL(""{$baseTable}"."RecordID" = $id AND "{$baseTable}"."Version" = $version");
975 		$record = $query->execute()->record();
976 		$className = $record['ClassName'];
977 		if(!$className) {
978 			Debug::show($query->sql());
979 			Debug::show($record);
980 			user_error("Versioned::get_version: Couldn't get $class.$id, version $version", E_USER_ERROR);
981 		}
982
983 		Versioned::set_reading_mode($oldMode);
984 		return new $className($record);
985 	}
986
Thank you for your cooperation @jedateach

I've created a new issue #6 for the version issue.


To push to prod

you tagging a release @ldecicco-USGS ?

setting up the same CI job workflow...why?

just wondering. I was going to tag one for climate fish


[Feature] Mock 데이터를 추가했습니다.

🚨 Your checklist for this pull request

[x]  Make sure you are requesting to pull a topic/feature/bugfix branch (right side). Don't request your master!

[x]  Check the commit's or even all commits' message styles matches our requested structure.

📌 [요약]

Mock data 추가

확인했습니닷


Add name function to SyncActor trait

The implementation from the Actor trait can't be reused because we need to convert the type into a function pointer, so the type name will be something along the lines of fn(SyncContext<M>, ...) which is pretty much useless.

Maybe we can revisit this with actor_fn (see https://github.com/Thomasdezeeuw/heph/pull/584).


Local Storage Values Resetting

[x] I have read the Getting Started section
[x] I have already searched for the same problem

Environment

Technology
Version

Flutter version

Plugin version

Android version

iOS version

macOS version

Xcode version

Google Chrome version

Device information:
Description
Expected behavior: In browser you can log in the application and after refresh the page you can log in directly via localstorage jwt. classical oauth. Also i am saving theme data in local storage
Current behavior: Users need to be login every time. Theme resetting as default light 😐
Steps to reproduce

This
Than that
Then

Images
Stacktrace/Logcat

I am having the same issue where it not keeping the data for my oidc auth details in localstorage, Did you find a solution to this?

Can you fill template values, specially for version please ?


Combining attributes with expressions (e.g. ng-show conditions) in a directive with replace = true fails

If both the div in the parent view does have a ng-show and the div of a directive with replace = true does have a ng-show, those conditions are bad merged.
Bug in action: http://jsfiddle.net/koningskristof/x69qwm8q/1/

@angrytoro the code that you posted is to prevent other animations from overriding the hide style when the .ng-hide class is present on the element.

Essentially the same as #5695


return "ie" is not working and give us casper error.

return "ie";    is not working for now.
Fatal error: Uncaught exception 'CasperException' with message 'API Response: [503] The Snapchat version '<IP_ADDRESS>' is not currently supported by this endpoint.' in D:\Xampp\htdocs\snapchtapi\src\Casper-API-PHP\CasperAgent.php:180 Stack trace: #0 D:\Xampp\htdocs\snapchtapi\src\Casper-API-PHP\CasperAgent.php(95): CasperAgent->request('/snapchat/clien...', NULL, Array, true) #1 D:\Xampp\htdocs

Version <IP_ADDRESS> is no longer supported by my servers. You'll need to update to <IP_ADDRESS> for now.

I have change my casper version from <IP_ADDRESS> to <IP_ADDRESS>
But its give me following error after change that
stdClass Object ( [message] => Oh no! Your login temporarily failed, so please try again later. If your login continues to fail, please visit https://support.snapchat.com/a/failed-login :) [status] => -103 [logged] => ) RESULT: 1
Is there any solution for that my credential is correct.

code = 404;
message = "The Attestation Service is no longer available.";

@kripsbro please read before comment!

I changed <IP_ADDRESS> and it wont work stdClass Object ( [message] => Oh no! Your login temporarily failed, so please try again later. If your login continues to fail, please visit https://support.snapchat.com/a/failed-login :) [status] => -103 [logged] => ) RESULT: 1

@kripsbro of course it wont work! We havent enabled any system or algorithm to auth yet. If you are patient enough, i'll do a system so all people could login easily, but i have to fix some stuff from WA protocol. You can still capture your auth from your device using a proxy, remember to disable the cert pinning and there you go.
Regards


Wrong example in doc

In the example given in quickstart:
# -t [TARGET_ADDR]: specify the target contract
# --onchain-block-number [BLOCK]: fork the chain at block number [BLOCK]
# -c [CHAIN_TYPE]: specify the chain
# -f: (Optional) allow attack to get flashloan

ityfuzz evm\
    -o\
    -t 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\
    --onchain-block-number 0\
    -c ETH\
    --onchain-etherscan-api-key [Etherscan API Key]\
    -f

After I added my Etherscan API Key and run the command above, I got the following error message:
thread 'main' panicked at src/evm/mod.rs:600:13:
Please specify --deployment-script (The contract that deploys the project) or --offchain-config-file (JSON for deploying the project)

Since ityfuzzer should run in onchain mode with that command(with the --onchain-etherscan-api-key and --onchain-block-numbe argument), I think it behaved werid.
However, when I removed the -o argument, the program runs fine:
ityfuzz evm\
    -t 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\
    --onchain-block-number 0\
    -c ETH\
    --onchain-etherscan-api-key [Etherscan API Key]\
    -f

I printed the EvmArgs parsed from cli args in evm_main and there's an intresting phenomenon.

Then I looked up the definition of EvmArgs, and foud build_command has a type of  Vec<String>. So I guess the -o arg is not recognized by the EvmArgs struct and somehow it falls back to the build_command vector, which makes all other args placed in the build_command

And I found that in backtesting.md which stores several examples to launch ityfuzz have the same problem. I looked the commit(20c10b3815398a49c0518fd292536f7883677167) that introduced those example, and saw a member of EvmArgs called onchain:

I guess maybe the -o' arg is onchainfor short and that arg is now decrypted. When I try those commands inbacktesting.md, I encountered the same problem I mentioned above, so I removed all the -oarg inbacktesting.mdto fix the problem. But I don't know if there's any further impact on the document due to the decryption of  theonchain` arg.


Update widths for device compatibility

Description

Adjusted the widths of various elements to ensure better display on different devices.
Verified changes on multiple device resolutions to ensure compatibility.
Improved overall responsiveness and user experience on mobile and laptops -Tested changes using the browser's inspect tool multiple times across various resolutions.

Related Issue
None
Type of PR

[ X ] Bug fix
[ ] Feature enhancement
[ ] Documentation update
[ ] Other (specify): _______________

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes]
Checklist:

[ X ] I have performed a self-review of my code
[ X ] I have read and followed the Contribution Guidelines.
[ X ] I have tested the changes thoroughly before submitting this pull request.
[ X ] I have provided relevant issue numbers, screenshots, and videos after making the changes.

hii @arghadipmanna101 can you review the PR and let me know further


[terra-table] Fix action header row sticky behavior

Summary

What was changed:
The action header row for the Terra Table was fixed so that it remained pinned to the top of the table during scrolling.
Why it was changed:
The fix was made so that the information was always visible and accessible to users.
Testing

This change was tested using:

[X] WDIO
[ ] Jest
[ ] Visual testing (please attach a screenshot or recording)
[ ] Other (please describe below)
[ ] No tests are needed

Reviews
In addition to engineering reviews, this PR needs:

[ ] UX review
[ ] Accessibility review
[X] Functional review

Additional Details

This PR resolves:
UXPLATFORM-10351

Thank you for contributing to Terra.
@cerner/terra

I received approval from @mjpalazzo for the functional review so I will merge the code.


Adding githooks functionality, adding linker.sh in .travis

Added githooks support. Scripts formatter.py, validator.py work now after every commit. Moved existing binary checking code to .githooks/pre-commit.d/02-check-binary. Need to run script/linker.sh in the source directory once for the effect. Added this as an instruction in travis as well.

@gaurav274 the new commit is here


Update version of setup-node, setup-java, upload-artifact actions

description

Hey, I updated the versions of some of the actions, since they are older and use Node.js 16, which is deprecated. Cool project, it was useful for me!
checklist:

[ ] New feature
[X] Bug fix
[ ] Tested locally

Thank you for this update!


Add theme switcher in an App Bar

Wit the macOS (desktop) target, run the first time perfectly.
Now I got the following errors:
Warning: CocoaPods not installed. Skipping pod install.
  CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
  Without CocoaPods, plugins will not work on iOS or macOS.
  For more info, see https://flutter.dev/platform-plugins
To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

Exception: CocoaPods not installed or not in valid state.

Plus new files added and modified:
On branch main-jd-add-theme-switcher
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   ios/Flutter/Debug.xcconfig
	modified:   ios/Flutter/Release.xcconfig
	modified:   macos/Flutter/Flutter-Debug.xcconfig
	modified:   macos/Flutter/Flutter-Release.xcconfig
	modified:   macos/Flutter/GeneratedPluginRegistrant.swift

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	ios/Podfile
	macos/Podfile

no changes added to commit (use "git add" and/or "git commit -a")

Not sure if they must be commited/pushed.

OK so I can run it again after:
sudo gem update --system 3.4.12
sudo gem install cocoapods

Now have this changes, not sure if they must be committed or not 🤷
On branch main-jd-add-theme-switcher
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   ios/Flutter/Debug.xcconfig
	modified:   ios/Flutter/Release.xcconfig
	modified:   macos/Flutter/Flutter-Debug.xcconfig
	modified:   macos/Flutter/Flutter-Release.xcconfig
	modified:   macos/Flutter/GeneratedPluginRegistrant.swift
	modified:   macos/Runner.xcodeproj/project.pbxproj
	modified:   macos/Runner.xcworkspace/contents.xcworkspacedata

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	ios/Podfile
	macos/Podfile
	macos/Podfile.lock


How to use "sx" prop to customize subcomponents of Mui compoents as we do previously with "classes"?

Is it possible for example to customize the Paper subcomponent of a Drawer using sx method? as we do in mui 4 using classes prop.

I found the solution: https://mui.com/material-ui/api/drawer/#Drawer-css-paper


when I cd extension & sh make.sh, I got an error as follow.

In file included from /home/user/.local/lib/python3.6/site-packages/torch/lib/include/THC/THC.h:4:0,
                 from /home/user/.local/lib/python3.6/site-packages/torch/lib/include/THC/THCAtomics.cuh:4,
                 from src/roi_align_kernel.cu:2:
/home/user/.local/lib/python3.6/site-packages/torch/lib/include/THC/THCGeneral.h:17:23: fatal error: cublas_v2.h: No such file or directory
 #include "cublas_v2.h"
                       ^
compilation terminated.
error: command '/usr/local/cuda-9.0/bin/nvcc' failed with exit status 1
Building roi pool op...

I use pytorch1.0, cuda 9.0 and python3.6.

Please export the cuda env path. And you could find nvcc.

What's your g++ version?

I have test with pytorch1.0, cuda 9.0, g++ 4.9 and python3.6.

@youansheng
my g++ version is 7.3.0

maybe your g++ is too latest.

@youansheng
maybe. I will try it with g++-4.9

@czbzgl    Have you solved this problem? I also got this error.


Issue installing ROS2

Been to the Ros2 installation page https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html
Getting errors I'm unablle to understand
Pi@Yahboom:~$ sudo apt update && sudo apt install -y
python3-flake8-docstrings
python3-pip
python3-pytest-cov
ros-dev-tools
Hit:1 http://ports.ubuntu.com/ubuntu-ports mantic InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports mantic-updates InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports mantic-security InRelease
Ign:4 http://packages.ros.org/ros/ubuntu mantic InRelease
Ign:5 http://packages.ros.org/ros2/ubuntu mantic InRelease
Err:6 http://packages.ros.org/ros/ubuntu mantic Release
404  Not Found [IP: 2605:bc80:3010::134 80]
Err:7 http://packages.ros.org/ros2/ubuntu mantic Release
404  Not Found [IP: 2605:bc80:3010::134 80]
Reading package lists... Done
E: The repository 'http://packages.ros.org/ros/ubuntu mantic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository 'http://packages.ros.org/ros2/ubuntu mantic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Issue resolved, user error attempting to install on Ubuntu 23


Pylance reports no overloads for min()/max() functions when overloads are available

Environment data

Language Server version: 2021.3.0
OS and version: Windows 10 Build 21327 (Insider)
Python version (& distribution if applicable, e.g. Anaconda): Python 3.9.2

Expected behaviour
Pylance reports no issues.
Actual behaviour
Pylance reports no overloads for the min() or max() functions, for example when passing the key attribute. This is supported by Python and the code compiles and runs perfectly fine despite the warning from Pylance.
Logs
[Info  - 7:10:53 PM] Pylance language server 2021.3.0 (pyright eb716c0a) starting
[Info  - 7:10:53 PM] Server root directory: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist
[Error - 7:10:53 PM] stubPath c:\Users\austi\Desktop\Data Mining HW5\typings is not a valid directory.
[Info  - 7:11:11 PM] No configuration file found.
[Info  - 7:11:11 PM] Setting pythonPath for service "Data Mining HW5": "C:\Users\austi\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe"
Search paths found for configured python interpreter:
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\DLLs
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib
C:\Users\austi\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0
C:\Users\austi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib\site-packages
[Error - 7:11:11 PM] stubPath c:\Users\austi\Desktop\Data Mining HW5\typings is not a valid directory.
[Info  - 7:11:11 PM] Assuming Python version 3.9
[Info  - 7:11:11 PM] Assuming Python platform Windows
[Info  - 7:11:11 PM] Searching for source files
[Info  - 7:11:11 PM] Found 3 source files
Background analysis message: setConfigOptions
Background analysis message: setTrackedFiles
Background analysis message: markAllFilesDirty
Background analysis message: getSemanticTokens
[BG(1)] parsing: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (39ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\builtins.pyi [fs read 1ms] (72ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\builtins.pyi (23ms)
[BG(1)] binding: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (2ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\sys.pyi [fs read 0ms] (9ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\sys.pyi (2ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas_init_.pyi [fs read 0ms] (7ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas_init_.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib_typeshed_init_.pyi [fs read 0ms] (9ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib_typeshed_init_.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\typing.pyi [fs read 0ms] (21ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\typing.pyi (8ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stubs\typing-extensions\typing_extensions.pyi [fs read 0ms] (3ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stubs\typing-extensions\typing_extensions.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\io\api.pyi [fs read 0ms] (101ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\io\api.pyi (0ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\io\parsers.pyi [fs read 0ms] (32ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\io\parsers.pyi (3ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas_typing.pyi [fs read 0ms] (58ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas_typing.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\os_init_.pyi [fs read 0ms] (13ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\os_init_.pyi (3ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\abc.pyi [fs read 1ms] (1ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\abc.pyi (0ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\datetime.pyi [fs read 0ms] (6ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\datetime.pyi (3ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\frame.pyi [fs read 1ms] (74ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\frame.pyi (12ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\generic.pyi [fs read 1ms] (38ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\generic.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\base.pyi [fs read 0ms] (13ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\base.pyi (0ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\accessor.pyi [fs read 0ms] (1ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\accessor.pyi (0ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\indexing.pyi [fs read 0ms] (7ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\indexing.pyi (0ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\io.pyi [fs read 0ms] (5ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\io.pyi (1ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\series.pyi [fs read 0ms] (29ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\series.pyi (6ms)
[BG(1)] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\indexes\base.pyi [fs read 0ms] (13ms)
[BG(1)] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\bundled\stubs\pandas\core\indexes\base.pyi (4ms)
Background analysis message: analyze
[BG(1)] analyzing: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py ...
[BG(1)]   checking: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (55ms)
[BG(1)] analyzing: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (55ms)
Background analysis message: resumeAnalysis
[FG] parsing: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (54ms)
[FG] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\builtins.pyi [fs read 3ms] (76ms)
[FG] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\builtins.pyi (29ms)
[FG] binding: c:\Users\austi\Desktop\Data Mining HW5\HW_05_Cepalia_Austin\HW05_Cepalia_Austin\HW05_Cepalia_Austin_Trainer.py (3ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: markFilesDirty
Background analysis message: analyze
Background analysis message: markFilesDirty
Background analysis message: analyze
Background analysis message: markFilesDirty
Background analysis message: analyze
[FG] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib_typeshed_init_.pyi [fs read 0ms] (13ms)
[FG] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib_typeshed_init_.pyi (1ms)
[FG] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\typing.pyi [fs read 1ms] (21ms)
[FG] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\typing.pyi (9ms)
[FG] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stubs\typing-extensions\typing_extensions.pyi [fs read 1ms] (2ms)
[FG] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stubs\typing-extensions\typing_extensions.pyi (3ms)
[FG] parsing: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\abc.pyi [fs read 0ms] (1ms)
[FG] binding: c:\Users\austi.vscode\extensions\ms-python.vscode-pylance-2021.3.0\dist\typeshed-fallback\stdlib\abc.pyi (0ms)
XXX

Code Snippet / Additional information

XXX

This is now fixed.

It seems like based on your usage, the overload you're intending to target is: https://github.com/python/typeshed/blob/8115299ee2d3d29e11ce1b351658b8a3306ce47f/stdlib/builtins.pyi#L1053
def min(__iterable: Iterable[_T], *, key: Callable[[_T], SupportsLessThanT]) -> _T: ...

Making this a concrete example:
from typing import Dict

d: Dict[str, int] = {}

min_value = min(d, key=d.get)

get itself is overloaded, and the form that is needed in this case is the first one. However, get says that it can return None, so does not fit the type required; anyone can call get with a key that doesn't exist in the dict. The type system has no knowledge that min will iterate over the keys of a dict. If I do the work myself to prove to the type system that it always returns a value, then I have no type errors.
def get_from_d(key: str) -> int:
    v = d.get(key)
    assert v is not None
    return v

min_value2 = min(d, key=get_from_d)

If anyone has the same issue with dataclasses with Optional types, here is the workaround I found for my case:
from dataclasses import dataclass

@dataclass
class Phone:
    phone: str
    score: int | None = None # Same as score: `Optional[int] = None`

test = [
    Phone(phone="1", score=1),
    Phone(phone="2", score=2),
    Phone(phone="3", score=None),
]

best = max(test, key=lambda x: x.score if x.score else 0)


Add riscv vector extension in cpu feature using hwcap

Similar to #15275 but use hwcap to get riscv vector extension.

HWCAP works on latest qemu and linux kernel. Drop this PR and use HWCAP to get riscv vector extension on new PR https://github.com/openxla/iree/pull/15306.

We need to update the CI RISCV docker with the new QEMU (after https://gitlab.com/qemu-project/qemu/-/commit/4333f0924c2f2ca8efaebaed8c24f55f77d8b013) to properly test RVV implementation. I will try to get a PR later this week.

We need to update the CI RISCV docker with the new QEMU (after https://gitlab.com/qemu-project/qemu/-/commit/4333f0924c2f2ca8efaebaed8c24f55f77d8b013) to properly test RVV implementation. I will try to get a PR later this week.

Thanks for your help!

We need to update the CI RISCV docker with the new QEMU (after https://gitlab.com/qemu-project/qemu/-/commit/4333f0924c2f2ca8efaebaed8c24f55f77d8b013) to properly test RVV implementation. I will try to get a PR later this week.

Thanks for your help!

I need your help resolving an issue. (copy from https://discord.com/channels/689900678990135345/788499363739336716/1167296531221721160)
https://github.com/openxla/iree/blob/main/runtime/src/iree/hal/local/elf/elf_module_test_main.c is the basic building block for embedded library execution -- the embedded dispatch lives in .data  and iree_elf_module_lookup_export finds the library query entry point and pass that to iree_elf_call_p_ip to find the address for each of the dispatches. However, in  QEMU v8.1.2 we can't run instructions that live in .data. In general that's a good policy, but in this case it breaks the baremetal setup. https://github.com/sifive/qemu/tree/v5.2.0-rvv-rvb-zfh doesn't have this constraint by default, and I wander if there are any feature flags I can set to make QEMU v.8.1.2 work
Linux doesn't have this problem because the system dynamic library dlopen handles it all.

Seems it don't have a flag or config to disable this check.
https://github.com/qemu/qemu/commit/cdf7130851318004e6512dbfdb73156fe59c7a59
I use system mode qemu with linux when I need to use new version qemu for runing baremetal iree. But It's not as convenient as user mode qemu.

Thanks @hcindyl, #15320 is merged and we can test riscv hwcap on qemu.


Implement touch behaviors

This PR resolves https://github.com/uber/react-vis/issues/751 and adds support for touch devices for the following features:

Crosshair functionality
Draggable charts
Zoomable charts

It does so in a manor that is unobtrusive and allows for some flexibility. The main gotcha with touch events is that touchmove is very different from the way mouseover and mouseout work, in the sense of you have to listen for touchmove on a larger container of elements, and use DOM APIs at our disposal to determine which child nodes the user is currently touching. We are unable to bind listeners for touchmove on the child components, as the target originates from the node touchstart was fired on.
I have added some documentation around new props on the XY Plot and I have also added tests. Please let me know if there is anything else you'd like me to add, or any concerns you may have with my implementation, and I would be happy to make changes.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Looking good, please sign the CLA so we can move ahead

@jckr I signed it, but the check isn't updating. When I go to the link it shows that I have already signed it.

Nevermind, had to sign in other account (since it had made the commits).

@jckr sorry about that, done.

Is this really implemented? Because in documentation there is only onTouchEnd event, which isn't enough. Isn't there need of onTouchStart event that triggers startBrushing function?


Own Dataset

Hey Guys, great Code and Paper. I stumbled upon this a few weeks ago and got some really good results with the linemod classes. But now I want to try it for my own objects, can someone please explain the best way how to obtain the meshes , poses and so on for the training of my own dataset?
Greetings Michael

You can generate some synthesis data with render scripts like pvnet_rendering and our raster triangle. For real data, you can read some dataset papers to see how they collect and label the data, like LineMOD, YCB-Video, tless, and so on. While it's not so easy to label the ground truth poses.


How to access initial configuration values?

Let's say I configure Router with a loading template using
Router.configure({
	loadingTemplate: "tLoader",
}

How can I access "tLoader" again in the code?

We have Router.lookupNotFoundTemplate() and Router.lookupLayoutTemplate() but not lookupLoadingTemplate :(


Smaller object details

Motivation and context
Internal team complained about current details are too big. This patch does details smaller
How has this been tested?
Manual testing
Checklist

[x] I submit my changes into the develop branch
[x] I have added description of my changes into CHANGELOG file
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[x] I have linked related issues (read github docs)
[x] I have increased versions of npm packages if it is necessary (cvat-canvas,
cvat-core, cvat-data and cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.
[x] I have updated the license header for each file (see an example below)

# Copyright (C) 2020 Intel Corporation
#
# SPDX-License-Identifier: MIT

Resolve #1443

Pull Request Test Coverage Report for Build 6369

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 65.214%

Totals

Change from base Build 6362:
0.02%

Covered Lines:
11063

Relevant Lines:
16556

💛  - Coveralls


[identity] test failures after upgrading @azure/msal-node from 2.6.1 to 2.6.2

diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json
index ae56d0809a8..ef40ba3530c 100644
--- a/sdk/identity/identity/package.json
+++ b/sdk/identity/identity/package.json
@@ -114,7 +114,7 @@
     "@azure/core-util": "^1.3.0",
     "@azure/logger": "^1.0.0",
     "@azure/msal-browser": "^3.5.0",
-    "@azure/msal-node": "^2.5.1",
+    "@azure/msal-node": "^2.6.2",
     "events": "^3.0.0",
     "jws": "^4.0.0",
     "open": "^8.0.0",

Test failures

[node-tests]   1) IdentityClient
[node-tests]        throws an exception if the credential is not available (can't resolve discovery endpoint):
[node-tests]
[node-tests]       AssertionError: expected 'AuthenticationRequiredError' to equal 'CredentialUnavailableError'
[node-tests]       + expected - actual
[node-tests]
[node-tests]       -AuthenticationRequiredError
[node-tests]       +CredentialUnavailableError
[node-tests]
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/internal/identityClient.spec.ts:43:14)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]
[node-tests]   2) IdentityClient
[node-tests]        throws an exception when an authentication request fails:
[node-tests]      AssertionError: expected false to be truthy
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/internal/identityClient.spec.ts:66:14)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]
[node-tests]   3) OnBehalfOfCredential
[node-tests]        authenticates with a secret:
[node-tests]      AssertionError: expected undefined to be a number
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/internal/node/onBehalfOfCredential.spec.ts:49:12)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]
[node-tests]   4) OnBehalfOfCredential
[node-tests]        authenticates with a certificate path:
[node-tests]      AssertionError: expected undefined to be a number
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/internal/node/onBehalfOfCredential.spec.ts:82:12)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]
[node-tests]   5) ClientCertificateCredential
[node-tests]        allows cancelling the authentication:
[node-tests]
[node-tests]       AssertionError: expected 'AuthenticationRequiredError' to equal 'CredentialUnavailableError'
[node-tests]       + expected - actual
[node-tests]
[node-tests]       -AuthenticationRequiredError
[node-tests]       +CredentialUnavailableError
[node-tests]
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/public/node/clientCertificateCredential.spec.ts:100:12)
[node-tests]
[node-tests]   6) ClientSecretCredential
[node-tests]        allows cancelling the authentication:
[node-tests]
[node-tests]       AssertionError: expected 'AuthenticationRequiredError' to equal 'CredentialUnavailableError'
[node-tests]       + expected - actual
[node-tests]
[node-tests]       -AuthenticationRequiredError
[node-tests]       +CredentialUnavailableError
[node-tests]
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/public/node/clientSecretCredential.spec.ts:75:12)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]
[node-tests]   7) UsernamePasswordCredential
[node-tests]        allows cancelling the authentication:
[node-tests]
[node-tests]       AssertionError: expected 'AuthenticationRequiredError' to equal 'CredentialUnavailableError'
[node-tests]       + expected - actual
[node-tests]
[node-tests]       -AuthenticationRequiredError
[node-tests]       +CredentialUnavailableError
[node-tests]
[node-tests]       at Context.<anonymous> (/home/meng/git/jsmain/sdk/identity/identity/test/public/node/usernamePasswordCredential.spec.ts:73:12)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:95:5)
[node-tests]

only notable change in 2.6.2 comparing to 2.6.1
Fix bug affecting metadata resolution for tenanted authorities (https://github.com/AzureAD/microsoft-authentication-library-for-js/pull/6814[)](https://github.com/AzureAD/microsoft-authentication-library-for-js/commit/7035deaaa499ead2c8e1d1d34fa138004cd49531)

This is blocking rush update --full automation /cc @KarishmaGhiya @maorleger

Hm I can take a look today 👍

Looks like MSAL changed their error handling in 2.6.2.
I created a minimal repro showing the breaking changes in behavior. We can fix all the tests of course, but since we rely on the exceptions thrown from MSAL to decide how to bubble this up to customers this could be considered a runtime breaking change so I would like MSAL to take a look at it as it will likely impact customers.
Linked issue:  https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/6859


WidgetSpan's child not hit in hit test when scrolled

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

flutter create widget_span_hit_test
Hover over the button in WidgetSpan and press it
Reduce the window size and repeat 2
Reduce the window size further, scroll a bit and repeat 2

Expected results
Can press the button also when scrolled.
Actual results
Button not hit when tapping:

Code sample
Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final WidgetSpanTextEditingController _controller =
      WidgetSpanTextEditingController(text: '...\n' * 5 + 'Lazy \uffff dog.' + '...\n' * 5);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Container(
          constraints: const BoxConstraints.expand(),
          child: TextField(
            controller: _controller,
            maxLines: 1000000,
          ),
        ),
      ),
    );
  }
}

class WidgetSpanTextEditingController extends TextEditingController {
  WidgetSpanTextEditingController({String? text})
      : super.fromValue(text == null ? TextEditingValue.empty : TextEditingValue(text: text));

  @override
  TextSpan buildTextSpan(
      {required BuildContext context,
      TextStyle? style,
      required bool withComposing}) {

    TextRange? matchedRange;

    if (text.contains('\uffff')) {
      matchedRange = _findMatchedRange(text);
    }

    if (matchedRange != null) {
      return TextSpan(
        children: [
          TextSpan(text: matchedRange.textBefore(text)),
          WidgetSpan(
            child: IconButton(
              onPressed: () => ScaffoldMessenger.of(context)
                  .showSnackBar(const SnackBar(content: Text('Pressed!'), duration: Durations.short2)),
              icon: const Icon(Icons.bug_report_outlined),
            ),
          ),
          TextSpan(text: matchedRange.textAfter(text)),
        ],
        style: style,
      );
    }

    return TextSpan(text: text, style: style);
  }

  TextRange _findMatchedRange(String text) {
    final RegExp matchPattern = RegExp(RegExp.escape('\uffff'));
    late TextRange matchedRange;

    for (final Match match in matchPattern.allMatches(text)) {
      matchedRange = TextRange(start: match.start, end: match.end);
    }

    return matchedRange;
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Doctor output

Flutter Doctor output
Doctor output
% flutter doctor -v
[✓] Flutter (Channel master, 3.13.0-15.0.pre.18, on macOS 13.4.1 22F770820d darwin-arm64, locale en-ES)
    • Flutter version 3.13.0-15.0.pre.18 on channel master at /Users/tgucio/Library/Frameworks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision de5b9670dd (78 minutes ago), 2023-08-01 09:18:27 -0400
    • Engine revision f1c80ce984
    • Dart version 3.2.0 (build 3.2.0-19.0.dev)
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/tgucio/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.80.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.68.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 13.4.1 22F770820d darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 115.0.5790.114

[✓] Network resources
    • All expected network resources are available.

• No issues found!
%

Thanks for the detailed report and potential fix.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.10.6, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.10.6 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f468f3366c (5 days ago), 2023-07-12 15:19:05 -0700
    • Engine revision cdbeda788a
    • Dart version 3.0.6
    • DevTools version 2.23.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.13.0-16.0.pre.19, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.13.0-16.0.pre.19 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision c51aa3d2de (79 minutes ago), 2023-08-02 11:42:06 +0800
    • Engine revision 9dae7b708b
    • Dart version 3.2.0 (build 3.2.0-22.0.dev)
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.


NoCredentialProviders error when using SSO credentials

When using eks-node-viewer with credentials provided from AWS SSO, I'm seeing:
2023/02/16 16:07:40 updating on-demand pricing, NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors; NoCredentialProviders: no valid providers in chain. Deprecated.

Setting AWS_PROFILE does not solve the issue.
Looking at issues in aws-sdk-go, this seems to be related to aws-sdk-go v1 not playing well with SSO. It might be fixed in v2?

Does setting export AWS_SDK_LOAD_CONFIG=true solve this for you?

@tzneal It does fix it! Is there a way to make this a default in the tool?

I don't think it really should be, it's common across the AWS SDKs that you set AWS_SDK_LOAD_CONFIG to cause it to load an SDK file.  You can always add it to your .bashrc/.zshrc.

@tzneal I'm sorry but all other tools that access via SSO, like aws-iam-authenticator et c don't need this setting. If it's common it's the first I've come across while using SSO auth over the last 3+ years.


Feat/980: New Asset proposals should require validationTimestamp

Related issues 🔗
Closes #980
Description ℹ
Adds validationTimestamp as a required field for new asset proposals

Just in time for https://github.com/vegaprotocol/vega/pull/5827 :smile:

Fixed in #985


Remove notification for unavailable courses

Context
I was pretty proud of the message introduced in https://github.com/DFE-Digital/apply-for-postgraduate-teacher-training/pull/1975, but this morning I realised we don't actually need it.
https://ukgovernmentdfe.slack.com/archives/CQA64BETU/p1588231384012300
Changes proposed in this pull request
Also updates the "action required" page to make clear no action is required.
Guidance to review
Does it make sense?
Link to Trello card
https://trello.com/c/fRAKJt36
Things to check

[x] This code doesn't rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] API release notes have been updated if necessary
[x] New environment variables have been added to the Azure config

Merging to reduce number of PRs in flight 🪐