Repair some Gitea accessibility issues

Updated 2023-03-07 removing old ideas and merges done apart.
This PR is an improvement of #21743 taking the combobox+listbox ARIA design pattern as a better fit for some Fomantic dropdowns, with the addition of other a11y improvements.
The idea is to resolve the main problem described in #21742.
Changed some foomantic dropdowns to the combobox+listbox ARIA design pattern

Changed scope application of aria.js functions to apply it after all widgets are initialized.
Diferentiate aria markup added by aria.js depending on a js- prefixed class indicating aria role.
Fixes and improve a11y structure of:

[x] Reactions in issue/pr comments view.
[x] Comment options in issue/pr comments view.
[x] Labels dropdown in repo issue/pr view.
[x] Milestone dropdown in repo issue/pr view.
[x] Projects dropdown in repo issue/pr view.
[x] Assignees dropdown in repo issue/pr view.
[x] Reviewers dropdown in repo pr view.
[x] Due date dropdown in repo issue/pr view.
[x] Dependency dropdown in repo issue/pr view.
[x] Reference copy button in repo issue/pr view.
[x] Language selector.
[x] Create... button.
[x] Profile and settings... button.

Fixes lack of aria label of Close issue button.
Fix tabindex of several editors and buttons.
Add label for some buttons.
Remove dropdown class to an svg which generates false positives

This looks like a bunch of good changes, sorry for not picking it up earlier.
Maybe @wxiaoguang can have a look too.

Maybe @wxiaoguang can have a look too.

I do not like the idea of writing a lot of unnecessary IDs in the templates. Quote my original thoughts here.

From a development view, I do not think it's easy to make every developer(contributor) understand a11y clearly and write all dropdown elements with correct aria-attributes, and Fomantic UI Dropdown is quite special. In the end, attachOneDropdownAria is still widely used and it is a general solution, then the templated dropdowns will become a one-time code just for the reactions. Then why not just keep one general attachOneDropdownAria without manually written IDs?

Although generating IDs dynamically affects performance slightly, I think it's acceptable and better than writing unnecessary IDs everywhere.
And all Fomantic checkbox/radio inputs use the <input /> structure now, I do not feel good about adding IDs for all of them, it will  be a lot , and make it difficult to refactor them (replace them) in the future.
In the future, these components could be replaced by  some well-designed a11y  ones, still do not force  developers to manually write every ID for the elements in dropdowns.
Just my opinion, not a blocker (if the code works)

Yeah I already commented above on the unnecessary IDs. If we can get the rendering to work with nesting, it's definitely the way to go. If this change is too massive, I would suggest factoring it out into a separate PR to ease review here.

Do you promise to pay all attention to all future commits to make sure all of them work properly with a11y?

I will do my best effort to provide accessibility.

why the code looks like this at the moment?
Because there are strong incentives in order to develop without taking in account accessibility.

To resolve the problem fundamentally, IMO there could be an intermediate framework to fix a11y problems automatically, and then replace buggy Fomantic UI components with modern/native ones -- instead of forcing developers to write IDs/aria-labels again and again.

So developers will never have to deal with IDs nor ARIA stuff in templates, but they have to develop that intermediate framework you propose, dealing with IDs and ARIA stuff on pure javascript. The problem I see is who is going to develop that intermediate framework if, in your words, developers aren't called to deal with ARIA stuff?
Also, developers will have to choose a good UI framework that provide good accessibility and implement that framework on top of gitea, but without knowing too much about a11y, it sounds a complex decision. Who, without knowing too much about a11y, are willing to choose a good UI framework like the one you describe for the whole frontend of gitea while ensuring accessibility?
On the other hand, with your last statements, I start to understand that aria.js is a kind of prototype of that intermediate framework that frees developers from dealing with ARIA and IDs in templates and fixes foomantic UI bugs in dropdowns. But I have opened a bug a month ago and nobody (zero) person has even reacted (less confirmed) anything about it. What is the commitment to this approach?
Finally, the checkboxes on the configuration page don't have an accessibility problem due to foomantic UI, it's a simple case of malformed html (not the only one in that template). If you want to preserve a malformed html template while you find a good framework fixing the html with javascript, well I'm not going to provide it. It's easy to see why checkboxes are siblings with their labels in foomantic (and in other frameworks like Vue, too). Adding the ID and FOR attrs is a straightforward native solution if you remove the fomantic UI from them.

So developers will never have to deal with IDs nor ARIA stuff in templates, but they have to develop that intermediate framework you propose, dealing with IDs and ARIA stuff on pure javascript. The problem I see is who is going to develop that intermediate framework if, in your words, developers aren't called to deal with ARIA stuff?

Nope. IMO the intermediate framework should/could/only handle most bad cases, for example, then most developers do not need to manually write IDs again and again. Everything should just works like modern HTML frameworks.

Also, developers will have to choose a good UI framework that provide good accessibility and implement that framework on top of gitea, but without knowing too much about a11y, it sounds a complex decision. Who, without knowing too much about a11y, are willing to choose a good UI framework like the one you describe for the whole frontend of gitea while ensuring accessibility?
On the other hand, with your last statements, I start to understand that aria.js is a kind of prototype of that intermediate framework that frees developers from dealing with ARIA and IDs in templates and fixes foomantic UI bugs in dropdowns. But I have opened a bug a month ago and nobody (zero) person has even reacted (less confirmed) anything about it. What is the commitment to this approach?

I have complained similar things before when I was doing refactoring works for Gitea (you can take a look at my complete PRs about refactoring), then some people told me "that's how open-source project works", so now I won't touch the code unless I get enough supports first. 😂 . Just to share my personal feeling and opinion.

Finally, the checkboxes on the configuration page don't have an accessibility problem due to foomantic UI, it's a simple case of malformed html (not the only one in that template). If you want to preserve a malformed html template while you find a good framework fixing the html with javascript, well I'm not going to provide it. It's easy to see why checkboxes are siblings with their labels in foomantic (and in other frameworks like Vue, too). Adding the ID and FOR attrs is a straightforward native solution if you remove the fomantic UI from them.

What's the difference between them? Do these "working" checkeboxes all have manually written IDs? Personally I won't say writing IDs for all checkboxes is a proper approach. The better one should be using <lable><input>, or adding IDs automatically. I think the only divergence between us is: you prefer to fix the problem by adding all IDs manually, while I prefer to fix the problem by some framework code and adding the IDs automatically. I also agree to improve the a11y problem ASAP, and if other people like, my opinion is never a blocker.

The changes in this PR:
L-G-T-M part:

The role / aria-label in head/footer: L-G-T-M
The removal/change of tabindex="...": L-G-T-M
The e.key === 'ESC': L-G-T-M

not L-G-T-M part:

The manually added IDs: not L-G-T-M, especially the IdPrefix, I think it's too dirty.
data-aria-templated, I haven't fully understood whether it's necessary. If not necessary (just some slightly performance difference), then it's not L-G-T-M.

Although I can not vote my approval for all these changes, at least, I can vote approval for the L-G-T-M part.

Codecov Report

Merging #21964 (db91c60) into main (95e8ea9) will increase coverage by 47.62%.
The diff coverage is 50.00%.

@@            Coverage Diff            @@
##           main   #21964       +/-   ##
=========================================
+ Coverage      0   47.62%   +47.62%
=========================================
  Files         0     1057     +1057
  Lines         0   144140   +144140
=========================================
+ Hits          0    68653    +68653
- Misses        0    67247    +67247
- Partials      0     8240     +8240

Impacted Files
Coverage Δ

routers/web/repo/issue.go
36.61% <50.00%> (ø)

services/forms/auth_form.go
100.00% <0.00%> (ø)

routers/private/hook_pre_receive.go
42.30% <0.00%> (ø)

routers/web/org/projects.go
0.77% <0.00%> (ø)

models/db/sequence.go
0.00% <0.00%> (ø)

modules/log/multichannel.go
87.69% <0.00%> (ø)

modules/gitgraph/graph_models.go
80.85% <0.00%> (ø)

models/issues/issue_index.go
40.00% <0.00%> (ø)

modules/process/process.go
0.00% <0.00%> (ø)

modules/git/repo_base_nogogit.go
75.47% <0.00%> (ø)

... and 1048 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@wxiaoguang what do you think about this aria.js refactory proposal?

@wxiaoguang what do you think about this aria.js refactory proposal?

Some problems have been addressed by other PRs, some problems have more details and backgrounds now, the comments in this PR are quite a  few, maybe we can start a fresh discussion based on the latest situation?

I always agree to improve (anything)  if the refactoring doesn't introduce maintainability problems.
For aria.js,  the major  problem of it at the moment is it always uses menu + menuitem, in the near future, if the dropdowns are still there, as a hacky patch, aria.js could use combobox instead of menu when the dropdowns have input elements.

About latest changes (just a quick and brief review)

Could these tabindex="0" for buttons be removed? By default they are focus-able.
About js-role-combobox

I think the "language" menu is a menu, it shows the menu item, if you click any one, then page refreshes, it doesn't look like a combobox which provides value for the form.
In most cases, IMO we do not need  the js-role-combobox, because if there is a input.search in dropdown, then it must be a combobox.

<div class="ui button" ... could be <button ... then no need to add tabindex?

I think the <button> problem will be completely fixed by #23337 (@delvh)

<button class="delete-dependency-button tooltip ci muted"

I am not sure about the style because I haven't tested this change, but I am sure muted is not needed because muted  is for a only.

The class="dropdown icon"  classes on SVG elements in dropdowns  is done by purpose to fine-tune the UI alignment, there are CSS styles for them, I do not think the dropdown could be removed (I haven't tested, just a guess)
attachDropdownAria($('.ui.dropdown')); doens't seem right. We should skip custom  dropdown elements, these custom elements have their own JS to work.
The new JS code: I will take a look carefully later. A quick thought in my mind: maybe we need two functions, one for menu , one for combobox (they could share  some  code  by common functions), to make them independent, then any change on one side won't affect another one, and it's easier to maintain and test in the future.

One more thing, the item shouldn't be clicked without any check. See the comment in:

#23343

@wxiaoguang what do you think about this aria.js refactory proposal?

Some problems have been addressed by other PRs, some problems have more details and backgrounds now, the comments in this PR are quite a few, maybe we can start a fresh discussion based on the latest situation?
(update: I hide my previous comments as out-dated, indeed they are out-dated)
* I always agree to improve (anything)  if the refactoring doesn't introduce maintainability problems.

* For `aria.js`,  the major  problem of it at the moment is it always uses `menu + menuitem`, in the near future, if the dropdowns are still there, as a hacky patch, `aria.js` could use `combobox` instead of `menu` when the dropdowns have input elements.

About latest changes (just a quick and brief review)
* Could these `tabindex="0"` for buttons be removed? By default they are focus-able.

done

* About `js-role-combobox`

  * I think the "language" menu is a menu, it shows the menu item, if you click any one, then page refreshes, it doesn't look like a combobox which provides value for the form.

menu role doesn't have any element except the menuitem set. Language selector has the current value as a text which appears to be a readonly input. This is why I implemented as a combobox.

  * In most cases, IMO we do not need  the `js-role-combobox`, because if there is a `input` in dropdown, then it must be a combobox.
  * Update: according to new changes in `#23346`, I think deciding the role by `input` is doable.

Unfortunately, that approach is totally insufficient IMO. There are more structures than those two. In fact, the unique selectors which match a menu pattern are the reactions menu and the comment options menu (the only pair you didn't fix with aria.js at the beginning, btw). You can check this statement using the Axe DevTools extension with a fomantic dropdown opened. The majority of dropdowns have a kind of label in the middle incompatible with a menu pattern and have noise produced by elements as options headers and dividers which I am addressing here.
As I said in Forgejo Dropdowns UX bug some days ago, keep talking about dropdowns as a whole IMO is a bad approach and is bad aligned with your proposal made in #23345. If you observe each widget implemented with Fomantic dropdown there are little differences that doesn't fit well in a rigid overview. That's why I didn't took the presence of an input as a final indicator of a combobox. The worst case is the tag/branch selector, which, as far as I can see, is a unique totally inaccessible structure.
This is the reason why I chosen to do specific identification of aria roles via js- prefixed classes and do a specific implementation accordingly. Is extensible and compatible with a step by step proposal. IMO the dependencies selector is the most near structure to an accessible combobox, I think that change some sidebar selectors to that structure will provide better accessibility of them.
The language selector is pretty close to be accessible, but auto-submit is a bad practice which can produce annoying interactions if you choose bad your desired language. Ideally you should be able to choose your language and then submit it to change the UI with clarity that the choosing was made without a mistake. That's the reason why combobox has a fillable field. If you want just a menu structure, you should put the current language label out of the selector or remove the label and only mark the current language in the corresponding menuitem (as a native selector does).

* `<div class="ui button" ...` could be `<button ...` then no need to add `tabindex`?

done

  * I think the `<button>` problem will be completely fixed by [Convert `<div class="button">` to `<button class="button">` #23337](https://github.com/go-gitea/gitea/pull/23337) (@delvh)

I made a change here that needs to wait a merge of that pull request or be reverted because is failing currently in the cancel button of the locking issue modal.

* `<button class="delete-dependency-button tooltip ci muted"`

  * I am not sure about the style because I haven't tested this change, but I am sure `muted` is not needed because `muted`  is for `a` only.

Agreed. I just opted to conserve classes. Is now removed.

* The `class="dropdown icon"`  classes on SVG elements in dropdowns  is done by purpose to fine-tune the UI alignment, ~there are CSS styles for them, I do not think the `dropdown` could be removed (I haven't tested, just a guess)~

  * Checked, for other SVG icons, the `svg dropdown icon` is done by purpose.
  * For this one, it's better to remove the `dropdown` class. This icon already has its own `gt-mt-...` styles.

* ~`attachDropdownAria($('.ui.dropdown'));` doens't seem right. We should skip `custom`  dropdown elements, these `custom` elements have their own JS to work.~

  * Hmm ... old code also did so, maybe I didn't realize this problem at that time.

* The new JS code: I will take a look carefully later. A quick thought in my mind: maybe we need two functions, one for `menu` , one for `combobox` (they could share  some  code  by common functions), to make them independent, then any change on one side won't affect another one, and it's easier to maintain and test in the future.

That's what I said above. If you implement combobox based in input presence IMO you will produce more technical debt.

  * I made some new changes in [Fix accessibility behavior for topic management in the repository home, make some dropdown work as combobox #23346](https://github.com/go-gitea/gitea/pull/23346)
  * According to [w3 demo](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-none/), `combobox` is enough, no need to use `searchbox`

Perfect, but you should need to remove the label inside because is out of that pattern as I explained above with language selector.

  * Most code could be shared between `combobox` and `menu`

It depends. Several dropdowns have the input inside the menu container, which is out of accessible standard.

  * After some quick tests, I think these changes work well for many cases.
  * If `#23346` is good enough, could we continue to work on it?

* Update: one more thing, the `item` shouldn't be clicked without any check. See the comment in:

  * [Fix incorrect display for comment context menu  #23343](https://github.com/go-gitea/gitea/pull/23343)

This reversion was already integrated today.

Thank you for the details. I can understand more about your thoughts.
To be clear, when I mention dropdown, it always means Fomantic UI Dropdown. If a component could have a clear role, I will call it menu or combobox.

menu role doesn't have any element except the menuitem set. Language selector has the current value as a text which appears to be a readonly input. This is why I implemented as a combobox.

I really prefer to make profile language and create repo dropdowns as menu. IMO  we should choose their roles by their functions and designed behaviors, but not by  what they have or what they did.
The  behaviors of  these dropdowns:

It has a button, click the button, the menu shows, the menu contains menu-items, if the user clicks a menu-item, an action is executed and the page will be reloaded (the key point). It doesn't provide any input for forms.
I do not think the current value affects that behavior,  in fact, the  current value which is changed by click action is an incorrect behavior and should be fixed.

Think about a more complex situation, take the  language dropdown as an example, it  used  AJAX to change  language.

If the AJAX  request fails but the current value is still changed,  it makes the UI inconsistent, that's a real UI bug.
If we make it a menu, the current value never changes. If the AJAX request fails, the text is still the  same as current language. If the  AJAX request  succeeds, the page reloads and it  still shows the correct current language.

About auto-submit: if you are in a form, you need to click a button to submit. But I don't think you need to confirm the language in a language menu, the profile and create repo are also menus, I do not see why a user need to use them as combobox and confirm before submit.

That's what I said above. If you implement combobox based in input presence IMO you will produce more technical debt.

It won't cause any technical debt, instead, a simple patch helps much.
In my plan, the aria.js is only used for simple dropdowns. Complex dropdowns should have their own code. See below.

The worst case is the tag/branch selector

That's that case in my proposal "Popup (the branch/tag panel, the review box)", in fact, we should totally rewrite them, instead of patching them. These components couldn't be fixed by a simple patch, I never want to use aria.js to fix these complex elements.
And I have removed the $.dropdown() for review box, not that complex, we just need some more time to fix them (ps: I haven't fine tune a11y for it due to insufficient time).

The whole picture  in my mind about how to improve the a11y for dropdown and avoid technical debt:

Making aria.js too complex won't help too much, it won't be perfect solution for all cases.
Keep aria.js as simple as possible, make it only handle common cases:

Simple menu (no input)
Simple combobox (with input)
Improve some  comboboxes if it could, but do not introduce too much specialized code to avoid technical debt
Rewrite popup dropdowns (I have remove dropdown from review box)
Improve complex dropdowns (like Issue Labels) one by one, because they are so special

FYI, to fixe the "branch selector dropdown", I think we need to to this first:  Refactor branch/tag selector dropdown (first step) #23394

About the "language menu" / "reaction menu" problem, according to my latest debug, I think it's mainly related the event sequence for different browsers and different screen readers. Fomantic UI has made a mess, I tried to made a new patch in https://github.com/go-gitea/gitea/pull/23346/commits/7a3d1a018af4e8fc141efd1188d3c4b5d54dfff1 .
It's really difficult to do a full test for various cases, I have done my best to test it with my desktop/mobile with/wihout screen readers.
Feel free to take look.

I see your question in Discord.

The "menu" vs "combobox" concept: we indeed have divergence. I believe some incorrect "menu" behaviors are caused by bugs, so they shouldn't be "combobox".
I am not maintainer at the moment, although you have the "Allow Maintainer Edit" checked, I can't help to edit your PR

If you agree, I can apply to be a maintainer again to help to edit on this PR directly, resolve all conflicts caused by me

More proofs about "why the language dropdown should be a menu".
Take a look at W3 standard:

Combobox:

https://www.w3.org/WAI/ARIA/apg/patterns/combobox/
A combobox is an input widget with an associated popup that enables users to select a value for the combobox from
a collection of possible values. In some implementations, the popup presents allowed values, while in other implementations,
the popup presents suggested values, and users may either select one of the suggestions or type a value.

Menu:

https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
A menu is a widget that offers a list of choices to the user, such as a set of actions or functions.

And take a look at Apple's page:

Stale for long time, I think I have been open and clear for this problem.


Added strategy for task

*Added task type
*Added task strategy
*Applied test for new type

Closes #30
LGTM


Add 'Star ⭐ Us on GitHub' Button on Homepage

Title: Add 'Star Us on GitHub' Button on Homepage
Description:
We need to add a ' Star Us on GitHub' button to the homepage of the website.
Why is this important?

It encourages visitors and contributors to "⭐" the repository directly from the homepage.
Helps increase visibility and build community support for the project.

Comment:

The button should be placed prominently on the homepage.
It should be styled to match the existing design of the website.

read the guidelines There is a strict mention there should not be any changes in the home page. Do not be demotivated and raise a new issue.


Adding CEL Validation for Permission Claim

Summary
Adding CEL Validation as an option for the APIServer
For Permission Claims adding validations:

When group is empty, then only allow resource in [configmaps,secrets,namespaces,serviceaccounts]
If the group is not empty, then make sure we have a specific identity hash.

Related issue(s)
Fixes #1331

/lgtm
/approve


feat: add new Equiv.piFinCastSucc

[x] depends on: #9030

As @YaelDillies commented in the other PR, we should also rename the Equiv this is defined with.

bors merge

No, wait, the build is failing.
bors r-

I just merged master to make sure it still builds, but if so we can merge it.

bors merge


Feature Request: default manifest and url if not specified in config.yaml

Having default manifests and urls built into the gorilla binary similar to munki would be handy for getting un-configured clients communicating with the server and integrated. This would allow the use of a generic gorilla installer on a client device and then the proper configuration could be provided by the server.

A default manifest is fine, but I would argue that a default URL is a security risk. All I need to do is put a server up at http://gorilla and set a search domain and you've got a compromised device.

Very true about the security risk. I was thinking the default url would more be used temporarily by a client, with the proper configuration being set by whatever method from the gorilla server when first connected. Maybe that too is not secure enough.

@serrc-techops I think this is a pretty commonly used feature of Munki, but I agree with Graham that any implementation of a default URL is a huge security risk. Anything in the Gorilla repo has the ability to run as an admin on all your devices.
If you wanted Gorilla to self-configure, I could see us adding support for something like gorilla.exe -url https://gorilla.domain.xyz. If you had an item in Gorilla that deployed a config.yaml, that would sort of bootstrap it, but someone would need to provide the url somehow (either in the config or at the command line).
It would probably be easier and more dependable to just put the config.yaml on disk when you put gorilla.exe there. (Don't forget, you also need a way for gorilla to run on a schedule. We use task scheduler.)
We use Chef to deploy Gorilla and it's configuration, and I would highly recommend a Configuration Management tool to be used along side Gorilla, but I understand that could be a lot to take on.
It would also be possible to build a custom MSI (or go binary!) that deploys gorilla.exe and config.yaml.


⚠ Bofrost.fr has degraded performance

In b9577c1, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 806 ms

Resolved: Bofrost.fr performance has improved in 084420d.


nexd sometimes reports incorrect peering method type

I run nexd on my laptop, so it connects, disconnects, and changes networks regularly.
I've noticed that sometimes I get into a state where the reported peering method for a relay doesn't match what's actually happening.
$ sudo nexctl nexd peers ping
HOSTNAME                                        WIREGUARD ADDRESS     LATENCY     CONNECTION STATUS        PEERING METHOD
ip-172-31-26-233.us-east-2.compute.internal     <IP_ADDRESS>            54.97ms     ✓ Reachable     via-relay
rbryant-lab                                     <IP_ADDRESS>            88.47ms     ✓ Reachable     via-relay

Here I have two peers. The EC2 VM is a relay and rbryant-lab is another host I use for development purposes.
I expect I'm seeing this because via-relay is the default state. The peering method should say relay-node-peer for the EC2 VM.
I can see that I'm peered to the relay using sudo nexctl nexctl nexd peers list.
$ sudo nexctl nexd peers list
PUBLIC KEY                                       ENDPOINT              ALLOWED IPS                  LATEST HANDSHAKE     TRANSMITTED     RECEIVED     HEALTHY
wfsfrHltmvNLi5g84lQ/l2oWtyyyQV8ppbDUBMTOdQ8=     <IP_ADDRESS>:51820     [<IP_ADDRESS>/10 200::/64]     46 seconds ago       2469268         12868064     true

I think I may have fixed this in some recent changes I made while adding test coverage. I'm closing for now and will file a new bug if I spot it again.


docs(Getting started) add .env information

I'd also love to add information about how to run the test suite locally, but I haven't figured it out yet.

Thanks for the PR @jamesarosen, but I'm not inclined to merge this right now. I'd like to make it even easier to run everything locally first.


Add chenzhengwei as LFAPAC education evangelist member

Add chenzhengwei as LFAPAC education evangelist member

@sunny0826  please help to review, thanks!


Is it compatible with Angular 1.6.4

I just asking because Bower tell me to install Angular 1.3.20 after bower install angular-resizable

I don't think it does. I'm using 1.6.1 and it gives me the following error:
Error: $compile:multidir
Multiple Directive Resource Contention

Please post your code and let's figure out the reason. FYI, I have successfully created a new example with angular 1.6.6

@stanleyxu2005 Do you have an example of your working version that works with angular 1.6?

@awkale Here is a live example with the latest angular 1.6.9 https://codepen.io/stanleyxu2005/pen/dmoywj

@remytesta @rojasjandro89
Yes, it's working even with angularJS 1.8.2
The issue which you're getting is because of not merged this pr: https://github.com/Reklino/angular-resizable/pull/65
Not sure if @Reklino is still interested in this repository unfortunately so you need to modify it manually


"GetUserMedia failed with error" message thrown while attempting to share a screen/application

Browsers and versions affected
M56 Canary 56.0.2905.0 in Ubuntu, Mac
Description
Uncaught (in promise) Error: GetUserMedia failed with error: NotFoundError
at printHandler_ (main.js:1129)
at error_ (main.js:1116)
at main.js:881
message thrown while attempting to share a screen/application window
Steps to reproduce
Pre-requisite: Have multiple Chrome tabs, a few applications like terminal window, finder open

Open https://test.webrtc.org/manual/peer2peer/
Click 'Screen capture'
Click 'Your Entire screen' thumbnail and share
Alternatively, navigate to 'Application Window' tab and click on any thumbnail there (terminal window, finder window)
Observe the JS console

Expected results
No error messages should be thrown, and whatever has been shared should be seen in the 'Local Preview'
Actual results

"Uncaught (in promise) Error: GetUserMedia failed with error: NotFoundError" message thrown
Whatever has been shared is not seen in the 'Local Preview'

Screenshot:

CC: @KaptenJansson

Sharing Chrome tabs is successful, and the above error is not seen

This issue is also observed on chrome OS with 55.0.2883.33 / 8872.31.0 beta

This issue is seen only when "Application window" is shared using windows picker extension and is not observed with Desktop capture extension

@cvranjani could copy and paste the getUserMedia constraints from chrome://webrtc-internals for when sharing Application Window using the Windows picker and the Desktop capture extension?

getUserMedia constraints from chrome://webrtc-internals for "Windows Picker" extension:
Caller origin: https://test.webrtc.org
Caller process id: 18050
Audio Constraints
{deviceId: {exact: ["Ng1Fpb9naBpNI6PSAINeQg=="]}, mediaStreamSource: {exact: ["desktop"]}}
Video Constraints
{width: {max: 1366}, height: {max: 768}, deviceId: {exact: ["Ng1Fpb9naBpNI6PSAINeQg=="]}, mediaStreamSource: {exact: ["desktop"]}}
getUserMedia constraints from chrome://webrtc-internals for "Desktop capture" extension:
Caller origin: chrome-extension://bkdbakhchencophomlalidheidibcncj
Caller process id: 18251
Audio Constraints
{deviceId: {exact: ["AZlGmqHnUXH/3Xg7JczW8A=="]}, mediaStreamSource: {exact: ["desktop"]}}
Video Constraints
{width: {max: 1366}, height: {max: 768}, deviceId: {exact: ["AZlGmqHnUXH/3Xg7JczW8A=="]}, mediaStreamSource: {exact: ["desktop"]}}
Desktop_Capture_Extension_sender_webrtc_internals_dump.txt
Desktop_capture_extension_receiver_webrtc_internals_dump.txt

Are these constraints from when you share an application window?

Yes

I think my change  #223 fixed this issue.

yes and when #222 is merged and served this should go away.

I've now published the new version, please try again.

Verified this issue on Chrome OS with M57 57.0.2970.0 / 9156.0.0 dev. "Local preview" shows the screen that is shared and there are no js errors.

Verified in desktop Chrome with M57 Canary 57.0.2976.0
No JS errors; sharing "application window" thumbails show up in local preview


Improve compilation time

Compilation time (swift build) is very slow:
$ time swift build # clean build
[61/61] Linking libTensorFlow.dylib
swift build  506.63s user 5.63s system 253% cpu 3:22.07 total

$ echo "// Test." >>  Sources/TensorFlow/Layer.swift # trivial change
$ time swift build # incremental build
[3/3] Linking libTensorFlow.dylib
swift build  80.78s user 0.42s system 99% cpu 1:21.25 total

I'm not sure when exactly it got so bad. Let's try to improve this!

This document describes Swift compiler performance tips.
Identifying hot spots using profiling tools like pprof or Xcode Instruments seems like a great first step. @marcrasi previously used pprof to generate TensorFlow module compilation flamegraphs: perhaps that work can be polished and open-sourced in this repository.

Type-checking is one big source of source of slowdown. Here are some sorted results from swift build -Xswiftc -Xfrontend -Xswiftc -debug-time-function-bodies (from Gist):
# Worst offenders, time in milliseconds.
(1767, "global function 'gelu'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1225:13')
(1767, "global function 'gelu'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1225:13')
(1767, "global function 'gelu'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1225:13')
(1866, "instance method 'sha512()'", '/Users/danielzheng/swift-apis/Sources/Tensor/TensorUtilities.swift:149:10')
(2220, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:152:17')
(2220, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:152:17')
(2220, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:152:17')
(2304, "global function 'root'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1375:13')
(2304, "global function 'root'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1375:13')
(2304, "global function 'root'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1375:13')
(2528, "global function 'hingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:109:13')
(2528, "global function 'hingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:109:13')
(2528, "global function 'hingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:109:13')
(3796, "global function 'categoricalHingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:139:13')
(3796, "global function 'categoricalHingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:139:13')
(3796, "global function 'categoricalHingeLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:139:13')
(4102, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:429:17')
(4102, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:429:17')
(4102, "instance method 'update(_:along:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Optimizers/MomentumBased.swift:429:17')
(4128, "global function 'cosineSimilarity'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1492:13')
(4128, "global function 'cosineSimilarity'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1492:13')
(4128, "global function 'cosineSimilarity'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Operators/Math.swift:1492:13')
(15152, "global function 'logCoshLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:157:13')
(15152, "global function 'logCoshLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:157:13')
(15152, "global function 'logCoshLoss(predicted:expected:reduction:)'", '/Users/danielzheng/swift-apis/Sources/TensorFlow/Loss.swift:157:13')

Idea from @allevato: provide a contextual type for literal expressions to help the type checker.
It works:
import TensorFlow

@differentiable
public func logCoshLoss<Scalar: TensorFlowFloatingPoint>(
    predicted: Tensor<Scalar>,
    expected: Tensor<Scalar>,
    reduction: @differentiable (Tensor<Scalar>) -> Tensor<Scalar> = _mean
) -> Tensor<Scalar> {
    let x = predicted - expected
    // Original code.
    return reduction(x + softplus(Tensor(-2) * x) - log(Tensor(2)))
}

@differentiable
public func logCoshLossTest<Scalar: TensorFlowFloatingPoint>(
    predicted: Tensor<Scalar>,
    expected: Tensor<Scalar>,
    reduction: @differentiable (Tensor<Scalar>) -> Tensor<Scalar> = _mean
) -> Tensor<Scalar> {
    let x = predicted - expected
    // Tony's suggestion: provide contextual type for literals.
    return reduction(x + softplus(Tensor(-2 as Scalar) * x) - log(Tensor(2 as Scalar)))
}

$ swift -Xfrontend -debug-time-function-bodies timing.swift
timing.swift:4:13: warning: global function 'logCoshLoss(predicted:expected:reduction:)' took 7400ms to type-check (limit: 1ms)
public func logCoshLoss<Scalar: TensorFlowFloatingPoint>(
            ^
timing.swift:15:13: warning: global function 'logCoshLossTest(predicted:expected:reduction:)' took 134ms to type-check (limit: 1ms)
public func logCoshLossTest<Scalar: TensorFlowFloatingPoint>(
            ^

I believe this should not be necessary, and may be a deficiency in the Swift type checker, specifically bidirectional type-checking and constraint solving. Whenever a contextual type exists, constraints should propagate from out to in, so Scalar is the only possible type for the literals 2 and -2 in logCoshLoss. If we start constraint solving from the type variables for 2 and -2 (which have many possible types), a huge disjunction constraint may be generated, leading to big slowdown.
It would be nice to write a Swift forums question with a minimal reproducer of similar bad type-checking performance for literals with contextual type.

Suggestion from @rxwei: splitting larger files into more smaller files can help multithreaded compilation (swift build), since one thread can be spawned per file. Some files like Sources/TensorFlow/Operators/Math.swift (currently 2835 lines) are huge and can be split.

Note that we have one huge generated Swift file for TensorFlow bindings: Sources/TensorFlow/Bindings/RawOpsGenerated.swift (currently 36743 lines). That probably takes a while to compile.

@dan-zheng Math.swift can definitely be broken down, but if that is the long term solution, isn't there a chance it might be lead to over-granular files?

@dan-zheng Math.swift can definitely be broken down, but if that is the long term solution, isn't there a chance it might be lead to over-granular files?

I think we can find a reasonable granularity, based on common sense. One file per function is obviously too fine-grained. One file per category of functions (e.g. ReductionOperations.swift) seems reasonable.
If anyone pursues splitting large files into smaller ones to improve compilation time, please include some benchmark results, like in the PR description.


UUU libusb: error ubuntu 20.04

Hello, please add support for new ubuntu LTS. After upgrading to ubuntu 20.04 LTS uuu stopped working (on both machine- both were upgraded). Throwing libusb: error. With verbose -V cmd argument it works sometimes (50/50).

Fixed with using "-pp 1"

Actually I could not flash either with my Ubuntu 20.04 with the -pp 1 option either. Various option didn't change a thing. Will be posting the verbose results here today.

It work well in my ubuntu 20.04. Not clue yet

 develop ●  sudo mfgtools-signed/uuu -pp 1  -V mfgtools-signed/m4app.uuu

uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.102-9-gfdf71fa

Build in config:
        Pctl     Chip            Vid     Pid     BcdVersion
        ==================================================
        SDPS:    MX8QXP          0x1fc9  0x012f  [0x0002..0xffff]
        SDPS:    MX8QM           0x1fc9  0x0129  [0x0002..0xffff]
        SDPS:    MX28            0x15a2  0x004f
        SDPS:    MX815           0x1fc9  0x013e
        SDP:     MX7D            0x15a2  0x0076
        SDP:     MX6Q            0x15a2  0x0054
        SDP:     MX6D            0x15a2  0x0061
        SDP:     MX6SL           0x15a2  0x0063
        SDP:     MX6SX           0x15a2  0x0071
        SDP:     MX6UL           0x15a2  0x007d
        SDP:     MX6ULL          0x15a2  0x0080
        SDP:     MX6SLL          0x1fc9  0x0128
        SDP:     MX7ULP          0x1fc9  0x0126
        SDP:     MXRT106X        0x1fc9  0x0135
        SDP:     MX8MM           0x1fc9  0x0134
        SDP:     MX8MQ           0x1fc9  0x012b
        SDPU:    SPL             0x0525  0xb4a4  [0x0000..0x04ff]
        SDPV:    SPL1            0x0525  0xb4a4  [0x0500..0x9998]
        SDPU:    SPL             0x0525  0xb4a4  [0x9999..0x9999]
        FBK:                     0x066f  0x9afe
        FBK:                     0x066f  0x9bff
        FB:                      0x0525  0xa4a5
        FB:                      0x18d1  0x0d02
Wait for Known USB Device Appear...
New USB Device Attached at 1:11
1:11>Start Cmd:SDP: boot -f SPL-aeler-imx7ulpea-ucom
1:11>Fail HID(W):LIBUSB_ERROR_TIMEOUT(1.001s)

I tried to edit the udev rules as suggested in using uuu -udev
mfgtools-signed/uuu -v -pp 1  mfgtools-signed/m4app.uuu
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.102-9-gfdf71fa
Build in config:
        Pctl     Chip            Vid     Pid     BcdVersion
        ==================================================
        SDPS:    MX8QXP          0x1fc9  0x012f  [0x0002..0xffff]
        SDPS:    MX8QM           0x1fc9  0x0129  [0x0002..0xffff]
        SDPS:    MX28            0x15a2  0x004f
        SDPS:    MX815           0x1fc9  0x013e
        SDP:     MX7D            0x15a2  0x0076
        SDP:     MX6Q            0x15a2  0x0054
        SDP:     MX6D            0x15a2  0x0061
        SDP:     MX6SL           0x15a2  0x0063
        SDP:     MX6SX           0x15a2  0x0071
        SDP:     MX6UL           0x15a2  0x007d
        SDP:     MX6ULL          0x15a2  0x0080
        SDP:     MX6SLL          0x1fc9  0x0128
        SDP:     MX7ULP          0x1fc9  0x0126
        SDP:     MXRT106X        0x1fc9  0x0135
        SDP:     MX8MM           0x1fc9  0x0134
        SDP:     MX8MQ           0x1fc9  0x012b
        SDPU:    SPL             0x0525  0xb4a4  [0x0000..0x04ff]
        SDPV:    SPL1            0x0525  0xb4a4  [0x0500..0x9998]
        SDPU:    SPL             0x0525  0xb4a4  [0x9999..0x9999]
        FBK:                     0x066f  0x9afe
        FBK:                     0x066f  0x9bff
        FB:                      0x0525  0xa4a5
        FB:                      0x18d1  0x0d02
Wait for Known USB Device Appear...
New USB Device Attached at 1:11
1:11>Start Cmd:SDP: boot -f SPL-aeler-imx7ulpea-ucom
6400%1:11>Okay (2.05s)

I see that log and it hangs here, nothing is being flashed to the device and it never exits.

 6379.447818] usb 1-1.1: new high-speed USB device number 16 using xhci_hcd
[ 6379.468849] usb 1-1.1: New USB device found, idVendor=1fc9, idProduct=0126, bcdDevice= 0.01
[ 6379.468854] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6379.468858] usb 1-1.1: Product: SP Blank ULP1
[ 6379.468860] usb 1-1.1: Manufacturer:    NXP    SemiConductor Inc
[ 6379.472398] hid-generic 0003:1FC9:0126.000B: hiddev0,hidraw1: USB HID v1.10 Device [   NXP    SemiConductor Inc  SP Blank ULP1] on usb-0000:00:14.0-1.1/input0
[ 6529.738439] usb 1-1.1: USB disconnect, device number 16

look like SPL-aeler-imx7ulpea-ucom is not boot.  USB still in ROM PID\VID.  SPL should use difference PID\VID

Correct:

The Same SPL are used under Ubuntu18.04 successfully though with the same uuu calls.

This seems operational downloading uuu latest release !

Result with latest uuu release:
Build in config:
	Pctl	 Chip		 Vid	 Pid	 BcdVersion
	==================================================
	SDPS:	 MX8QXP		 0x1fc9	 0x012f	 [0x0002..0xffff]
	SDPS:	 MX8QM		 0x1fc9	 0x0129	 [0x0002..0xffff]
	SDPS:	 MX8DXL		 0x1fc9	 0x0147
	SDPS:	 MX28		 0x15a2	 0x004f
	SDPS:	 MX815		 0x1fc9	 0x013e
	SDPS:	 MX865		 0x1fc9	 0x0146
	SDP:	 MX7D		 0x15a2	 0x0076
	SDP:	 MX6Q		 0x15a2	 0x0054
	SDP:	 MX6D		 0x15a2	 0x0061
	SDP:	 MX6SL		 0x15a2	 0x0063
	SDP:	 MX6SX		 0x15a2	 0x0071
	SDP:	 MX6UL		 0x15a2	 0x007d
	SDP:	 MX6ULL		 0x15a2	 0x0080
	SDP:	 MX6SLL		 0x1fc9	 0x0128
	SDP:	 MX7ULP		 0x1fc9	 0x0126
	SDP:	 MXRT106X	 0x1fc9	 0x0135
	SDP:	 MX8MM		 0x1fc9	 0x0134
	SDP:	 MX8MQ		 0x1fc9	 0x012b
	SDPU:	 SPL		 0x0525	 0xb4a4	 [0x0000..0x04ff]
	SDPV:	 SPL1		 0x0525	 0xb4a4	 [0x0500..0x9998]
	SDPU:	 SPL		 0x0525	 0xb4a4	 [0x9999..0x9999]
	SDPU:	 SPL		 0x3016	 0x1001	 [0x0000..0x04ff]
	SDPV:	 SPL1		 0x3016	 0x1001	 [0x0500..0x9998]
	FBK:	 		 0x066f	 0x9afe
	FBK:	 		 0x066f	 0x9bff
	FB:	 		 0x0525	 0xa4a5
	FB:	 		 0x18d1	 0x0d02
	FB:	 		 0x3016	 0x0001
Wait for Known USB Device Appear...
New USB Device Attached at 1:12
1:12>Start Cmd:SDP: boot -f SPL-aeler-imx7ulpea-ucom
22%libusb: error [udev_hotplug_event] ignoring udev action bind
6400%1:12>Okay (0.265s)
New USB Device Attached at 1:12
1:12>Start Cmd:SDPU: delay 1000
libusb: error [udev_hotplug_event] ignoring udev action bind
1:12>Okay (1s)
1:12>Start Cmd:SDPU: write -f u-boot-aeler-imx7ulpea-ucom.itb
99%1:12>Okay (0.346s)
1:12>Start Cmd:SDPU: jump
6400%1:12>Okay (1.001s)
New USB Device Attached at 1:12
1:12>Start Cmd:FB: ucmd setenv fastboot_buffer ${initrd_addr}
1:12>Okay (0.005s)
1:12>Start Cmd:FB: download -f ../sdk20-app_flash.img
libusb: error [udev_hotplug_event] ignoring udev action bind
1:12>Okay (0.012s)
1:12>Start Cmd:FB: ucmd sf probe
1:12>Okay (0.013s)
1:12>Start Cmd:FB[-t 40000]: ucmd sf erase 0 40000
1:12>Okay (2.145s)
1:12>Start Cmd:FB: ucmd sf write ${fastboot_buffer} 0 ${fastboot_bytes}
1:12>Okay (1.014s)
1:12>Start Cmd:FB: done
1:12>Okay (0s)

We observed that in fact the uuu tool works as epxected on 20.04 as long as the device is not in a closed state (burned fused) After that, subsequent attempts at uuu calls to flash M4 or A7 program fails with a HW libust tiemout issue.

Did your closed part stop here?
1:12>Start Cmd:SDP: boot -f SPL-aeler-imx7ulpea-ucom
22%libusb: error [udev_hotplug_event] ignoring udev action bind
6400%1:12>Okay (0.265s)
look like autherization failure. Are you use signed image to download?

Apologies, the capture above was from a flashing of the M4 program before the device was closed.
And from the device trace after booting it at that point, this went ok.
After the device was closed though, here is what I got:
 mfgtools-signed/uuu -pp 1 mfgtools-signed/full_tar.uuu
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-0-g4fe24b9
Success 0    Failure 1
1:12     1/ 1 [HID(W):LIBUSB_ERROR_TIMEOUT           ] SDP: boot -f SPL-aeler-imx7ulpea-ucom

Note that reverting to Ubuntu 18.04 with the exact same files (uboot.itb, signed SPLs, signed Linux image and M4 program), everything goes as expected. So we are sticking to 18.04 for that reason at the moment.

I don't know what happen now. it is very strange

Trying on a different 20.04 machine the tool worked well.
So it might be an issue at USB driver level.
Detail of the machine on which the issue was observed: ASUS Zenbook UX550-GE.
Hence, diving deeper, it seems it is an Ubuntu issue not an issue directly linked to uuu.
Thanks for your support !

I'm having problems with UUU also.  Similar but different.  Instead of the  "LIBUSB_ERROR_TIMEOUT", I'm getting a "LIBUSB_ERROR_NO_DEVICE".
I pulled the latest version of the uuu code and after some mods, I was able to see HIDTrans::write successfully transferred data for the first 8 packets of my u-boot image.  On the ninth packet I got the "NO_DEVICE" error, which seems to indicate something happened to cause the device to be disconnected after the 8th packet.
My host computer also has an ASUS motherboard, so I'm suspicious that might be the commonality.
I'm going to try downgrading to Ubuntu 18.04LTS and see if that fixes my problems as well.

Hello @nxpfrankli
We have been using older hardware (old Thinkpad and Alienware M17x from 2012) to flash closed devices ever since the problem was experienced but it is not a viable solution long term. We have tried again with more recent versions of the uuu tool and the issur persist.
We are running on closed i.Mx7-ULP boards.
Recent tests have been conducted on Ubuntu 20.04 ASUS Zenbook UX550 and on an Dell XPS 15 from last year.
Problem is present on both machines regardless of the use of USB Hubs.
Under windows our manufacturers have been facing the same issues for our first series production but it seems the use of a USB hub helped (it degrades the USB driver that is used to USB 2.0 if I am correct).
could we re-open this ticket ? We depend on this tool proper operation for series production.
And the outcome should be independent of the hardware running the uuu.

Example the script works on:
Architecture:                    x86_64 CPU op-mode(s):                  32-bit, 64-bit Byte Order:                      Little Endian Address sizes:                   39 bits physical, 48 bits virtual CPU(s):                          8 On-line CPU(s) list:             0-7 Thread(s) per core:              2 Core(s) per socket:              4 Socket(s):                       1 NUMA node(s):                    1 Vendor ID:                       GenuineIntel CPU family:                      6 Model:                           60 Model name:                      Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz Stepping:                        3 CPU MHz:                         2852.015 CPU max MHz:                     3700,0000 CPU min MHz:                     800,0000 BogoMIPS:                        5387.58 Virtualization:                  VT-x L1d cache:                       128 KiB L1i cache:                       128 KiB L2 cache:                        1 MiB L3 cache:                        6 MiB NUMA node0 CPU(s):               0-7 Vulnerability Itlb multihit:     KVM: Mitigation: VMX disabled Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable Vulnerability Meltdown:          Mitigation; PTI Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2:        Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling Vulnerability Srbds:             Mitigation; Microcode Vulnerability Tsx async abort:   Not affected Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
Does not work on:
Architecture:                    x86_64 CPU op-mode(s):                  32-bit, 64-bit Byte Order:                      Little Endian Address sizes:                   39 bits physical, 48 bits virtual CPU(s):                          12 On-line CPU(s) list:             0-11 Thread(s) per core:              2 Core(s) per socket:              6 Socket(s):                       1 NUMA node(s):                    1 Vendor ID:                       GenuineIntel CPU family:                      6 Model:                           158 Model name:                      Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Stepping:                        10 CPU MHz:                         800.155 CPU max MHz:                     4100.0000 CPU min MHz:                     800.0000 BogoMIPS:                        4399.99 Virtualization:                  VT-x L1d cache:                       192 KiB L1i cache:                       192 KiB L2 cache:                        1.5 MiB L3 cache:                        9 MiB NUMA node0 CPU(s):               0-11 Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable Vulnerability Meltdown:          Mitigation; PTI Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling Vulnerability Srbds:             Mitigation; Microcode Vulnerability Tsx async abort:   Not affected Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon                                   pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcn                                  t tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgs                                  base tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_                                  epp md_clear flush_l1d

It is quite difficult to debug the problem.
It may related USB host controller driver.

Can you sperate boot cmd to 3 commands?

So far only you report hub problem, our internal test have not problem with hub.

@nxpfrankli The issue persists with and without a hub on my side for most ubuntu computers.
See April 7th traces you asked for.

The current clue can't help me identify the problem.


improvement: support a skip_type_check option on fields

Hello! Due to an implementation detail in Ash (which I understand is not necessarily a concern of the ecto maintainers), I have types that can't necessarily be compiled when the ecto schema itself is compiled. This check supports a toggle called skip_type_check which allows this to be configured on a field-by-field basis. This could potentially be useful to anyone who is building ecto schemas and types behind macros as well.

I'd be happy to add a test for this, but I wanted to run it by before-hand.

Sorry but I am worried about adding such mechanisms. It seems it should be tackled on the caller and we can’t guarantee we won’t add APIs in the future that require to be invoked at compile time. For example, one of our sketches for type specs support for fields was compile time based.

I thought that might be the case. Ultimately in that case then recursive types would need to be implemented not as embeds but ecto types that traverse/cast to/from maps. If I wanted to support them in Ash, I'd likely need to do it that way. In my research I'm also finding that, since graphql doesn't support recursive queries, recursively specified types really aren't all that useful for most contexts I care about. I'd ultimately have to be sending it back in JSON form over the graphql.

Thanks for the feedback :)


Github action: Rust / docker (push) error

Rust / docker (push) error: incorrect username or password. The details are as follows:
Run docker/login-action@v2
  with:
    username: ***
    password: ***
    ecr: auto
    logout: true
  env:
    CARGO_TERM_COLOR: always
Logging into Docker Hub...
Error: Error response from daemon: Get "https://registry-1.docker.io/v[2](https://github.com/pyrsia/pyrsia/actions/runs/3588356818/jobs/6042392002#step:3:2)/": unauthorized: incorrect username or password

Link: https://github.com/pyrsia/pyrsia/actions/runs/3588356818/jobs/6042392002

I know why this happened. I had to do forgot password to get the password for our docker account so it might need to be changed in such places. Will do that tomorrow morning.

updated password in settings and re-ran workflow. This is now fixed.


remove tracking token from links

Before Submitting Your Feature Request

[x] Check that there isn't already a similar feature request to avoid creating a duplicate.
[x] I have seen the FAQ.

Problem
would love to see a feature added where tracking tokens are automatically removed before storing the item on the clipboard
example:
Original link copied:
https://open.spotify.com/track/12ZTpSvqoRhlZh6GZZEvuR?si=00852593046d4a37
link saved to clipboard:
https://open.spotify.com/track/12ZTpSvqoRhlZh6GZZEvuR
Solution
i guess it's a case of adding a filter when copying links to check if they contain ?si= and if so, creating a new array upto the index location of the ?

That's implemented in the Pure Paste app, I suggest you use it.


[FEATURE] Add Contributor List to Readme

Detailed description
Adding Contributor list to Readme file
Context
Gives contributors recognition
Possible implementation
No response
Additional information
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hey, thanks for raising an issue
About contributors, those are already getting reflected on the right side of the window, that's why we also have not implemented that one..
You can raise other issue as well
Thank you


chore(master): Release 0.46.1

:robot: I have created a release beep boop
aztec-package: 0.46.1
0.46.1 (2024-07-10)
Miscellaneous

aztec-package: Synchronize aztec-packages versions

barretenberg.js: 0.46.1
0.46.1 (2024-07-10)
Miscellaneous

barretenberg.js: Synchronize aztec-packages versions

aztec-packages: 0.46.1
0.46.1 (2024-07-10)
Features

Apply no_predicates in stdlib (https://github.com/noir-lang/noir/pull/5454) (6237d96)
Lsp rename/find-all-references for globals (https://github.com/noir-lang/noir/pull/5415) (6237d96)
Lsp rename/find-all-references for local variables (https://github.com/noir-lang/noir/pull/5439) (6237d96)
Remove duplicated array reads at constant indices (https://github.com/noir-lang/noir/pull/5445) (6237d96)
Remove redundant EnableSideEffects instructions (https://github.com/noir-lang/noir/pull/5440) (6237d96)

Bug Fixes

Account for the expected kind when resolving turbofish generics (https://github.com/noir-lang/noir/pull/5448) (6237d96)
Added bb to noir-projects deps (#7412) (6d3ed3a)
Fix issue with unresolved results (https://github.com/noir-lang/noir/pull/5453) (6237d96)
Prevent no_predicates from removing predicates in calling function (https://github.com/noir-lang/noir/pull/5452) (6237d96)

Miscellaneous

Replace relative paths to noir-protocol-circuits (db45302)
Replace usage of GrumpkinPoint with EmbeddedCurvePoint (#7382) (5279695)
Replace usage of GrumpkinPrivateKey with EmbeddedCurveScalar (#7384) (a917198)

barretenberg: 0.46.1
0.46.1 (2024-07-10)
Miscellaneous

barretenberg: Synchronize aztec-packages versions

This PR was generated with Release Please. See documentation.

Benchmark results
Metrics with a significant change:

avm_simulation_time_ms (Token:assert_minter_and_mint): 63.0 (+51%)
avm_simulation_time_ms (Token:transfer_public): 48.0 (+63%)
app_circuit_proving_time_in_ms (AuthRegistry:set_authorized (avm)): 1,351 (-19%)
app_circuit_proving_time_in_ms (FPC:pay_refund (avm)): 23,446 (+32%)
protocol_circuit_proving_time_in_ms (base-rollup): 92,029 (+18%)
protocol_circuit_proving_time_in_ms (root-parity): 40,955 (+21%)
protocol_circuit_proving_time_in_ms (public-kernel-app-logic): 44,529 (+20%)
protocol_circuit_proving_time_in_ms (public-kernel-teardown): 44,441 (+20%)
protocol_circuit_proving_time_in_ms (public-kernel-tail): 188,470 (+19%)
protocol_circuit_proving_time_in_ms (root-rollup): 23,357 (+20%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256_ms
5,760 (+1%)
1,555 (+1%)
702
752 (-3%)
768

proof_construction_time_sha256_30_ms
11,837
3,171 (+1%)
1,403
1,448 (+1%)
1,471

proof_construction_time_sha256_100_ms
44,112 (+1%)
11,861
5,421
5,388
5,355

proof_construction_time_poseidon_hash_ms
78.0
34.0
34.0
57.0 (-3%)
87.0 (-1%)

proof_construction_time_poseidon_hash_30_ms
1,530 (+1%)
418
200
219 (-3%)
268 (+1%)

proof_construction_time_poseidon_hash_100_ms
5,653 (+1%)
1,527 (+1%)
673
723 (-1%)
751

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
4 txs
8 txs
16 txs

l1_rollup_calldata_size_in_bytes
1,412
1,412
1,412

l1_rollup_calldata_gas
9,464
9,468
9,476

l1_rollup_execution_gas
613,492
613,647
613,806

l2_block_processing_time_in_ms
765 (+2%)
1,428 (+2%)
2,750 (+4%)

l2_block_building_time_in_ms
13,055 (+1%)
25,798 (+1%)
50,190

l2_block_rollup_simulation_time_in_ms
13,055 (+1%)
25,797 (+1%)
50,190

l2_block_public_tx_process_time_in_ms
10,978 (+1%)
23,558 (+1%)
47,947

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 8 txs.

Metric
3 blocks
5 blocks

node_history_sync_time_in_ms
7,115 (+2%)
9,999 (+2%)

node_database_size_in_bytes
12,427,344
16,191,568

pxe_database_size_in_bytes
16,254
26,813

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Function
time_ms
bytecode_size_in_bytes

GasToken:_increase_public_balance
79.7 (+3%)
13,790

GasToken:set_portal
12.5 (+4%)
3,339

Token:constructor
99.6 (-3%)
23,692

FPC:constructor
72.8 (-1%)
13,592

GasToken:mint_public
60.5 (-6%)
10,158

Token:mint_public
338
19,034

Token:assert_minter_and_mint
:warning: 63.0 (+51%)
12,925

AuthRegistry:set_authorized
36.0 (+1%)
7,812

FPC:prepare_fee
106 (-1%)
15,062

Token:transfer_public
:warning: 48.0 (+63%)
31,218

FPC:pay_refund
127 (-7%)
25,260

Benchmarking:increment_balance
1,329 (+1%)
15,267

Token:_increase_public_balance
19.8 (+28%)
15,006

FPC:pay_refund_with_shielded_rebate
166 (-1%)
26,347

Public DB Access
Time to access various public DBs.

Function
time_ms

get-nullifier-index
0.158 (+6%)

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
256 leaves
512 leaves
1024 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.4
16.8
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.7
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.601
0.515
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
48.2
76.2 (+1%)
132 (+2%)
246 (+1%)
477 (+3%)

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
287
543
1,055

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.492
0.468 (+1%)
0.455 (+2%)
0.446 (+1%)
0.445 (+2%)

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
59.5
113 (+3%)
183 (+2%)
355 (+1%)
701 (+4%)

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
109
207
355
691
1,363

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.503
0.505 (+2%)
0.486 (+2%)
0.480 (+1%)
0.481 (+4%)

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
73.2 (+1%)
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
133
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
0.521 (+1%)
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
74,105
667,868

Transaction size based on fee payment method
| Metric |  |
| - |  |

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-packages-v0.46.1 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-package-v0.46.1 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg.js-v0.46.1 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg-v0.46.1 :sunflower:


[web3t] Introduce prettyPrintWei() function

This is an experiment and I'm not 100% sure if we want to do it:

Downsides:

increased "change blindness" (not so easy to see you are actually making payments when the numbers are big)
rounding is not done correctly (not a big deal and definitely fixable with a bit more work).

increased "change blindness" (not so easy to see you are actually making payments when the numbers are big)

this could be avoided 'till a certain point by having an "on Hover" state that showed the user the exact amount of Wei, unconverted. Or by clicking on mobile screens.
I really like this, for big torrents the Wei quantities can get hard to read.


[Feature} : Creating the Settings page of the website

A settings page is need to control the profile , theme , user authentication of the website. This page will contain the most crucial part of the user.
I would like to work on this under GSSoC'24

Give me the design @sambitsingha!

@Swarnendu0123 Working on the design

@Swarnendu0123  Kinda similar to this

I want the exact design.

Hey, Can I give it a try? If this issue has not been resolved.

Surely but use shadcn ui https://ui.shadcn.com/


Set inactivity_probe timeout for NB DB to 0

Signed-off-by: Kyle Mestery<EMAIL_ADDRESS>

LGTM, wait for the ci job


ntr: delayed protein degradation during mitotic M-phase

delayed protein degradation during mitotic M-phase
PMID:11084332

[Term]
id: FYPO:0004332
name: delayed onset of protein degradation during mitosis
def: "A cellular process phenotype observed in the vegetative growth phase of the life cycle in which protein degradation begins later than normal during mitosis." [PomBase:mah]
[snip several other synonyms]
synonym: "delayed onset of protein degradation during mitotic M phase" EXACT [PomBase:mah]
synonym: "delayed protein degradation during mitosis" EXACT [PomBase:mah]
is_a: FYPO:0000845 ! abnormal protein degradation during vegetative growth


Recaptcha rebase

command for this rebase
recaptcha-rebase-mar is created against the most recent master branch.
git cherry-pick b3000939ee746df88aec141a51705e6e725df00d^..d979c1ced539041071b0e0fb43ff98cb411f4cbd
resolve conflicts.
Test done
npm run test
npm run test:integration
authEmulator tests done.
manual tests done against project liubin-dev2.

Duplicate pull request of https://github.com/firebase/firebase-admin-node/pull/2128.


Check in config for no-response experiment

This config will be read by our installed No Response bot so that we can evaluate its effectiveness for our workflow.
Once merged, any issue that:

has been given the label: more-information-needed
hasn't received an update within 30 days

will be automatically closed out with an explanation as configured in this PR.
Note that, should the original issue author later respond with additional info, the issue will be re-opened automatically.

Thanks for reviewing! Test failures look to be unrelated to this - so I'm going to merge now.
If this ends up being useful - my thinking is we could slowly roll it out across more repos - and possibly expand the scope of the automation as well. Right now, I only granted no-response bot access to the terratest repo.


nodePackages.terser: init at 5.7.1

Motivation for this change
Add terser, a maintained fork of uglify-es. Also update the nodePackages set in general.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@talyz merge conflict

@SuperSandro2000 Updated!

Would it be possible to backport this to stable? What's the stance on backporting nodePackages changes?


WIP: Enable Switch PowerShell Exe

This exposes a function SwitchPowerShellExecutable that will prompt you for which PowerShell version you want to work on.
I haven't tested this on Windows yet... but let me know what you think so far.

cc @corbob

🤔 Must be the extra slashes?

can confirm. working on it.

should be working now; @corbob could you test it out?

I'd like to change this up a bit... let me mess with it this weekend.

Closing this in favor of #16


RuntimeError: cuFFT error: CUFFT_INTERNAL_ERROR

RuntimeError: cuFFT error: CUFFT_INTERNAL_ERROR
My cuda is 11.8.
How can solve it if I don't want to reinstall my cuda? (Other virtual environments rely on cuda11.8.)
More information:
Traceback (most recent call last):
File "/home/km/OpenVoice/OpenVoice-main/openvoice.py", line 33, in
tone_color_converter.convert(
File "/home/km/OpenVoice/OpenVoice-main/api.py", line 149, in convert
spec = spectrogram_torch(y, hps.data.filter_length,
File "/home/km/OpenVoice/OpenVoice-main/mel_processing.py", line 61, in spectrogram_torch
spec = torch.stft(
File "/home/km/miniconda3/envs/openvoice/lib/python3.9/site-packages/torch/functional.py", line 632, in stft
return _VF.stft(input, n_fft, hop_length, win_length, window,  # type: ignore[attr-defined]
RuntimeError: cuFFT error: CUFFT_INTERNAL_ERROR

Hi there -- I get the same issue

Fixed with
pip install torch==2.0.1
pip install wavmark==0.0.3

Thanks. The error above was addressed.
But a new issue arises.
My cuda is 11.2 (11.8 is wrong). Cudnn is 8.1.
Is it possible for me to fix this problem without reinstalling cuda and cudnn?
Error information:
RuntimeError: cuDNN version incompatibility: PyTorch was compiled  against (8, 5, 0) but found runtime version (8, 1, 0). PyTorch already comes bundled with cuDNN. One option to resolving this error is to ensure PyTorch can find the bundled cuDNN.Looks like your LD_LIBRARY_PATH contains incompatible version of cudnnPlease either remove it from the path or install cudnn (8, 5, 0)
Thanks again.

@rlenain I tried that, now it's complaining about Silero :
OSError                                   Traceback (most recent call last)
File ~/anaconda3/envs/openvoice/lib/python3.9/site-packages/whisper_timestamped/transcribe.py:1885, in get_vad_segments(audio, output_sample, min_speech_duration, min_silence_duration, dilatation, method)
1884 try:
-> 1885     _silero_vad_model, utils = torch.hub.load(repo_or_dir=repo_or_dir, model="silero_vad", onnx=onnx, source=source)
...
-> 1889     raise RuntimeError(f"Problem when installing silero with version {version}. Check versions here: https://github.com/snakers4/silero-vad/wiki/Version-history-and-Available-Models") from err
1890 finally:
1891     if need_folder_hack:
RuntimeError: Problem when installing silero with version None. Check versions here: https://github.com/snakers4/silero-vad/wiki/Version-history-and-Available-Models

This worked for me
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=12.1 -c pytorch -c nvidia
I have 12.1 installed so I just bumped the version


Upgraded Juice to use Webpack 4

upgraded webpack to webpack 4
upgraded juice and its dependencies to the latest and most secure versions
removed publish library which is now obsolete.  (uses builtin command instead)
ran locally to verify.

👍


Quickfix: Replace fastapi dep with fastapi[standard]

Description
fastapi is now an alias for fastapi-slim as per the release of version 1.112.

Before this, fastapi would include the standard dependencies, with Uvicorn and the fastapi-cli, etc.
And fastapi-slim would not include those standard dependencies.
Now fastapi doesn't include those standard dependencies unless you install with pip install "fastapi[standard]".

Issues
#395
Type of change
List the type of change like below. Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

Dependencies
N/A
Tests
N/A

Please fix the conflict.

@sunnstix please fix the conflict.

Please fix the conflict, so I can merge this PR. @sunnstix

@chensuyue I would argue that this change no longer needs to be implemented with the new inclusion of dependencies such as uvicorn independently. The standard fastapi package introduces dependencies outside of just uvicorn that are unnecessary and if we can manually install all the needed dependencies while using the lightweight version of fastapi, I think  that is better. Feel free to close this PR if you agree.


Flaky Missing output: my-package (used in pin_subpackage) error

Let's take a look at this recipe:
# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json

context:
  name: my-package
  version: '0.1.0'

outputs:
  - package:
      name: ${{ name }}
      version: ${{ version }}
    build:
      noarch: generic

  - package:
      name: ${{ name | replace('-', '_') }}
      version: ${{ version }}
    build:
      noarch: generic
    requirements:
      run:
        - ${{ pin_subpackage(name, exact=true) }}

Often, the output is this as expected:
❯ rattler-build build -r r/recipe.yaml
No target platform specified, using current platform
Found variants:

my-package-0.1.0-h4616a5c_0
╭─────────────────┬─────────╮
│ Variant         ┆ Version │
╞═════════════════╪═════════╡
│ target_platform ┆ noarch  │
╰─────────────────┴─────────╯

my_package-0.1.0-h831704a_0
╭─────────────────┬──────────────────╮
│ Variant         ┆ Version          │
╞═════════════════╪══════════════════╡
│ my-package      ┆ 0.1.0 h4616a5c_0 │
│ target_platform ┆ noarch           │
╰─────────────────┴──────────────────╯

Work dir: "/private/tmp/rattler-test/output/bld/rattler-build_my-package_1706476231/work"
Build script: "/private/tmp/rattler-test/output/bld/rattler-build_my-package_1706476231/work/conda_build.sh"
Copying done!
Relink done!

Files in package:

  - info/about.json
  - info/hash_input.json
  - info/index.json
  - info/paths.json
  - info/recipe/recipe.yaml
  - info/recipe/rendered_recipe.yaml
  - info/recipe/variant_config.yaml
Creating target folder "/private/tmp/rattler-test/output/noarch"

Output: my-package-0.1.0-h4616a5c_0

Variant configuration:
┌─────────────────┬─────────┐
│ Variant         ┆ Version │
╞═════════════════╪═════════╡
│ target_platform ┆ noarch  │
└─────────────────┴─────────┘

Running tests
Removing previously cached package "/Users/pavel/Library/Caches/rattler/cache/pkgs/my-package-0.1.0-h4616a5c_0"
Creating test environment in "/private/tmp/rattler-test/output/bld/rattler-build_my-package_1706476231/work/test"
Collecting tests from "/Users/pavel/Library/Caches/rattler/cache/pkgs/my-package-0.1.0-h4616a5c_0"
Work dir: "/private/tmp/rattler-test/output/bld/rattler-build_my_package_1706476231/work"
Build script: "/private/tmp/rattler-test/output/bld/rattler-build_my_package_1706476231/work/conda_build.sh"
Copying done!
Relink done!

Files in package:

  - info/about.json
  - info/hash_input.json
  - info/index.json
  - info/paths.json
  - info/recipe/recipe.yaml
  - info/recipe/rendered_recipe.yaml
  - info/recipe/variant_config.yaml
Creating target folder "/private/tmp/rattler-test/output/noarch"

Output: my_package-0.1.0-h831704a_0

Variant configuration:
┌─────────────────┬──────────────────┐
│ Variant         ┆ Version          │
╞═════════════════╪══════════════════╡
│ my-package      ┆ 0.1.0 h4616a5c_0 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ target_platform ┆ noarch           │
└─────────────────┴──────────────────┘

Run dependencies:
╭────────────┬─────────────────────────╮
│ Name       ┆ Spec                    │
╞════════════╪═════════════════════════╡
│ my-package ┆ ==0.1.0 h4616a5c_0 (PS) │
╰────────────┴─────────────────────────╯

Running tests
Removing previously cached package "/Users/pavel/Library/Caches/rattler/cache/pkgs/my_package-0.1.0-h831704a_0"
Creating test environment in "/private/tmp/rattler-test/output/bld/rattler-build_my_package_1706476231/work/test"
Collecting tests from "/Users/pavel/Library/Caches/rattler/cache/pkgs/my_package-0.1.0-h831704a_0"

But sometimes, I get this error:
❯ rattler-build build -r r/recipe.yaml
No target platform specified, using current platform
Error:   × Missing output: my-package (used in pin_subpackage)

When I replace ${{ pin_subpackage(name, exact=true) }} with ${{ pin_subpackage('my-package', exact=true) }}, I cannot replicate the error.
I unfortunately couldn't find other patterns to reproduce this...

Interesting, sounds like we're missing an edge in the graph for the topological sorting of the outputs. I'll write some tests tomorrow.

Ok, I briefly debugged a bit – the issue is that we are operating on the AST to find the used variables from the recipe. In this case, we determine that name is a used variable (correct), but we don't resolve it from the context (so the edge is not correctly introduced between the packages and the order isn't right).
I'll see if I can think of better ways to do this ...

The other part of the issue is that we currently don't take run dependencies into account for computing the graph – but later, when executing the tests, run dependencies are obviously used.
I am not sure though wether adding run dependencies is the right thing to do ... but maybe there should never be a situation where one has cyclic graphs due to run dependencies (it would be valid though, otherwise).

This should be fixed in #617 :)


"pkg-fetch": "^2.6.6",

:tada: This PR is included in version 5.12.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Y-Axis breaking on high values

Expected Behavior
The Y axis shouldn't break on high values.

Current Behavior
The Y axis is breaking on the high values that are being returned from the ASP.NET MVC Controller.

Possible Solution
N/A

Steps to Reproduce (for bugs)

Context

Environment

Chart.js version:
Browser name and version:
Link to your project:

This is the set of data being sent to the view for the chart
        DataRow dr = dt.NewRow();
        dr["Category"] = "BP Vanelus";
        dr["Cost"] = 1500000;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Category"] = "Oil Drain Interval";
        dr["Cost"] = 1400000;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Category"] = "Component Life Extension";
        dr["Cost"] = 1300000;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Category"] = "Equipment Downtime Reduction";
        dr["Cost"] = 1200000;
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Category"] = "Shell Rimula";
        dr["Cost"] = 1000000;
        dt.Rows.Add(dr);

Have attached the screenshot of the issue.

@yashtahiliani25 did you set stepSize: 1 on the y axis?

Think it was 1 by default, changed it to 500 and it works like a charm! Thanks! :)


[Impeller] Pending manual testing, opt Google3 customer out of using wide-gamut support.

Part of https://github.com/flutter/flutter/issues/126498

Completed by @gaaclarke


Unable to find definition 'defaults.bluealsa.interface'

I've followed the instructions in the readme. After connecting to my bluetooth device and running sudo bluealsa I'm unable to make aplay work:
Without sudo:
(ins)carlos@carlos ~$ aplay -D bluealsa test.wav
ALSA lib bluealsa-pcm.c:701:(_snd_pcm_bluealsa_open) BlueALSA connection failed: Permission denied
aplay: main:788: audio open error: Permission denied

With sudo:
(ins)carlos@carlos ~$ sudo aplay -D bluealsa test.wav
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.interface'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4996:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM bluealsa
aplay: main:788: audio open error: No such file or directory

My .asoundrc:
(ins)carlos@carlos ~$ cat ~/.asoundrc
defaults.bluealsa.interface "hci0"
defaults.bluealsa.device "E0:D1:E6:0B:AF:F1"
defaults.bluealsa.profile "a2dp"

My device:
(ins)carlos@carlos ~$ hciconfig
hci0:	Type: Primary  Bus: USB
	BD Address: 88:53:2E:39:25:B4  ACL MTU: 310:10  SCO MTU: 64:8
	UP RUNNING
	RX bytes:24330708 acl:1250 sco:473901 events:17770 errors:0
	TX bytes:32573341 acl:30287 sco:473433 commands:768 errors:0

(ins)[MINIJAMBOX by Jawbone]# connect E0:D1:E6:0B:AF:F1
Attempting to connect to E0:D1:E6:0B:AF:F1
Connection successful

Hi
Did you make make install? If yes, please check if the 20-bluealsa.conf file is installed in the ALSA shared configuration directory. On my system it is /usr/share/alsa/alsa.conf.d/. If you're using some "non-standard" Linux distribution, please let me know which one it is.
Optionally you can use "static" configuration in you .asoundrc file, as follows:
pcm.minijambox {
	type plug
	slave.pcm {
		type bluealsa
		device "E0:D1:E6:0B:AF:F1"
		profile "a2dp"
	}
	hint {
		show on
		description "MINIJAMBOX by Jawbone"
	}
}

then connect your device and run:
aplay -D minijambox test.wav

Still no luck.
The shared config is there, nevertheless I tried the .asoundrc configuration you suggested but I get:
~$ aplay -D minijambox test.wav
ALSA lib bluealsa-pcm.c:701:(_snd_pcm_bluealsa_open) BlueALSA connection failed: Permission denied
aplay: main:788: audio open error: Permission denied

~$ sudo aplay -D minijambox test.wav
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM minijambox
aplay: main:788: audio open error: No such file or directory

I'm installing this as an Arch package, it's a pretty standard build script. I've also cloned and make-installed it myself but to no avail.

Abut the permission. Make sure that the directory shown below exists, and has right permissions and group:
$ ls -l /run/
drwxrwx---  2 root      audio     60 Feb  5 14:36 bluealsa

Then, make sure that your user is added to the audio group. That should fix the permission problem.
Using sudo should work as well, but you have to create .arecord file in your root's home directory (I guess).

Right. I've added myself to audio. Now I see some progress but yet hear no sound output. Besides the configuration you suggested I've added a ctl entry to .asoundrc:
ctl.minijambox {
    type bluealsa
    interface "hci0"
}

This screenshot shows the state of the mixer, bluealsa output, bluetoothctl repl and aplay output:

Everything is frozen at that point, I can't even sigint aplay.

This freeze might be caused by the alsalib bug which can be "fixed" by exporting LIBASOUND_THREAD_SAFE=0. Try to use:
$ LIBASOUND_THREAD_SAFE=0 aplay -D minijambox test.wav
or add export LIBASOUND_THREAD_SAFE=0 to your .profile or .bashrc file.

Yes, beautiful, thank you!

add export LIBASOUND_THREAD_SAFE=0 to your .profile or .bashrc file.

May this have an undesired effect when set at the global level?

If you experience sound glitching

It seems to sound well but I took note of your advice just in case.
OT: how do you manage you "bluetooth session"? Say I want to channel my audio through bluetooth for a couple of hours, then wire everything again. Some apps doesn't even have a device argument (for example, sopotify AFAIK). And in any case you will have to create launchers or alias for each app in order to set the device and put them in "bluetooth mode". So, do you temporarily change the default alsa device?

Have a new BT speaker so been playing with this some more. I am seeing the same thing with a non static config, only a static config per https://github.com/Arkq/bluez-alsa/issues/26#issuecomment-276382865 works.
$ cat .asoundrc
pcm.mibts {
	type plug
	slave.pcm {
		type bluealsa
		device "00:9E:C8:61:C7:7F"
		profile "a2dp"
	}
	hint {
		show on
		description "Mi Bluetooth Speaker"
	}
}
#defaults.bluealsa.interface "hci0"
#defaults.bluealsa.device "00:9E:C8:61:C7:7F"
#defaults.bluealsa.profile "a2dp"

The mixer shows up with amixer -D bluealsa but trying to play something with aplay -D bluealsa fails with "audio open error: No such file or directory"

May this have an undesired effect when set at the global level?

It's hard to tell. I think, that right now there will be no undesirable effects, but in the future there might be - ppl will start to make programs which will require ALSA to be thread safe. However, this bug will be fixed by that time - I hope so.

how do you manage you "bluetooth session"?

I do not. ALSA is not made to be user-friendly. That's why PulseAudio has emerged (I think). When, I'm using bluealsa, I'm also using other audio devices as well, and I'm doing it simultaneously. I choose which device should be used for every application I start (I'm not using applications which do not provide options for selecting audio device).
But to answer your question more adequately, I have to say, that it might be impossible (or at least very tricky) to get the Windows™ experience out of bluealsa - aka audio device auto-selection depending on whether BT speaker/headset is connected or not. The only possible/reasonable way, which comes to my mind, is indeed the change of the default section in the .asoundrc. You could write some scripts for such actions in order to make it more automatic.
PS.
Right now it is not possible to connect more than one application to particular bluetooth device using bluealsa. If you try to listen to spotify, and in the meantime you will want to listen to some youtube video, you will get "device busy" error. So using bluealsa as a default audio for a desktop environment might not be the best idea. Of course you can do it, but you have to know this limitation.

@infirit, I'll try to add some more meaningful debug error messages and in the meantime I'll try to setup bluealse from scratches on my host as well - it's easy to miss something trivial if one is using development environment all the time :D.

@Arkq Cool. After rebuilding with debug flag it started working so may have been user error 😉. Not sure what changed but I'll try to reproduce and report back.

Ok, regarding the "bluetooth session", and given that automating bluetoothctl is a PITA, I ended up writing a simple shell library to source inside a bash session and then launch bluetooth enabled apps from there:
connect() {
    sudo systemctl restart bluetooth
    sudo bluealsa &> /tmp/bluetooth.log &
    sleep 0.5
    bluetoothctl
}

configure() {
    export LIBASOUND_THREAD_SAFE=0 ALSA_CONFIG_PATH=/tmp/bluetoothrc
    cat > "$ALSA_CONFIG_PATH" <<EOF
pcm.!default {
    type plug
    slave.pcm {
        type bluealsa
        interface "hci0"
        device $1
        profile "a2dp"
    }
}
ctl.!default {
    type bluealsa
    interface "hci0"
}
EOF
}

disconnect() {
    sudo pkill bluealsa
    sudo systemctl stop bluetooth
}


If an application does not support the location parameter and its passed or the path provided is invalid user should be prompted

Description of the new feature / enhancement
The location parameter indicates the path a user wants to download an app to, if it's not possible to use that parameter or its invalid formatted one should be prompted if it's okay to install to a default path. The unprompted default is not optimal as the reason to why one would want that could be many and packages don't inform their support of location beforehand.
Proposed technical implementation details
No response

This feature would be quite important when downloading multiple apps (e.g. via a batch file or script), if a few of the apps refuse to be installed at the designated place it gets messy very quickly.

It can already be specified if an application is known to not support the location parameter -
https://github.com/microsoft/winget-cli/blob/73f05cdf9b72eed991ccc5609f459f385cb9ec2f/schemas/JSON/manifests/v1.4.0/manifest.installer.1.4.0.json#L456-L467
The other problem is that sometimes the installers do support the location parameter but the switch just isn't known. Changing the default behavior to prompt if the package isn't known for certain to support the location parameter would be breaking


Why doesn't the tale theme support the tables in markdown？

As the title says

It should; I've never heard of tables not working. Could you give an example?

I'm closing this issue because there has been no activity for a while. If you still want to respond, feel free to reopen it!


Vector2 converter not working on iOS

I have both packages (latest versions) installed from the jilleJr source. It works fine in the editor, but gives the "self referencing" error on iOS. Unity version 2020.3.18f

Hi @unnanego! Thanks for reaching out :)
I'm lacking context through. The error message is too general.
Could you supply me with the full error message? I know it's tricky to get it from the phone, but if you could get the errors forwarded to your editor then you can copy it from the logs there.
If you could provide the C# types you are trying to use as well that would help a lot.
And does the error occur on serialization (to-string) or deserialization (from-string)?

JsonSerializationException: Self referencing loop detected for property 'normalized' with type 'UnityEngine.Vector2'. Path '[0].AutoPoint'.   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference (Newtonsoft.Json.JsonWriter writer, System.Object value, Newtonsoft.Json.Serialization.JsonProperty property, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues (Newtonsoft.Json.JsonWriter writer, System.Object value, Newtonsoft.Json.Serialization.JsonContainerContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonProperty property, Newtonsoft.Json.Serialization.JsonContract& memberContract, System.Object& memberValue) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (Newtonsoft.Json.JsonWriter writer, System.Object value, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract collectionContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (Newtonsoft.Json.JsonWriter writer, System.Object value, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract collectionContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList (Newtonsoft.Json.JsonWriter writer, System.Collections.IEnumerable values, Newtonsoft.Json.Serialization.JsonArrayContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract collectionContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize (Newtonsoft.Json.JsonWriter jsonWriter, System.Object value, System.Type objectType) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.JsonSerializer.SerializeInternal (Newtonsoft.Json.JsonWriter jsonWriter, System.Object value, System.Type objectType) [0x00000] in <00000000000000000000000000000000>:0    at Newtonsoft.Json.JsonConvert.SerializeObjectInternal (System.Object value, System.Type type, Newtonsoft.Json.JsonSerializer jsonSerializer) [0x00000] in <00000000000000000000000000000000>:0    at Location.SaveJson () [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.Events.UnityAction.Invoke () [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.EventSystems.ExecuteEvents+EventFunction1[T1].Invoke (T1 handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, System.Boolean pressed, System.Boolean released) [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () [0x00000] in <00000000000000000000000000000000>:0    at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0  UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()`

It happens on serialization.