New lobbies need a match id

Currently match id's are only created once a lobby starts a match. Ideally we would create an empty match when a lobby is created. This would allow us to preserve lobby settings between server restarts but more importantly link chat logs to the match-id rather than match-uuid which will cause the database to perform better.

Matches are now created on lobby creation.


This makes the map POI in IE8 look better.

This is an IE8 bug fix.
The POI descriptions currently have a transparent background and they overlay the map itself.  It looks bad.  This fix adds respond-to-legacy-support to the poi_list.sass and places the description below the map.

To check this PR open a hotel page in IE8 and check that the POIs descriptions are below the map.

Looks much better  :+1:


Add HTTP basic authentication for endpoints

reverted commit. Problem:

Basic authentication via ajax requests works when request is send with with the 'withCredentials' flag
The browser throws an error when the domain is cors-enabled using a wildcard value, and when the credentials flag is true.

As a consequence, setting the withCredentials flag to true, will cause YASGUI to fail on all (not just the ones with basic auth) endpoints which are cors-enabled using a wildcard.
For those datasets that have basic authentication, YASGUI would only work when nginx has a non-wildcard value (a simple workaround: add_header 'Access-Control-Allow-Origin' "$http_origin";)
So, postpone this issue a bit, and find out whether there is a better solution

Please, could you explain me how to access an endpoint that is protected with BASIC authentication ? Where I have to put credentials?

This can only be done with the previous version of YASGUI:
http://legacy.yasgui.org
-Rinke
On Thu, Sep 24, 2015 at 10:59 PM Enrico Fagnoni<EMAIL_ADDRESS>wrote:

Please, could you explain me how to access an endpoint that is protected
with BASIC authentication ? Where I have to put credentials?
—
Reply to this email directly or view it on GitHub
https://github.com/YASGUI/YASGUI/issues/45#issuecomment-143049424.

Hi Rinke,
it is something planned also for the new version or just an dead feature? I
see a proposed but reverted patch
Could you please point me somewhere I can get docs to know how to use auth
in legacy version.
Thankyou for your attention. Great project!
Enrico
2015-09-25 11:49 GMT+02:00 Rinke Hoekstra<EMAIL_ADDRESS>
This can only be done with the previous version of YASGUI:
http://legacy.yasgui.org
-Rinke
On Thu, Sep 24, 2015 at 10:59 PM Enrico Fagnoni<EMAIL_ADDRESS>wrote:

Please, could you explain me how to access an endpoint that is protected
with BASIC authentication ? Where I have to put credentials?
—
Reply to this email directly or view it on GitHub
https://github.com/YASGUI/YASGUI/issues/45#issuecomment-143049424.

—
Reply to this email directly or view it on GitHub
https://github.com/YASGUI/YASGUI/issues/45#issuecomment-143174404.

Hi Enrico,
What Rinke meant is that in the legacy version, you are able to set http headers via the YASGUI interface. You can handle the basic authentication info via these headers.
The reverted solution was a more high level attempt to solve basic authentication, i.e. by providing users with a password prompt. As explained above, this does not work in all scenarios, which is why it was reverted.
To help people who need basic authentication, I will add the functionality for users to specify http headers (similar to the functionality in the legacy version). This will probably be done over the weekend

@ecow  and @RinkeHoekstra , YASGUI now supports setting headers manually.
For basic authentication this is still a bit ugly though: you'll need to set 'Authorization' as key and an authentication token (see https://en.wikipedia.org/wiki/Basic_access_authentication) as value.
As described in my first comment in this thread, there is no easy and clean fix for enabling a password prompt for endpoints with basic authentication, because the appropriate flags won't work with wild-card cors-enabled endpoints. Solving this issue automatically is not possible: the 'Access-Control-Allow-Origin' response header is not accessible via javascript, so I cannot detect when to enable or disable basic authentication.
Instead, I propose to add an option to the tab pane menu that enables or disables authentication (default: disabled).
In your scenario, you should be able to toggle this option, and get a password login prompt. I'll see whether I can add this soon

Great. Thank you.

I'll close this ticket. It seems that adding generic means of authentication to any other triple store is just not possible (see https://github.com/OpenTriply/YASGUI.YASQE/issues/94 as well).
And: given the configurability of YASGUI and YASQE, publishers can always modify some default settings of their own YASGUI instance by modifying the XHR settings and the default request headers together with the appropriate response headers given by the server (e.g. no wildcard CORS flag) to get authentication working


Key bindings for custom commands get lost when Eclipse is restarted

http://www.eclipse.org/forums/index.php/m/290410/
http://dev.eclipse.org/viewcvs/viewvc.cgi/platform-ui-home/R3_1/contributions-proposal/requestForComments.html?view=co

+1

See https://github.com/basti1302/startexplorer#maintainer-wanted


Adopt environmentVariableCollection for terminal activation

Right now the Python extension sends text to the terminal to activate the environment, this means that terminals existing before the extension was activated don't get their venv activated (you could potentially do this by iterating over terminals but there are complications then figuring out which terminals were reconnected to).
The environment variable collection API is remembered for a workspace across reloads so the environment changes will be applied to new terminals assuming the extension would activate. They are also available for inspection:

Closing in favor of #11039


Unable to add track to playlist

What version of Music Assistant has the issue?
2023.6.0b0
The problem
I am sorry to report this issue here. Not sure it is a bug or I am doing something wrong.
I have stored six mp3 files locally on HA in /media directory. I have also created a local filesystem playlist. I can play each of the files on any player discovered by MA. When I try to add any of these tracks to the playlist, it does not get added.
How to reproduce
Go to Tracks, select the three dot against the track and select Add to Playlist, click on the Playlist.
Relevant log output
2023-06-10 05:02:51 DEBUG music_assistant.websocket_api  -- [139823332097808] Handling command music/playlists 2023-06-10 05:02:55 DEBUG music_assistant.websocket_api  -- [139823332097808] Handling command music/playlist/tracks/add 2023-06-10 05:02:55 WARNING music_assistant.providers.filesystem_local  -- Error while parsing playlist Aarti Playlist.m3u Traceback (most recent call last):   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/filesystem_local/base.py", line 454, in get_playlist_tracks     playlist_data = playlist_data.decode(encoding_details["encoding"])                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: decode() argument 'encoding' must be str, not None 2023-06-10 05:02:55 ERROR music_assistant  -- Exception in task Task-187 Traceback (most recent call last):   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/media/playlists.py", line 174, in add_playlist_track     await provider.add_playlist_tracks(playlist_prov.item_id, [track_id_to_add])   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/filesystem_local/base.py", line 495, in add_playlist_tracks     playlist_data = playlist_data.decode(encoding_details["encoding"])                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: decode() argument 'encoding' must be str, not None
Additional information
No response
What version of Home Assistant Core are your running
2023.6.1
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Generic x86-64 (e.g. Intel NUC)

This might have been reported on discord. Try opening the playlist with a file editor and add any character on the first line. Then try again adding to it. If this works then let us know and delete that character from the first line as it will cause errors. The playlist is now useable but the bug will be addressed.

Yes, it works now...!!! Thank you so much for the quick reply.

This has been fixed


A randol Crash log appeared

Microsoft PowerToys version
0.86.0
Installation method
PowerToys auto-update
Running as admin
Yes
Area(s) with issue?
Welcome / PowerToys Tour window
Steps to reproduce

Version: <IP_ADDRESS>
OS Version: Microsoft Windows NT 10.0.27754.0
IntPtr Length: 8
x64: True
Date: 12/8/2024 4:40:32 PM
Exception:
System.Runtime.InteropServices.COMException (0x80263001): {Desktop composition is disabled} The operation could not be completed because desktop composition is disabled. (0x80263001)
   at Standard.NativeMethods.DwmExtendFrameIntoClientArea(IntPtr hwnd, MARGINS& pMarInset)
   at System.Windows.Shell.WindowChromeWorker._ExtendGlassFrame()
   at System.Windows.Shell.WindowChromeWorker._UpdateFrameState(Boolean force)
   at System.Windows.Shell.WindowChromeWorker._HandleDwmCompositionChanged(WM uMsg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Shell.WindowChromeWorker._WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.PublicHooksFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

✔ Expected Behavior
Nothing
❌ Actual Behavior
Power Toys ran into an issue window
Other Software
No response

I have been seeing this when waking up my PC in the morning. Maybe it is related to the display waking up from being asleep.
Version: <IP_ADDRESS> OS Version: Microsoft Windows NT 10.0.19045.0 IntPtr Length: 8 x64: True Date: 2024-12-11 08:23:29 Exception: System.Runtime.InteropServices.COMException (0x80263001): {Desktop composition is disabled} The operation could not be completed because desktop composition is disabled. (0x80263001)    at Standard.NativeMethods.DwmExtendFrameIntoClientArea(IntPtr hwnd, MARGINS& pMarInset)    at System.Windows.Shell.WindowChromeWorker._ExtendGlassFrame()    at System.Windows.Shell.WindowChromeWorker._UpdateFrameState(Boolean force)    at System.Windows.Shell.WindowChromeWorker._HandleDwmCompositionChanged(WM uMsg, IntPtr wParam, IntPtr lParam, Boolean& handled)    at System.Windows.Shell.WindowChromeWorker._WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)    at System.Windows.Interop.HwndSource.PublicHooksFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Thanks! Tracking on another issue.
/dup #30507


[Steam News and Players Viewer] Player count not loading for some games.

Extension name
Steam News and Players Viewer
Bug Description
I'm not sure if this is a bug as I don't know how the extension works. Some games are in SteamDB (where it would appear the player count info comes from) but hidden in Steam. A prominent example is the Deadlock play test which would be useful to follow player count (although without a steam page, no news info is expected). Is there a way to get the extension to still show player count for these games by referencing the steamdb page?
To Reproduce
Add an steam unlisted game that has presence in steamdb, check for player count
Logs
n/a
Screenshots
No response

Currently the extension uses the Steam web api to obtain the current number of players. For unreleased/private games like Deadlock this API doesn't return this data: https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/?appid=1422450

For normal games the data is correctly returned: https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/?appid=588650

To fix this, it would be needed to investigate how SteamDB obtains the data and if it's feasible to rework the extension to use that instead.


Can I use RR to get messages from websockets?

Swoole can work with Socket.io.
Can I use RR to get messages from websockets in my Laravel app?

Can you clarify "get messages from websockets"? Sure you can, but I'm not quite sure I've got your question. https://spiral.dev/docs/broadcast-websockets

Closed due inactivity

Can you clarify "get messages from websockets"? Sure you can, but I'm not quite sure I've got your question. https://spiral.dev/docs/broadcast-websockets

I do not understand how to use it in Laravel. This instructions is very simple: https://github.com/swooletw/laravel-swoole/wiki/7.-Websocket. Can I do something like this with RR? How can  I do it?
Websocket::on('event', 'Controller@action');

You can not accept WebSocket commands in RR without custom Golang code yet.


How to use yt-dlp to merge multiple URLs

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I 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'm running yt-dlp version 2023.01.06 (update instructions) or later (specify commit)
[X] I've searched 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 am using yt-dlp to download videos from german broadcaster 'medatheks'. For some reasons, it often happens that the web-page for some media is removed / disabled from their servers, but the actual media is still available. So i may end up having a URL for the videos m3u playlist and another URL for the subtitles for the media. In more complex situations i may also have two or more separate audio URLs (for different audio channels). I can use yt-dlp to individually download them, but not for all the nice work yt-dlp does in merging them (including conversions):
I can not figure out if or how i would be able to call yt-dlp to pull in all these URLs and merge them. Of course, yt-dlp can do this if there was a web-page that was including all these URLs.
If there is no trick with yt-dlp command line arguments to get this done, maybe there is an example most-simple "shim" webpage i could construct from a script that include these multiple media URLs, and then feed (as a file argument) this shim webpage .. But i do not know how such a minimal shim webpage should look like for yt-dlp to be able to parse it.
Provide verbose output that clearly demonstrates the problem

[x] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[x] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
NA (don't know how to do it with yt-dlp as explained above)

Can you share example URLs? It sounds like you may be downloading variant m3u8 URLs. If there is a master m3u8 manifest available instead, that could possibly solve your problem

website        = 'https://tvthek.orf.at/profile/Tatort/2713749/Tatort-Toedliche-Habgier/14163209'
url_subtitles  = 'https://api-tvthek.orf.at/assets/subtitles/0148/41/c17e9a2a672c614a474abd474f54a591d877df57.ttml'
url_http_hd    = 'https://apasfiis.sf.apa.at/ipad/cms-worldwide/2023-01-07_2155_sd_02_Tatort--Toedlic_____14163209__o__1952470803__s15309500_0__ORF2HD_21555417P_23242005P_Q8C.mp4/playlist.m3u8'
These URLs are from the mediathekview.de database, which scrapes the web pages of the public german broadcasters (germany, switzerland, austria). The webpage URL is what you would normally give to yt-dlp, but then these do often not live long (maybe even as little as a single week). But the media URLs work longer.
In this case i can separately download via yt-dlp the video and the subtitle, but i can not figure out how to use yt-dlp to merge them into a single .mp4 file. Which involves conversion of the subtitles into srt. Which yt-dlp all perfectly does when its given a working webpage.

This sounds like a plausible approach, which you might be able to automate using a tool like jq:

Use --write-info-json --simulate for each of the to-be-merged URLs.
Merge the resulting JSON files.
Optionally, correct important metadata in the JSON like title that could be used to name the final media file.
Use --load-info-json ..., specifying the merged JSON, to download and process the items mentioned in the merged JSON.

Thanks a lot
a) i could not make yt-dlp to generate any json file with "--write-info-json". I straced it, and no file was opened to write. Would appreciate an example that is known to work, and what the name/directory of the generated json file is supposed to be with the example.
b) Instead, i could generate the json with the -j option
c) I could successfully create the desired output by I) dumping json of a working webpage with "-j", and II) reimporting the json with --load-info-json. So in general, this is a near trick.
d) alas, when i tried to create the json for the broken webpage case from the json of the m3u and then adding the subtitles JSON elements, running --load-info-json gives the following error:
[EmbedSubtitle] Embedding subtitles in "Das fleißige Lieschen [12254727].mp4"
ERROR: Postprocessing: file:Das fleißige Lieschen [12254727].de.ttml: Invalid data found when processing input
e) That actually was recreation of the effort with the working webpage, but removing the vtt format subtitle. Aka: whenever i do not have a working webpage, there is also no vtt subtitle URL, but only a ttml format subtitle URL, and it seems as if yt-dlp can not deal with ttml.  Which is strange, because from reading docs, it sounds as if yt-dlp seems to support ttml.
See attached json file. This will download with video/subtitle via --load-info-json, but if you remove the "vtt" type block from the file, yt-dlp will try to download the ttml, which it doesn, but then fail conversion with above error message.
json.txt

Sorry, --skip-download, not --simulate, should give you a JSON file with the name of the putative video file.

Should i open a new issue against the problem with the ttml file ?

The error message appear to be coming from ffmpeg, which implies that the subtitles are malformed. More details can be seen in the verbose log. It may also help to attach the subtitle file

Provide verbose output that clearly demonstrates the problem

[x]  Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[x]  Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

yt-dlp does not convert from ttml subtitles to vtt subtitles

It might if you used --convert-subs ..., but that depends on ffmpeg which can't decode TTML. The ticket has a linked script that would convert TTML which could be rewritten as an escape in the subtitle conversion postprocessor routine using Python XML processing, or the author of this repo could be asked to release his Python script for that purpose.

Can't help you since you refuse to provide logs

To avoid submitting a similar issue, I get the same issue on the same site, but with a different video.  Upgrade to the latest master build or downgrade to ffmpeg 6.0


Price limit not respected

Running the latest files from the Github, the script keeps notifying me for 2800$ 3080, even with my limits being 2400 for the 3090 and 1400 for the 3080 (Canadian rupees in case you're wondering). It triggers a lot due to scalpers on Amazon.ca.

Alright, found the issue: the .env file changed variable name for the price limit.
It was :
MAX_PRICE_3070=
MAX_PRICE_3080=
MAX_PRICE_3090=
But is now:
MAX_PRICE_SERIES_3070=
MAX_PRICE_SERIES_3080=
MAX_PRICE_SERIES_3090=


ft: enable versioning deletes for aws backend

The versioning adventure continues. :clinking_glasses:
Sorry for the length of the test file. The helper functions and comments are portions of that.

CONFLICT (add/add): Merge conflict in tests/functional/aws-node-sdk/test/multipleBackend/utils.js
CONFLICT (add/add): Merge conflict in tests/functional/aws-node-sdk/test/multipleBackend/get/getAwsVersioning.js
CONFLICT (add/add): Merge conflict in lib/data/external/AwsClient.js
CONFLICT (add/add): Merge conflict in lib/api/objectDelete.js
CONFLICT (add/add): Merge conflict in lib/api/apiUtils/object/versioning.js
CONFLICT (add/add): Merge conflict in lib/api/apiUtils/object/createAndStoreObject.js

PR has been updated. Reviewers, please be cautious.

@LaurenSpiegel I have a question that I'd like to discuss with you sometime about how we manage overwriting/deleting "null" version data when versioning is suspended / not configured on the s3 side (if we want to do that at all).

@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15289' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15303' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

are end-to-ends fixed yet?
@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15342' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

:broken_heart: :umbrella: circleCI test failed.

@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15387' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

:broken_heart: :umbrella: circleCI test failed.

@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15502' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

:broken_heart: :umbrella: circleCI test failed.

@ironman-machine try

Hello @electrachong
"try": Success: Try build successfully launched on 'http://ci.ironmann.io/gh/scality/Integration/15527' with the following env. args:
{
    "SCALITY_INTEGRATION_BRANCH": "ultron/master",
    "REPO_NAME": "S3",
    "DEFAULT_BRANCH": "master",
    "SCALITY_S3_BRANCH": "ft/aws-backend-versioning-del"
}

@ironman-machine r+

Hello @electrachong
"r+": Success

:hourglass: PR is now pending. CI build url: http://ci.ironmann.io/gh/scality/Integration/15528

:broken_heart: :umbrella: circleCI test failed.

retried here: http://ci.ironmann.io/gh/scality/Integration/15531

end to end finally passed; merging


Rename greaterThan to (.>)

Issue Number

Follow up to #1317
Overview

[x] I renamed greaterThan to (.>)

Comments

For consistency with the also-existing (.>=).
The other way around, having greaterThanOrEqual sounded more impractical, and might have required more wrapping

bors try


rtve - "ValueError: not enough values to unpack (expected 2, got 1)"

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 reporting that a supported site is broken
[X] I've verified that I'm running yt-dlp version 2023.03.04 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
spain
Provide a description that is worded well enough to be understood
IN WINDOWS
[debug] Command-line config: ['https://www.rtve.es/alacarta/videos/documentos-tv/bajo-un-cielo-envenenado/6847021/', '-v']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[392389b7d] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg git-2020-06-26-7447045, ffprobe git-2020-06-26-7447045
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {'http': 'http://proxy.xxxx.xxx:8080', 'https': 'https://proxy.xxxx.xxx:8080', 'ftp': 'ftp://proxy.xxxx.xxx:8080'}
[debug] Loaded 1786 extractors
[rtve.es:alacarta] Fetching manager info
[rtve.es:alacarta] Extracting URL: https://www.rtve.es/alacarta/videos/documentos-tv/bajo-un-cielo-envenenado/6847021/
[rtve.es:alacarta] 6847021: Downloading JSON metadata
[rtve.es:alacarta] 6847021: Downloading url information
ERROR: not enough values to unpack (expected 2, got 1)
Traceback (most recent call last):
File "yt_dlp\YoutubeDL.py", line 1518, in wrapper
File "yt_dlp\YoutubeDL.py", line 1594, in __extract_info
File "yt_dlp\extractor\common.py", line 694, in extract
File "yt_dlp\extractor\rtve.py", line 143, in _real_extract
File "yt_dlp\extractor\rtve.py", line 118, in _extract_png_formats
File "yt_dlp\extractor\rtve.py", line 81, in _decrypt_url
ValueError: not enough values to unpack (expected 2, got 1)
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] 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: ['-v', '-i', '-r', '3000k', '-f', 'best[height<=720]/22/18/0', '--write-thumbnail', '--no-check-certificate', '--write-auto-sub', '--sub-lang', 'en,es', '--convert-subs', 'srt', '-o', '%(upload_date)s -%(title)s-%(id)s.%(ext)s', 'https://www.rtve.es/alacarta/videos/ciencia-maps/instituto-astrofisica-canarias/6817811/']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8 (No ANSI), error utf-8, screen utf-8 (No ANSI)
[debug] yt-dlp version<EMAIL_ADDRESS>[392389b7d] (zip)
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-5.4.0-96-generic-x86_64-with-glibc2.29 (OpenSSL 1.1.1f  31 Mar 2020, glibc 2.31)
[debug] exe versions: ffmpeg 4.2.4, ffprobe 4.2.4
[debug] Optional libraries: Crypto-broken 2.6.1, certifi-2019.11.28, secretstorage-2.3.1, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1786 extractors
ERROR: not enough values to unpack (expected 2, got 1)
Traceback (most recent call last):
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 1518, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 1594, in __extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 694, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/rtve.py", line 143, in _real_extract
    formats = self._extract_png_formats(video_id)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/rtve.py", line 118, in _extract_png_formats
    for quality, video_url in self._decrypt_url(png):
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/rtve.py", line 81, in _decrypt_url
    quality, url_data = text.split(b'%%')
ValueError: not enough values to unpack (expected 2, got 1)

[debug] Command-line config: ['-vU', '--proxy', 'socks5://<IP_ADDRESS>:9050', 'https://www.rtve.es/alacarta/videos/telediario-matinal/8-horas-26-04-23/6874451/']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8 (No ANSI), error utf-8, screen utf-8 (No ANSI)
[debug] yt-dlp version<EMAIL_ADDRESS>[392389b7d] (debian*)
[debug] Python 3.9.2 (CPython x86_64 64bit) - Linux-6.0.0-0.deb11.6-amd64-x86_64-with-glibc2.31 (OpenSSL 1.1.1n  15 Mar 2022, glibc 2.31)
[debug] exe versions: ffmpeg 4.3.5-0, ffprobe 4.3.5-0
[debug] Optional libraries: Cryptodome-3.9.7, brotli-1.0.9, certifi-2020.06.20, mutagen-1.45.1, sqlite3-2.6.0, websockets-8.1
[debug] Proxy map: {'http': 'socks5://<IP_ADDRESS>:9050', 'https': 'socks5://<IP_ADDRESS>:9050'}
[debug] Loaded 1786 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
ERROR: not enough values to unpack (expected 2, got 1)
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/yt_dlp/YoutubeDL.py", line 1518, in wrapper
return func(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/yt_dlp/YoutubeDL.py", line 1594, in __extract_info
ie_result = ie.extract(url)
File "/usr/lib/python3/dist-packages/yt_dlp/extractor/common.py", line 694, in extract
ie_result = self._real_extract(url)
File "/usr/lib/python3/dist-packages/yt_dlp/extractor/rtve.py", line 143, in _real_extract
formats = self._extract_png_formats(video_id)
File "/usr/lib/python3/dist-packages/yt_dlp/extractor/rtve.py", line 118, in _extract_png_formats
for quality, video_url in self._decrypt_url(png):
File "/usr/lib/python3/dist-packages/yt_dlp/extractor/rtve.py", line 81, in _decrypt_url
quality, url_data = text.split(b'%%')
ValueError: not enough values to unpack (expected 2, got 1)

There's an outstanding yt-dl PR https://github.com/ytdl-org/youtube-dl/pull/31241 for RTVE, but the author and I haven't managed to get it over the line.
This patch from the PR against the current stable yt-dlp extractor fixes your issue:
@@ -99,17 +77,12 @@
                 break
             data = encrypted_data.read(length)
             if chunk_type == b'tEXt':
-                alphabet_data, text = data.replace(b'\0', b'').split(b'#')
-                components = text.split(b'%%')
-                if len(components) < 2:
-                    components.insert(0, b'')
-                quality, url_data = components
-
+                alphabet_data, text = data.split(b'\0')
+                quality, url_data = text.split(b'%%')
                 alphabet = []
                 e = 0
                 d = 0
                 for l in alphabet_data.decode('iso-8859-1'):
-                # for l in _bytes_to_chr(alphabet_data):
                     if d == 0:
                         alphabet.append(l)
                         d = e = (e + 1) % 4

@dirkf that patch's diff looks inverted? I think it should be
diff --git a/yt_dlp/extractor/rtve.py b/yt_dlp/extractor/rtve.py
index a99a266c6..ba9121c62 100644
--- a/yt_dlp/extractor/rtve.py
+++ b/yt_dlp/extractor/rtve.py
@@ -77,8 +77,11 @@ def _decrypt_url(png):
                 break
             data = encrypted_data.read(length)
             if chunk_type == b'tEXt':
-                alphabet_data, text = data.split(b'\0')
-                quality, url_data = text.split(b'%%')
+                alphabet_data, text = data.replace(b'\0', b'').split(b'#')
+                components = text.split(b'%%')
+                if len(components) < 2:
+                    components.insert(0, b'')
+                quality, url_data = components
                 alphabet = []
                 e = 0
                 d = 0

Also this looks to be a duplicate of #1346, since the /alacarta/ link redirects in browser to /play/

Many, many, many... THANK YOU
You saved me,
Really.
Thank you.

Many, many, many... THANK YOU You saved me,
Really.
Thank you.

Hi
I downloaded the last release of yt-dlp from yt-dlp releases but i still have the same problem. Were you able to download from "rtve"?
Thank you.

I still have the same error. I tried the stable and nightly versions and apply the patch above, but nothing fix the problem:
[rtve.es:infantil] Fetching manager info [rtve.es:infantil] Extracting URL: https://www.rtve.es/infantil/serie/simon/video/robot-super-ferdi/6900044/ [rtve.es:infantil] 6900044: Downloading JSON metadata [rtve.es:infantil] 6900044: Downloading url information ERROR: not enough values to unpack (expected 2, got 1)

Translated by Argos Translate
Original version in your email.
Hi.
I'm sorry for the delay, but I haven't been through much.
I have no idea, but what dirkf and bashonly are telling us is that we have to compile the yt-dlp by applying the patch they tell us.
I see you've got an app on github, so I don't understand your question.
But in order not to take anything for granted (it is not the account holder that the post has written), and without the urge to offend you, here goes a mock and simple explanation.
I've done it the way Bashonly poses and it works.
You have to download the source code, and in the "yt-dlp-master/yt-dlp-master/yt_dlp/extractor" folder you have the "rtve.py" file where you have to remove the lines marked with a "-" and add the marked with a "+".
And then compile the executable.
python3 -m pip install -U pyinstaller -r requirements.txt
python3 devscripts/make_lazy_extractors.py
python3 pyinst.py --onefile
I compile it for linux and now it's working. I don't know if it would work for you, but if you want, I'll try to pass my executable or rtve.py file.
Adiós.


[video_player] Some subtitles in VTT file are skipped

Steps to reproduce

Download any VTT file (I'm using the one from Avengers end game as a test)
use setClosedCaptionFile on an already initialized video controller to set the file content
add a listener to the controller that prints the controller.value.caption.text at each call (and, obviously, also if it is included on a widget)
Notice that some lines are completely skipped even if present in the vtt

Expected results
All of the lines should be displayed and non should be skipped
Actual results
WEBVTT

00:07.174 --> 00:09.842
BARTON: Okay, hold on,                                     <-------- Skipped
don't shoot.

00:10.928 --> 00:12.679
- You see where you're going?,                             <-------- Skipped
- Mm-hmm.,                                                 <-------- Skipped

00:12.846 --> 00:13.846
Okay.

00:14.014 --> 00:15.932
Now, let's worry,                                          <-------- Skipped
about how you get there.

00:16.809 --> 00:18.184
Gotta move your foot here.,                                <-------- Skipped

00:18.686 --> 00:20.103
Point your toe this way.

00:20.479 --> 00:22.021
Your hips here.

and so on
Code sample
doesn't apply as the setup to reach the bug is pretty complicated
Screenshots or Video
No response
Logs
No response
Flutter Doctor output
flutter doctor -v
[✓] Flutter (Channel stable, 3.16.9, on Microsoft Windows [Versione 10.0.19045.4046], locale it-IT)
• Flutter version 3.16.9 on channel stable at C:\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 41456452f2 (6 weeks ago), 2024-01-25 10:06:23 -0800
• Engine revision f40e976bed
• Dart version 3.2.6
• DevTools version 2.28.5
[✓] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
• Android SDK at C:\Users\bonfr\AppData\Local\Android\sdk
• Platform android-34, build-tools 33.0.2
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[✓] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[✓] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.8.0)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.8.34309.116
• Windows 10 SDK version 10.0.22621.0
[✓] Android Studio (version 2021.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
[✓] Connected device (3 available)
• Windows (desktop) • windows • windows-x64    • Microsoft Windows [Versione 10.0.19045.4046]
• Chrome (web)      • chrome  • web-javascript • Google Chrome 122.0.6261.94
• Edge (web)        • edge    • web-javascript • Microsoft Edge 122.0.2365.66
[✓] Network resources
• All expected network resources are available.
! Doctor found issues in 1 category.
PS:
I noticed a similar issue was also opened but I think it was erroneously closed so i opened this new one (#123796)

Hi @Bonfra04, what version of video_player are you using and what platform(s) are you seeing this issue on?
Does this happen with every subtitle file?
We will need some code and detailed steps to reproduce so that we can investigate this issue.
Thank you

I'm using video_player: ^2.8.3 on Windows 10; since I need to play HLS content I also tried using fvp: ^0.13.1 or video_player_media_kit: ^1.0.5 as a backend. With any of the two libraries I'm getting the same error so since I'm anyway parsing the HLS file manually to insert the caption file, I'm gonna guess this is not important. I'm working with sensitive data so I cannot provide the exact source. I can try and describe to my best my current setup:
I have a Stack widget with children the video player and the player controls. After the video has loaded, from the controls it is possible to change the subtitle track. Whenever a subtitle is selected from the menu, this function is called:
Future<void> _setCaptions(Uri uri) async {
        if(uri.toString().isEmpty) {
            await this._controller!.setClosedCaptionFile(null);
            return;
        }

        String captionsString = await http.get(uri.toString());
        HlsPlaylist playlist = await HlsPlaylistParser.create().parseString(uri, captionsString);
        String vttUri = (playlist as HlsMediaPlaylist).segments[0].url!;
        String vttString = await http.get(vttUri);
        await this._controller!.setClosedCaptionFile(Future.value(WebVTTCaptionFile(vttString)));
    }

this function returns correctly and the caption file is loaded.
Before anything can be selected by the user, a listener is registered on the controller using this._controller.addListener(this._updateValue) and, a simplified version of that updateValue function is this one:
 void _updateValue() {
        if(controller.value.caption.text.isNotEmpty)
            print("CAP: up - ${this.controller.value.caption.text}");
        // ...
    }

With this method it's easy to verify that some lines in the caption file are completely skipped. A more UI friendly approach is to render in the controls a ClosedCaption widget like this:
if(this._controller?.value.caption.text.isNotEmpty ?? false)
    ClosedCaption(text: this._controller?.value.caption.text ?? "")

both these use cases make clear that some lines are skipped, like if the value in the controller is not updated. The listener is triggered so something is going on as the same line gets printed over and over without updating until something happens and a new one appears just to again stick around for too much.
I'm not sure if posting here the testing caption I'm using of avengers End Game is 100% but Ii think you can find one by googling

Hi @Bonfra04, the minimal sample doesn't need to be your actual project. We just need the smallest code sample that we can run with minimal setup that reproduces the video so that we can investigate the issue.
Thank you

ok, I tried to reduce the example to the minimum. The m3u8 file is not as important as this example aims to show the skipped subtitles. I've included a small piece of the vtt file I used for testing. Anyway, I added the code to include a remote one for testing. Let me know if anything else is needed and if you achieve to reproduce the issue.
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:http/http.dart' as http;
import 'package:video_player_media_kit/video_player_media_kit.dart';

void main() {
    VideoPlayerMediaKit.ensureInitialized(
        android: true,
        windows: true,
        linux: true,
    );
    runApp(const MyApp());
}

class MyApp extends StatelessWidget {
    const MyApp({super.key});

    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            title: 'Flutter Demo',
            theme: ThemeData(
                colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
                useMaterial3: true,
            ),
            home: const MyHomePage(),
        );
    }
}

class MyHomePage extends StatefulWidget {
    const MyHomePage({super.key});

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

class _MyHomePageState extends State<MyHomePage> {
    final String m3u8 = "https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8";
    final String vtt = "http://foo.com/file.vtt";

    late final VideoPlayerController _controller = VideoPlayerController.networkUrl(Uri.parse(m3u8));
    bool _inited = false;

    Future<void> _init() async {
        if(_inited) {
            return;
        }

        await _controller.initialize();
        await _controller.play();

        _controller.addListener(() { setState(() {
            print(_controller.value.caption.text);
        }); });
        // String vttString = (await http.get(Uri.parse(vtt))).body; Uncomment this for a remote vtt file
        String vttString = '''WEBVTT
00:07.174 --> 00:09.842
BARTON: Okay, hold on,
don't shoot.

00:10.928 --> 00:12.679
- You see where you're going?
- Mm-hmm.

00:12.846 --> 00:13.846
Okay.

00:14.014 --> 00:15.932
Now, let's worry
about how you get there.

00:16.809 --> 00:18.184
Gotta move your foot here.

00:18.686 --> 00:20.103
Point your toe this way.

00:20.479 --> 00:22.021
Your hips here.

00:22.231 --> 00:23.564
Okay?

00:24.358 --> 00:25.817
- Can you see?
- Yeah.

00:25.901 --> 00:26.984
- Are you sure?
- Mm-hmm.''';
        await _controller.setClosedCaptionFile(Future.value(WebVTTCaptionFile(vttString)));
        _inited = true;
    }

    @override
    void initState() {
        super.initState();
        _init();
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            body: Stack(
                children: [
                    Center(
                        child: AspectRatio(
                            aspectRatio: _controller.value.aspectRatio,
                            child: VideoPlayer(_controller),
                        ),
                    ),
                    Align(
                        alignment: Alignment.bottomCenter,
                        child: ClosedCaption(text: _controller.value.caption.text),
                    )
                ],
            ),
        );
    }
}

dependencies:
  video_player_media_kit: ^1.0.5
  media_kit_libs_video: ^1.0.4
  video_player: ^2.8.3
  http: ^1.1.0

Thanks for the code sample. I can reproduce the issue.
From my logs only the subtitles below are displayed.
Labeling for further investigation.
flutter: Okay.
flutter:
flutter: Gotta move your foot here.
flutter:
flutter: Point your toe this way.
flutter:
flutter: Your hips here.
flutter: Okay?

updated sample
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

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

class _MyHomePageState extends State<MyHomePage> {
  final String m3u8 =
      "https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8";
  final String vtt = "http://foo.com/file.vtt";

  late final VideoPlayerController _controller =
      VideoPlayerController.networkUrl(Uri.parse(m3u8));
  bool _inited = false;

  Future<void> _init() async {
    if (_inited) {
      return;
    }

    await _controller.initialize();
    await _controller.play();

    _controller.addListener(() {
      setState(() {
        print(_controller.value.caption.text);
      });
    });
    // String vttString = (await http.get(Uri.parse(vtt))).body; Uncomment this for a remote vtt file
    String vttString = '''WEBVTT
00:07.174 --> 00:09.842
BARTON: Okay, hold on,
don't shoot.

00:10.928 --> 00:12.679
- You see where you're going?
- Mm-hmm.

00:12.846 --> 00:13.846
Okay.

00:14.014 --> 00:15.932
Now, let's worry
about how you get there.

00:16.809 --> 00:18.184
Gotta move your foot here.

00:18.686 --> 00:20.103
Point your toe this way.

00:20.479 --> 00:22.021
Your hips here.

00:22.231 --> 00:23.564
Okay?

00:24.358 --> 00:25.817
- Can you see?
- Yeah.

00:25.901 --> 00:26.984
- Are you sure?
- Mm-hmm.''';
    await _controller
        .setClosedCaptionFile(Future.value(WebVTTCaptionFile(vttString)));
    _inited = true;
  }

  @override
  void initState() {
    super.initState();
    _init();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          Center(
            child: AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: VideoPlayer(_controller),
            ),
          ),
          Align(
            alignment: Alignment.bottomCenter,
            child: ClosedCaption(text: _controller.value.caption.text),
          )
        ],
      ),
    );
  }
}

flutter doctor -v
[!] Flutter (Channel stable, 3.19.3, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.19.3 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ba39319843 (4 days ago), 2024-03-07 15:22:21 -0600
    • Engine revision 2e4ba9c6fb
    • Dart version 3.3.1
    • DevTools version 2.31.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode-15.2.0.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.14.3

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

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

[✓] Connected device (4 available)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.3.1 21D61
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.3.1 21D61
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 122.0.6261.112

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

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 3.21.0-4.0.pre.14, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.21.0-4.0.pre.14 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1ca88730a0 (6 hours ago), 2024-03-11 18:31:25 -0700
    • Engine revision 6745955bb4
    • Dart version 3.4.0 (build 3.4.0-220.0.dev)
    • DevTools version 2.33.1

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode-15.2.0.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.14.3

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

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

[✓] Connected device (5 available)
    • Nexus (mobile)                  • 00008020-001875E83A38002E • ios            • iOS 17.3.1 21D61
    • Dean’s iPad (mobile)            • 00008103-000825C811E3401E • ios            • iOS 17.3.1 21D61
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google Chrome 122.0.6261.112

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

• No issues found!

I've encountered the same issue, and after some digging, I found out the problem.
The problem is with the WebVTTCaptionFile's parseCaptionsFromWebVTTString method.
    // Caption has header
    final bool hasHeader = captionLines.length > 2;

This check for a WebVTT header is unreliable mainly because WebVTT captions can have multiple lines.
00:12.846 --> 00:13.846     // This has only 2 lines so it is detected as not having a header.
Okay.

00:14.014 --> 00:15.932     // This has 3 lines and it's detected as having a header, even though it does not.
Now, let's worry
about how you get there.

The hasHeader check makes the caption get ignored in the following snippet:
    final _CaptionRange? captionRange = _CaptionRange.fromWebVTTString(
      hasHeader ? captionLines[1] : captionLines[0],
    );

    if (captionRange == null) {
      continue;
    }

    final String text = captionLines.sublist(hasHeader ? 2 : 1).join('\n');

This caption has no header and the caption range checker verifies the wrong line (in this case, the first caption text line).
To solve this issue, the unreliable hasHeader check needs to be modified. I replaced as follows, and the subtitles now show as expected:
    // The caption implicitly has no header.
    bool hasHeader = false;
    if (captionLines.length > 2) {
      final int? tryParseCaptionNumber = int.tryParse(captionLines[0]);
      if (tryParseCaptionNumber != null) {
        captionNumber = tryParseCaptionNumber;
        // As this caption has a caption number, it's safe to assume it has a header.
        hasHeader = true;
      }
    }

Full implementation:
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:convert';

import 'package:html/dom.dart';
import 'package:html/parser.dart' as html_parser;

import 'closed_caption_file.dart';

/// Represents a [ClosedCaptionFile], parsed from the WebVTT file format.
/// See: https://en.wikipedia.org/wiki/WebVTT
class WebVTTCaptionFile extends ClosedCaptionFile {
  /// Parses a string into a [ClosedCaptionFile], assuming [fileContents] is in
  /// the WebVTT file format.
  /// * See: https://en.wikipedia.org/wiki/WebVTT
  WebVTTCaptionFile(String fileContents)
      : _captions = _parseCaptionsFromWebVTTString(fileContents);

  @override
  List<Caption> get captions => _captions;

  final List<Caption> _captions;
}

List<Caption> _parseCaptionsFromWebVTTString(String file) {
  final List<Caption> captions = <Caption>[];

  // Ignore metadata
  final Set<String> metadata = <String>{'HEADER', 'NOTE', 'REGION', 'WEBVTT'};

  int captionNumber = 1;
  for (final List<String> captionLines in _readWebVTTFile(file)) {
    // CaptionLines represent a complete caption.
    // E.g
    // [
    //  [00:00.000 --> 01:24.000 align:center]
    //  ['Introduction']
    // ]
    // If caption has just header or time, but no text, `captionLines.length` will be 1.
    if (captionLines.length < 2) {
      continue;
    }

    // If caption has header equal metadata, ignore.
    final String metadaType = captionLines[0].split(' ')[0];
    if (metadata.contains(metadaType)) {
      continue;
    }

    // The caption implicitly has no header.
    bool hasHeader = false;
    if (captionLines.length > 2) {
      final int? tryParseCaptionNumber = int.tryParse(captionLines[0]);
      if (tryParseCaptionNumber != null) {
        captionNumber = tryParseCaptionNumber;
        // As this caption has a caption number, it's safe to assume it has a header.
        hasHeader = true;
      }
    }

    final _CaptionRange? captionRange = _CaptionRange.fromWebVTTString(
      hasHeader ? captionLines[1] : captionLines[0],
    );

    if (captionRange == null) {
      continue;
    }

    final String text = captionLines.sublist(hasHeader ? 2 : 1).join('\n');

    // TODO(cyanglaz): Handle special syntax in VTT captions.
    // https://github.com/flutter/flutter/issues/90007.
    final String textWithoutFormat = _extractTextFromHtml(text);

    final Caption newCaption = Caption(
      number: captionNumber,
      start: captionRange.start,
      end: captionRange.end,
      text: textWithoutFormat,
    );
    captions.add(newCaption);
    captionNumber++;
  }

  return captions;
}

class _CaptionRange {
  _CaptionRange(this.start, this.end);

  final Duration start;
  final Duration end;

  // Assumes format from an VTT file.
  // For example:
  // 00:09.000 --> 00:11.000
  static _CaptionRange? fromWebVTTString(String line) {
    final RegExp format =
        RegExp(_webVTTTimeStamp + _webVTTArrow + _webVTTTimeStamp);

    if (!format.hasMatch(line)) {
      return null;
    }

    final List<String> times = line.split(_webVTTArrow);

    final Duration? start = _parseWebVTTTimestamp(times[0]);
    final Duration? end = _parseWebVTTTimestamp(times[1]);

    if (start == null || end == null) {
      return null;
    }

    return _CaptionRange(start, end);
  }
}

String _extractTextFromHtml(String htmlString) {
  final Document document = html_parser.parse(htmlString);
  final Element? body = document.body;
  if (body == null) {
    return '';
  }
  final Element? bodyElement = html_parser.parse(body.text).documentElement;
  return bodyElement?.text ?? '';
}

// Parses a time stamp in an VTT file into a Duration.
//
// Returns `null` if `timestampString` is in an invalid format.
//
// For example:
//
// _parseWebVTTTimestamp('00:01:08.430')
// returns
// Duration(hours: 0, minutes: 1, seconds: 8, milliseconds: 430)
Duration? _parseWebVTTTimestamp(String timestampString) {
  if (!RegExp(_webVTTTimeStamp).hasMatch(timestampString)) {
    return null;
  }

  final List<String> dotSections = timestampString.split('.');
  final List<String> timeComponents = dotSections[0].split(':');

  // Validating and parsing the `timestampString`, invalid format will result this method
  // to return `null`. See https://www.w3.org/TR/webvtt1/#webvtt-timestamp for valid
  // WebVTT timestamp format.
  if (timeComponents.length > 3 || timeComponents.length < 2) {
    return null;
  }
  int hours = 0;
  if (timeComponents.length == 3) {
    final String hourString = timeComponents.removeAt(0);
    if (hourString.length < 2) {
      return null;
    }
    hours = int.parse(hourString);
  }
  final int minutes = int.parse(timeComponents.removeAt(0));
  if (minutes < 0 || minutes > 59) {
    return null;
  }
  final int seconds = int.parse(timeComponents.removeAt(0));
  if (seconds < 0 || seconds > 59) {
    return null;
  }

  final List<String> milisecondsStyles = dotSections[1].split(' ');

  // TODO(cyanglaz): Handle caption styles.
  // https://github.com/flutter/flutter/issues/90009.
  // ```dart
  // if (milisecondsStyles.length > 1) {
  //  List<String> styles = milisecondsStyles.sublist(1);
  // }
  // ```
  // For a better readable code style, style parsing should happen before
  // calling this method. See: https://github.com/flutter/plugins/pull/2878/files#r713381134.
  final int milliseconds = int.parse(milisecondsStyles[0]);

  return Duration(
    hours: hours,
    minutes: minutes,
    seconds: seconds,
    milliseconds: milliseconds,
  );
}

// Reads on VTT file and splits it into Lists of strings where each list is one
// caption.
List<List<String>> _readWebVTTFile(String file) {
  final List<String> lines = LineSplitter.split(file).toList();

  final List<List<String>> captionStrings = <List<String>>[];
  List<String> currentCaption = <String>[];
  int lineIndex = 0;
  for (final String line in lines) {
    final bool isLineBlank = line.trim().isEmpty;
    if (!isLineBlank) {
      currentCaption.add(line);
    }

    if (isLineBlank || lineIndex == lines.length - 1) {
      captionStrings.add(currentCaption);
      currentCaption = <String>[];
    }

    lineIndex += 1;
  }

  return captionStrings;
}

const String _webVTTTimeStamp = r'(\d+):(\d{2})(:\d{2})?\.(\d{3})';
const String _webVTTArrow = r' --> ';


[RFE] Have an audit mode for the Seccomp Policy Advisor

Current situation
Our seccomp policy advisor generates a policy that causes any syscall not included in the allowed list to raise an error. If this error is raised, it's not particularly clear to the user that it was caused by the Seccomp Policy. This can be confusing and it might be very hard to figure out if something is failing due to a blocked syscall or something else.
Seccomp itself has an audit mode, which prevents the calls from failing and outputs a log message to audit.log instead. However, this is also not particularly useful in Kubernetes, as the user needs to access the audit.log of the node to get the information of which syscalls didn't match the policy.
Impact
It's hard to validate Seccomp Policies, regardless of whether they are set to default to ERRNO or AUDIT.
Ideal future situation
The seccomp policy advisor could have an audit mode that generates events whenever a syscall gets blocked due to the applied policy, including the information of which namespace/pod/container generated the disallowed call.

I was looking if the tracepoint sys_enter could detect a syscall that is denied by a seccomp policy. It can't detect it because trace_sys_enter is done after __secure_computing, see syscall_trace_enter.
I also confirmed this by experimenting with the seccomp gadget: when a pod with an existing SeccompProfile executes a forbidden syscall, this is not detected by Inspektor Gadget (the seccomp gadget uses the sys_enter tracepoint).
One solution for this problem is to use SECCOMP_RET_USER_NOTIF (Seccomp Notify) instead of SECCOMP_RET_ERRNO for blocked syscalls. We would use a seccomp agent such as https://github.com/kinvolk/seccompagent to handle the notifications. But it would require runc 1.1 (still unreleased) along with other dependencies.
cc @rata

@alban that is a nice idea! However, we need the seccomp agent to be more robust for real users to do that in production. Right now the seccomp agent is nice, but if it crashes for some reason then all the running pods in the node can't issue syscalls and such. The only way out is to restart all the containers in the node if the seccomp agent crashes today.
I think, though, that improving the seccomp agent is the way to go. The more the seccomp agent handles, the more flexibility we have (it is a user-space program, after all). Of course, we shouldn't forget about the kernel limitation on what is safe to do there.
However, in the mean time, if a failed syscall can generate an entry in the audit.log of the host and some IG pod pick those up to easily show them to the user (grouped by pod/container will be great!), that seems more robust to me.
What do you think?

What about using  SECCOMP_RET_TRACE ? https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html#return-values
We would still need to have the tracing filter that does the work, but maybe this is something that wouldn't depend on an unreleased runc version?

I think both options (Seccomp's audit mode SECCOMP_RET_LOG and Seccomp Notify SECCOMP_RET_USER_NOTIF) are worth exploring.

If it is just for an audit mode in the Seccomp Policy Advisor gadget to help users improving SeccompProfiles, then SECCOMP_RET_LOG could be enough and more compatible with older distros, even if parsing audit.log is not ideal.
For more advanced use cases, SECCOMP_RET_USER_NOTIF would be preferable: we could then synchronously react to a blocked syscall by freezing a container for forensics, or get the Golang stack that triggered the blocked syscall via http://localhost/debug/pprof/goroutine?debug=2 if it is a Golang program with pprof enabled, etc. If the Seccomp Agent is only used for blocked syscalls, then its reliability is not such a big problem because it would only impact processes that try to call forbidden syscalls (by returning ENOSYS).

@alban oh, right, it will only be blocked syscalls, so it should not be that bad if the seccomp agent crashes. Cool, +1 :)

About audit.log:
Seccomp can log a syscall either if the seccomp program returns SCMP_ACT_LOG or if the seccomp() syscall was done with SECCOMP_FILTER_FLAG_LOG, configurable with the global sysctl /proc/sys/kernel/seccomp/actions_logged. Either way, audit does not gives any way to distinguish the container: there is no namespace or cgroup information. The process might be gone by the time we read /proc/$pid. Example of audit log in /var/log/audit/audit.log:
type=SECCOMP msg=audit(1635936929.358:12242): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=kernel pid=1752754 comm="mkdir" exe="/bin/mkdir" sig=0 arch=c000003e syscall=83 compat=0 ip=0x4ba511 code=0x7ffc0000^]AUID="unset" UID="root" GID="root" ARCH=x86_64 SYSCALL=mkdir

There are some discussions to make it container-aware but it is not done:
https://lwn.net/Articles/699819/

IG could add a kprobe on audit_seccomp (called for SCMP_ACT_LOG) and then current->nsproxy->mnt_ns->ns.inum to identify the container.


Test2

Description
Checklist

[ ] test case
[ ] doc

How to test

Sorry, clicked a wrong button in github.


print errorMessage code added

Hello
Dear karmer and everyone.
today, i got a error. when i request to bulk action.
but, i could not check the error Message.
because, my return type of  called method is boolean type.
return JestResult.isSuccessed();
so, i added print error message code.
It is enable when i set to debug log level.
could i suggest to you?

Please do not commit auto-formatted, rearranged or reformatted code; this change is only about the single line of log.debug and (your) commit should be only for that line.

thank you for your reply.
i removed reformatted code.

Thanks for your contribution @happyprg !


Fix Small Image Preview Sizing.

Before the sizing of the preview would be 100px in height regardless of
whether the image was that tall. Now it is any value up to 100px.

Automated message from Dropbox CLA bot
@brockwhittaker, it looks like you've already signed the Dropbox CLA. Thanks!

Merged, thanks @brockwhittaker!!


1.19.2 Crash

When I load into the world, the mod crash. Here is the crash report.
crash-2023-02-13_17.39.16-client.txt

Fixed in upcoming FactionCraft 1.19.2-1.2.0


update android gradle plugin version to 2.2.2

Similar to https://github.com/facebook/react-native/commit/6bfabee0f848b3126f02729a16c42e2ff0976d12 but upgrading to 2.2.x which is the latest stable version as listed in http://tools.android.com/tech-docs/new-build-system

LGTM if it doesnt break anything :)

Android tests are passing, let's give it a shot.
@facebook-github-bot shipit


Define custom hosts entries in /etc/hosts on each machine

In cases where you have an external NFS server, which is not resolvable via an DNS server, it would be nice to be able to add custom entries.

Implemented with 38aa70bd17b2f67fdb4f32b867bdcc968835960d
In the config file, i've added a variable called EXTRA_HOSTS.
If you add hosts entries to that, they will be populated to each machine created by Vagrant.
Example:
export EXTRA_HOSTS="
<IP_ADDRESS> nfs-server.example.com
<IP_ADDRESS> mail-server.example.com
"


UofT | DSI - SQL homework1

Yihui Zhu - homework1
What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
What did you learn from the changes you have made?
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
How were these changes tested?
A reference to a related issue in your repository (if applicable)
Checklist

[x] I can confirm that my changes are working as intended

UofT DSI_homework1.pdf


Links of type [[...]] not supported

Links of the format [[....]] are not supported by grip . In this type, markdown like [[A Link]] links to A-Link.md in the same directory. They have been used extensively in android-guides wiki
* [[Using Context]] (What is context and how is it used?)
* [[Android Directory Structure]] (Files and Folders for Android apps)
* [[Organizing your Source Files]] (Cleaning up source of your apps)

Grit detects "What is context and how is it used?" as the link.

Wiki-specific features aren't supported by the GitHub markdown API, and so aren't supported by Grip either. The workaround is to use the more general Markdown syntax [A-Link.md](a link).
Thanks for the issue, @aviaryan.


Ordering of action

Hi,
This may be more of a question about Gradle configuration, I'm not sure, but I can't find the answer in the Gradle docs.
How do you specify when the minification should run?
I have a number of custom tasks (e.g. to combine many JS files into one) which I want to run after minification but they're currently running before.
I've tried specifying them as
task combineJs(dependsOn: minify) { ... }
and
task combineJs() {
  mustRunAfter "minify"
  ...
}

but neither work.
Many thanks for releasing this plugin, it's great.

Hi
thank you for using the plugin.
Your question is a gradle question but I will try to help you.
In my project the setup is reversed: I have a "buildStatic" task that updates the js and css files and then the minify ist called.
I do this with
buildStatic.finalizedBy minify.
Maybe you could try that reversed.
I'm always having problems with ordering when adding tasks one might be missing "doLast" section.
Maybe this on stackoverflow helps you:
https://stackoverflow.com/questions/19682011/gradle-dependson-ordering
This is an interesting statement from there:
"dependsOn doesn't fix any order for the tasks"

Thanks for the quick reply - it was a doLast that I was missing.


ix(electrumx): Fixed connect/disconnect bug that was preventing tests

:tada: This PR is included in version 1.22.8 :tada:
Your semantic-release bot :package::rocket:


Failed to load delegate from edgetpu.dll

Description
C:|Users\pycoral>py examples/detect_image.py -m test_data/efficientdet-lite-mini_dataset.tflite -l test_data/labels.txt -i test_data/prova.jpg -o test_data/result.jpg
Traceback (most recent call last):
File "C:\Python\Python39\lib\site-packages\tflite_runtime\interpreter.py", line 160, in load_delegate
delegate = Delegate(library, options)
File "C:\Python\Python39\lib\site-packages\tflite_runtime\interpreter.py", line 119, in init
raise ValueError(capture.message)
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\pycoral\examples\detect_image.py", line 108, in
main()
File "C:\Users\pycoral\examples\detect_image.py", line 73, in main
interpreter = make_interpreter(args.model)
File "C:\Python\Python39\lib\site-packages\pycoral\utils\edgetpu.py", line 87, in make_interpreter
delegates = [load_edgetpu_delegate({'device': device} if device else {})]
File "C:\Python\Python39\lib\site-packages\pycoral\utils\edgetpu.py", line 52, in load_edgetpu_delegate
return tflite.load_delegate(_EDGETPU_SHARED_LIB, options or {})
File "C:\Python\Python39\lib\site-packages\tflite_runtime\interpreter.py", line 162, in load_delegate
raise ValueError('Failed to load delegate from {}\n{}'.format(
ValueError: Failed to load delegate from edgetpu.dll
Any ideas how to fix?
Click to expand!
Issue Type
Support
Operating System
Windows 10
Coral Device
USB Accelerator
Other Devices
No response
Programming Language
Python 3.8, Python 3.9
Relevant Log Output
No response

@andreamaglione have you installed the edgetpu runtime.
If yes, please add the below lines at import section in your test script and share the logs:
from pycoral.pybind._pywrap_coral import SetVerbosity as set_verbosity
set_verbosity(10)

Errors went away after I ran the examples on Linux bare metal. I guess it was trying to update the firmware of the Coral through the Windows VM, and that caused USB hotplugging issues. Now works over Windows VM.


Ignore .DS_Store

Thank you for great cheatsheets collection!
.DS_Store is a file that stores custom attributes of its containing folder, such as the position of icons or the choice of a background image. It shouldn't be in repository.

Awesome @orsinium! Thanks for the help :)


travis: build on openjdk8

Travis, are you there? It should help #17

@xuhdev by going back to trusty it seems ok.

Thanks!


Update TorBrowser to v10.5

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

PS D:\Git\winget-pkgs> winget validate --manifest D:\Git\winget-pkgs\manifests\t\TorProject\TorBrowser\10.5.0
Manifest validation succeeded.

PS D:\Git\winget-pkgs> winget install -m D:\Git\winget-pkgs\manifests\t\TorProject\TorBrowser\10.5.0
Found Tor Browser [TorProject.TorBrowser]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://www.torproject.org/dist/torbrowser/10.5/torbrowser-install-win64-10.5_en-US.exe
  ██████████████████████████████  70.6 MB / 70.6 MB
Successfully verified installer hash
Starting package install...
Successfully installed

Microsoft Reviewers: Open in CodeFlow

@ImJoakim Would you be able to help me understand why this might be failing? Both packages install perfectly fine on my local machine, and I'm not seeing anything in the pipeline outputs indicating why it failed the installation validation

@ImJoakim Would you be able to help me understand why this might be failing? Both packages install perfectly fine on my local machine, and I'm not seeing anything in the pipeline outputs indicating why it failed the installation validation

@Trenly Try closing the PR and reopening it again, this will make it run through the pipeline again.


Feat/wallet

Turning the Blossom extension into a wallet.
New features:

Checking balance of the current account
Sending ether
Wallet lock
Importing ERC20 tokens
Checking balance of tokens
Sending tokens
List of sent transactions
Providing API for dApps to interact with wallet

@IgorShadurin Changes are made in this PR. I separated wallet fixes there because the PRs are already too large.


Track Karol's backports to 0.16.x

DialogTech stabilization of Celluloid 0.16.x
Developer: @kares
Reviewer: @sfgeorge

@kares changes look groovy! 👍
@mattcar Can you merge this for me?


Support for Sylius stable 1.0

Bundle has now converted to plugin, and upgraded to work with Sylius 1.1.*


Fix some typos in src/app/tests/suites/certification/Test_TC_CADMIN_1…

…_*.yaml
Problem
When working on running yaml tests with the python parser I have found that TC_Admin_1_*.yaml tests contains some typos. While I can fix the parser to be fine with those I prefer to keeps is stricter. Especially since for those specific typos we can see that NodeId is written in 3 different ways: NodeId, nodeId, nodeID...

It is interesting to note that zap was complaining because some of the node id values were not generated previously and I have not added them into this PR (which I will do now...)


Update README.md - change my_release to my-release

Underscores are not supported by kubernetes, so generating names with "my_release" prefix breaks the installation on the apply to kubernetes step. It looks like a simple typo as in the next commands hyphen is used instead of underscore.

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


Use itemSizeGetter if provided

This pull request makes it so that itemSizeGetter is used even if the type is uniform.
If no itemSizeGetter is provided it falls back to (the original method of) reading firstEl[OFFSET_SIZE_KEYS[axis]].
This is not just a (minor) performance boost, but actually fixes a bug: margin's are not taken into account when determining an item's size.
Other options to fix this include:

Getting the element's margin's from getComputedStyle and adding it on
Asking for the margin's to passed in as a prop

This method seemed easiest and made use of an existing prop that was ignored unexpectedly.

You'll want to use the variable type when using itemSizeGetter. I added a note to the docs to clear that confusion up. Regarding margins, they are not supported with the uniform type.


Fix NPE in BulkPortal

executeBulk of UpsertByIdTask could return a List containing null
entries. This caused a NPE in the BulkPortal because it casts to long.
Since it is unclear to the consumer if null indicates an error or
unknown-row-count this commit also clarifies the contract of
executeBulk to not allow null values at all.
Relates to d4203e9c0d24ea03c4639f73417c3d2ef160b673 and fixes one
possible testKilledAllLog failure.

lgtm


Add recent updates to changelog

cc @gregg-miskelly

@gregg-miskelly: I'm going to go ahead and merge this so I can push the v1.6-beta4 release. Let me know if you have any tweaks or suggestions and I'll make them in a follow-up PR.

@DustinCampbell LGTM


add product version to the download-file.json

It would be good to add product_version to the download-file.json like stemcell_version.
e.g.
{
  "product_path": "p-healthwatch-1.5.2-build.4.pivotal",
  "product_slug": "p-healthwatch",
  "product_version": "1.5.2",
  "stemcell_path": "light-bosh-stemcell-170.51-google-kvm-ubuntu-xenial-go_agent.tgz",
  "stemcell_version": "170.51"
}

Why is this information useful? What would you use it for?

I would like to have first a download only pipeline which has a broader glob, like 2.5.*, in the download-product config files. After downloading and storing the artifacts in s3, at the end of the pipeline all exact versions, like 2.5.3, are committed to the download-product-s3 config files of the first stage, sandbox. The sandbox pcf deploy pipeline is triggered on that commit and does install/upgrade the known versions. Again at the end of the sandbox pipeline, the exact versions are committed to the download-product-s3 config files of the second stage, dev... and so on.
This allows to track in git the versions deployed and roll a specific set of product versions automatically through multiple stages.
Does that make sense?

PR welcome, but we do have this prioritized.
If you would like to start working on it, please tell us, and we'd love to work with you on this.
To clarify, does this get used by assign-stemcell at all or is this strictly to optimize another workflow?
We had discussed as a team maybe outputting an additional file (not called assign-stemcell.json that could have this value (and perhaps other values in the future that might be deemed useful). @vchrisb

Happy to do a PR, as this should be easy. DownloadProductOptions already includes ProductVersion in https://github.com/pivotal-cf/om/blob/46ce73cb58cb29472d606b40de89ca771e317656/commands/download_product.go#L48
It would be used to as described in the previous comment and I think download-file.json is a good place.

@vchrisb, sounds like that would be easy enough to pass through.
My first thought was to grab the product version from the downloaded tile itself, but as that product can be opsman, a tile, a stemcell, or even a terraform template (or more!) that might get complicated really fast, and potentially be unreliable.
Like I said though, if you have time and want to get it hashed out, feel free, but we do have this coming up in the next couple of weeks in our backlog.
are you thinking download-file.json as another outputted file?

@kcboyle I've done a PR to add the functionality

PR has been merged


Unofficial Azure CLI deb packages are distributed by Linux repositories

Community packagers release unofficial Azure CLI deb packages on multiple Linux repositories. These packages are not maintained by Microsoft, outdated, and contain various bugs.
Ubuntu
2.0.81 for Focal 20.04
Package: https://packages.ubuntu.com/source/focal/azure-cli
Issues: https://github.com/Azure/azure-cli/issues?q=is%3Aissue+2.0.81
2.18.0 for Hirsute 21.04
Package: https://packages.ubuntu.com/hirsute/python3-azure-cli
Issues: https://github.com/Azure/azure-cli/issues?q=is%3Aissue+2.18.0
Debian
2.18.0 for Bullseye 11
Package: https://packages.debian.org/bullseye/azure-cli
Issues: https://github.com/Azure/azure-cli/issues?q=is%3Aissue+2.18.0
2.37.0 for sid (unstable)
Package: https://packages.debian.org/sid/azure-cli
How unofficial Azure CLI is installed
Ubuntu 20.04 Focal, Debian 11 Bullseye
The user doesn't follow the Install the Azure CLI on Linux official document to add Microsoft Linux Repo (https://packages.microsoft.com/repos/azure-cli/) to apt. apt install azure-cli will install the above unofficial ones from Debian/Ubuntu repo.
Debian sid
Even though the user added Microsoft Linux Repo (https://packages.microsoft.com/repos/azure-cli/) to apt, apt update fails because we don't release deb package for Debian sid:
# AZ_REPO=$(lsb_release -cs)
# echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | tee /etc/apt/sources.list.d/azure-cli.list
# echo $AZ_REPO
sid
# apt update
Hit:1 http://deb.debian.org/debian sid InRelease
Ign:2 https://packages.microsoft.com/repos/azure-cli sid InRelease
Err:3 https://packages.microsoft.com/repos/azure-cli sid Release
  404  Not Found [IP: <IP_ADDRESS> 443]
Reading package lists... Done
E: The repository 'https://packages.microsoft.com/repos/azure-cli sid Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

apt install azure-cli will install the unofficial 2.37.0.

feature request

https://packages.microsoft.com/ is the ONLY source where official Azure CLI packages are distributed.
Install official Azure CLI
To install the latest official Azure CLI, please follow the official document: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt
Uninstall unofficial Azure CLI
If you have already installed the unofficial Azure CLI, you may uninstall it first with
sudo apt remove azure-cli --yes && sudo apt autoremove --yes

In a docker container:
apt remove azure-cli -y && apt autoremove -y

Then install from the official source.

On debian testing, when I'm using the automated installed (curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash), it still installs the debian package, because it has a newer version (official is 2.30.0-1~buster, while debian is 2.30.0-2).

https://github.com/Azure/azure-cli/pull/20557

@bluca, I noticed that recently you have published azure-cli (2.33.0-2) for Debian sid: https://packages.debian.org/sid/azure-cli

This makes it impossible to install official Azure CLI 2.33.0 from https://packages.microsoft.com/repos/azure-cli/
What is the best way to install official Azure CLI from https://packages.microsoft.com/repos/azure-cli/ , instead of Debian's repo?

How to tell if the Azure CLI is official
An unofficial Azure CLI will show info like this (from https://github.com/Azure/azure-cli/issues/21254):
Linux-5.15.0-3-amd64-x86_64-with-glibc2.33, Debian GNU/Linux bookworm/sid
Python 3.9.10
Installer: DEB

We can tell this is not an Azure CLI deb package released by Microsoft, because the official Azure CLI deb package doesn't bundle Python 3.9.10. Instead, the bundled Python in the official deb package is currently 3.6.10. (We are working on moving to Python 3.8 in https://github.com/Azure/azure-cli/pull/20869.)

How to tell if the installed Azure CLI is unofficial
An unofficial Azure CLI has dist-packages in its call stack (https://github.com/Azure/azure-cli/issues/22546):
The command failed with an unexpected error. Here is the traceback:
'RoleDefinitionsOperations' object has no attribute 'config'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/knack/cli.py", line 231, in invoke
    cmd_result = self.invocation.execute(args)
  File "/usr/lib/python3/dist-packages/azure/cli/core/commands/__init__.py", line 658, in execute
    raise ex
  File "/usr/lib/python3/dist-packages/azure/cli/core/commands/__init__.py", line 721, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/usr/lib/python3/dist-packages/azure/cli/core/commands/__init__.py", line 692, in _run_job
    result = cmd_copy(params)
  File "/usr/lib/python3/dist-packages/azure/cli/core/commands/__init__.py", line 328, in __call__
    return self.handler(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
  File "/usr/lib/python3/dist-packages/azure/cli/command_modules/role/custom.py", line 49, in list_role_definitions
    definitions_client.config.subscription_id)
AttributeError: 'RoleDefinitionsOperations' object has no attribute 'config'

dist-packages is Ubuntu Python's equivalent location of the official Python's site-packages.

The unofficial package 2.0.81 on Ubuntu repo also contains a bug that makes keyvault commands fail (https://github.com/Azure/azure-cli/issues/13101):
az keyvault secret show

Errors:
No module named 'azure.keyvault.v7_0'
Traceback (most recent call last):
python3/dist-packages/knack/cli.py, ln 206, in invoke
    cmd_result = self.invocation.execute(args)
cli/core/commands/__init__.py, ln 528, in execute
    self.commands_loader.load_arguments(command)
azure/cli/core/__init__.py, ln 299, in load_arguments
    self.command_table[command].load_arguments()  # this loads the arguments via reflection
...
<frozen importlib._bootstrap>, ln 1014, in _gcd_import
<frozen importlib._bootstrap>, ln 991, in _find_and_load
<frozen importlib._bootstrap>, ln 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'azure.keyvault.v7_0'

Possible solutions

Remove the alias azure-cli from https://packages.debian.org/sid/azure-cli, and only use the name python3-azure-cli so that it can be distinguished from Microsoft's azure-cli.
Pull down the package azure-cli from Debian/Ubuntu repo https://packages.debian.org/sid/azure-cli.
Force installing from packages.microsoft.com: https://github.com/Azure/azure-cli/pull/20557

Possible solutions
1. Remove the alias `azure-cli` from https://packages.debian.org/sid/azure-cli, and only use the name `python3-azure-cli` so that it can be distinguished from Microsoft's `azure-cli`.

2. Pull down the package `azure-cli` from Debian/Ubuntu repo https://packages.debian.org/sid/azure-cli.

3. Force installing from `packages.microsoft.com`: [{Packaging} Prioritize official package over the dist one #20557](https://github.com/Azure/azure-cli/pull/20557)

Please consider this soon, deb upgrade overwrites the microsoft distributed one with the broken one unless you freeze/hold the package, which is unexpected and not novice friendly.

Thanks everybody for your time in this project, I really appreaciate it.
I'm not able to get installed the official packages in debian.
Steps to reproduce

Uninstall

sudo apt remove azure-cli -y && sudo apt autoremove -y
sudo rm -fr sudo rm -fr /etc/apt/sources.list.d/zure-cli.list

Install

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

Display version

az --version | grep "Extensions system"
Expected behaviour
See "site-packages' in the path (as per https://github.com/Azure/azure-cli/issues/23990#issuecomment-1272255697)
Extensions system directory '/usr/lib/python3.9/site-packages/azure-cli-extensions'
Found behaviour
Extensions system directory '/usr/lib/python3/dist-packages/azure-cli-extensions'
Errors
None

@jlegido Looks like you're still install azure-cli from Debian sid. (jiasli has explained above)
You need an extra step, run this and check again.
echo 'Package: azure-cli
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001'        | sudo tee /etc/apt/preferences.d/azure-cli

sudo apt update & sudo apt install azure-cli

@bebound @jiasli thanks for your assistance, below commands are the ones that worked for me:
sudo apt remove azure-cli -y && sudo apt autoremove -y
sudo rm -fr sudo rm -fr /etc/apt/sources.list.d/zure-cli.list

echo 'Package: azure-cli
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001'        | sudo tee /etc/apt/preferences.d/azure-cli

sudo apt update & sudo apt install azure-cli

To be honest official installation guide should be updated, since none of proposed ways works currently.

IMHO you really should cooperate with proper packagers, and instead of pushing back to whoever reports bugs from the package in the debian archive, try to understand them.

I think maybe someone should start the process of removing this package from the debian repositories entirely.

IMHO you really should cooperate with proper packagers, and instead of pushing back to whoever reports bugs from the package in the debian archive, try to understand them.

Unfortunately, the debian archive maintainer is pretty much entirely inactive.

Incredibly dismaying, but the art of making proper debian packages is a lost one. Virtual environments (pyenv, docker, etc) have only accelerated this decay, as the competency to do proper dependency management is pretty much non-existent now.

Debian bookworm now has unofficial Azure CLI 2.43.0 released:
https://packages.debian.org/bookworm/azure-cli

This causes issue https://github.com/Azure/azure-cli/issues/24959.
Debian sid now has unofficial Azure CLI 2.44.1 released:
https://packages.debian.org/sid/azure-cli

I reported this here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034526
Would it be possible to redirect people to the Debian bug tracker if they report bugs specific to the Debian packages, instead of just pointing them to this Github issue? A link to https://www.debian.org/Bugs/Reporting should be sufficient.
Ubuntu bug reporting is described here: https://help.ubuntu.com/stable/ubuntu-help/report-ubuntu-bug.html.en


Message about the watcher_timer_init closure requiring immediate exec

Noticed this requirement when making a change of using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN. Just adding a comment so that this requirement is known.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Not waiting for all tests to finish, since it's just documentation.

[microbenchmarks] No significant performance differences


Nothing's is working here, the code can't even be built

Welcome to FirebaseUI and thanks for submitting an issue!
Please take a look at open issues, as well as resolved issues, to see if your issue is either already being addressed, or has been solved by someone else.
If not, please feel free to fill in the following info so we can help faster!
Step 1: Are you in the right place?

For issues or feature requests related to the code in this repository file a GitHub issue.
For general technical questions, post a question on StackOverflow tagged appropriately.
For general Firebase discussion, use the firebase-talk google group
For help troubleshooting your application that does not fall under one of the above categories, reach out to the personalized Firebase support channel

Step 2: Describe your environment

Android device: _____
Android OS version: _____
Google Play Services version: _____
Firebase/Play Services SDK version: _____
FirebaseUI version: ____

Step 3: Describe the problem:
Steps to reproduce:

Observed Results:

What happened?  This could be a description, logcat output, etc.

Expected Results:

What did you expect to happen?

Relevant Code:
// TODO(you): code here to reproduce the problem

@amiel-danao please fill the issue template when opening an issue


update git fetch loop

@LogaJ as I was cycling home, I was thinking this over a little.. here a suggestion. Best review commit individually to see reason for change.


WIP: Libvirt SEV-SNP support

WIP Adds support for SEV-SNP.
For reference: https://libvirt.org/kbase/launch_security_sev.html
I currently also have a commit for remote libvirt connection cherry-picked on for testing purposes (using a remote machine with sev support, but running the cluster on my machine at the moment)
If LAUNCH_SECURITY is specified as "sev" and the machine suppports sev, it adds the necessary changes.
Some questions I have on the implementation:

I have the sev changes be modifications of the x86_64 domainxml creation. I was debating whether it would be better to just create a whole separate domainxml creation function to isolate it more. I especially don't feel very comfortable with how I overwrote one of the disks and think that it might be better to make everything explicit. Thoughts?
The reason the disk had to be overwritten was because q35 machines do not support IDE connections. I tried connecting a disk with SATA, but it threw an error (bug?), so I switched to SCSI. Let me know if there are better ways to do this.
In terms of guest policy (https://libvirt.org/formatdomain.html#launch-security), I left everything as disabled because I assumed this was currently mostly being used for testing and being permissive would be fine. Should this be set to anything specific or be specifiable?
I assumed that secure boot should be on for the DomainLoader. Also, set it as stateless for boot attestation.
In https://libvirt.org/kbase/launch_security_sev.html#memory, it mentions two ways of addressing the extra memory needed. We chose to add 512 MiB on top of the 8 GiB and it seems boot successfully.

I need help determining what exactly I should be testing.
in terms of manual testing, I have been building an image and uploading it to a separate quay repository. I was having trouble setting up a cluster on a remote machine, so I am setting up a cluster locally and having the peer-pod vm be created on the remote machine. However, I have also been having trouble in containerCreating when creating a remote instance. Also, if you try this route, note that install_operator.sh assumes that you are not using a remote_uri and will overwrite libvirt_uri in the kustomization file with the local ip and user, so that will need to be manually changed back.

I have few thoughts from a general design standpoint.

How about using disable-cvm CLI option (like in Azure provider) to indicate whether to launch a regular VM or a confidential VM ? This will bring in consistency.
Detecting whether the host/libvirt supports SEV, SEV-SNP or TDX capabilities in the code itself and based on that creating the VM using correct options

cc @wainersm @snir911

I have few thoughts from a general design standpoint.
1. How about using `disable-cvm` CLI option (like in Azure provider) to indicate whether to launch a regular VM or a confidential VM ? This will bring in consistency.

2. Detecting whether the host/libvirt supports SEV, SEV-SNP or TDX capabilities in the code itself and based on that creating the VM using correct options

cc @wainersm @snir911

Thanks for the comments!
Afaik, libvirt has a single flag for whether sev is supported and I don't see anything about tdx.

It does not actually look like libvirt currently has support for SNP, but I will just get SEV and the general confidential vm enabling for libvirt done.

Moving this to #1397 since it looks like SNP is not supported yet.


vue-element-admin vue3稳定版  多个公司已上线项目，舒服！！！！

vue3-admin-plus
English | 中文

vue3 admin plus provides enterprise-level development demo

A new  generation admin  construct   using  vue3(setup-script)+vite2+element-plus ，It's fast!
Use eslint+prettier+gitHooks format and verification code to improve code standardization and development efficiency
Vite need Node.js >= 12.0.0。
Update log
--- to look the doc

真香定律！带你用vue3+vite2撸后台（系列文章入口）

Documents

真香定律！带你用vue3+vite2撸后台（系列文章入口）

Online experience
github address
Access address
国内体验地址：http://<IP_ADDRESS>/vue3-admin-plus
github 地址：  https://github.com/jzfai/vue3-admin-plus.git
Demo
---- Let's look at the loading speed and the size of the built package first.：

Related items
The framework is available in js, ts , plus and electron versions

js version：vue3-element-admin
ts version：vue3-element-ts
js version for plus：vue3-element-plus
js version for electron：vue3-element-electron
react version： react-admin-template
java Micro-service background data：micro-service-plus

development and  experience：two words  Really fragrant！！！！！

Comparison of performance between vue3 and vue2

41% reduction in package size

The initial rendering is 55% faster, the update rendering is 133% faster

Memory reduction 54%

Use Proxy instead of defineProperty to implement data responsiveness

Rewrite the implementation of virtual DOM and Tree-Shaking

Comparison of packaging speed between vite2 and webpack
Build Setup
# clone the project
git clone https://github.com/jzfai/vue3-admin-plus.git

# enter the project directory
cd vue3-admin-plus

# pnpm address https://pnpm.io/zh/motivation
# install dependency(Recommend use pnpm)
# you can  use "npm -g i pnpm" to install pnpm
pnpm i

# develop
pnpm run dev

using the browser to open http://localhost:5006
Build
# build for test environment
pnpm run build-test

# build for production environment
pnpm run  build

Others
# preview the release environment effect
pnpm run preview

# code format check
pnpm run lint

Extra
Architecture development is not easy. If you feel good, please give me a start. The architecture is still being improved. Welcome to join me in development and become Contributors together! ! ! !
Browsers support
Note: Vue3 is not supported the Internet Explorer
Modern browsers and Internet Explorer 11+.

IE / Edge
Firefox
Chrome
Safari

Edge
last 2 versions
last 2 versions
last 2 versions

Discussion and Communication
WeChat group
License
MIT license.
Copyright (c) 2022-present  kuanghua

支持

微信群，能拉一下吗

求拉群 , wx: steven_lcy