[Doc Enhancement][Removing duplicate images]

De-duplicate images. Moved images to common folder area if those are reused in multiple articles. Related to #5285 .

Docs Build status updates of commit 04f1c31:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/sbs-meetings-sidepanel.yml
:warning:Warning
View
Details

msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md
:warning:Warning
View
Details

msteams-platform/apps-in-teams-meetings/design/designing-apps-in-meetings.md
:white_check_mark:Succeeded
View

msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
:white_check_mark:Succeeded
View

msteams-platform/assets/Contosoairlines.png
:white_check_mark:Succeeded

msteams-platform/assets/Contosoairlines123.png
:white_check_mark:Succeeded

msteams-platform/assets/add-permission.png
:white_check_mark:Succeeded
View

msteams-platform/assets/form.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/apps-in-meetings/in-meeting-tab-anatomy.png
:white_check_mark:Succeeded

msteams-platform/assets/images/apps-in-meetings/mobilePostMeeting.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/apps-in-meetings/mobilepremeeting.png
:white_check_mark:Succeeded

msteams-platform/assets/images/build-your-first-app/bot-config-endpoint-url.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/build-your-first-app/vscode-teams-toolkit-02.png
:white_check_mark:Succeeded

msteams-platform/assets/images/compose-extensions/cesearch.png
:white_check_mark:Succeeded

msteams-platform/assets/images/framework/framework_message-extensions_01.png
:white_check_mark:Succeeded

msteams-platform/assets/images/meeting-token-generator/meeting-token-generator-clonerepository1.png
:white_check_mark:Succeeded

msteams-platform/assets/images/meeting-token-generator/meeting-token-generator-manageappsimage.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/meetings-side-panel/addpermission.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/meetings-side-panel/selectscope.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/submission/way-forward.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/app-created.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/blazor-app-solution-explorer.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/blazor-solution-explorer.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/create-project-capabilities-bot.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/first-tab/app-created.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/teams-toolkit-v2/first-tab/azure-deployed-app.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/first-tab/create-project-capabilities.png
:white_check_mark:Succeeded

msteams-platform/assets/in-meeting-dialog-anatomy.png
:white_check_mark:Succeeded
View

msteams-platform/assets/in-meeting-tab-anatomy.png
:white_check_mark:Succeeded
View

msteams-platform/assets/meeting-token-generator-manageapps.png
:white_check_mark:Succeeded
View

msteams-platform/assets/selectscope.png
:white_check_mark:Succeeded
View

msteams-platform/concepts/design/design-teams-app-ui-templates.md
:white_check_mark:Succeeded
View

msteams-platform/sbs-meeting-content-bubble.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meeting-token-generator.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meetings-stage-view.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meetings-sidepanel.yml

Line 304, Column 5: [Warning: file-not-found - See documentation] Invalid file link: '~/assets/images/meetings-side-panel/addpermission.png'.

msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md

Line 95, Column 1: [Warning: file-not-found - See documentation] Invalid file link: '../../assets/images/form.png'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/apps-in-teams-meetings/design/designing-apps-in-meetings.md
95
17
link
:white_check_mark:

msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
96
10
link
:white_check_mark:

msteams-platform/concepts/design/design-teams-app-ui-templates.md
90
13
link
:white_check_mark:

msteams-platform/sbs-meeting-content-bubble.yml
85
32
link
:white_check_mark:

msteams-platform/sbs-meeting-token-generator.yml
89
40
link
:white_check_mark:

msteams-platform/sbs-meetings-sidepanel.yml
86
36
link
:white_check_mark:

msteams-platform/sbs-meetings-stage-view.yml
89
8
link
:white_check_mark:

msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md
91
13
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 6399280:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/apps-in-teams-meetings/design/designing-apps-in-meetings.md
:white_check_mark:Succeeded
View

msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
:white_check_mark:Succeeded
View

msteams-platform/assets/Contosoairlines.png
:white_check_mark:Succeeded

msteams-platform/assets/Contosoairlines123.png
:white_check_mark:Succeeded

msteams-platform/assets/add-permission.png
:white_check_mark:Succeeded
View

msteams-platform/assets/form.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/apps-in-meetings/in-meeting-tab-anatomy.png
:white_check_mark:Succeeded

msteams-platform/assets/images/apps-in-meetings/mobilePostMeeting.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/apps-in-meetings/mobilepremeeting.png
:white_check_mark:Succeeded

msteams-platform/assets/images/build-your-first-app/bot-config-endpoint-url.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/build-your-first-app/vscode-teams-toolkit-02.png
:white_check_mark:Succeeded

msteams-platform/assets/images/compose-extensions/cesearch.png
:white_check_mark:Succeeded

msteams-platform/assets/images/framework/framework_message-extensions_01.png
:white_check_mark:Succeeded

msteams-platform/assets/images/meeting-token-generator/meeting-token-generator-clonerepository1.png
:white_check_mark:Succeeded

msteams-platform/assets/images/meeting-token-generator/meeting-token-generator-manageappsimage.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/meetings-side-panel/addpermission.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/meetings-side-panel/selectscope.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/submission/way-forward.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/app-created.PNG
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/blazor-app-solution-explorer.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/blazor-solution-explorer.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/create-project-capabilities-bot.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/first-tab/app-created.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/teams-toolkit-v2/first-tab/azure-deployed-app.png
:white_check_mark:Succeeded

msteams-platform/assets/images/teams-toolkit-v2/first-tab/create-project-capabilities.png
:white_check_mark:Succeeded

msteams-platform/assets/images/ui-templates/form.png
:white_check_mark:Succeeded

msteams-platform/assets/in-meeting-dialog-anatomy.png
:white_check_mark:Succeeded
View

msteams-platform/assets/in-meeting-tab-anatomy.png
:white_check_mark:Succeeded
View

msteams-platform/assets/meeting-token-generator-manageapps.png
:white_check_mark:Succeeded
View

msteams-platform/assets/selectscope.png
:white_check_mark:Succeeded
View

msteams-platform/concepts/design/design-teams-app-ui-templates.md
:white_check_mark:Succeeded
View

msteams-platform/sbs-meeting-content-bubble.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meeting-token-generator.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meetings-sidepanel.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-meetings-stage-view.yml
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/apps-in-teams-meetings/design/designing-apps-in-meetings.md
95
17
link
:white_check_mark:

msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
96
10
link
:white_check_mark:

msteams-platform/concepts/design/design-teams-app-ui-templates.md
90
13
link
:white_check_mark:

msteams-platform/sbs-meeting-content-bubble.yml
85
32
link
:white_check_mark:

msteams-platform/sbs-meeting-token-generator.yml
89
40
link
:white_check_mark:

msteams-platform/sbs-meetings-sidepanel.yml
86
36
link
:white_check_mark:

msteams-platform/sbs-meetings-stage-view.yml
89
8
link
:white_check_mark:

msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md
91
13
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.


Switch Widget has hardcoded images

https://github.com/kivy/kivy/blob/c0227c5ce4011033b5f0cf2815c352d123a13305/kivy/data/style.kv#L481
When changing the styling for the Switch, one must Clear the canvas and redraw all parts of the widget.
Can we set StringProperty() objects for the image paths instead?

Can you submit pull request with proposed changes?


tailwindcss doesn't support jump to implementation

I suppose multiple lsp is allowed for same filetype, because it does in vscode.
I have setup tsserver, tailwindcss for typescriptreact file, but it seems current keybinding is not working very well with two lsp servers.

I got COVID this day, so I can't help you now. I can't even get up.

Sorry to hear about that, get well soon.


Enable chunked uploads for Dropzone.js

Describe the feature you'd like
It would be very nice if Bookstack implemented Dropzone.js, which is used for file uploads so that the uploads use chunks. This way problems like an upload limit from Cloudflare can be circumvented. Otherwise, no matter what settings you make, only a maximum of 100MB can be uploaded. Even changes to php.ini or nginx.conf won't help.
Describe the benefits this would bring to existing BookStack users
You could upload more than 100MB files with providers like Cloudflare and you wouldn't be restricted anymore, because some providers allow a maximum of 100-500MB per file upload (500MB even as an enterprise version) and you shouldn't be so restricted there. If one would use chunking, the problem could be circumvented. The functionality already exists in dropzone.js.
Can the goal of this request already be achieved via other means?
Yes, the goal can already be achieved. And it can be achieved through an implementation like the one here: https://stackoverflow.com/questions/50397023/how-do-you-use-dropzone-js-with-chunked-file-uploads-php-only
There are certainly a few changes needed in the code, but since dropzone.js is already used anyway, there probably shouldn't be a problem.
Have you searched for an existing open/closed issue?

[X] I have searched for existing issues and none cover my fundemental request

How long have you been using BookStack?
6 months to 1 year
Additional context
No response

Thanks for the suggestion @saschabrockel.
To be honest though, I'm not fond of complicating upload handling within our project/codebase because of limitations applied by third-party services, of which are optional to the instance hoster.
It seems like we're taking the burden from the choices of others.
If BookStack was a service to specifically handle large files uploads, I might see some value in adding this, but the only value reflected here is circumvention of security controls and hosting limitations.

Due to the above, I'm going to go ahead and close this off.


Question: direct media links give back 403 in my program, yt-dlp still works, despite sometimes reporting "extracting nsig failed"

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
I'm actually looking for some help, to identify a problem within my software, not yt-dlp, that works fine.
This video: https://www.youtube.com/watch?v=hzA5AhH1mbw can be perfectly downloaded via yt-dlp. However if i try to get the direct links with my software, the resulting links will give 403 from every software (VLC, MPV, wget, etc.)
First i suspected the nsig, and since sometimes yt-dlp reported that it could not extract the nsig (and yet, it was able to download the video), i thought the decipher simply changed again.
However, here is a package of the extracted decipher from that video: http://oscomp.hu/depot/yt.hzA5AhH1mbw.2024_8_8_22_27_25.zip
Inside, the extracted_decipher.js is running without errors. Of course the result still could be bad, but i had copied the entire base.js into Ungoogled Chromium 116 and added Oma('tWnZ0PahN_DEUy59W') at the end and the result was identical to the command line nodejs's result. (90IKuYq5hTIutQ)
Since yt-dlp told me when it supposedly failed to extract the nsig (i repeat, it was still able to download the video despite that warning), that i should install phantomjs to workaround that problem. I tried it with my JS file and it gave identical results.
At this point i've added two extra lines at the end of extracted_decipher.js to compare the extracted nsig-s from yt-dlp which are visible in the log below:
[debug] Loading youtube-nsig.28fd7348 from cache
[debug] [youtube] Decrypted nsig BKUh2hmhwyy9hlmpe => CP0MY8VwOo1oRA
[debug] Loading youtube-nsig.28fd7348 from cache
[debug] [youtube] Decrypted nsig dfsrXGLw2QZyIuraU => EyaFlxAUbY18Cg

And the extracted decipher from my program gave the very same results. I think the nsig deciphering is okay at my end, yet the links my program extracted from YT are giving 403 more and more times. Sometimes after one or two reload it starts to work, but now more and more videos are giving 403 permanently.
Can anyone tell me what is wrong? Maybe it is not the nsig, but the signatureCipher -> sig is done erroneously? Two years ago @pukkandan helped me fix that (#5011), but perhaps YT changed something and it broke again?
Or now YT uses cookies to protect the videos and the external videoplayer don't have them?
I tried to pass the agent and the referer to MPV and it still got a 403, so i think it is not those.
Can anyone help me in this? Thanks in advance.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=hzA5AhH1mbw']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [4d9231208] (zip)
[debug] Python 3.9.2 (CPython x86_64 64bit) - Linux-6.1.0-0.deb11.13-amd64-x86_64-with-glibc2.31 (OpenSSL 1.1.1w  11 Sep 2023, glibc 2.31)
[debug] exe versions: ffmpeg 5.1.2 (setts), ffprobe 5.1.2, rtmpdump 2.4
[debug] Optional libraries: certifi-2020.06.20, sqlite3-3.34.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib
[debug] Loaded 1830 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)
[youtube] Extracting URL: https://www.youtube.com/watch?v=hzA5AhH1mbw
[youtube] hzA5AhH1mbw: Downloading webpage
[youtube] hzA5AhH1mbw: Downloading ios player API JSON
[youtube] hzA5AhH1mbw: Downloading web creator player API JSON
[debug] Loading youtube-nsig.28fd7348 from cache
[debug] [youtube] Decrypted nsig BKUh2hmhwyy9hlmpe => CP0MY8VwOo1oRA
[debug] Loading youtube-nsig.28fd7348 from cache
[debug] [youtube] Decrypted nsig dfsrXGLw2QZyIuraU => EyaFlxAUbY18Cg
[youtube] hzA5AhH1mbw: Downloading m3u8 information
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] hzA5AhH1mbw: Downloading 1 format(s): 248+251
[debug] Invoking http downloader on "https://rr2---sn-qpbpu8-c0qs.googlevideo.com/videoplayback?expire=1723174215&ei=5ji1ZqmoPIzb6dsPqai_-Q4&ip=<IP_ADDRESS>&id=o-AC2jid7oO2sZQkR1wodYgXj5jVB-QCg9-z7PiJ-u7zSs&itag=248&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=xH&mm=31%2C29&mn=sn-qpbpu8-c0qs%2Csn-c0q7lnsl&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1867500&vprv=1&svpuc=1&mime=video%2Fwebm&rqh=1&gir=yes&clen=152750169&dur=1303.835&lmt=1663512024087339&mt=1723152314&fvip=4&keepalive=yes&c=IOS&txp=4437434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAPLDPjqhHiSetrnyJC2CmaXsIuBP1KNFCRH2i-bnKzhsAiA5nXE8BX77ibjQoG8uta7WI8hEbd-Vy-NGtdu3xKFWpg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRAIgaVeaJvOBS8jtEoOR4b1nRhol2dvfK-ZvKo1xz170ZJYCIC2bMeaNPKcHT8lb_LJXpyIQsauSDebhqn1kBLmqJSxU"
[download] Destination: Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f248.webm
[download] 100% of  145.67MiB in 00:00:15 at 9.24MiB/s
[debug] Invoking http downloader on "https://rr2---sn-qpbpu8-c0qs.googlevideo.com/videoplayback?expire=1723174215&ei=5zi1ZufNCcC-i9oP9My38A4&ip=<IP_ADDRESS>&id=o-AEhRaNEKw-gvX7k1LZ5YToLfOfaR0QrLzzJSKki-wQrj&itag=251&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=xH&mm=31%2C29&mn=sn-qpbpu8-c0qs%2Csn-c0q7lnsl&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=1892500&bui=AXc671IHIirCFvCUvZulBj8v2Fz85BTl3H62jsWol2pQnHXQgAAzx5bz61clTTaUHtjNqJbIW9MVaKdW&spc=Mv1m9qBkcXzLMJg7YinI8N26LfVgjAHy1AJ3YvfqL_zCRyDrwXUu&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=xQbFdFC_o9hd82lVO3dJUaEQ&rqh=1&gir=yes&clen=19821711&dur=1303.861&lmt=1663510689199780&mt=1723152553&fvip=4&keepalive=yes&c=WEB_CREATOR&sefc=1&txp=4432434&n=EyaFlxAUbY18Cg&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgHKj8Lq9ShzDmcvgbRmq4hzvBLTWCGi2y_QpdYx4fBfUCIQDG6jmKwoDBs3vL9DFjIxug_aJdX2zTwOknxi6hshzwBg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRQIgfCslSfNmY4K0hqLxiybtpcu6E28eImVPdKG7USSEe24CIQDNhk7EIWiuV2Lqjbh5nOxKEU5eM_UHrE3yoWFMf4Kf6A%3D%3D"
[download] Destination: Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f251.webm
[download] 100% of   18.90MiB in 00:00:02 at 9.32MiB/s
[Merger] Merging formats into "Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].webm"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f248.webm' -i 'file:Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f251.webm' -c copy -map 0:v:0 -map 1:a:0 -movflags +faststart 'file:Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].temp.webm'
Deleting original file Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f251.webm (pass -k to keep)
Deleting original file Amiga 3000 - The Best Amiga Ever？ [hzA5AhH1mbw].f248.webm (pass -k to keep)

Are you extracting the videoplayback URLs from the webpage? Or if not, what client response are you using? yt-dlp no longer uses the webpage/WEB client formats because they will give HTTP Error 403 without a pot param:

https://github.com/yt-dlp/yt-dlp/issues/10397

Yes i do. This missing pot param causing the issue? What is this poToken and how it can be obtained from the webpage? It should be possible, isn't it? The browsers are able to play the videos somehow.

This missing pot param causing the issue?

Yes, it's required for WEB client formats. See https://github.com/yt-dlp/yt-dlp/pull/10648 for more info

I see, thank you.
The mentioned poToken (ytPubsubPubsubInstance.j[33].player.app.mediaElement.ea.W.Tf) is not really part of window, but it is rather part of _yt_player (_yt_player.qp currently), it is just attached to window. So, it seems to be extractable without a browser.
Is visitorData needed too? Is pot is "assembled" from the two? Or they are both added to the direct URL of a video, poToken as pot and visitorData as some other parameter?
Why did yt-dlp team decide to ditch this approach BTW? And if because this approach is impossible without a browser, then how can one extract the iOS formats from YT?

Why did yt-dlp team decide to ditch this approach BTW?

It's explained in the linked issue and the comments below it.

then how can one extract the iOS formats from YT?

The easiest way to answer that question is for you to look at yt-dlp's code and see how that does it.

The easiest way to answer that question is for you to look at yt-dlp's code and see how that does it.

Where to look? I found some iOS-related data here: https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube.py#L213
But the codebase is huge, i am not familiar with Python and it's ecosystem and i don't know where and how this will be used. I tried to look for INNERTUBE_CLIENTS, but none of the findings explained how yt-dlp extracts the URLs from YT.

I see, thank you.
The mentioned poToken (ytPubsubPubsubInstance.j[33].player.app.mediaElement.ea.W.Tf) is not really part of window, but it is rather part of _yt_player (_yt_player.qp currently), it is just attached to window. So, it seems to be extractable without a browser. Is visitorData needed too? Is pot is "assembled" from the two? Or they are both added to the direct URL of a video, poToken as pot and visitorData as some other parameter?
Why did yt-dlp team decide to ditch this approach BTW? And if because this approach is impossible without a browser, then how can one extract the iOS formats from YT?

POToken is generated by BotGuard, which attests the browser to ensure requests are coming from a real browser. So you need to generate it using a browser. It is tied to the visitor data/ID.
Some work is being done in https://github.com/yt-dlp/yt-dlp/pull/10648 so you can pass the po token from your browser to yt-dlp, which surprisingly works.

Where to look? I found some iOS-related data here: https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube.py#L213
But the codebase is huge, i am not familiar with Python and it's ecosystem and i don't know where and how this will be used. I tried to look for INNERTUBE_CLIENTS, but none of the findings explained how yt-dlp extracts the URLs from YT.

To extract from IOS you need to make a /player request with the IOS client context, which you've linked. Perhaps run yt-dlp with --print-traffic or mitmproxy to see the final request being made.

POToken is generated by BotGuard, which attests the browser to ensure requests are coming from a real browser. So you need to generate it using a browser. It is tied to the visitor data/ID.
Some work is being done in https://github.com/yt-dlp/yt-dlp/pull/10648 so you can pass the po token from your browser to yt-dlp, which surprisingly works.

I see, so a full browser engine would be needed to be integrated into the client to be able to extract this poToken. (Or extract the poToken from a browser each time when it starts to fail again...)

To extract from IOS you need to make a /player request with the IOS client context, which you've linked. Perhaps run yt-dlp with --print-traffic or mitmproxy to see the final request being made.

Thanks! yt-dlp is really useful! So, i need to POST the following data
{"context": {"client": {"clientName": "IOS", "clientVersion": "19.29.1", "deviceMake": "Apple", "deviceModel": "iPhone16,2", "userAgent": "com.google.ios.youtube/19.29.1 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)", "osName": "iPhone", "osVersion": "<IP_ADDRESS>F90", "hl": "en", "timeZone": "UTC", "utcOffsetMinutes": 0}}, "videoId": "hzA5AhH1mbw", "playbackContext": {"contentPlaybackContext": {"html5Preference": "HTML5_PREF_WANTS"}}, "contentCheckOk": true, "racyCheckOk": true}

to /youtubei/v1/player?prettyPrint=false and then build an EDL from the fragment links and pass that to MPV or VLC.
Thank you again!

The cURL request
curl -X POST -H 'Host: www.youtube.com' -H 'Cookie: PREF=hl=en&tz=UTC; SOCS=CAI; GPS=1; YSC=zkTP-DKPlE4; VISITOR_INFO1_LIVE=cfyh6NaTZwI; VISITOR_PRIVACY_METADATA=CgJIVRIcEhgSFhMLFBUWFwwYGRobHB0eHw4PIBAREiEgOQ%3D%3D' -H 'User-Agent: com.google.ios.youtube/19.29.1 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-us,en;q=0.5' -H 'Sec-Fetch-Mode: navigate' -H 'Content-Type: application/json' -H 'X-Youtube-Client-Name: 5' -H 'X-Youtube-Client-Version: 19.29.1' -H 'Origin: https://www.youtube.com' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: close' -d'{"context": {"client": {"clientName": "IOS", "clientVersion": "19.29.1", "deviceMake": "Apple", "deviceModel": "iPhone16,2", "userAgent": "com.google.ios.youtube/19.29.1 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)", "osName": "iPhone", "osVersion": "<IP_ADDRESS>F90", "hl": "en", "timeZone": "UTC", "utcOffsetMinutes": 0}}, "videoId": "hzA5AhH1mbw", "playbackContext": {"contentPlaybackContext": {"html5Preference": "HTML5_PREF_WANTS"}}, "contentCheckOk": true, "racyCheckOk": true}' 'https://www.youtube.com/youtubei/v1/player?prettyPrint=false' | gzip --decompress > /tmp/ios_formats.json

Works flawlessly. It gives back the formats JSON and the links inside works. Thank you guys!
Just out of curiousity: the cURL request
curl -X POST -H 'Host: www.youtube.com' -H 'Cookie: PREF=hl=en&tz=UTC; SOCS=CAI; GPS=1; YSC=zkTP-DKPlE4; VISITOR_INFO1_LIVE=cfyh6NaTZwI; VISITOR_PRIVACY_METADATA=CgJIVRIcEhgSFhMLFBUWFwwYGRobHB0eHw4PIBAREiEgOQ%3D%3D' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.18 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-us,en;q=0.5' -H 'Sec-Fetch-Mode: navigate' -H 'Content-Type: application/json' -H 'X-Youtube-Client-Name: 62' -H 'X-Youtube-Client-Version: 1.20240723.03.00' -H 'Origin: https://www.youtube.com' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: close' -d'{"context": {"client": {"clientName": "WEB_CREATOR", "clientVersion": "1.20240723.03.00", "hl": "en", "timeZone": "UTC", "utcOffsetMinutes": 0}}, "videoId": "hzA5AhH1mbw", "playbackContext": {"contentPlaybackContext": {"html5Preference": "HTML5_PREF_WANTS", "signatureTimestamp": 19942}}, "contentCheckOk": true, "racyCheckOk": true}' 'https://www.youtube.com/youtubei/v1/player?prettyPrint=false' | gzip --decompress > /tmp/mozilla_formats.json

also works and gives back a formats JSON, but the links inside are giving back 403. Why did yt-dlp do this request, when the iOS one already gave back the working links?

Because they have different streams e.g. the IOS one doesn't return the opus streams. As for the 403s that's because you need to decipher the URLs from the WEB_CREATOR client, just like the WEB ones.

I tried to add &pot=<poToken extracted from browser> to the end of the direct media URLs, but i still got 403 after i pass the link to the media player. Either i did it wrongly, or it is no longer works.

The poToken that you add to the URLs need to be the same one that you send with the visitor data in the /player API request, if they don't match then yes you'll still get 403s.

Because they have different streams e.g. the IOS one doesn't return the opus streams. As for the 403s that's because you need to decipher the URLs from the WEB_CREATOR client, just like the WEB ones.

I see, so after the nsig deciphering, they will work. Thank you.

The poToken that you add to the URLs need to be the same one that you send with the visitor data in the /player API request, if they don't match then yes you'll still get 403s.

So, simply passing the poToken to the media URLs will not work.
BTW
curl -X GET -H 'Host: manifest.googlevideo.com' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.18 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-us,en;q=0.5' -H 'Sec-Fetch-Mode: navigate' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: close' 'https://www.youtube.com/api/manifest/hls_variant/expire/1723222556/ei/vPW1ZqLaFNiA6dsP8Pen4Ag/ip/<IP_ADDRESS>/id/8730390211f599bc/source/youtube/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/playback_host/rr2---sn-qpbpu8-c0qs.googlevideo.com/mh/xH/mm/31%2C29/mn/sn-qpbpu8-c0qs%2Csn-c0q7lnsl/ms/au%2Crdu/mv/m/mvi/2/pl/24/hfr/1/demuxed/1/tts_caps/1/maudio/1/initcwndbps/1947500/vprv/1/go/1/rqh/5/mt/1723200548/fvip/4/nvgoi/1/short_key/1/ncsapi/1/keepalive/yes/dover/13/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Chfr%2Cdemuxed%2Ctts_caps%2Cmaudio%2Cvprv%2Cgo%2Crqh%2Citag%2Cplaylist_type/sig/AJfQdSswRQIhALNIwe86b1UiKsk1TJc2BhONeQwi5fuJ2iDN9ZolXXnpAiB5nbOQfbTainxzrP6-mB5ZbMDvboYo-h9g0buTYG6mcg%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AGtxev0wRAIge2H2EIGx7XuMrgjpHmDkrwmDw6d6gWAoCYockZdTGnQCIHxan3ccNUUDil2Zlq552pCCfBTPo9QRvF2qH4xUkUrC/file/index.m3u8' | gzip --decompress > /tmp/index.m3u8

works too and the m3u8 links inside with the seg.ts segments are also working. Just writing here if anyone finds this useful.

It seems, that even if i decipher the nsig in the WEB_CREATOR links, they still give 403.

are you using the correct player's decipher function?

I am not sure. I use the one which i used to this day. The WEB_CREATOR needs a different decipher?

This the decipher i use for the nsig:
Oma=function(a){var b=a.split(a.slice(0,0)),c=[function(d,e,f){var h=e.length;d.forEach(function(l,m,n){this.push(n[m]=e[(e.indexOf(l)-e.indexOf(this[m])+m+h--)%e.length])},f.split(""))},
-834997183,null,-118302065,1223785020,2584753,b,1401041337,-495189479,-549702777,-250262161,-1362836893,function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 91:d=44;continue;case 123:d=65;break;case 65:d-=18;continue;case 58:d=96;continue;case 46:d=95}e.push(String.fromCharCode(d))}return e},
958001347,b,function(d,e){for(d=(d%e.length+e.length)%e.length;d--;)e.unshift(e.pop())},
1320480150,-487048763,function(d,e){if(d.length!=0){e=(e%d.length+d.length)%d.length;var f=d[0];d[0]=d[e];d[e]=f}},
1090263061,-26308672,-375628886,function(){for(var d=64,e=[];++d-e.length-32;)switch(d){case 58:d=96;continue;case 91:d=44;break;case 65:d=47;continue;case 46:d=153;case 123:d-=58;default:e.push(String.fromCharCode(d))}return e},
function(d){d.reverse()},
1499028827,function(d,e,f,h,l,m,n,p){return e(f,h,l,m,n,p)},
function(d,e){e=(e%d.length+d.length)%d.length;d.splice(-e).reverse().forEach(function(f){d.unshift(f)})},
function(d){throw d;},
-279129675,259641869,1193702901,246712606,-621760478,-870274222,-1931030874,1134784019,-88108124,1320480150,1417195826,b,933648030,function(d,e,f,h,l){return e(f,h,l)},
1146661065,function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 58:d-=14;case 91:case 92:case 93:continue;case 123:d=47;case 94:case 95:case 96:continue;case 46:d=95}e.push(String.fromCharCode(d))}return e},
839644601,function(d){for(var e=d.length;e;)d.push(d.splice(--e,1)[0])},
1822117694,869316818,function(d,e,f,h,l,m){return e(h,l,m)},
null,1260940770,"while",553502632,1887990821,-1073253435,816963577,"/]{)",1564222509,958001347,1847546259,-1326450178,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(e,1)},
1949147888,1347545449,194606947,-201156626,1161249973,-2033886817,function(d,e){d.length!=0&&(e=(e%d.length+d.length)%d.length,d.splice(0,1,d.splice(e,1,d[0])[0]))},
-1334141174,-744278558,926379076,-1729460775,null,1652129554,function(){for(var d=64,e=[];++d-e.length-32;)switch(d){case 46:d=95;default:e.push(String.fromCharCode(d));case 94:case 95:case 96:break;case 123:d-=76;case 92:case 93:continue;case 58:d=44;case 91:}return e},
-1899944421,-1157313027,-1421127382,-1694754167,-1962030922,-1763419375,1673394297,-1624364843,-1409766115,-2026824196,1823838741];c[2]=c;c[49]=c;c[73]=c;try{try{c[71]!=-4&&(c[20]<=-10||(((0,c[0])(c[new Date("1970-01-01T09:30:06.000+09:30")/1E3],(0,c[75])(),c[51]),((0,c[61])(c[2],c[64]),c[41])((0,c[-49+Math.pow(7,3)%93])(c[35],c[6]),c[45],c[15385-Math.pow(8,1)-15338]),c[0])(c[14],(0,c[75])(),c[51]),NaN))&&(((0,c[68])(c[49],c[55]),c[26])(c[2],c[40]),((0,c[74])(c[62],c[5]),c[66])(c[10],c[24]),c[74])(c[new Date("1970-01-01T03:15:10.000+03:15")/
1E3],c[45]),(c[57]!==5||((0,c[70])((0,c[3])(c[35],c[16]),c[3],c[new Date("1969-12-31T20:15:43.000-03:45")/1E3],c[38]),new Date("1970-01-01T10:45:00.000+10:45")/1E3))&&(0,c[70])((0,c[55])(c[81],c[49]),c[47],c[78],c[79])}catch(d){(0,c[70])((0,c[24])(c[43],(0,c[17])(),c[80]),c[3],c[78],c[82])}try{c[29]>-2&&(c[60]!==10||((0,c[52])(c[31]),(0,c[3])(c[81],c[61]),(0,c[44])(c[75],c[15]),0))&&(0,c[77])((0,c[74])(c[31]),c[42],(0,c[39])(c[71],c[29]),c[84],c[5]),(0,c[30])(c[43]),(0,c[62])(c[51],(0,c[35])(),c[6])}catch(d){c[50]===
-36+Math.pow(6,2)%198?(0,c[83])(c[43],c[59]):(0,c[83])(c[5],c[73]),c[79]!=-2&&(c[3]>=120-Math.pow(new Date("1970-01-01T07:45:03.000+07:45")/1E3,4)+-41||(((((0,c[76])(c[55],c[56]),c[76])(c[51],c[38]),c[16])(((0,c[76])(c[51],c[58]),c[62])(c[51],(0,c[45])(),c[6]),c[42],c[85],c[43]),c[31])(c[6*Math.pow(8,4)+-24568],c[41]),0))&&(((0,c[62])(c[30],c[56]),(0,c[75])((0,c[62])(c[22],c[58]),c[41],(0,c[10])(c[71],c[69]),c[71],(0,c[48])(),c[72]),c[18])(c[22],c[15]),c[62])(c[22],c[45]),c[59]!==-7&&(c[56]<9&&((0,c[10])(c[74],
c[60]),[])||(0,c[68])(c[77],c[18])),c[8]<=3&&(0,c[24])(c[40],c[0]),c[59]!=-1&&(c[33]>9&&((0,c[1])(((0,c[1])((0,c[1])((0,c[47])(c[77],(0,c[86])(),c[78]),c[84],c[40]),c[24],c[40],c[31]),(0,c[61])(c[28],c[48]),c[68])(c[28],c[42]),c[19],c[80]),1)||((((0,c[27])(c[82],c[36]),(0,c[24])(c[77],c[25]),c[84])(c[Math.pow(8,1)+42- -27]),c[1])((0,c[new Date("1970-01-01T10:30:27.000+10:30")/1E3])(c[-305+1*Math.pow(7,3)],c[36]),c[61],c[40],c[32]),c[24])(c[80],c[52])),c[44]!==9?((((0,c[61])(c[new Date("1970-01-01T11:31:20.000+11:30")/
1E3],c[37]),c[81])((0,c[84])(c[77]),c[24],(0,c[16])(c[44060-new Date("1970-01-01T07:45:43.000+07:45")/1E3*Math.pow(4,5)],c[6]),c[40],c[39]),c[16])(c[70],c[53]),(0,c[81])((0,c[1])((0,c[27])(c[11],c[-66+Math.pow(8,4)%395]),c[Math.pow(8,4)-67+-4003],c[0]),c[11],((0,c[55])(c[2],c[33]),c[new Date("1969-12-31T15:30:55.000-08:30")/1E3])(c[2],c[76])%(0,c[55])(c[9],c[14]),c[51],c[71]),c[18])(c[23],c[79])-(0,c[11])(c[51],c[67]):((0,c[60])(c[86])/((((((0,c[11])(c[39],c[44]),c[11])(c[51],c[29]),c[60])(c[39]),
c[78])((0,c[55])(c[86],c[30-Math.pow(2,3)%489]),c[82],c[95-Math.pow(3,2)%342]),((0,c[18])(c[51],c[new Date("1970-01-01T11:46:15.000+11:45")/1E3]),(0,c[82])(c[86]),c[0+Math.pow(1,5)- -81])(c[40*Math.pow(2,5)-1257]),c[11])(c[9],c[19])*(0,c[32])(c[117-Math.pow(1,2)*66],(0,c[59])(),c[1])),(0,c[32])(c[2],(0,c[25])(),c[1]),c[32])(c[2],(0,c[80])(),c[1])}finally{(c[21]>-10||((0,c[32])(c[2],(0,c[80])(),c[1]),((0,c[60])(c[51]),c[18])(c[2],c[30]),c[11])(c[51],c[45])&&new Date("1970-01-01T09:15:00.000+09:15")/
1E3)&&(0,c[62])(((0,c[52])(c[70],c[23]),c[65])(c[53],c[18]),c[80],(0,c[65])(c[1],c[22]),c[69],c[5],c[18])}}catch(d){return"enhanced_except_5psBmeT-_w8_"+a}return b.join("")};

there are several different JS players and you need to use the one associated with your player response

YT only passes me the original WEB base.js (/s/player/28fd7348/player_ias.vflset/hu_HU/base.js) and the traffic of yt-dlp did not reveal any kind of JS being downloaded. How can i download the correct player?

I tried to hunt for base.js-es in yt-dlp's code, but all i found is https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube.py#L2993
And that is the WEB player. Is really there another player?

There is no other player. The function _decrypt_nsig() accepts player_url, which is the same every place: 'https://www.youtube.com/s/player/{player_version}/player_ias.vflset/en_US/base.js'
Perhaps the WEB_CREATOR links also have the poToken protection?

There is no other player. The function _decrypt_nsig() accepts player_url, which is the same every place: 'https://www.youtube.com/s/player/{player_version}/player_ias.vflset/en_US/base.js'

So what I should have said is: there are multiple versions of the player in use at any given time, and each version will give a different result for the n deciphering.
I don't know if the n param is even your issue though, since you have not shared any code or a reproducible example.

Perhaps the WEB_CREATOR links also have the poToken protection?

AFAIK not yet

Edit: Can i force yt-dlp to use WEB_CREATOR?

It is a default client as of the latest version of yt-dlp (ios,web_creator). You can use the player_client extractor-arg if you want it to be the only client used, see https://github.com/yt-dlp/yt-dlp#youtube

I am closing this since it is not really a question about yt-dlp, but rather your own code that you can't get to work. You have yt-dlp's extractor source code; any answers you need are already in there

So what I should have said is: there are multiple versions of the player in use at any given time, and each version will give a different result for the n deciphering.

But i download the player every time and use the corresponding decipher found in the newly downloaded player.

It is a default client as of the latest version of yt-dlp (ios,web_creator). You can use the player_client extractor-arg if you want it to be the only client used, see https://github.com/yt-dlp/yt-dlp#youtube

It turned out that yt-dlp does not supports WEB_CREATOR at all:
yt-dlp -vU --print-traffic --extractor-args "youtube:player_client=web_extractor"  https://youtube.com/watch?v=hzA5AhH1mbw >yt-dlp_no_web_extractor_support.log 2>&1

Result: http://oscomp.hu/depot/yt-dlp_no_web_extractor_support.log
Highlight:
WARNING: [youtube] Skipping unsupported client web_extractor
[youtube] hzA5AhH1mbw: Downloading ios player API JSON

I am closing this since it is not really a question about yt-dlp, but rather your own code that you can't get to work.

I could not get yt-dlp to work with the WEB_CREATOR either, so it is not my fault at all.

You have yt-dlp's extractor source code; any answers you need are already in there.

As it turned out, that yt-dlp does not support WEB_EXTRACTOR, this statement is obviously false.
But, thanks for linking that page, i'll look into mediaconnect and android maybe i can get those to work.

WEB_EXTRACTOR is not a client! Where have I said WEB_EXTRACTOR?? It is and always has been WEB_CREATOR
I am in the dark and unable to help you if you can't share at least a minimal reproducible example or complete verbose output

Ohh, my bad. I confused the two (they are very similar) and gave a bad argument to yt-dlp, sorry.

Okay, it is not the nsig decipherer. I've checked the deciphered nsigs in yt-dlp-s log:
[debug] Saving youtube-nsig.28fd7348 to cache
[debug] [youtube] Decrypted nsig by2k2VJ-Vwfal3A7J => Hs3MAvsSMyHVdQ
[debug] Loading youtube-nsig.28fd7348 from cache
[debug] [youtube] Decrypted nsig 93yxnHPrLEjN3knB2 => ZEg5mBpvz2cGRQ

And called the decipherer i extracted upon them and the results were equivalent. I have no idea what is the problem, but it is not the n signature. But whatever it may be, the Android, iOS and MediaConnect clients works perfectly and the Android one even has vp9 and opus. So i can live without the WEB_CREATOR.
Thanks everyone.

Here is something of interest WRT potoken generation - https://github.com/LuanRT/BgUtils/tree/main

Thank you. This may be able to fill the pot parameter, but i don't know, if it is enough, or there are other measures on YT to protect the WEB links. Also, i don't know, if it is known, how YT fills the pot parameter.


Change pcbnew name to PCB Editor

In KiCAD 6 the pcbnew window name has been changed to PCB Editor.
This caused the following error in the script:
Cannot find pcbnew window from title matching
Changing the window name to PCB editor helped.

Thanks for the change, but won't this now make the plugin fail if you're using KiCad 5? It should probably check for both.

Oh, yes. You're right.
I added an additional condition statement. Checked only with KiCAD 6.

Thanks for making the change!


Block explorer option should display protocol and port

When entering a block explorer address in preferences, Sparrow automatically uses https. When running mempool locally, it runs on http. Also the interface does not display the port, but this is also often set to a non-default value when running mempool locally. As a workaround, users can set this value in ~/.sparrow/config.

I try to keep the interface simple and uncluttered. Is there a particular need to show this information on the drop-down? You can enter the full URL, including the protocol and port in the Custom... entry dialog - no need to directly edit the config file.

When i entered http://<IP_ADDRESS>:4080 it tried using https://<IP_ADDRESS>:4080 until I changed it in the config file

I can't reproduce this - entering http://<IP_ADDRESS>:4080 results in that same value entered into the config file, and then passed to the browser. Possibly there is a redirect in the browser to https?

I wouldn't be surprised if it's just me, but it worked fine with the same browser (Firefox), with no changes to the browser setting, after setting it in the config. Thanks for engaging on this. And eager to hear you on RHR today. let's to close this.

p.s. i must have not entered the protocol https://. i just was also unable to reproduce just now. thanks again for all of your hard work on making this software virtually dummy proof


App build fails

Summary:
Every time the app build fails for the first time but after reloading few times it works.

Steps to reproduce:
pnpm android
press a
Expected behavior:
Additional notes:
Tasks

[ ] Task 1
[ ] Task 2
[ ] Task 3

@YashJain2409 Are there any errors in the terminal?

Gradle detected a problem with the following location: 'F:\litwiz\floralmarket-b2c-app\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:compileDebugShaders' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
The Kotlin Gradle plugin was loaded multiple times in different subprojects, which is not supported and may break the build.
This might happen in subprojects that apply the Kotlin plugins with the Gradle 'plugins { ... }' DSL if they specify explicit versions, even if the versions are equal.
Please add the Kotlin plugin to the common parent project or the root project, then remove the versions in the subprojects.
If the parent project does not need the plugin, add 'apply false' to the plugin line.
See: https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
The Kotlin plugin was loaded in the following projects: ':expo', ':expo-modules-core'
These were logged in terminal during build process

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
It also logged this line as well in terminal

Unfortunately, I can't reproduce the issue in my case, but it looks like the issue is related to a Kotlin version mismatch. Please try the fix mentioned in this issue.


RealWorld example and awesome list

Just a small announcement of two new projects related to Seed:

"The mother of all demo apps" — Exemplary fullstack Medium.com clone in Seed

https://github.com/MartinKavik/seed-rs-realworld
routing, tests, sub-modules, local storage, requests with error handling, travis + netlify, ...
based on default quickstart => no javascript
5k LoC

A curated list of awesome things related to Seed

https://github.com/MartinKavik/awesome-seed-rs

Feedback, new issues / PRs are very welcome. Thanks!

P.S. Quickstart with webpack updated and refactored a little bit.

https://github.com/MartinKavik/seed-quickstart-webpack/blob/master/CHANGELOG.md

Outstanding

As I can see realworld demo is using non-master branch. Can you please explain why it's the  case?

@TatriX I just forgot to switch it after that branch has been merged into master. I've fixed it and it's already redeployed and everything seems to work without code changes. Good question.

Update: I've added book Engineering Rust Web Applications and kavik.cz into awesome list.

Book looks interesting, I look forward to new chapters.
Kavik.cz is my new website - it's written in Seed, but more interesting fact is: It's prerendered before deploy. So we are able to create landing pages, documentations and other sites with super fast first render and good SEO now.

@David-OConnor Yeah, I'm biased here but I think it would be nice to have a link to awesome list in Seed's readme or homepage.

Added Awesome List and Seed Realworld to the website; will be in next Readme commit.


能否编译下2021.9.4的

2021.9有个崩溃的bug，作者后来修复了，麻烦编译一下最新版本，谢谢
https://github.com/uglide/RedisDesktopManager/releases/tag/2021.9.4

已经编译好了：https://github.com/lework/RedisDesktopManager-Windows/releases/tag/2021.9.4

Hi,if you need to use Redis7.0 for windows,you can visit zkteco-home/redis-windows,it is native port of redis for windows


Up button of session detail view always navigate to the MainActivity

Overview (Required)

Title says almost all things. This behavior confuse users that open session detail view via my session view.

Links
https://github.com/DroidKaigi/conference-app-2017/blob/770be936d1fa4ff1ae09c45e7c9dd8b1c23c715a/app/src/main/java/io/github/droidkaigi/confsched2017/view/activity/SessionDetailActivity.java#L44

Thanks @kobakei !!

You're welcome 💪


Getting / setting empty cells?

Is there a way to set the value of an empty cell?  So far, I could only get a cell with getWorksheetCellList(), but that does not return empty cells, even if they are within the specified range.

Hello @nixsy, yeah haven't touched this code in a while. From memory this was a problem/limitation of the API at Google's end (at least at time of development).
You could fetch/modify existing cells - but adding a new cell is a little harder. From memory where was an API method to poke individual cells with data. You would have to dig through the Google API documentation to find this.


[SCB-985] Add spring-boot2-starter-discovery

The code is copied from springboot-starter-discovery and test code
is removed. Adjusted the springboot and spring cloud versions for
compatibility issues.
Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[x] Each commit in the pull request should have a meaningful subject line and body.
[x] Format the pull request title like [SCB-XXX] Fixes bug in ApproximateQuantiles, where you replace SCB-XXX with the appropriate JIRA issue.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Run mvn clean install to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage remained the same at 86.379% when pulling 3c927ebcaa1a563cb972fcf1d0e47fedbcb74851 on yangbor:master into b6d169702709d1de0e06953be7de4460bce46d65 on apache:master.


set SplitArea specific interval  color

I want to color yaxis from value x to y with some color,I used splitArea but is no use to me because is a splitArea is a repeater, repeats color based on given interval.

Using split area is not good option since repeats the colors
yAxis: {
      splitArea:{
         show:true,
         areaStyle:{
          color:["rgba(255,0,0,0.7)",'yellow','green','green','green']
          }
        }
    },

It would be nice if echart will support something like ,
This is standard behavior in the popular charts like highcharts (ex: plotbands
If is not possible, can i at least override the drawing splitArea ?
i propose the splitarea to have something like this
 splitArea : [
            {
                start: 1,
                end: 10,
                color: "red"
            },
            {
                start: 10,
                end: 20,
                color: "blue",
            }
        ];

Try with markArea

It  does not help me , because i cannot set  multiple colors
for each  yaxis interval  i want  to set a different color

markArea can be an array of settings, each representing an area with specific color.

i tried this , but its does not work , based on echart documentation each series can have one markArea object not an array

markArea: [ {
               itemStyle: {
                   normal: {
                       color: "red"
                    },

               },
               data: [
                   [ {yAxis: 0 }, { yAxis: 1 }],
               ]
           },
           {
               itemStyle: {
                   normal: {
                       color: 'blue'
                    },
               },
               data: [
                   [{ yAxis: 1 }, { yAxis: 2 }],
               ]
           }],`

I made some workaround it work but i don't like it way
for each color   i need to create a empty series containing only mark Area
with the mention the  serie   name must be unique
series: [
         name:'randomx',
      type: 'bar',
         markArea: {
              itemStyle: {
                  normal: {
                      color: 'red'
                   },`

              },
              data: [
                  [ {yAxis: 0 }, { yAxis: 10000 }],
              ]
          }

      },
      {
         name:'randomy',
      type: 'bar',
         markArea: {
              itemStyle: {
                  normal: {
                      color: 'green'
                   },

              },
              data: [
                  [ {yAxis: 10000 }, { yAxis: 200000 }],
              ]
          }
      }
      ,{
      name: 'scatter',
      type: 'scatter',
      label: {
          emphasis: {
              show: true,
              position: 'left',
              textStyle: {
                  color: 'blue',
                  fontSize: 16
              }
          }
      },
      data: [1,2,3,4,4,5,6,6]
 }
]

i tried this , but its does not work , based on echart documentation each series can have one markArea object not an array

markArea: [ {
               itemStyle: {
                   normal: {
                       color: "red"
                    },

               },
               data: [
                   [ {yAxis: 0 }, { yAxis: 1 }],
               ]
           },
           {
               itemStyle: {
                   normal: {
                       color: 'blue'
                    },
               },
               data: [
                   [{ yAxis: 1 }, { yAxis: 2 }],
               ]
           }],`

It's been a while, but maybe someone is interested. You should have just formatted the object a little differently. Then you don't need a workaround. That's a bit misleading, but it works:
 series: [     {       name: 'Axis name #1',       type: 'line',       smooth: true,       data: data,       markArea: {         data: [           [              {               name: 'Warning',               yAxis: 110,               itemStyle: {                 color: 'yellow',                 opacity: 0.3,               },             },             { yAxis: 130 },           ],           [             {               name: 'Alarm',               yAxis: 130,               itemStyle: {                 color: 'red',                 opacity: 0.3,               },             },             { yAxis: 450 }           ]         ],       }     },   ],


Support for non Web Mercator (EPSG 3857) tiles.

Does Terracotta support serving non Web Mercator tiles?
I tried to change _TARGET_CRS: str = "epsg:3857" and target_crs: str = "epsg:3857", to use "epsg:4326" for the Equirectangular projection. It doesn't throw an error, but I'm getting blank map tiles. Am I doing something wrong or was Terracotta not meant to be used this way?
It would also be nice to have a setting to easily change this in the config.py

That does not work because there is no mapping from physical bounds to xyz tiles in that case. We are using mercantile for this conversion which is specifically tailored to Web Mercator.
There may be conventions on how to define xyz tiles for other CRS; in that case, the functions in terracotta.xyz would have to be re-implemented to reflect that. Happy to review a pull request if that is functionality anyone wants to contribute.

There is a library for tile matrix support in other projections: https://github.com/developmentseed/morecantile. rio-tiler uses that https://github.com/cogeotiff/rio-tiler and, based on that, TiTiler https://github.com/developmentseed/titiler

Sounds like a straightforward PR, then :)


Critical security vulnerability

https://blog.auxiliumcybersec.com/?p=2586

Hello @omarryhan ,
I'm the security researcher that found the vulnerability. I responsibly disclosed it to npm two months ago but no fix or advisory has been issued. After 45 days I made the vulnerability public, as it was agreed by the disclosure policy of npm.
I highly suggest for developers to not use this product as it is outdated and vulnerable with really low probability to get new updates in the future.
Unfortunately, I discovered it in one of my pentests in a production system.
If there are any questions regarding the vulnerability, please don't hesitate to contact me, you or anyone in the community. :)

Advisory has been released: https://www.npmjs.com/advisories/1519

CVE-ID has been assigned: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15779

I took note of the vulnerability last week through NPM, but now it no longer shows it when installing the package yet there are no new versions. Also on the package page on NPM there is no notices anymore as well yet no new version listed to address the issue, weird. The only way I can see the vulnerability notice is by following your link above, so I'm guessing someone removed the notice.
I have however addressed this in my own project code by adding a check to verify the incoming name, checking for both .. and / and rejecting the upload if any matches are found for those in the file name, it is not a hard thing to work around for those who wish to continue to use this tool.
uploader.on('start', (fileInfo) => { 	  dolog.log('Started upload..') 		let n = fileInfo.name 		let p = fileInfo.uploadDir 		let owner = fileInfo.data.owner 		if(p != '/root/projects/htdocs/twelixty/uploads/'+host+'/'+n){ 			uploader.abort() 			return 		} 		if(owner == "" || owner === null || owner === undefined){ 			dolog.log('Stopped upload due to invalid owner.') 			uploader.abort() 			return 		} })
I am wondering if the project creator either abandoned this project thinking it's completed or if they know that the end user can deal with the issue their selves and is to lazy to deal with it, it's such a simple fix!

Second high severity vulnerability, with the ability to combine it with the first one in order to aquire remote code execution, to specific configurations.
https://cr0wsplace.wordpress.com/2020/09/26/socket-io-file-2-0-31-file-type-restriction-bypass/

The last update is 5 years old. @rico345100 could you add an note to the readme that this package is no more maintained and shouldnt be used due to security vulnerability?


Clarify that the paragraph on radio sticks doesn't apply to Explorer Board.

Clarify that the paragraph on radio sticks doesn't apply to Explorer Board. (edison.md)

Thanks for retargeting! and for the PR. 👍


Rate and Review Service

Added a service which pops up the dialog to Rate and Review the app which is published on store, after the user uses the app certain number of times.

I am going to get #1070 merged in, and then I want this to be part of that solution.
Make sense? Give him a few days to update and merge.


additional dependencies needed for rebuilding on changes

What does this PR do?
Alternative to https://github.com/DataDog/datadog-agent/pull/21845, this looks like the only dependency that was missed.

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

/merge


Fertile Crescent Plan

Ok here is the pull request for the Fertile Crescent plan, I finally managed to get my github repository working properly again. From what I checked the previous 6 commits before the Fertile Crescent Plan could just be ignored as I made them to match my repository with the main one.

I assume you use the github windows client? And that you have branch that you are working in, right.

Before creating your "pull request" you must do a "update from master"

Then create the "pull request"

I cant add this because you are not in sync with the master ("update from master").


No ARP spoof guard for packets from host gateway

Describe the bug
Antrea only has ARP spoofing guard flows for packets from local Pod, but not have check for ARP packets from host gateway. It might introduce security risk if a Pod running in host-network mode on the Node with CAP_NET_RAW and trying to do ARP spoofing.
To Reproduce
Deploy Antrea
Expected
cookie=0x1a, table=10, priority=200,arp,in_port=gw0,arp_spa=$gw_ip,arp_sha=$gw_mac actions=resubmit(,20)
Actual behavior
cookie=0x1a, table=10, priority=200,arp,in_port=gw0 actions=resubmit(,20)
Versions:

Antrea: 0.1/0.2

I agree that this is probably a nice thing to add.


React native support (mobile)

Please let me know if there is support for react native and if not what changes can be done to support react native

Haven't played with React Native in a looong time, but don't see why not.
If you try it out and share your code (e.g. github url), I can try to help out if there are issues.
First, you should probably use tfjs-react-native and init tfjs code accordingly.
Second, from the top of my head, you won't be able to use any face-api methods that rely on canvas, but that can be done using alternatives.

Okey thankyou sir, i hope this is will support face-api in the future

I'm working on a new library, https://github.com/vladmandic/human and it doesn't internally use any DOM objects, so it should work on all platforms supported by TensorFlow/JS.
I don't have a React-Native project to test it on right now, but you can give it a try - as long as you can pass an image or a video to, it should work.

let me check this out

closing due to inactivity


Repo sync for protected CLA branch

The pull request is created from main637994628516021105sync_temp to main to fix git push error for protected CLA branch

Docs Build status updates of commit b20e54c:
:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


feat: improved UX when opening IPFS URIs

This fixes #1646 by adding a dialog when opening an IPFS or IPNS with IPFS Desktop:

The UI matches the other dialogs we use on IPFS Desktop, which try to resemble a native dialog the most it can.
The option to ask when opening is also added under the preferences in the menubar tool:

Note: the Explore section does not support IPNS. Thus, I decided to open on the Files page if the user opens an IPNS URL and selects the Explore section by default.
The other option is to ask separately for IPNS and IPFS. That is possible but will duplicate the options in the settings.

@lidel

add IPFS cube logo to the Ask window

Then, should we do the same for the "Download CID" window? We're using the same template after all.

.. or just hide "Explore" option for now, so we don't need to wait for https://github.com/ipfs/ipfs-webui/issues/1884

I'll do that.

🧊 needs IPFS cube as a visual hint to indicate where the question comes from

Done.

could we show the UR that triggered the dialog as part of the question

This is easy to do, but we have to make sure it doesn't overflow or wrap to the next line, otherwise some window text will be hidden. The maximum size would also vary with translations so I'm not sure what's the best way to proceed here.

I will defer the remaining updates once we have @autonome's and @SgtPooki's feedback regarding the gateway options.

I agree 100% with all the callouts from lidel. A few additional comments:

If user selected "public" but their browser has redirect to local (Brave, Companion) that looks like a bug, because they wanted public link, and ended up on local
If user selected "local" but the node is down, then links either fail or we need to use public gateway anyway

I would reduce the number of options to only either: open in browser, open in ipfs desktop, and then let ipfs-companion/browser handle the rest, since they will override whichever decision is made in ipfs-desktop anyway. What do you think @lidel? And if we did do this, should the browser option always use local?
If a user is running ipfs-desktop, then they should have a local node running at the time ipfs-desktop opens the link in the browser, right?

I would reduce the number of options to only either: open in browser, open in ipfs desktop, and then let ipfs-companion/browser handle the rest, since they will override whichever decision is made in ipfs-desktop anyway. What do you think @lidel?

Yep, this sounds like the best way to do this.

And if we did do this, should the browser option always use local?
If a user is running ipfs-desktop, then they should have a local node running at the time ipfs-desktop opens the link in the browser, right?

If we have a generic "Open in browser"  then yes,
ipfs-desktop could make a quick test to confirm local gateway is still online, and use its address instead of public one.
ipfs-webui is already doing that type of check (it checks if local gateway port is functional, it also confirms if OS supports subdomains on localhost, and sets gateway links to the best option available, falling back to public gateway URL as the last resort)

I will work on those changes then.

Ping @lidel

I tested this on macOS. It seems that the localhost domain works when using Chrome but fails when using fetch (also seems to not work on Safari). Thus, even though Chrome may be the default browser, it won't use the localhost version.

@hacdias can you explain a little bit more about this? Are you saying chrome loads a URL with a localhost domain, but cannot make successful fetch calls on the page that is loaded?
Also, I will try to download the generated ipfs build on windows right now and update this comment.

@SgtPooki I think I addressed all of your comments!

@SgtPooki solved the conflicts. It seems that the CI is taking way too long downloading Web UI for the tests. We may have to restart them later.

This ended up no longer feasible, see https://github.com/ipfs/ipfs-desktop/issues/1646#issuecomment-1796859438


Enable custom TLS certificate

Currently the server keys are embedded into the final release. Would it be possible to instead use certificates supplied by a command line option?  Something like: --server-key=server.key and --server-cert=server.crt
In that way you get a bit more security when using self signed certs or you could use officially signed certs.
You could the also supply the certificate on the client side and use it as additional authentication step

Hello,
I often wanted to add it, but basically always stepped down from doing it due to TLS having many knobs to turn.
I usually recommend people that want a custom TLS certificate to put in front a reverse proxy (like nginx) to allow them the certificate they want and configure everything fully.
You can take an example of this configuration for nginx, https://www.npmjs.com/package/wstunnel#ssl-setup
or https://github.com/erebe/personal-server/blob/master/app/wstunnel.yml if you want kubernetes

Tried it with nginx and it works :) But wstunnel does not seem to complain about self-signed certs. It automatically accepts those as valid.  Is there some way to make the client verify it connected to the right server? Stunnel for example has the option to supply the server cert to the client config so you kind of pin the certificate and know if something is wrong. In that way you can also use self-signed certificates without any errors showing up.

Perfect.
For the self-signed certificate, the client automatically accept any certificate even if they are not valid.
If you want to kind of pin between client and server, you can use the
 --upgradePathPrefix=String             Use a specific prefix that will
                                            show up in the http path in the
                                            upgrade request. Useful if you need
                                            to route requests server side but
                                            don't have vhosts

and only proxy pass in nginx this special location.
You can take reference from this issue https://github.com/erebe/wstunnel/issues/14
It will allow client and server to share a specific secret, and only people using this specific upgradePrefixPath with wstunnel will be allowed to connect to your proxy.
So far I don't plan to add the command line flag to allow/disallow unverified certificate, as the purpose of wstunnel is only to allow your traffic to pass through, not to protect the security of the data you transmit


exporting image of the viewport isn't 'instant' and cannot be called chronologically in code.. (screenshot bug?)

Godot version
4.1 stable
System information
Windows 10
Issue description
I'm trying to take a screenshot of my viewport. Before I take the screenshot, I want to hide the UI elements totally out of the frame, so we only get an image of the subject. (I'm making editor/app software in godot)
The code I am using:
func _hide_ui():
    $sidebar.hide()
    for node in %render.get_children():
        for child in node.get_children():
            if child.name == "parameters":
                child.hide()

func _show_ui():
    $sidebar.show()
    for node in %render.get_children():
        for child in node.get_children():
            if child.name == "parameters":
                child.show()
var captured = false
func capture_image():
    var screenshot_path = "res://screenshot-test.png"
    var img = get_viewport().get_texture().get_image()
    img.save_png(screenshot_path)
    captured = true  #### this bool turns on to later make a check

func _on_export_button_down():
    _hide_ui()
    queue_redraw()
    %export_frame_timer.start()

func _on_export_frame_timer_timeout(): # first timer = 1 second
    capture_image()
    %export_done_timer.start()

func _on_export_done_timer_timeout(): # second timer = 1 second
    if captured == true: #### this should work, but it doesn't, the UI will still be in the image
        _show_ui()

In my code I am even using TWO timers to give enough time to take the image, but I'd expect this to work without timers completely... However it will always have UI elements in the image, no matter how much I try and swap around these lines and try different things.

What did work? Making the first timer 3 seconds, yes, THREE seconds long. Then I got the result I wanted.
Is this a bug?

Minimal reproduction project
project is so small, small enough to create in a couple minutes

Have you tried the instructions here?

Have you tried the instructions here?

Oh my gosh! It must be that.
I knew in my heart it's a race condition thing with RenderingServer

If that solves it this can be considered resolved, as it is already documented


Can we access the captured response time for API?

I am trying to log the response time of each API call to an external tool. Since HttpTracer internally tracks response time using StopWatch, can we access/use this data?

Hey @Geetha-Ravindran, that Stopwatch is internal in the lib.  However, if you use the ILog interface, you'll be able to access the string with all the info of all the requests!


pkg/hubble/filters: Add HTTP path filters

@twpayne I haven't yet ported the http method filter to the CLI implementation. It might do both at the same time if you were planning to tackle the hubble CLI PR

@twpayne I haven't yet ported the http method filter to the CLI implementation. It might do both at the same time if you were planning to tackle the hubble CLI PR

Yes, I'll happily add both to the hubble CLI.

test-me-please

Hit #13378 flake.


Exception thrown while executing UI block: - [BVLinearGradient locations]: selector sent to instance

I am getting this issue when switching to a view which renders the Linear gradient component.

This occurred after upgrading my project to RN v0.26.2, and was not having this issue previously when using RN v0.22 up to 0.25.1

I get this error too on various RN versions (21, 24, 25, haven't tried other versions).
I narrowed it down to this commit. Not sure why but this commit causes the getter of the locations property to be invoked, however this getter is not implemented by BVLinearGradient and hence the exception.
This can be solved quite easily by adding a getter to the locations property, but I am not 100% sure this would be the proper solution since I don't completely understand why the code in that commit above would cause this error.

Can't reproduce this problem. Could you please provide an example of LinearGradient usage that throws the error above?

I get this same error using the following snippet.
<LinearGradient colors={['#fff', '#1e8ecd']} style={{height: 190, position: 'absolute', top: 0, left: 0, right: 0}} />

Having the same error with react-native 0.20
<LinearGradient colors={['#cde6f4', '#fde1e1']}>...</LinearGradient>

I have same error :(

Navtie does not get the value fo locations.


fix: PopScope build errors

In Flutter 3.22+, the PopScope property onPopInvokedWithResult was renamed to onPopInvoked. As a result, projects using the old name will not be able to compile in the latest Flutter version.

Isn't onPopInvokedWithResult  the latest one ?

Closing for now. Reopen if needed.

I was using 2.22.2 and was asking for onPopInvoke but on 2.24 is with
onPopInvokedWithResult 🤔
Em seg., 23 de set. de 2024 às 21:40, Sarbagya Dhaubanjar <
@.***> escreveu:

Isn't onPopInvokedWithResult the latest one ?
—
Reply to this email directly, view it on GitHub
https://github.com/sarbagyastha/youtube_player_flutter/pull/1000#issuecomment-2369931752,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALKCZCAYEH6OX5PUB2WNU5LZYC7IRAVCNFSM6AAAAABOWHVIHSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNRZHEZTCNZVGI
.
You are receiving this because you authored the thread.Message ID:
@.***>


remove private registry from pyproject.toml

Proposed changes:

the private registry was part of the pyproject.toml as we needed it to pull our old rasabaster docs template. This is no longer need since 2.0.0 as we revamped our docs.

Status (please check what you already did):

[ ] added some tests for the functionality
[ ] updated the documentation
[ ] updated the changelog (please check changelog for instructions)
[ ] reformat files using black (please check Readme for instructions)

@m-vdb No worries. In my opinion it should never have been the default registry in the first place.


Meaningful error messages

Hi,
during parsing the errors looks like that:
<irrelevant stacktrace here>
    raise EvaluationError('Unknown key: %r' % k)
gcl.EvaluationError: Unknown key: 'application_name'

There is no context what's being parsed, which line or scope.
There is any chance that this information can be provided in the error message? Will be lot easier to debug stuff.

@rix0rrr: nice, thank you!


Make Curly Injectors append properties, not overwrite

Precursor to the Emojis PR: #3405
Currently, applying curly injectors to an object fully overwrites any inline CSS properties:
{{myClass,#myID,myStyle:red Test}}{color:blue}

Results in:
Test

This PR simply modifies the behavior of curly injectors to append to, rather than overwrite the properties of the preceding token.
Test

Generally should make little difference, but would be handy for elements like emojis that rely on preserving their initial CSS classes: :an-emoji:{color:blue}
Likely has some edge case bugs to work out.

This is good. It also helps that html/css will treat duplicate style rules as not an error, simply overriding.
Thus {{color:blue,font-weight:bold BLUE-BOLD}}{color:red}
will get rendered as
BLUE-BOLD,
but is effectively simply
BLUE-BOLD.
My only concern is that this appending method should only be exercised for insertion of styles and classes, and not for id or attributes (e.g. {{some-attribute=foo BAR}}. For id and attribute, the injected values should replace the existing values, but only if specified — that is, don't replace with blanks. (It's late and I'm going cross-eyed so haven't fully read the code)

Likely has some edge case bugs to work out.

As the say: "I see you are trying to solve a problem by using regular expressions.Now you have two problems."
Instead of using regex to extract the attributes of a html element encoded as a string, might I suggest we use the DOM API. I've previously done something like this...
function extractAttributeNames(htmlString) {
    var tempDiv = document.createElement('div');
    tempDiv.innerHTML = htmlString;
    var element = tempDiv.firstChild;

    var attributeNames = [];
    if (element) {
        for (var i = 0; i < element.attributes.length; i++) {
            attributeNames.push(element.attributes[i].name);
        }
    }

    return attributeNames;
}

// Example usage:
var htmlString = '
Hello, World!
';
console.log(extractAttributeNames(htmlString));

var htmlString2 = '';
console.log(extractAttributeNames(htmlString2));

however .. I note that that code now faults with "This document requires 'TrustedHTML' assignment." 😢
IIRC, we have a SetInnerHTMLDangerously method or similar which should get around this, right?

Instead of using regex to extract the attributes of a html element encoded as a string, might I suggest we use the DOM API. I've previously done something like this...

I started with something like this, but it crashes since we call Marked in a few places serverside without access to the DOM.  The regex parsing of this seems to be working for now. I will revisit this if I come across anything that the regex isn't able to handle.

This conversation sparked some memory I had about an issue with injections, and I found this old merged PR #2774 about additional unit tests. A bunch of the tests were set to ‘fail’ because of issues related to appending vs replacing.
Do these tests pass now, without the “fail” modifier?
and I think I had another issue with injections that I never did figure out, but I’m still looking for it to see if it’s relevant here.

Do these tests pass now, without the “fail” modifier?

Not sure, but that is a good goal. Since we already have those tests, I will try to make them pass or update them as necessary.

Maybe test these cases?
BAR{classy}
BAR{classier}
BAR{class=classiest}
text{class=qaaz,#qux}

Injector syntax doesn't work on raw HTML, because Markdown doesn't work at all in the same line as raw HTML.
I have added the equivalent tests for curly divs though.
Note explicitly removed class, style, and id attributes from being injected. It causes too many shenanigans and complexity mixing with the other class, style, and id syntax. As it stands now injecting class like this will just be ignored. (We can revisit it later if we want to add that option. Not immediately sure what value it would have).

Note explicitly removed class, style, and id attributes from being injected. It causes too many shenanigans and complexity mixing with the other class, style, and id syntax. As it stands now injecting class like this will just be ignored. (We can revisit it later if we want to add that option. Not immediately sure what value it would have).

I would expect that injecting class=some-class would operate exactly the same as injecting any-attribute=some-value. That is, the attribute would be assigned the value (instead of appending).


Unable to post on the queue

Unable to access SQS queue '': The specified queue does not exist for this wsdl version. {:level=>:error}
I'm currently running logstash 2.4. I tried even by replacing aws-java-sdk-1.11.21.jar. I did not work. When we did our initial evaluation with 2.2 it was working and that is why we chose this approach.
sqs {
queue => "queuename"
region  => "us-east-1"
access_key_id => "key"
secret_access_key => "secret"
}
I'm currently blocked with my implementation.
There is no connectivity issue. Using awscli I'm able to publish the queue.
console error says
Failed to flush outgoing items {:outgoing_count=>10, :exception=>"NoMethodError", :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-sqs-2.0.4/lib/logstash/outputs/sqs.rb:129:in flush'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:219:inbuffer_flush'", "org/jruby/RubyHash.java:1342:in each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:216:inbuffer_flush'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:159:in buffer_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-sqs-2.0.4/lib/logstash/outputs/sqs.rb:121:inreceive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/outputs/base.rb:83:in multi_receive'", "org/jruby/RubyArray.java:1613:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/outputs/base.rb:83:in multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/output_delegator.rb:130:inworker_multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/output_delegator.rb:114:in multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/pipeline.rb:293:inoutput_batch'", "org/jruby/RubyHash.java:1342:in each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/pipeline.rb:293:inoutput_batch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/pipeline.rb:224:in worker_loop'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.4-java/lib/logstash/pipeline.rb:193:instart_workers'"], :level=>:warn}
We have complete access to queue in AWS
"Action": [
"sqs:SendMessage",
"sqs:SendMessageBatch"
]

Same problem here. Can someone look into this please?

I think that you need to add permissions for sqs:GetQueueUrl.

@gspavansai Can you confirm if adding permissions for sqs:GetQueueUrl fixes the problem?
Also, @joshuaspence pretty much rewrote the plugin, and it's been released. Maybe give it a try?


First step at restructuring addons in web

Closing in favor of: https://github.com/OpenStickCommunity/GP2040-CE/pull/489


Photo: We couldn't find that photo

First of all, let me know that this tool is awesome, thanks for it.
I'm putting this issue here to discuss it, I'll propose a solution via a pull request if you find this is appropriate.
My use case:
I'm on ubuntu and I use a cron that call a shell script (to setup all the info needed to access the current wallpaper ubuntu service) that runs your script.
I change the picture every 5 minutes (night & day 24/7 ...)
So I have a lot of chance to come across an issue more than someone that run it manually daily.
This time I got the picture: https://images.unsplash.com/photo-1446704477871-62a4972035cd?fit=crop&fm=jpg&h=800&q=50&w=1200 (or a similar one, this one is from a random google image search)
So what would have been expected (from my point of view): to have an error that I can handle further on in my script

@scips, thanks! I totally agree. I couldn't figure out how to tell that was an error in the app but if you can figure that out, great!


Can I create a bootstrap servers using this tracker module

I wanted to host my own bootstrapping node similar to router.bittorrent.com:6881, router.utorrent.com:6881 or dht.transmissionbt.com:6881.
Is it possible to create it using your bittorrent-tracker module?

No, those are DHT bootstrap servers, not torrent trackers. You can use the bittorrent-dht module for that purpose, though it's not as optimized for the usecase of a bootstrap server as something like https://github.com/jech/dht-bootstrap or https://github.com/bittorrent/bootstrap-dht

thanks a lot


Performance

The performance is way off compared to the original https://github.com/t4t5/sweetalert in the demos.
Especially when used on mobile devices or in web apps where dialogs are used alot and require a smooth feeling, it certainly feels slower on rendering / opening dialogue boxes and actions.
Also if you click too quickly on Yes in the multi-step modal @demo(http://oitozero.github.io/ngSweetAlert/#/home) section -> (... and by passing a parameter, you can execute something else for "Cancel".) the dialogue will close without opening the second.

For your last point, it seems to be an upstream change. You can check it out happening here: http://tristanedwards.me/sweetalert

@bendikl could you retry and see if my last commit fixes the issue you had before? http://oitozero.github.io/ngSweetAlert/#/home
thanks


Propagate curator comments to the next round of manual curation

See discussion here.

Accessing the actual comments on the Google Drive spreadsheet is possible only with the Drive API, which is probably not something we're looking to do given the pending move to OntoString.  Some other options:

Mark UNSURE terms from the last round in the Notes column so they get ranked to the top

Could also copy from the Comments column, but only cell contents

Just link to the previous spreadsheet in the current spreadsheet so it's easier to find
???


proxy

Hello,
Need help, can't get the proxy working.  Tried setting conn_opts, that is supposed to pass to Mint.HTTP.connect/4.
conn_opts: [proxy: [:http, proxyurl, proxyport, []]]

You need to pass a tuple like so: conn_opts: [proxy: {:http, proxyurl, proxyport, []}].

@Keathley, thanks for quick response.  I tried but it doesnt use the proxy, example below, appreciate your input.  Thanks.
defmodule T1 do
alias Finch.Response
def proxy do
proxyurl = "<IP_ADDRESS>"
proxyport = "3126"
url = "https://www.webpagetest.org/"
Finch.start_link(
name: MyFinch,
pools: %{ :default => [size: 5], url => [size: 5] },
conn_opts: [proxy: {:http, proxyurl, proxyport, []}]
)
Finch.build(:get, url) |> Finch.request(MyFinch) |> handle_response
end
defp handle_response({:ok, %Response{body: body}}) do
IO.puts("handle_response")
IO.puts(body)
end
defp handle_response({:error, body}) do
IO.puts("error_response")
IO.puts(body)
end
end

@myi2000 have you tried providing the proxyport value as an integer?

@sneako, thanks.  Yes, I tried with,
proxyport = 3126
that dint work either.
It seems that conn_opts is being ignored.

Ah sorry, I just took a quick glance before, the conn_opts should be passed inside the pool config, like:
pools: %{
  :default => [
    size: 5,
    conn_opts: [proxy: {:http, proxyurl, proxyport, []}]
  ]
}

@sneako, it works, thanks for quick help.
note: if pools defines url, then each should have its own conn_opts section.


Lowering the batch size

Hello.. i've tried to running your code in jetson nano and i've met error like this.

I've tried to trying lowering the batch size but I think i do it wrong. I still got the same error. Can you help me? Thankyou

Could you add the following block in the very first lines of your program?
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"

Thankyou for your reply. I've added it before. The program can run but it's very slow and lagging because it's using the CPU.

You need very complex models and your gpu memory is not enough to allocate those models. This is the root cause of the problem. You can either increase the memory of gpu or use less complex models. The second choice will decrease the accuracy dramatically.
BTW, what is the memory size of your gpu? could you share the screen when running the command "watch nvidia-smi".

The both verify and analyze functions return this error in jetson?

Could you set allow_growth option true as illustrated below before importing deepface? If this solves, then I put this block in the framework code.
import tensorflow as tf
import keras

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
keras.backend.set_session(session)

In deepface 0.0.20, I fixed the greedy approach of tensorflow. Could you upgrade the framework and test again?

You can re-open this issue if it is not solved in 0.0.20.

Hello thankyou for your reply, and i'm sorry i'm late.
i've tried set allow_growth option true and update to 0.0.20 but the error still same.
I've tried "watch nvidia-smi" but it's not supported in nvidia jetson nano

@serengil hello, do you already have a solution for this problem?

I added a new function. This should be called before calling verify/analyze function.
DeepFace.allocateMemory()
However, this will cause to run on cpu if watch nvidia-smi command is not recognized. What is the memory size of your device?

@serengil thankyou for your reply. So we can't use GPU for this problem. Jetson nano has 4 GB of main memory

unfortunately, dependent models require 10 GB memory.

@serengil ah.. OK thankyou very much for the information


Add code coverage

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@83026e2). Click here to learn what that means.
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #496   +/-   ##
=======================================
  Coverage        ?   73.51%
=======================================
  Files           ?      218
  Lines           ?     2703
  Branches        ?      457
=======================================
  Hits            ?     1987
  Misses          ?      603
  Partials        ?      113

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Tflite checkpoint restore

Checkpoints saved sucessfully, but can't load checkpoint after interruption

Why detection variable is not defined , how to restore saved checkpoint

Hi @mohantym , https://colab.research.google.com/drive/1qdcEpYXlu-K5eYC9ARtyJaiQjlhT63kT?usp=sharing
You can see that i interrupted the training , but after that i need to continue from last checkpoint epoch , but error arises , please help me to solve this brother

Hi @Sanjay2802 ! Can you check this gist on restoring from checkpoints? Thank you!

https://colab.research.google.com/drive/1pCRD4fUTrI0jb9SDqjLAvKSey7pr_-Fu?usp=sharing
Some errors....
can you explain me when and how checkpoint is made ,and how to restore when  interrupted .and why it continues from 11th epoch in your notebook

@Sanjay2802 ! It was starting from 11th epoch as i set initial_epochs=10 in spec initially. Could you check the updated gist now. It is loading the weights from 50th epoch(completed epoch) after commenting    do_train = False from spec. Thank you!

https://colab.research.google.com/drive/1Eu6yamVbd8NGmm278RutiuafxEJIdopb?usp=sharing
when i stop training at 2nd epoch, and try to continue to restore, same error arises, check the above link

@Sanjay2802 ! It should continue from last checkpoint after interruption as you mentioned. But things does not seem same  in case of TFlite model maker.
@sachinprasadhs ! Could you please look at this issue . Attached gist for reference. Thank you!

Solve asap

Found anything?

currently blocked by https://github.com/tensorflow/tensorflow/issues/60431

Hi,
Thank you for opening this issue. Since this issue has been open for a long time, the code/debug information for this issue may not be relevant with the current state of the code base.
The TFLite team is constantly improving the framework by fixing bugs and adding new features. We suggest you try the latest TensorFlow version with the latest compatible hardware configuration which could potentially resolve the issue. If you are still facing the issue, please create a new GitHub issue with your latest findings, with all the debugging information which could help us investigate.
Please follow the release notes to stay up to date with the latest developments which are happening in the TFLite space.
Thanks.


Acceptance specs on 1.8.7 are currently skipped.

Our 1.8.7 builds seg fault when trying to run acceptance specs, as of #1769 they are skipped to maintain a consistent green build but we'd like to run as much as possible on 1.8.7. This issue has been opened to keep track of that information.
/cc @samphippen @myronmarston

@JonRowe I'm tempted to de-prioritise this one. I'm planning on implementing the rspec-rails 4.0 RFC over my christmas vacation (that is, get drop a version which removes old railses, etc).

This can be closed when RSpec-Rails goes off pisté :) :+1:


Check the maxPoolSize

Hi pinpoint team,
Hope you guys are doing fine.
I get this exception in logs >
2020-03-26 19:53:03 WARN  The executor uses finite bounds for both maximum threads and work queue capacity, and is saturated. Check the maxPoolSize, queueCapacity, and HBase options in the configuration. maxPoolSize=6024, rejectedCount=201200
I tried increasing maxPoolsize in config but still no luck.
This is my config looks like :

I also want to know if it's possible to distribute load using multiple collectors.
My transaction feed also looks like this.

Regards

Hi @VidushaZ
I also want to know if it's possible to distribute load using multiple collectors.
-> It's unfortunate that I can't give you any good advice, but I think it would be helpful to look at this issue.


fix: can specify Config and omit Context

Coverage remained the same at 97.173% when pulling 3a392d07204da69b8b30de7b05722df4c0175cdc on optional-context into 5adf9e045cb6598a444e1bd6936acb0368e4de53 on master.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Adds DbContext to CommandEventData

Fixes #16159
Also introduced a parameter object for the RelationalCommand execution methods. This will make it easier to pass new things here without making a breaking change.
Did a little refactoring to simplify the code in RelationalCommand and avoid a couple of places where we were allocating.

Found a small typo in xml docs for the DbContext parameter, while looking through the changes:
currently being used, ot null if not known.


Inspection validate camel endpoints

This is the first batch of validation of Camel endpoints and to prevent this will be one big bang feature I decided to deliver in small batches.
This include validation of camel endpoint (properties) and the initial work for validate simple expression.

@davsclaus thanks for the feedback 👍


move to fsspec org

There was talk of this and other fsspec-compatible implementations being transferred to github.com/fsspec . No rush, merely recording what was previously suggested.

@martindurant Done, but I need admin rights to have access to secrets and stuff like that. Could you add me, please?

As a member of the team "maintainers", I think you have everything you need.

@martindurant This repo was not automatically added to https://github.com/orgs/fsspec/teams/maintainers/repositories, so I can't do anything here at all until I'm added.

Done! Sorry about that.

@martindurant No worries :) Btw, looks like you forgot to select "Maintain" for it it in https://github.com/orgs/fsspec/teams/maintainers/repositories

.

@martindurant Also, "Maintain" still doesn't have any access to secrets in the repo, which I really do need at least for our repos 🙂 I totally understand and respect that you are trying to keep the org tidy in all senses, but unless you want me to ping you for every occasion (e.g. secrets, new repos like https://github.com/iterative/ossfs being transfered, etc), maybe there is a way to give me a bit more permissions so I could help out 🙂

Makes sense - where do I do that? :)

@martindurant I think we need to adjust rights for the whole org for it to be the most hustle-free: https://github.com/orgs/fsspec/people need to adjust role from "Member" to "Owner" (i don't think there are any other options in between 🙁 ).


Update @balena/jellyfish-environment from 13.0.13 to 14.0.0

Change-type: patch
Signed-off-by: Josh Bowling<EMAIL_ADDRESS>

@balena-ci I self certify!