Update pull request template

Summary
This PR updates the pull request template. It's pretty much a downstream from https://github.com/mattermost/mattermost-server/pull/10142. Please take a look at the server PR for further information and discussion.

@hanzei Would you like a dev review on this one?


[macOS] Add support for the touch bar in the new macbook

Hello :),
I think many people are using visual studio code with macbooks, Adding shortcuts and features to the new touch bar in the upcoming macbooks pro can be useful and more productive for future owners :).

Blocked by https://github.com/electron/electron/issues/7781

Apart from the core, I guess also extensions which provide new windows should be able to add their owns if it makes sense.

I would also like to add and request if we can make this context-aware - e.g., when editing a Markdown document, the Markdown plugin/service should be able to provide useful context-specific shortcuts and features in the TB, or have debugging controls appear when debugging an app.

Also waiting for this one :) :+1:

A killer feature would be to have the breakpoint controls appear on the touch bar while debugging at runtime.

Would be really, really nice to have Intellisense suggestions go there. (They'd be laid out horizontally  instead of vertically, but even then it would be pretty cool. And it could provide scrolling)

It would be nice to be able to adjust the touch bar controls thru the extensions api.

Hi, Correct me when i'm wrong. but we should wait with building the touchbar feature until electron is ready.
here is the issue over at electron, about the new Touchbar feature: https://github.com/electron/electron/issues/7781

This would be great, some defaults like "Step Into" and "Step Over" when debugging, go to definition, find all references, comment this line etc.. as someone mentioned above, contextual stuff when in different file types would also be awesome.

touchbar support would be sooo nice!

Please bring touch bar support soon

Any news about this? :D

Finally :) !
Been using Electron 1.6 with native ES2015 support (without babel finally...) and it's great and now they're adding touch bar API support, they're really working hard on Electron and that's awesome, kudos to the Electron community.

Correct me if I'm wrong, but the package.json file has this line in it:
"electronVersion": "1.4.6"
Is vscode really using such an old version of Electron? If so, it might be difficult to update to 1.6.3

@avrame 1.4.6 isn't that far behind 1.6, the minor 1.5 was pretty much skipped and there aren't many massive changes between 1.4 and 1.6 👍

@MarshallOfSound
Two words : Native ES2015 :). but I don't see Babel in the package.json or anything similar so vscode might not find this electron update quite useful.
But I never enjoyed using babel with Electron.js, and it's great they fixed that by updating the nodeJs to v7+.

@mrmlnc ping :(

@mrmlnc Electron is now at 1.6.3 which includes touch bar support!

Looks like the electron upgrade is still WIP over here https://github.com/Microsoft/vscode/pull/23800
In meantime I have been looking at how to implement this feature, docs over here https://github.com/electron/electron/blob/master/docs/api/touch-bar.md
Was thinking that the buttons that appear need to be:
Configurable
Settings to configure what appears, so things I use most have the button in place.
New buttons added by extension
When I use the gulp extension I should be able to see gulp on my command strip.
Context aware
Not necessarily in initial implementation however but the implementation needs to be built so it doesn't require a breaking change to add this. The idea earlier about debug controls sounds pretty sweet.

it can be a very killer feature
moreover I do not known other free IDE that support toucher

Looks like were good to start implementing this now as 1.6 is merged 💃

Nice! :)

https://github.com/jonathan-fielding/vscode/tree/feature/touch-bar this is my branch in my fork I am working on, so far ive been playing round with namespacing config

So the code for accessing the window is reasonably complicated in Vscode however managed to add a save button, need guidance on where abouts this code should live (currently have in the menus.ts file)

Next thing I want to work on is making the buttons themeable

Just realised this will be blocked by the Type definitions not being updated for Electron 1.6 https://github.com/Microsoft/vscode/issues/24934

Added a action bar switcher

Looks great :) !

I think a cool feature would be having step in/over debugging button
Sent from my iPhone

On 20 Apr 2017, at 21:50, Jonathan Fielding<EMAIL_ADDRESS>wrote:
Added a action bar switcher
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Oh man, this is looking awesome!

+1 for step in/over debugging button controls !

Hi @jonathan-fielding, thx for your fork but when I build it, I have an error about Electron, it doesn't recognize touchbar. You use an other Type definitions ?

Do you have the latest version of Electron installed? touchbar is added in Electron 1.6.
Also their is an error when it builds at moment (Which doesnt prevent it working) which is that the typescript type definitions are not updated for Electron 1.6 (is still at 1.4.6).  This means until the VScode team fix those type definitions I cant raise a PR that is valid.

thx for you response @jonathan-fielding.
Yes I have the latest version installed, the errors :
Error: /Users/xx/Project/vscode/src/vs/code/electron-main/touchbar.ts(1,10): Module ''electron'' has no exported member 'TouchBar'.
Error: /Users/xx/Project/vscode/src/vs/code/electron-main/touchbar.ts(31,7): Property 'setTouchBar' does not exist on type 'BrowserWindow'.

But this errors block the build.

Can we get this added?

@jonathan-fielding Thanks for getting this going! I'm running your fork locally via ./scripts/code.sh, although I don't see any touchbar buttons. Also, let me know what I can do to help out!

As I am new to coding in vscode codebase I really need to get to grips with how events are dispatched

Whoops, now I am. I'm actually getting the same error that @RoXuS was getting above and it didn't want to run at first but it is running now and I see the buttons!

Yeah with electron type definitions being out of date on VScode it causes build issues, eventually it builds and then it builds consistently

That's odd, I wonder how it decides to work all of a sudden. Anyways, is there a better way for us to talk? I'd be willing to look into the events as well.

I am on the vscode gitter, can you dm on gitter?

hi @jonathan-fielding,
This feature looks awesome, what are the next steps to get this baked into the core of VSCode?
Regards,
Tarek

@thaoula Apologies I have been on holiday for 2 weeks.
The biggest blocker I have is that the way in which events are emitted in between the interface and the node layer that runs behind it. Essentially a lot of events go from the node layer into the interface but not from the interface back into the Node layer which means the touchbar doesn't know when to update with changes. To fix this I am trying to understand what events are missing so I can add them in.

An idea — not sure how much it would help or if it even applies (perhaps due to the nature of the touchbar API or due to how VSCode is structured) — but given that the touchbar is conceptually part of the interface, and the required events to update the touchbar are currently available on the interface (HTML/Browser) layer, wouldn't it be simpler to bridge the touchbar calls to the interface layer, and update it from there directly, instead of propagating all events down to the Node layer?

The touchbar is attached to the Window in Electron so the logic belongs to the same logic that creates the Windows in the first place. In this vane when the user creates a new window we create a new touchbar so each Window has its own touchbar state.

Great to see you're investigating adding the Activity Bar icons. For me this would be the MVP for Touch Bar support, before any more complex features like intellisense display, debugging etc.

I already have the debugging working, but with text buttons, icon buttons dont work properly

Hi Jonathan,
What is the process of getting your bits. Do I just fork vscode, switch to your branch and follow the vscode developer guide to get it up and running?
Regards,
Tarek
Get Outlook for iOShttps://aka.ms/o0ukef

From: Jonathan Fielding <notifications<EMAIL_ADDRESS>Sent: Tuesday, June 27, 2017 10:07 pm
Subject: Re: [Microsoft/vscode] [macOS] Add support for the touch bar in the new macbook (#14653)
To: Microsoft/vscode <vscode<EMAIL_ADDRESS>Cc: Tarek Haoula <thaoula<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>I already have the debugging working, but with text buttons, icon buttons dont work properly
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/vscode/issues/14653#issuecomment-311388016, or mute thethreadhttps://github.com/notifications/unsubscribe-auth/AAVTzac66f8ccM3Zu1BVR_rVUfuIqajzks5sIRq2gaJpZM4KjTg5.

Just clone my fork and switch to feature/touch-bar and then build how it says, just updating to work with the changes in master

I'm working on a research project right now, but after that might take a look at the touch bar support, the main idea I think would be to integrate functionalities that are useful and complementary to the traditional trackpad/keyboard ;).
I summed up the ideas I might work on

Display log outputs with horizontal  scrolling (automatic or touch).
Ability to display and change the current opened tab, like Safari.
Customizable shortcuts (and their icon) : launch npm scripts, trigger a specific commande like > format document , etc.
(don't know if possible) Change current workspace.
(don't know if possible) Intellisense integration: writing and having autocomplete suggestions on the oled or the written function's description (interface, parameters etc.)

@wicktus, I'm worried about point 1 (Apple HIG explicitly discourage the use of the touch bar as a secondary display, and I can see why).
Also, about the intellisense integration: most of us are touch typing (no pun intended). I don't see any advantage in moving / copying the on-screen intellisense info to the touch bar.
What in my opinion would really have great value, in addition to what @jonathan-fielding is already working on, are the icons for launching custom commands. That's a must-have!

@danieleds
It's not a secondary screen per say, rather a log stack, that you can scroll, line per line. The Automatic scrolling could make it look like a screen and disturb the programmer's focus, that is true but nothing prevent us from disabling this feature if it were to be implemented.
Intellisense on the touch bar could also benefit from touch typing, once you know where on the screen the suggestion appears for word typed : if i type 'log' and loggerService appears on the left I can reach it next time without looking. Not super useful and not a priority but it's not meaningless imho.
But yes shortcuts with customizable icons that's really a no-brainer, we need this, and will work on it asap.

I already have a good working version of how touchbar integration can work, happy to have some more help @wicktus rather than duplicate effort.
The intellisense idea is quite cool, kind of how in messages you get suggestions on mac (so will be within Apple HIG)

Also custom commands are doable with the way I have been coding the touchbar, very easy to add later

@jonathan-fielding Was planning on cloning your fork when i start :).

Its still work in progress, currently working on the problems with the VScode event model

Is there a roadmap for releasing this feature anytime soon?

Nope. I'm working on it during my spare time ;). Might tale some time before I progress, i need to study the whole event transmition chain in vscode.

So the biggest problem I am having is that no one answers my questions about the codebase so I am having to figure things out myself. At the moment the biggest challenge I have is to sort out how the events are triggered so that the touchbar is aware of changes which section of the app your in
The next step is to add support to extensions to add extra buttons,
Then the final step after that is to do some tidying so that I am as close to the code style to VScode as possible, this is so that my PR wont get rejected.

Still no offical word on this? Vscode has been on electron that supports this for a while now..

Hi @jonathan-fielding, if you put here your questions, maybe we can upvote them ;) I would like to help... but in this moment I can't :(

So I have been having problems getting the build to work since I updated to the latest master on vscode, gonna try it on a different computer later as my new personal machine arrives today (if ups ever get here)

So I know this isn't the same as built in support, but I just used better touch tool to make my own VSCode touch bar config:

With the new color picker built in to VSCode, maybe we could get an input for it on the touch bar.

@jonathan-fielding If you're using node 8 (npm 5), it doesn't work: #30775. You have to rollback to npm 4.x or jump through some hoops to get it building using a project-local install of npm 4.x.

Im using 6 with npm 5, so its likely the npm5,

If you want to stick with npm 5, I figured out how to make it work with a local npm 4; there's a comment on #30775 with the steps I used.

I tried to run fork with touch bar, can't build it. So I created my own fork and updated Electron Type Definition on 1.7.5 (currently VSC using 1.7.3 version).

Hi @0xdeafcafe . You could use my fork or @jonathan-fielding fork.

Thanks for the interest in this feature and the motivation to help out via PRs. In this case the implementation was actually quite straightforward leveraging our existing menu story.
I pushed an initial version of this feature via https://github.com/Microsoft/vscode/pull/34574
By default we show a couple of entries:

editor navigation (backward / forward)
an action to create a new file
the debug toolbar (shows buttons depending on debug running or stopped)

Icons are not final yet.
There is also a new menu identifier that extensions can contribute commands to: touchBar. Either icon or label are supported, the icon has to be of format PNG. A group can be specified to group actions together. By default we introduce groups navigation, 1_modification and 9_debug.

...a build is out with the changes to try it out, feedback welcome: download
One known issue is that the debug toolbar disappears if hitting a breakpoint unless you configure the touch bar like this:

This is because simply the number of elements is limited and there is no overflow. Still need to figure a better way out to overflow buttons that do not fit.

It would be awesome to have the following buttons:

Comment in / out -> comment the marked line/lines in/out
Sync Git
Commit all and Sync Git
Fold / Unfold Brackets

Generally it would be useful to have the configuration panel of the Touch Bar supported to change the layout as needed.

Exacly. Make it configurable. I would personally find "jump to definition"
and "jump to previous place" most useful.
Kamil Pękala
Dnia 18.09.2017 o godz. 20:25 ruebenacker<EMAIL_ADDRESS>napisał(a):

It would be awesome to have the following buttons:
Comment in / out -> comment the marked line/lines in/out
Sync Git
Commit all and Sync Git
Fold / Unfold Brackets
Generally it would be useful to have the configuration panel of the Touch Bar supported to change the layout as needed.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Unfortunately our UI framework currently does not expose API to trigger the touch bar configuration UI. However, as for entries to show in the touch bar, I am thinking of extensions to provide them via the new touchBar menu location. Extensions can add entries to existing groups as well as create new groups. It is unlikely that our out-of-the-box experience would make every user happy, so sourcing this out to extensions seems right.

@bpasero Can an extension add these contributions dynamically? Ex: Sublime is adding a button for each open file in the editor.

@auchenberg I am not sure that is possible, imho you can only declare menu contributions via package.json. However what is possible is to make entries show and hide dynamically based on the when condition.

Closing as the majority of the work is done. I suggest people give it a try in our upcoming September release and report back issues. I decided to remove the "+" action for creating a new file so that when you are debugging, all buttons show up properly even when the default of showing "App Controls with Control Strip" is enabled:

I also pushed a change to avoid recreating the entire touch bar when actions change, this should reduce flicker a bit, but in some cases it is still needed to recreate a group of items.
There maybe some slight icon changes before we release stable.

@bpasero : in RTM or in insiders channel?

this should reduce flicker a bit, but in some cases it is still needed to recreate a group of items.

@bpasero Happy to discuss this in Slack, but it should never be required to completely recreate a group / segmented control.  You can assign new "items" arrays and it should update nicely instead of redrawing

@MarshallOfSound I am using multiple of TouchBarSegmentedControl and it seems not possible to reuse any of the SegmentedControlSegment within, there is not even a class type for them to share, they are just simple objects.  Am I missing something?

@bpasero An example below that should work, on my windows machine atm so can't test.
const control = new TouchBarSegmentedControl({
  segments,
});

control.segments.push(newSegmentObjectThing);
control.segments[0].label = 'New Label'
control.segments = control.segments; // This is the magic trick to tell Electron to redraw this touch bar item

@MarshallOfSound ok I was not aware of that. I can see if this would allow us to reuse segments within a control event.

Folks, new user to Visual code, i have the latest version of it (i suppose), did i get this thing right, is it possible to customize the buttons as of it now? if yes, how so? couldnt find in the config.
thanks!

Very nice.
How can I use/test it? I couldn't find any extension for that, neither any menu in the latest version so far.

@felipenmoura If you want to use it, you need a mac. If your mac doesn't have a touchbar, I think XCode provides some kind of emulator. As of the september release (1.17?), it's enabled by default on Mac. The only way you can modify the menus is via extension contributions. I'm not sure if/where that's documented, but the september release notes should have enough to get you started.

hm, I see.
Yes, I'm testing it on a mac with a touch bar and I see only one button, the "play" one, for debugging.
I think we could really add so many cool features there. If we had some documentation on how to customize that or even how to create new buttons there, it would be great!
Where could I read about how to add buttons, for example?

Hi
I created this plugin for adding some extra features:
https://marketplace.visualstudio.com/items?itemName=felipe.nasc-touchbar#overview
Let me ask...where can I see a list of all the options I can use in the when clause in the package?
I want to enable and disable the buttons based on the user's settings...is it possible?
Also, feedback and contributions are quite welcome in the extension :)

@felipenmoura Nice work.  I didn't even know about the cursor above/below thing, great!
Personally, I find the CMD+B shortcut quicker and easier for the side menu, as my hands are already on the keyboard.  Same goes for CMD+click to go to definition.
What I would really like is a button for peek definition and one for find all references.
If you see my post above, I made a bar with BetterTouchTool a while ago to do that, but the X on the left moved the escape key out of position, which made it a pain to use.
Thanks.

Interesting @daveshirman , the peek and find references are, indeed, two very important additions!
I'm working on a way the user could customize it!
Perhaps we could add those features together and let users decide which buttons they want!
I already have a branch with the options for that, but the problem is that the "when" filter in the package is not considering user's settings (or I couldn't find any documentation on that, at least). Would you have a suggestion on how to accomplish that?
I also received a PR for a "rename file" button.

Would it be possible for an extension to hide the three standard buttons from VSCode to have more space on the TouchBar for own buttons?

I'd love to but I really don't have time at the moment out of work, I just
wanted to give my feedback as it's rubbish when you put something out and
you don't get any response.
On Wed, Nov 1, 2017 at 3:21 AM, Felipe Nascimento de Moura <
<EMAIL_ADDRESS>wrote:

Interesting @daveshirman https://github.com/daveshirman , the peek and
find references are, indeed, two very important additions!
I'm working on a way the user could customize it!
Perhaps we could add those features together and let users decide which
buttons they want!
I already have a branch with the options for that, but the problem is that
the "when" filter in the package is not considering user's settings (or I
couldn't find any documentation on that, at least). Would you have a
suggestion on how to accomplish that?
I also received a PR for a "rename file" button.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/vscode/issues/14653#issuecomment-340967636,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ANnlXg8J2q_SrOGUzVGHY7MuAkRPS-nFks5sx-PWgaJpZM4KjTg5
.

Cool.
I received a PR enabling options :)
Now, it's possible to chose the active buttons in the settings.
This way, we can have more buttons, and the user will enable them based on the free space they have.

Hello,
Unless I'm overlooking something, there doesn't seem to be a way in 1.18.0 to modify the touch bar to get remove the app controls and leave the control strip with brightness/volume intact. Any ideas on how to achieve this?

@mokyox You can change that in your OS settings.
I don't think you can make it have a different behavior in different apps, though.

@felipenmoura Thanks, but what I meant was I want to remove the actual touch bar controls and leave just the control strip behind.

There doesn't seem to be a way to actually do this without forcing the touch bar to display Fn keys only.

@mokyox I think you should file this as a separate issue. Otherwise, it would not get implemented as this issue is already closed.


d3.rebind has been deprecated.

Hi,
Any chance this will be updated to work with D3 v4?
Certain things it needs to work like rebind and a few others have been deprecated or their functions have had their name changed.

Same issue.

+1

+1

+1

+1


When opening the edge(111.0.1661.44 version) browser in selenium headless mode, the actual opening is a chrome browser

In the 111.0.1661.44 version of Edge, when headless mode is enabled, the actual browser opened is Chrome instead of Edge. For example, the following image(In headless mode, use driver.get_screenshot_as_file to take) shows an edge in headless mode with bind.com chat mode open. Obviously, the enabled browser is not edge, but Chrome.

Thanks for reporting the issue. I cannot reproduce this issue in Edge 111 and later versions. Here are my repro steps:

open edge 111 in headless mode with command msedge.exe --headless --remote-debugging-port=9222 --user-data-dir=c:\temp\edge https:/www.bing.com (instance 1)
open another edge browser and goto edge://inspect (instance 2)
inspect the page in instance 1
click the chat button on the top of the page

a new page with "start chatting" button will show up as follows

Would you please provide more details about how to repro the issue?

Thank you for taking the time to answer my question.
I am now providing an attachment to reproduce this issue in Edge 111.0.1661.62 version. (Probabilistic bug reproduced , I ran it three times and both of the last two times reproduced)
Here are my repro steps:

run "python.exe headless_edge_issue.py"
two png images will be generated in the directory, one in headless mode and the other in non headless mode

# headless_edge_issue.py

import time

from selenium import webdriver
from selenium.webdriver.edge.options import Options

def screenshot_to_png(link, headless):

    edge_options = Options()

    if headless:
        edge_options.add_argument('--headless')

    edge_options.add_argument('--disable-gpu')
    edge_options.add_argument('--no-sandbox')
    edge_options.add_argument("--start-maximized")

    driver = webdriver.Edge(options=edge_options, executable_path='./msedgedriver.exe')
    driver.implicitly_wait(30)

    try:
        driver.get(link)
        time.sleep(10)

        driver.save_screenshot('./screenshot_with_headless_is_{}.png'.format(headless))

    finally:
        driver.quit()

if __name__ == '__main__':
    screenshot_to_png(link="https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx", headless=True)
    screenshot_to_png(link="https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx", headless=False)

The two images are as follows, It is obvious that the browser opened in headless mode is not an edge browser

edgedriver_win64.zip

@yaohongfenglove , you might be interested in launching with the --headless=new command line arg (instead of --headless). It was recently introduced in Chrome and is available in Edge too. The old headless mode is a separate Chromium-based browser embedded in the main browser and can cause pages to behave differently. The new headless mode uses the real browser and should be recognized as Edge.
More details about the new headless mode: https://developer.chrome.com/articles/new-headless/

Thank you. The document(https://developer.chrome.com/articles/new-headless/) you provided perfectly solved my problem, I just need to change -- headless to -- headless=new.
# headless_edge_issue.py

import time

from selenium import webdriver
from selenium.webdriver.edge.options import Options

def screenshot_to_png(link, headless):

    edge_options = Options()

    if headless:
        edge_options.add_argument('--headless=new')

    edge_options.add_argument('--disable-gpu')
    edge_options.add_argument('--no-sandbox')
    edge_options.add_argument("--start-maximized")

    driver = webdriver.Edge(options=edge_options, executable_path='./msedgedriver.exe')
    driver.implicitly_wait(30)

    try:
        driver.get(link)
        time.sleep(10)

        driver.save_screenshot('./screenshot_with_headless_is_{}.png'.format(headless))

    finally:
        driver.quit()

if __name__ == '__main__':
    screenshot_to_png(link="https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx", headless=True)
    screenshot_to_png(link="https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx", headless=False)


Released tar archives use some unsupported tar extensions ('SCHILY.fflags' )

When unpacking the released archives, at least on Manjaro and Arch, this pops up:
tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x32/

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x32/d3d11.dll

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x32/setup_dxvk.sh

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x32/dxgi.dll

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x64/

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x64/d3d11.dll

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x64/setup_dxvk.sh

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/x64/dxgi.dll

tar: Ignoring unknown extended header keyword 'SCHILY.fflags' dxvk-0.30/README.txt

Apparently it's due to the archives having been done either with bsdtar or another version of tar supporting some extensions no longer supported by upstream GNU tar (http://bugs.rosalinux.ru/show_bug.cgi?id=712 )
So, a very minor issue, as it breaks nothing.
But I'm curious now... how did you pack the archives?
I don't think this warrants a "repackage" of the existing files, but it could be taken into account for future releases.

I'll admit I was lazy when packing the archive and used KDE's Ark, because I still haven't made a script that prepares it for me. Will do that for the next release though.


Database plugin is not loaded properly

What happened?
When I add Database plugin (com.intellij.database) as a dependency, I expect that intellij-platform plugin will load all necessary required dependencies automatically in test to load the plugin.
But in case of database plugin, it doesn't work out of the box. I have to manually add dependency on intellij.charts plugin to make it work.
May it somehow relate to several dependencies blocks in plugin.xml of database plugin?
Relevant log output or stack trace
No response
Steps to reproduce

checkout https://github.com/Undin/intellij-platform-gradle-plugins-bugs/commit/f5e899546ecbe1958741033b295d64d2680f0ac4 commit
run org.jetbrains.intellij.platform.example.DatabasePluginTest test

To ensure that intellij.charts helps here, you may use https://github.com/Undin/intellij-platform-gradle-plugins-bugs/commit/e2e8c885d12a852e7e93bf070064c557472495f1 commit
Gradle IntelliJ Plugin version
2.1.0
Gradle version
8.7
Operating System
macOS
Link to build, i.e. failing GitHub Action job
No response

That is how it should already work I believe. Are you sure that the database plugin depends on intellij.charts? I can not find it, which jar & file are you looking at?

That is how it should already work I believe. Are you sure that the database plugin depends on intellij.charts? I can not find it, which jar & file are you looking at?

Probably you cannot find it because intellij.charts is a transitive dependency. com.intellij.database has dependency on intellij.grid.impl, and intellij.grid.impl has dependency on intellij.charts

This is a bug in the recursion:

@AlexanderBartash Yep, I also found it.
And it seems I even have a rather simple fix for it

@Undin Just FYI master is broken right now.

@Undin If you want you can try to build your own version with this fix from my PR or use this branch https://github.com/AlexanderBartash/intellij-platform-gradle-plugin/commit/77630c00c662484c986e57ca2d25164e22fbed9d but in this one I have so many changes, that I do it at your own risk. You can see the history yourself.
If you are going to do it, I recommend to change the version in gradle.properties & changelog to something crazy like<PHONE_NUMBER>00.100500 then run publishToMavenLocal task. After that in your plugin project add maven local to gradle repos and you can depend on it. It is just more convenient that using an included build, if used long term.

That new log "An attempt to rewrite an already created Ivy module" is pretty noisy, did not expect that. I will make it info.

The intellij.charts bundled module is now correctly available by default:


System Information mouse-over popup obscured by large cursor.

It seems that the popup appears at a fixed offset from where the cursor is pointing, so you can't see it properly when using a large cursor. To fix this, either make the offset the size of the cursor, or make it so that the bottom right corner of the popup is where the cursor is pointing.

This is bug with the Operating System and reproducible with multiple applications. There's also not much we can do when the OS doesn't have functions returning an accurate cursor size and the tooltips control their own window location.

I wanted to wtite exactly the same issue not long ago. I use large cursors as well and this problem has been bugging me for a long time.
But a few days ago I decided just to switch cursor. Not I use big thin cross as a main cursor. It was awkward at fist, but once you get used to this new look, you'll never wish to switch back.
Also, i a browser is especially frequent another type of cursor, a hand with a pointy finger. You'll probably want to replace it as well. Rest of the standart cursor set is not so annoying.


bestvideo by codec and bitrate

Checklist

[x] I'm reporting a feature request
[x] I've verified that I'm running youtube-dl version 2020.09.14
[x] I've searched the bugtracker for similar feature requests including closed ones

Description

At the moment youtube-dl -f bestvideo results in the AVC / H.264 version being downloaded.
This is certainly the best possible video quality. But since YT (nearly always*) encodes with constant quality per resolution, we might as well take another format without loosing quaity.**
I would hence argue that bestvideo is the one with the smallest file size of the ones  with the highest quality.
I would hence like to propose the following for bestvideo:

Search for the highest resolution
2.1 Choose the first existing codec along this scheme: AV1 --> VP9 --> AVC
2.2 If multiple qualities are available for the same codec, choose the one with the highest bitrate.*

This would also avoid verbose constructs like:
-f 'bestvideo[vcodec *= av01]+bestaudio/bestvideo[vcodec *= vp9]+bestaudio/bestvideo+bestaudio/best'

Thanks a lot!
MWE
youtube-dl -f bestvideo ibXKKllz4xQ
[...]
399          mp4        1920x1080  1080p 2450k , av01.0.08M.08, 30fps, video only, 187.14MiB
248          webm       1920x1080  1080p 2645k , vp9, 30fps, video only, 178.88MiB
137          mp4        1920x1080  1080p 3072k , avc1.640028, 30fps, video only, 140.01MiB
[...]

results in format 137.

* youtube-dl -F QPdWJeybMo8
[...]
402          mp4        7680x4320  4320p 22458k , av01.0.16M.<IP_ADDRESS>.06.06.0, 30fps, video only, 367.57MiB
571          mp4        7680x4320  4320p 36937k , av01.0.16M.<IP_ADDRESS>.06.06.0, 30fps, video only, 582.34MiB
[...]

** Since this is logically not bullet-proof, we might as well generally assume AV1 > VP9 > AVC.

Could you point me to the issue where this is a duplicate of? I now spent 5 min searching without a hit. Thank you!


Missing word-level PronunciationAssessment from pronunciation assessments

Describe the bug
Hello! While I am able to perform recognition without issue, I am unable to get word-level PronunciationAssessment like in the SDK's documentation here from the recognition results.
To Reproduce
I am working with the following code:
    public async Task<PronunciationAssessmentResult> AssessSpeechFromAudio(string language, string reference, string base64)
    {
        var configuration = SpeechConfig.FromSubscription(azureKey, azureRegion);
        configuration.RequestWordLevelTimestamps();
        configuration.SetProperty(PropertyId.Speech_LogFilename, @"/Users/chandlergreff/Downloads/logs");

        using var audio = AudioConfig.FromWavFileInput(@"/Users/chandlergreff/Downloads/download.wav");

        using var recognizer = new SpeechRecognizer(configuration, language, audio);

        var pronunciation = new PronunciationAssessmentConfig(reference, GradingSystem.HundredMark, Granularity.Phoneme, true);
        pronunciation.EnableProsodyAssessment();
        pronunciation.ApplyTo(recognizer);

        var result = await recognizer.RecognizeOnceAsync();

        return PronunciationAssessmentResult.FromResult(result);
    }

Which results in:
{
  "accuracyScore": 100,
  "pronunciationScore": 96.4,
  "completenessScore": 100,
  "fluencyScore": 100,
  "prosodyScore": 90.9,
  "contentAssessmentResult": null,
  "words": [
    {
      "word": "this",
      "accuracyScore": 100,
      "errorType": "None",
      "syllables": [
        {
          "duration": 3500000,
          "offset": 500000,
          "syllable": "dhihs",
          "grapheme": null,
          "accuracyScore": 100
        }
      ],
      "phonemes": [
        {
          "duration": 1100000,
          "offset": 500000,
          "phoneme": "dh",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 1100000,
          "offset": 1700000,
          "phoneme": "ih",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 1100000,
          "offset": 2900000,
          "phoneme": "s",
          "accuracyScore": 100,
          "nBestPhonemes": null
        }
      ]
    },
    {
      "word": "is",
      "accuracyScore": 100,
      "errorType": "None",
      "syllables": [
        {
          "duration": 2100000,
          "offset": 4100000,
          "syllable": "ihz",
          "grapheme": null,
          "accuracyScore": 100
        }
      ],
      "phonemes": [
        {
          "duration": 1300000,
          "offset": 4100000,
          "phoneme": "ih",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 700000,
          "offset": 5500000,
          "phoneme": "z",
          "accuracyScore": 100,
          "nBestPhonemes": null
        }
      ]
    },
    {
      "word": "a",
      "accuracyScore": 100,
      "errorType": "None",
      "syllables": [
        {
          "duration": 700000,
          "offset": 6300000,
          "syllable": "ax",
          "grapheme": null,
          "accuracyScore": 100
        }
      ],
      "phonemes": [
        {
          "duration": 700000,
          "offset": 6300000,
          "phoneme": "ax",
          "accuracyScore": 100,
          "nBestPhonemes": null
        }
      ]
    },
    {
      "word": "sentence",
      "accuracyScore": 100,
      "errorType": "None",
      "syllables": [
        {
          "duration": 2200000,
          "offset": 7100000,
          "syllable": "sehn",
          "grapheme": null,
          "accuracyScore": 100
        },
        {
          "duration": 4400000,
          "offset": 9400000,
          "syllable": "taxns",
          "grapheme": null,
          "accuracyScore": 100
        }
      ],
      "phonemes": [
        {
          "duration": 700000,
          "offset": 7100000,
          "phoneme": "s",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 700000,
          "offset": 7900000,
          "phoneme": "eh",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 600000,
          "offset": 8700000,
          "phoneme": "n",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 400000,
          "offset": 9400000,
          "phoneme": "t",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 500000,
          "offset": 9900000,
          "phoneme": "ax",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 900000,
          "offset": 10500000,
          "phoneme": "n",
          "accuracyScore": 100,
          "nBestPhonemes": null
        },
        {
          "duration": 2300000,
          "offset": 11500000,
          "phoneme": "s",
          "accuracyScore": 100,
          "nBestPhonemes": null
        }
      ]
    }
  ]
}

I am currently using verion 1.33.0 of the SDK. Please find the logs here.
Thanks in advance.

@yulin-li Please check.

I am little confused, the result your pasted actually contains the word level pronunciation assessment result, e.g.,
 "words": [
    {
      "word": "this",
      "accuracyScore": 100,
      "errorType": "None",

Hi! You are actually right, the documentation does state that AccuracyScore is the pronunciation results. I am also looking phoneme-level assessements which doesn't show up in my results. Am I missing something in my pronunciation configurations?

the doc is for REST api, not for C# SDK.
You have got the accuracy scores of phonemes.
"phonemes": [
{
"duration": 1100000,
"offset": 500000,
"phoneme": "dh",
"accuracyScore": 100,
"nBestPhonemes": null
},

You are right. It is early in the morning. I need some coffee.


Changing default flag

I want to change the default flag? the default flag is USA, I want to change to UK for example !

mobileTextField.setFlag(for: FPNCountryCode(rawValue: "UK")!)


Questions regarding the data type during computation.

Hi,
Thanks for your great work!
While running the code, I had some questions regarding data precision.
When I tried the MNIST 20x20 dataset on both CPU and CUDA, I found that the input to the logic gate network is of type float.
During the computation, the data persists in float type, as shown in:
https://github.com/Felix-Petersen/difflogic/blob/469702c01ff0bfac9cdc6a395134252e11a56bd8/difflogic/functional.py#L65-L70
The data being computed here is of float type.
Similarly, in the CUDA version:
https://github.com/Felix-Petersen/difflogic/blob/469702c01ff0bfac9cdc6a395134252e11a56bd8/difflogic/cuda/difflogic_kernel.cu#L283-L292
The data is still in float type.
Although using logic operators over float data is innovative, it is still not implemented in a "hardware" way as you proposed that operate on binary values.
When trying to implement  and, there is still a float point multiplier generated that works like the traditional accelerator rather than the logic gate network.
If we really convert those float values to binary values that can be implemented by hardware and then take the logic operations,  the computation should look like follows written in verilog:
reg [31:0] a; # suppose inputs are 32-bit float
reg [31:0] b;
output reg [31:0] result;

always @(*) begin
 result[0]<=a[0] & b[0];
 // operation to more bits...
end

But this is different from directly taking the and of two float point numbers by multiplication.
Could you illustrate more on the gap between float implementation and the hardware implementation?
Thanks!

Have you tried reading the paper?
"during inference, the most likely operator is used for each neuron."

In the discrete model (.eval()), if the 2 inputs each 0.0 or 1.0, they can be directly mapped to True and False, and here multiplications directly corresponds to a logical AND. The resulting output will always be 0.0 or 1.0 for any of the operations. So, all it requires is having the initial input be comprised of 0s and 1s.


Experiments table not updating while experiments are running

The metrics in the Experiments table are not following the results of multiple parallel experiment runs even though dvc exp show does show the different updated metrics. The Experiments table mainly contains the original base commit metrics.
This issue may be because it seems that the extension does not call dvc exp show. Instead, I see lots of dvc stage list commands in the "DVC" output window.
[version: 1.0.43, 2023-08-18T00:34:42.565Z, pid: 36047] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:43.435Z, pid: 36047] > dvc stage list - COMPLETED (912ms)
[version: 1.0.43, 2023-08-18T00:34:43.473Z, pid: 36050] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:43.487Z, pid: 35221] > dvc data status --granular --unchanged --json - COMPLETED (141986ms)
[version: 1.0.43, 2023-08-18T00:34:47.993Z, pid: 36050] > dvc stage list - COMPLETED (4556ms)
[version: 1.0.43, 2023-08-18T00:34:48.026Z, pid: 36054] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:49.929Z, pid: 36054] > dvc stage list - COMPLETED (1935ms)
[version: 1.0.43, 2023-08-18T00:34:49.981Z, pid: 36073] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:50.667Z, pid: 36073] > dvc stage list - COMPLETED (737ms)
[version: 1.0.43, 2023-08-18T00:34:50.715Z, pid: 36076] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:51.405Z, pid: 36076] > dvc stage list - COMPLETED (736ms)
[version: 1.0.43, 2023-08-18T00:34:51.452Z, pid: 36079] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:52.142Z, pid: 36079] > dvc stage list - COMPLETED (735ms)
[version: 1.0.43, 2023-08-18T00:34:52.196Z, pid: 36082] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:52.857Z, pid: 36082] > dvc stage list - COMPLETED (713ms)
[version: 1.0.43, 2023-08-18T00:34:52.900Z, pid: 36085] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:53.456Z, pid: 36085] > dvc stage list - COMPLETED (597ms)
[version: 1.0.43, 2023-08-18T00:34:53.496Z, pid: 36091] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:54.151Z, pid: 36091] > dvc stage list - COMPLETED (694ms)
[version: 1.0.43, 2023-08-18T00:34:54.199Z, pid: 36108] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:54.906Z, pid: 36108] > dvc stage list - COMPLETED (754ms)
[version: 1.0.43, 2023-08-18T00:34:54.953Z, pid: 36111] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:55.649Z, pid: 36111] > dvc stage list - COMPLETED (742ms)
[version: 1.0.43, 2023-08-18T00:34:55.696Z, pid: 36114] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:56.421Z, pid: 36114] > dvc stage list - COMPLETED (770ms)
[version: 1.0.43, 2023-08-18T00:34:56.466Z, pid: 36117] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:57.171Z, pid: 36117] > dvc stage list - COMPLETED (749ms)
[version: 1.0.43, 2023-08-18T00:34:57.223Z, pid: 36120] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:57.986Z, pid: 36120] > dvc stage list - COMPLETED (814ms)
[version: 1.0.43, 2023-08-18T00:34:58.026Z, pid: 36123] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:58.730Z, pid: 36123] > dvc stage list - COMPLETED (744ms)
[version: 1.0.43, 2023-08-18T00:34:58.768Z, pid: 36129] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:34:59.465Z, pid: 36129] > dvc stage list - COMPLETED (735ms)
[version: 1.0.43, 2023-08-18T00:34:59.520Z, pid: 36146] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:35:00.265Z, pid: 36146] > dvc stage list - COMPLETED (799ms)

There are plenty more of these; some failed with a validation of the dvc.lock file, e.g.,
[version: 1.0.43, 2023-08-18T00:35:35.341Z, pid: 36431] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:35:36.371Z, pid: 36431] > dvc stage list - FAILED with code 255 (1063ms)
'./dvc.lock' validation failed: 13 errors.

extra keys not allowed, in create_index_table, line 2, column 3

    1 create_index_table:

    2   cmd: python -m scripts.create_index_table

...

The latest commands shown at the moment are:
[version: 1.0.43, 2023-08-18T00:38:57.834Z, pid: 37297] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:38:58.575Z, pid: 37297] > dvc stage list - COMPLETED (772ms)
[version: 1.0.43, 2023-08-18T00:38:58.606Z, pid: 37300] > dvc stage list - INITIALIZED
[version: 1.0.43, 2023-08-18T00:39:01.712Z, pid: 37300] > dvc stage list - COMPLETED (3136ms)
[version: 1.0.43, 2023-08-18T07:59:14.480Z, pid: 52404] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T07:59:14.509Z, pid: 52405] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T07:59:14.541Z, pid: 52406] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T07:59:14.560Z, pid: 52405] > git ls-files --others --exclude-standard - COMPLETED (79ms)
[version: 1.0.43, 2023-08-18T07:59:14.592Z, pid: 52406] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (82ms)
[version: 1.0.43, 2023-08-18T08:01:36.953Z, pid: 52404] > dvc data status --granular --unchanged --json - COMPLETED (142502ms)
[version: 1.0.43, 2023-08-18T08:01:41.251Z, pid: 52496] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T08:01:41.311Z, pid: 52497] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T08:01:41.374Z, pid: 52498] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T08:01:41.379Z, pid: 52497] > git ls-files --others --exclude-standard - COMPLETED (127ms)
[version: 1.0.43, 2023-08-18T08:01:41.428Z, pid: 52498] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (117ms)
[version: 1.0.43, 2023-08-18T08:03:58.170Z, pid: 52496] > dvc data status --granular --unchanged --json - COMPLETED (136975ms)

But dvc exp show does not appear even though this is after several hours of these experiments running.

I suspect that this is related to #4526 as we use the metrics/params file paths provided by exp show to work out what to watch in the workspace. If those paths are incorrect then we don't know what to watch for updates.
There could be some other error though so if you could please take a look at the console in VS Code's developer tools and share any errors that seem to be related to DVC that would be very helpful. You can access the console like this:

Thanks.

There are some errors relating to dvc exp show, though not sure if these are the most recent (i.e., related to the six experiments that I started after reporting #4526).
The experiment direr-sous was one I had run before in parallel to the experiment moldy-sida which finished fine, but then with incorrect metrics.json and params.yaml paths as reported in the referenced issue. However, note that the paths still exist and the metrics for that finished experiments were shown in the table (and dvc exp show --json output). It's just that they were shown in new columns because of the change in paths (projects/multiseries/trials/pairwise_selected_target_series/data/train/metrics.json vs. data/train/metrics.json). The path projects/multiseries/trials/pairwise_selected_target_series is my DVC_ROOT.

My current HEAD commit SHA is c7c4d83d358e06b0bca753cbcddffb777fdf140c, i.e., the first --rev argument indeed seen in these error messages.

Is it also expected that the "DVC: Refresh Experiments" VS Code Extension command does not work?

(I don't know what it does, just thought I'd try and see if it makes a difference)

Following the suggestion by @julieg18 to upgrade DVC to see if the other issue persists, I updated DVC to 3.15.2.
Not sure if that did anything or something else, but the Experiments table just updated. I see in the "DVC" output window:
[version: 1.0.43, 2023-08-18T10:19:04.300Z, pid: 58052] > dvc exp show --rev c7c4d83d358e06b0bca753cbcddffb777fdf140c --rev f7b9c12f505cb6498ab651df4be1447db610c76b --rev 9aca8f642eee1b3f816b4d4c587f525ad6540bc0 --rev c29975b5be3e984ede48359ff07c80d60f6013a0 --rev dc93a51d1b6cc33881e36acedf3ccfc60de0b3ad --rev 4717d23247ecd1ecc5422b81e5ef122f693809f2 --rev 0819967d5197d490b590c41e1227a45e65c4285e --json - COMPLETED (17228ms)

This issue persists still with DVC 3.15.
Could it be that dvc exp show --json is not being called more often because of very high latency of a number of DVC CLI commands required by the extension to update its views. That Experiments table hasn't been updated in more than one hour.
[version: 1.0.43, 2023-08-18T12:24:54.403Z, pid: 7583] > dvc exp show --rev 82ad2da35ad3ce4d5b7a7a468bfcacd6668daa2a --rev 0433360e53967c48dfc4c64d90768bbce5c6ac3e --rev e38e2882d416ecd4c2fbb1d26a8778c984d43472 --rev c7c4d83d358e06b0bca753cbcddffb777fdf140c --rev f7b9c12f505cb6498ab651df4be1447db610c76b --json - COMPLETED (21754ms)
[version: 1.0.43, 2023-08-18T12:35:52.149Z, pid: 33654] > dvc queue logs ochre-boff --follow - COMPLETED (43766543ms)
[version: 1.0.43, 2023-08-18T12:35:53.953Z, pid: 32111] > dvc queue logs licit-bish --follow - COMPLETED (51036871ms)
[version: 1.0.43, 2023-08-18T13:28:57.262Z, pid: 8454] > dvc queue logs licit-bish --follow - INITIALIZED
[version: 1.0.43, 2023-08-18T13:37:40.140Z, pid: 9271] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T13:37:40.181Z, pid: 9272] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T13:37:40.221Z, pid: 9273] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T13:37:40.233Z, pid: 9272] > git ls-files --others --exclude-standard - COMPLETED (92ms)
[version: 1.0.43, 2023-08-18T13:37:40.259Z, pid: 9273] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (77ms)
[version: 1.0.43, 2023-08-18T13:40:31.328Z, pid: 9271] > dvc data status --granular --unchanged --json - COMPLETED (171232ms)
[version: 1.0.43, 2023-08-18T13:40:35.480Z, pid: 9349] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T13:40:35.544Z, pid: 9350] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T13:40:35.610Z, pid: 9351] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T13:40:35.616Z, pid: 9350] > git ls-files --others --exclude-standard - COMPLETED (135ms)
[version: 1.0.43, 2023-08-18T13:40:35.667Z, pid: 9351] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (122ms)
[version: 1.0.43, 2023-08-18T13:43:02.702Z, pid: 9349] > dvc data status --granular --unchanged --json - COMPLETED (147277ms)
[version: 1.0.43, 2023-08-18T13:43:06.743Z, pid: 9731] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T13:43:06.803Z, pid: 9732] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T13:43:06.856Z, pid: 9733] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T13:43:06.861Z, pid: 9732] > git ls-files --others --exclude-standard - COMPLETED (117ms)
[version: 1.0.43, 2023-08-18T13:43:06.892Z, pid: 9733] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (88ms)
[version: 1.0.43, 2023-08-18T13:45:31.910Z, pid: 9731] > dvc data status --granular --unchanged --json - COMPLETED (145227ms)
[version: 1.0.43, 2023-08-18T13:45:36.685Z, pid: 9815] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T13:45:36.740Z, pid: 9816] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T13:45:36.811Z, pid: 9817] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T13:45:36.817Z, pid: 9816] > git ls-files --others --exclude-standard - COMPLETED (131ms)
[version: 1.0.43, 2023-08-18T13:45:36.862Z, pid: 9817] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (121ms)
[version: 1.0.43, 2023-08-18T13:48:01.662Z, pid: 9815] > dvc data status --granular --unchanged --json - COMPLETED (145031ms)
[version: 1.0.43, 2023-08-18T13:48:06.399Z, pid: 10297] > dvc data status --granular --unchanged --json - INITIALIZED
[version: 1.0.43, 2023-08-18T13:48:06.451Z, pid: 10298] > git ls-files --others --exclude-standard - INITIALIZED
[version: 1.0.43, 2023-08-18T13:48:06.514Z, pid: 10299] > git ls-files --others --exclude-standard --directory --no-empty-directory - INITIALIZED
[version: 1.0.43, 2023-08-18T13:48:06.522Z, pid: 10298] > git ls-files --others --exclude-standard - COMPLETED (122ms)
[version: 1.0.43, 2023-08-18T13:48:06.590Z, pid: 10299] > git ls-files --others --exclude-standard --directory --no-empty-directory - COMPLETED (139ms)
[version: 1.0.43, 2023-08-18T13:48:32.107Z, pid: 10321] > dvc queue logs dazed-tomb --follow - INITIALIZED
[version: 1.0.43, 2023-08-18T13:50:31.104Z, pid: 10297] > dvc data status --granular --unchanged --json - COMPLETED (144758ms)

I could use "DVC: Reset Persisted State and Reload Window" from the Command Palette to refresh the table, but this takes long as it has to regenerate a lot of cached data. Would it make sense to have a "Refresh" button at the top of Experiments (and Plots) editor tabs? Similar to the"Refresh Explorer" button in the file explorer?

@aschuh-hf is this still happening?

What events would trigger the update?

The extension uses a file watcher to call exp show for updates. VS Code provides events for any changes to files in the workspace. We use the following criteria to filter those events for experiment updates:
path => {
    const relPath = relative(this.dvcRoot, path)
    if (
      this.getWatchedFiles().some(
        watchedRelPath =>
          path.endsWith(watchedRelPath) ||
          isSameOrChild(relPath, watchedRelPath)
      ) &&
      !isPathInSubProject(relPath, this.relSubProjects)
    ) {
      void this.managedUpdate(path)
    }
}

Where watched files are all of the params and metrics files shown for the workspace in exp show + any dvc.lock, dvc.yaml or .dvc.
To check if the file system watchers are working you can save (without making any updates) either your params.yaml or dvc.yaml file for the project. If that doesn't trigger an update then the file watchers are not working as expected.
If you are not writing metrics to files in the workspace at all then that would be an issue.

What keys are shown underneath the params/metrics key in your exp show --json output?
e.g
...
      "params": {
        "params.yaml": {
...
      "metrics": {
        "training/metrics.json": {
...

is the metrics.json file path shown in the data?
Are you using a mono-repo and do you have the mono-repo open at the root?

Are you using a mono-repo and do you have the mono-repo open at the root?

I'm in a mono-repo and have the DVC project (path where dvc init --subdir was run) open as VS Code Workspace
(path projects/multiseries/trials/pairwise_selected_target_series/ from https://github.com/iterative/dvc/issues/9860).

What keys are shown underneath the params/metrics key in your exp show --json output?

"params": {"params.yaml": ...}
"metrics": {"data/train/metrics.json": ...}

These are the paths that I expect.

Re #4564: The dvc exp show --json keys for params and metrics are the same for all experiments.
They match the keys under workspace.

What else are you using the GIT_REPO_ROOT/vscode/project.vscode-workspace file for? Do you need that file if you aren't using a multi-folder workspace?

It's not that I need it as I could use .vscode/*.json files inside the DVC project folder, but I prefer having all VS Code settings (settings, debug commands, recommended extensions) in a single configuration file. For different projects / sub-projects, I have a separate .vscode-workspace file at the mono-repo root (vscode/ folder, respectively). Some include a single folder, some include multiple if I commonly also edit shared Python libs or other used files from other projects.
I would expect DVC to work either way? Whether I open a folder or use a single- or multi-folder workspace.

By any chance are you opening/closing/reloading VS Code between queueing these experiments up and then running them?

However, when I do the same with the metrics.json file or any of the plots TSV files, nothing happens. But only these files get modified during the execution of the experiment, and the dvc.lock file is written by DVC only once the experiment finished.

Would you be able to check if events are getting created (at all) for the files in question using the instructions here: https://github.com/microsoft/vscode/wiki/File-Watcher-Issues#logging-local

The previous experiment was unfortunately already done and the temp folder deleted.
I enabled Trace log level and started a new experiment. I notice now that even when I save dvc.yaml in the temp folder of the running experiment task this time, it does not trigger dvc exp show --json. There are no file watcher events in the Console log either. At this point, no metrics.json file has been written yet and was removed by dvc exp run. The table still shows the initial metrics from the base rev commit. After the first aws s3 sync which writes the metrics.json file, there is still now file watcher event. So no matter which file I touch, no events based on file watchers seem to be triggered.
When I touch the dvc.yaml in the workspace instead of the temp folder of the running queued experiment, then they get triggered and the table updates.

I was watching the local logs. I am actually using SSH Remote, but I cannot find the "Log (Remote Server)" output in the dropdown list as mentioned at https://github.com/microsoft/vscode/wiki/File-Watcher-Issues#logging-remote.

Looks like this is the issue: https://github.com/microsoft/vscode/issues/176327

This should be fixed with the latest versions of DVC/DVCLive/the extension.

Fantastic! Thanks for working out a solution across the different subprojects.
(also glad to have theDVC_ROOT environment variable back)

For anyone else that comes across this issue the min required versions for the fix are:

DVC: 3.17.0
DVCLive: 2.16.0
Ext: 1.0.49

I am just realizing that this doesn't fix the issue for me, because DVCLive is not running on my local machine which is executing the queued experiment task (dvc exp queue + dvc queue start via the Extension).
Instead, my train stage command submits a train job to a remote cluster. The remote job runs DVCLive to produce the artifacts and uploads those to cloud storage. My DVC experiment command itself periodically syncs this cloud data with the local experiment temp folder content. It thus overrides metrics.json file and plots folder at regular intervals. But Live.next_step() will never be called on the local machine which is running the DVC experiment.
I can use the DVC_ROOT to touch a file in my DVC experiment command after the data has been synced as you suggested previously. I wonder if I should touch the new signal file instead of a file such as dvc.yaml in my workspace?
My current preference would be to use the new signal file because it is outside my workspace that I may work on while the experiments are running. It would also not be too harmful if the signal file would be changed in later DVC versions as this would just mean it won't work in the future without changing my script, but it would only be the update of the Experiments table that would break (and I can link to this issue from the code for documentation on how to then resolve it).
What would you suggest?

What would you suggest?

Seems like you have all of the information required to make a decision. I don't have anything to add.


chore: set MSRV to 1.80

Closes #199

For some reason, cargo-expand doesn't seem to install with v1.80
Would check if there's a version which would work

Moved this into v0.6 milestone.
Newer releases of v0.5 will only contain bug fixes and performance optimizations


dependabot-action fails while trying to update an ignored dependency as part of security alerts

Is there an existing issue for this?

[X] I have searched the existing issues

Package ecosystem
Bundler
Package manager version
2.4.7
Language version
No response
Manifest location and content before the Dependabot update
No response
dependabot.yml content
version: 2
...
    allow:
      - dependency-name: "sorbet-static-and-runtime"

Updated dependency
No response
What you expected to see, versus what you actually saw
github/dependabot-action is triggered before a deploy attempt. This run attempts to update implicitly ignored (due to allow in dependabot.yml) dependencies and fails. These dependencies show up in security tab under Dependabot vulnerability alerts.
I'd expect to have the ability to turn off version updates for some dependencies but keep the security alert PRs. Is there a configuration I'm missing?
Logs:
Checking if actionview <IP_ADDRESS> needs updating
...
Dependabot cannot update to the required version as all versions were ignored for actionview
...
Dependabot encountered '1' error(s) during execution, please check the logs for more details.
+----------------------+
|        Errors        |
+----------------------+
| all_versions_ignored |
+----------------------+

Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
No response
Smallest manifest that reproduces the issue
No response

Hi! I'm facing the same issue, any workarrounds??


chore(main): release 1.7.2

:robot: I have created a release beep boop
1.7.2 (2023-12-07)
Bug Fixes

修复多层 outdir 下的文件夹不存在的问题 (5193a7d)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/LinLin00000000/usbuild/releases/tag/v1.7.2 :sunflower:


Allow the use of workspaceFolder without specifying workspaceMount

Today the workspaceFolder property requires workspaceMount to be in non-dockerCompose scenarios. Given processing for devcontainer.json should mount the location of the .git folder unless workspaceMount is set, it is reasonable to allow this property to be set independently.
In this scenario, the following syntax could be used to connect to a relative path to the detected auto-mount location.
"workspaceFolder": "${containerWorkspaceFolder}/some/sub/path"

To avoid confusion, if workspaceMount is specified, or this is a Docker Compose scenario, ${containerWorkspaceFolder} would be treated like "". We could also introduce a different variable here instead (e.g. defaultContainerWorkspaceFolder) that had these same smarts in it.

@Santiagosaiz4


Create a documentation site

The README.md is a bit lacking and the examples aren't enough, we should create a documentation site using this:

https://github.com/squidfunk/mkdocs-material

Some sources of inspiration:

https://external-secrets.io/v0.7.1/
https://gateway-api.sigs.k8s.io/

Topics to be documented:

https://github.com/mmontes11/mariadb-operator/issues/19

considering gh pages

feedback from brand on mockup for me to action / implement:
(1) color changes to main UI page (original)

(2) changes (after)

(3) change footer for mkdocs to be #003545

@mariadb-pieterhumphrey thanks for loonking into this, your suggestions make sense to me. Here a couple of suggestions/relevant information to implement the changes.

Main mkdocs config file can be found here. Refer to their docs for making changes.
Assets used by the documentation website can be found here. You may refer to them witn assets/mariadb_medium.svg in the mkdocs config file, markdowns and html overrides.
If settings available in mkdocs file aren't enough, you can always override html blocks.
Run make docs-serve to spin up a docker container in you local env which seves the current version of the site and live reloads whenever you make a change.


feat: add possibility to set compare function

If mapState returns an object then consumers of useGlobal hook will be re-rendered on every partial update of the object.
For example with such state:
const state = {
  profile: {
    id: "123",
    firstName: "John",
    lastName: "Dory",
    age: 65,
    zipCode: 220019,
   // etc.
  }
}

and with such use case:
const Profile = () => {
  const [profile, actions] = useGlobal((state) => state.profile);
  // ...
};

The Profile component will re-render on change of any value in the profile object. For small objects this is not an issue but in real app where the profile would contain 20+ properties it is not handful to write 20+ hooks just to avoid re-renders. In reality  average component might use more than 1 of such objects so the hook in such case harms dev experience.
The solution is as simple as to provide one more special handler to the :
const Profile = () => {
  const [profile, actions] = useGlobal((state) => state.profile).shouldUpdate(
    (oldProfile, newProfile) => oldProfile.firstName !== newProfile.firstName || oldProfile.lastName !== newProfile.lastName || oldProfile.age !== newProfile.age
  );
  // ...
};

or using lodash:
const Profile = () => {
  const [profile, actions] = useGlobal((state) => state.profile).shouldUpdate(
    (oldProfile, newProfile) => !_.isMatch(newProfile, _.pick(oldProfile, 'firstName', 'lastName', 'age'))
  );
  // ...
};

Now, component will be re-rendered only in case if firstName, lastName or age will change

@davityavryan, @andregardi please, take a look at the feature


Migrate to Msal

Pull Request Description
Migrate to Msal from Adal
Future Release Comment
** Breaking Change **

DeviceAuthentication class provided for python users is a little different - method 'refreshDeviceCode' is deleted as code refreshes by itself.

Features:

Migrate to Msal
use Kusto Java SDK library v2.6.0

To be clear, this is literally my first time reading scala code. So I learned a lot here, but it could be worthwhile to also get a review from someone who knows scala.


VFS-609: VFS SFTP doesn't support a private key as byte array

I really need feature with specifying private key in bytes. I guess that I'm not alone with this need.
Please, check my pull request. It's my first time making pull request in this project. If I made something wrong, I would be glad to hear your comments.
P.S. I took code changes from https://issues.apache.org/jira/browse/VFS-609 that stevezhuang attached to ticket, but that code wasn't placed to repo.

Please see git master and the new class org.apache.commons.vfs2.provider.sftp.BytesIdentityInfo.

Okey, saw your solution. Thanks for adding bytes approach! And thanks for your comments too :)


chore: changes name from method to service on React and JS SDK

Description

changes name from method to service on React and JS SDK

Testing required outside of automated testing?

[x] Not Applicable

Screenshots (if appropriate):

[x] Not Applicable

Rollback / Rollforward Procedure

[x] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

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


Inclusion of a sample tablite.hdf5 file?

Would it be out of the question to include an accompanying tablite.hdf5 file in the repo, possible alongside one of the tests, or from a selected point in the demo?

Hello @rhs3i
The hdf5 file will always be in tmp as:
H5_STORAGE = pathlib.Path(tempfile.gettempdir()) / "tablite.hdf5"
May I ask what you're trying to achieve?

Certainly.  I'm the author of H5s, a scanner for HDF5.  The first objective is to verify the scanner renders tablite HDF5 well.  HDF5 that is intended to be primarily machine-read can stress a visual model in ways perhaps not considered, but the graphical constructs should still hold up when inspecting these files.  The screenshots and links to the visual vocabulary of the scanner can give some illustration.
The second objective is to get a quick bit of insight as to whether H5s can augment usage of tablite in an interesting way, but that would be a future topic.

Hi Robert,
As you can see from the usage of tempdir the HDF5 files are generally used as a volatile database where data is stored in a hierarchy best described as:

Tables have columns
Columns have pagehandlers
Page handlers have pages.
Pages are of type: (a) Simple (int,float), (b) String (str, utf-8), (c) Mixed (non simple datatypes), (d) Sparse (lots of Nones)

In the tablite.hdf5-file you will therefore find that the Pages  contain all the data, whilst the dataset (hdf groups) for Tables and Columns are empty and only have metadata in the attrs-field.
The details are explained here in the HDF5 group webinar: https://youtu.be/OoHVIKAD854?t=1415

Ah.  Thank you for the correction and apologies for the time-wasting.  I did sit for your HDF5 webinar (thank you), but I misunderstood the design, thinking that once the HDF5 backing-store had been created and stored all the computational deltas, it would persist beyond program execution and be used by a subsequent downstream tablite processor.  But your presentation was clear--the re-import/reload example you showed (39:19) was from within a single program session.  Scanning a volatile HDF5 datastore might have some utility in a debugging capacity, but that's another matter and may not be very useful.
Appreciate your time in getting me straightened out on this.


identify changes to references on methods/parameters

yes, I really said that ◉_◉

Good spotting - on it :+1:


Set minimum TLS version for cloudfront

Description
https://aquasecurity.github.io/tfsec/v1.18.0/checks/aws/cloudfront/use-secure-tls-policy/
Safety checklist

[ ] This change is backwards compatible and safe to apply by existing users
[ ] This change will NOT lead to data loss
[ ] This change will NOT lead to downtime who already has an env/service setup

How has this change been tested, beside unit tests?
YOUR_ANSWER

Actually, we cant set the minimum version, because just read
The minimum version of the SSL protocol that you want CloudFront to use for HTTPS connections. Can only be set if cloudfront_default_certificate = false
And we do set this boolean to true under certain cases of user certs.
Here: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_distribution
Instead, will have tfsec ignore this rule.


FPS mode in the viewport with gravity and collisions

Godot allows to navigate in the viewport while holding the right mouse button and using WASD and Shift, but I could suggest to have a shortcut to enter in FPS mode like Blender's Shift + f shortcut and to have an option to enable the gravity and collisions. This would allow to test our level and the proportions of the assets, the size of the corridors, etc.

There is an alternative shortcut already to toggle fly mode, which is Shift+F too.
However, if you want to use that mode to play as a character in a level, there are quite a lot of things to consider:

Your scene needs colliders
Your scene needs to be playable
The editor needs a way to figure out how big your character would be
Why not just drop a character controller scene and play the scene?

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.
The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.
If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!


DataPoints in Dvice Names

Describe the bug
Datapoint as Divice Name don´t behave linke discribed in the WIki:

Testet all posibilitys but no one of them worked.
Installed Iqontroll:
V2.1.0

Please add a leading pipe-sign:
|{shelly.0.SHDM.....name|Shelly}
sorry the syntax is not very intuitive... it is
Text while loading|Text after loading {iobrokerstate|fallback}


Save or print schedule

Provide a way to either save the schedule as a picture or print it out.

Fixed in PR #14.


Set namespace as readonly

Namespace should be readonly to avoid users shooting in their feets by changing it after apphook has been loaded on the page

@mkoistinen do you agree? changing namespace here after the apphook is added leads to an error, as it's not automatically changed in the linked page. Trying to sync the page when changing it can add complexity with very little value imho

@aldryn/aldryn-addon-developers any comment on this?

Merging this. I'll relase 0.2.7 shortly


Support sending Dataview tasks to Canvas

In the following request, one can send entire notes to Canvas, it would be great if one can achieve something similar for tasks.
https://github.com/ivaneye/obsidian-files-cooker/issues/9
More specifically, one can achieve the following:

Use Dataview to search for all desired tasks
Add all desired tasks to Canvas

Obsidian now supports "Narrow to block". Therefore, this can be used to add a task of the current block.

It would be great if the above can also be support in DataviewJS.

The reason for having this request is that one can then arrange key tasks on Canvas like what Taskheat can do.
https://eyen.fr/taskheat/

I had a discussion on the Obsidian Discord channel about sending block links to Canvas, which can be useful for this feature request: https://discord.com/channels/686053708261228577/1050087185602334833/1132967909791117453
Additional, one can use the plugin Copy Block Link to create IDs for the queried blocks.

https://github.com/mgmeyers/obsidian-copy-block-link

Thanks for the update!

「Add dataview task to canvas...」or 「Add selection in current file to canvas ...」

These commands would send the task text to the specified Canvas file. Would it be possible to also support sending the block links of the queried tasks to the Canvas file?


False positive warning during the code analysis performed by SE-0430 "transferring" parameters and result values

Description
The compiler emits false positive warnings whenever a value is transferred twice.
Reproduction
func schedule(_ action: transferring @escaping () -> Void) { }

// OK
func f1(_ closure: transferring @escaping () -> Void) {
    schedule {
        closure()
    }
}

// Compiler warning
func f2(_ closure: transferring @escaping () -> Void) {
    schedule {
        schedule {
//      `- warning: task-isolated value of type '() -> Void'
//         passed as a strongly transferred parameter
            closure()
        }
    }
}

Expected behavior
The compiler emits no diagnostic
Environment
$ /Library/Developer/Toolchains/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-04-22-a.xctoolchain/usr/bin/swift --version
Apple Swift version 6.0-dev (LLVM 94447cf359772fc, Swift f36098a14a0d48b)
Target: arm64-apple-macosx14.0

Additional information
I discovered this issue while exploring the possibilities evoked in this forum post.
I assumed that DispatchQueue.async WILL be modified so that it accepts a transferred closure instead of a Sendable closure.
I have some code that performs double async dispatch in order to avoid thread explosion (technique discussed in this forum post).
And that's how I had to transfer a closure twice, saw a warning, and opened this issue.

I have similar warnings in (real) code that involves continuation, as below:
// Definition of asyncRead used below
func asyncRead(_ value: transferring @escaping (Result<Database, Error>) -> Void)

public func read<T>(
    _ value: transferring @escaping (Database) throws -> transferring T
) async throws -> transferring T
{
  try await withUnsafeThrowingContinuation { continuation in
    asyncRead { result in
//  `- warning: task-isolated value of type
//     '(Result<Database, any Error>) -> Void' passed
//     as a strongly transferred parameter.
      do {
        try continuation.resume(returning: value(result.get()))
      } catch {
        continuation.resume(throwing: error)
      }
    }
  }
}

I'm playing with swift-6.0-DEVELOPMENT-SNAPSHOT-2024-04-22-a from Xcode, which means that it's difficult to know what's happening. To get accurate compiler diagnostics, I compile in the terminal with /Library/Developer/Toolchains/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-04-22-a.xctoolchain/usr/bin/swift build. But I don't know what is the actual definition of withUnsafeThrowingContinuation.
My goal here is to help users use non-sendable values as freely as possible, both as captured inputs, and output of read. Since read guarantees that its value closure is executed only once, and that it does not use the produced values in any way, I believe that using transferring is correct.
I don't really know if I'm facing compiler issues, or if I misunderstand the transferring feature, or if I need yet another compiler feature that is not there yet.

Yet another warning:
func wrap(_ action: () -> Void) { }
func schedule(_ action: transferring @escaping () -> Void) { }

func f3(_ closure: transferring @escaping () -> Void) {
    wrap {
        schedule {
//      `- warning: task-isolated value of type '() -> Void'
//         passed as a strongly transferred parameter
            closure()
        }
    }
}

In this case, the wrap function accepts a non-escaping closure, so I would have expected the absence of diagnostic.
The real code that triggers this warning is:
func asyncRead(
    _ value: transferring @escaping (Result<Database, Error>) -> Void
) {
    // Here `wrap` is actually `Mutex.withLock`
    databaseAccessMutex.withLock { databaseAccess in
        guard let databaseAccess else {
            value(.failure(DatabaseError.snapshotIsLost()))
            return
        }

        // This method is declared as:
        // func async(_ block: transferring @escaping (Database) -> Void)
        databaseAccess.reader.async { db in
            value(.success(db))
        }
    }
}

Hello,
This issue is still there in Xcode 16 beta 1 (with transferring renamed to sending).
I still assume that this warning is a false positive. Please somebody chime in if I'm wrong, so that I do not ship an incorrect workaround 🙏
My current workaround involves an unchecked sendable wrapper:
func schedule(_ action: sending @escaping () -> Void) { }

// OK
func f1(_ closure: sending @escaping () -> Void) {
    schedule {
        closure()
    }
}

// Compiler warning
func f2(_ closure: sending @escaping () -> Void) {
    schedule {
        schedule {
//      `- warning: task-isolated value of type '() -> Void'
//         passed as a strongly transferred parameter
            closure()
        }
    }
}

// MARK: - Workaround

/// Helps compiler accept valid code it can't validate.
struct UncheckedSendableWrapper<Value>: @unchecked Sendable {
    let value: Value
}

// No compiler warning
func f3(_ closure: sending @escaping () -> Void) {
    schedule {
        // TODO: remove wrapper when <https://github.com/apple/swift/issues/73315> is fixed.
        let wrapper = UncheckedSendableWrapper(value: closure)
        schedule {
            wrapper.value()
        }
    }
}

Here are two other snippets that reveal a variant of the warning. Maybe this is another compiler issue.
The first snippet turns a call to DispatchQueue.async(execute:) into an async function that returns when the submitted closure has completed. I believe this is a valid use case (and I actually need it). I wonder if it should be supported without any workaround such as UncheckedSendableWrapper:
// Similar to a future `DispatchQueue.async(execute:)`, according to
// <https://forums.swift.org/t/how-can-i-use-region-based-isolation/71426/5>
func async(execute work: sending @escaping () -> Void) { }

func awaitCompletion(_ closure: sending @escaping () -> Void) async {
    await withUnsafeContinuation { continuation in
        // ⚠ Task-isolated value of type '() -> Void' passed as a strongly
        // transferred parameter; later accesses could race; this is an
        // error in the Swift 6 language mode.
        async(execute: {
            closure()
            continuation.resume()
        })
    }
}

A minimal sample code that reproduces this warning:
// Minimal
func async(execute work: sending @escaping () -> Void) { }
func f(_ fn: () -> Void) { }

func noWarning(_ closure: sending @escaping () -> Void) async {
    // No warning
    async(execute: closure)
}

func warning1(_ closure: sending @escaping () -> Void) async {
    f {
        // ⚠ Sending 'closure' risks causing data races; this is an error
        // in the Swift 6 language mode
        async(execute: closure)
    }
}

func warning2(_ closure: sending @escaping () -> Void) async {
    f {
        // ⚠ Task-isolated value of type '() -> Void' passed as a strongly
        // transferred parameter; later accesses could race; this is an
        // error in the Swift 6 language mode
        async(execute: {
            closure()
        })
    }
}

Note that withUnsafeContinuation and f have a non-escaping input closure. Is it really possible that a race can occur?

Case closed: those warnings are currently expected. See this forum post by @rjmccall.


Enhancement request: Structured dump of metadata / index

What does this PR change? What problem does it solve?
This enhancement request add a new subcommand metadata which allows a structured dump of metadata / index.

'restic metadata -r ' can now create a structured dump of the following metadata
- snapshots
- index entries
- file metadata
- child to parent relationship, depends on snapId (directories only)
- parent to child relationship, one global table (directories only)
- flattened topology of one snapshot
- datablob information
- all of the above
All output is JSON formatted
Format of selected output:
snapshots: "snapshots": [
{
"snapID": "<snapid 1>",
"short": "<short snapid 1>"
"snapdata": {
normal JSON output for a snapshot 1
}
},
...
{
"snapID": "",
"short": ""
"snapdata": {
normal JSON output for a snapshot n
}
}]
index: "index": [
<normal JSON ouput for an index entry 1>,
...

]
file: "file_meta_data": [
{
"id": "<metablob 1>",
"path": "<directory path for metablob 1>",
"nodes": <normal JSON output for a metablob 1>
},
...
{
"id": "",
"path": "",
"nodes":
}]
parent-child: "parent-child-map": [
{
"parent": "<parent 1 metablob>",
"children": [
<child 1 metablob>,
...

]
},
...
{
"parent": "<parent 1 metablob>",
"children": [
<child 1 metablob>,
...

]
}]
child-parent: "snapID-child-parent-map": [
{
"snapid": "",
"child-parent-map": [
{
"child": "<child 1 metablob>",
"parent": "<parent 1 metablob>"
},
...
{
"child": "",
"parent": ""
}
]
}]
flat-topology: "topology": [
{
"snapid": "<snapshot 1>",
"blobs": [
"<metablob 1>",
...
""
]
},
...
{
"snapid": "<snapshot 1>",
"blobs": [
"<metablob 1>",
...
""
]
}]
datablob:   "datablob-table": [
{
"datablob": "<data blob 1>",
"snapid": "<snapshot 1>",
"metablob": "<meta blob 1>",
"position": <position 1>,
"offset": <offset 1>
},
...
{
"datablob": "",
"snapid": "",
"metablob": "",
"position": ,
"offset":
}]
I attach a small example output from one snapshot containing 4 files and a few directories:
Was the change previously discussed in an issue or on the forum?
https://github.com/restic/restic/issues/4341

small-example.json
Checklist

[X] I have read the contribution guidelines.
[X] I have enabled maintainer edits.
[ ] I have added tests for all code changes.
[X] I have added documentation for relevant changes (in the manual).
[X] There's a new file in changelog/unreleased/ that describes the changes for our users (see template).
[X] I have run gofmt on the code in all commits.
[X] All commit messages are formatted in the same style as the other commits in the repo.
[X] I'm done! This pull request is ready for review.

will come back with a better solution later,


Remove marriage-abroad outcome path precalculate blocks

I'm continuing to refactor marriage-abroad. This branch removes the precalculate blocks from outcome_os_kuwait, outcome_spain and outcome_consular_cni_os_residing_in_third_country by moving logic to the MarriageAbroadCalculator.

I'm not sure why my comments are showing up as being on an outdated diff - as far as I can tell I added my comments to the latest version of the commit.

Minor: In the PR description, I would say you are moving the logic to the calculator and not just adding it.

I think it might be worth trying to encapsulate the concept of a path to a question or outcome being made up of slash-separated responses somewhere. Perhaps a path_to_outcome(responses) helper method similar to url_for might be worth considering. However, it doesn't necessarily need to be done in this PR.
Otherwise this looks good to me.

I'm not sure why my comments are showing up as being on an outdated diff - as far as I can tell I added my comments to the latest version of the commit.

I noticed this happen to some of the comments I left on another PR too. Presumably related to GitHub's recent code review updates...

Minor: In the PR description, I would say you are moving the logic to the calculator and not just adding it.

Done.

I can see that something like path_to_outcome(responses) might be useful but I'm not going to worry about it for now. As far as I can see, marriage-abroad is the only Smart Answer that links to other outcomes so I don't think it's too terrible that this logic is contained within the MarriageAbroadCalculator at the moment. I hope that makes sense.

Thanks for reviewing, @floehopper. I'm going to close this and open a new PR now that I've addressed feedback and rebased the branch on master.

This has been superseded by PR #2387.


sync - continue the last process

How does the "Continue the last process" know where the previous sync process left off, and where to begin?

There is an option field that is being populated with current progress. If mode is set to Continue the process then it gets this option field and starts with it. Or starts from the beginning it the option is empty.


problem with youtube

Image and container are not modified.
Open browser and enter youtube.com (youtube.com/?gl=HK)
--display
Aw, Snap@
something went wrong while displaying this webpage
error code: SIGABRT

Try youtube.com/?gl=US there is no issue
youtube.com/?gl=BR there is no issue
youtube.com/?gl=JP only font cannot display but no crash

Try youtube.com/?gl=US there is no issue
youtube.com/?gl=BR there is no issue
youtube.com/?gl=JP only font cannot display but no crash

Hello,
thank you for your feedback. However, I'm not able to reproduce the problem. Unfortunately you did not say, which image you've used. I've tested accetto/ubuntu-vnc-xfce-chromium-g3:latest and accetto/ubuntu-vnc-xfce-firefox-g3:latest and they both seem to work correctly out-of-the-box, at least from Europe. See the screenshots please.
Maybe it was something temporary and it already works also from your place?
One more remark: These headless containers are intdended to be used via VNC, which unfortunatelly does not support sound. So their usefulness for YouTube is somehow limited.
Regards,
accetto

This is the container with Chromium browser:

This is the containet with Firefox browser:

Hello,
thank you for your feedback. However, I'm not able to reproduce the problem. Unfortunately you did not say, which image you've used. I've tested accetto/ubuntu-vnc-xfce-chromium-g3:latest and accetto/ubuntu-vnc-xfce-firefox-g3:latest and they both seem to work correctly out-of-the-box, at least from Europe. See the screenshots please.
Maybe it was something temporary and it already works also from your place?
One more remark: These headless containers are intdended to be used via VNC, which unfortunatelly does not support sound. So their usefulness for YouTube is somehow limited.
Regards,
accetto

This is the container with Chromium browser:

This is the containet with Firefox browser:

accetto/ubuntu-vnc-xfce-chromium-g3:latest  has issue, there is no issue with firefox image

accetto/ubuntu-vnc-xfce-chromium-g3:latest  has issue, there is no issue with firefox image

Could you closer describe the behaviour please? What message you get exactly and when? Just after the start or later? What operating system and what VNC viewer do you use? Does it happen onyl with YouTube website or also with others? Do you have tried to install or configure something in the container or does it happen in the out-of-the-box state?

Could you closer describe the behaviour please? What message you get exactly and when? Just after the start or later? What operating system and what VNC viewer do you use? Does it happen onyl with YouTube website or also with others? Do you have tried to install or configure something in the container or does it happen in the out-of-the-box state?

docker run -d -P -e VNC_PW=password accetto/ubuntu-vnc-xfce-chromium-g3
then open Browser, enter youtube.com
click youtube.com
then go to blank screen with error coded.

docker run -d -P -e VNC_PW=password accetto/ubuntu-vnc-xfce-chromium-g3
then open Browser, enter youtube.com
click youtube.com
then go to blank screen with error coded.

Thanks. I don't have the same environment, but I'll try to reproduce the problem. Could you test also the 1st and the 2nd generation images please?
2nd generation image: accetto/xubuntu-vnc-novnc-chromium
1st generation image: accetto/ubuntu-vnc-xfce-chromium

Thanks. I don't have the same environment, but I'll try to reproduce the problem. Could you test also the 1st and the 2nd generation images please?
2nd generation image: accetto/xubuntu-vnc-novnc-chromium
1st generation image: accetto/ubuntu-vnc-xfce-chromium

Running is OMV Docker.
docker run -d -P -e VNC_PW=amd2400g accetto/ubuntu-vnc-xfce-chromium

Client tigerVNC Server OMV docker.
Docker run -d -P -e VNC_PW=amd2400g accetto/xubuntu-vnc-novnc-chromium
open www.youtube.com same as before. (default has CJK character)
But if it open a youtube.com link  https://www.youtube.com/watch?v=rM2_2RyJoSQ&ab_channel=Handicrafts it is not crash, But some link still crash

Thanks. I'll try to reproduce it and to figure something out.

I've just released a new 2nd generation image accetto/xubuntu-vnc-novnc-chrome. Maybe you can also check, if you'll get crashes.

I've tried all the scenarios you've described, but I still cannot reproduce the problem. It seems to be dependent on the locale or the geographical location, maybe. Sorry I couldn't help.


Migrate nodeunit -> jest

I wrote a quick and dirty transpile script to migrate the current test.js file which only tests the CSSStyleDeclaration interface to lib/CSSStyleDeclaration.test.js using jest style describe / expect. It's a preference to have the test files next to the source.
Also started a test file for parsers.test.js which really needs to be tested.
Wrote some tests for parsers.valueType which was sparked by this bug: https://github.com/jsakas/CSSStyleDeclaration/pull/94
Add coverage report & integrate with codecov service.
Closes https://github.com/jsakas/CSSStyleDeclaration/issues/65

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@7cd57c5). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #96   +/-   ##
=========================================
  Coverage          ?   59.83%
=========================================
  Files             ?       85
  Lines             ?     1840
  Branches          ?      218
=========================================
  Hits              ?     1101
  Misses            ?      632
  Partials          ?      107

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7cd57c5...2fdc8ac. Read the comment docs.