Custom peek widgets

LightTable and Swift allow for inline evaluation which also places the results in line with the particular line of source which was evaluated.
A new widget would be necessary for this. This widget would be able to hold values or arrays or plots with arrays and plots requiring expansion to be shown fully as to not clutter the editor. The widget would not be dismissed upon losing focus and multiple widgets are possible in the editor.
https://github.com/JunoLab/atom-ink and https://github.com/nteract/hydrogen are two examples of this done in atom.
Below are two example images from Juno which is based on LightTable.

A first good step would be to write an extension and use the registerHoverProvider API.
ping @jrieken

A hover provider should make a decent stopgap for everything but arrays I think. Will see what can be done with that so long.

On 22 Feb 2016, at 11:34, João Moreno<EMAIL_ADDRESS>wrote:
A first good step would be to write an extension and use the registerHoverProvider API.
ping @jrieken
—
Reply to this email directly or view it on GitHub.

+1 This would be a great feature!

Maybe we should think about making the peek experience more rich. Like allowing to preview an html document inside peek

+1 also. Would love to work on an extension for inline evaluation of Typescript/Javascript using something like this.
Something similar to how Jetbrain's tools show inline results in a simple text representation as comments at the end of each line could also be good, but I think allowing more visual representations with arbitrary HTML would be much more valuable and obviously flexible.
I've made a few attempts at doing this myself but I don't really know where to start.

I feel there's real value in being able to display results and other items like documentation on the same editor surface. I suspect this sort of "same surface" in line results will require core editor support.

more visual representations with arbitrary HTML would be much more valuable and obviously flexible.

Completely agree with @andrewshand, having the results be html with their own css would make it possible to for instance display exceptions in smaller red font contained in a box, or display docs just below a function/method name. While smaller/shorter items go well at the end of a row of text, larger inline results/errors/docs/etc need to be below and not overlay the lines below, just move lines down.

We are exploring this in September and will likely make this happen in October - stay tuned

@jrieken It looks like sublime text just added something similar, Phantoms, which is worth looking at for ideas.
https://www.sublimetext.com/blog/articles/sublime-text-3-build-3124
http://www.sublimetext.com/docs/3/api_reference.html#sublime.Phantom
Also, can I ask a question, when you say "drop a line about use-cases/requirements", do you mean to post messages on this thread, or to send you messages directly?

@mikeball drop a line here
The current thinking is to keep this simple and one-way'ed so very similar to the previewHtml command. The underlying implementation will likely use a web view which means full html+js+css available (isolated in a separate process). We still have to explore/revisit the technical limitations that has, like not being able to reparent a web-view et al

Use Case REPL: This feature would be ideal to build language extensions that run integrated REPL's, specifically clojure (github.com/avli/clojureVSCode), but it should work for pretty much any language that can benefit from REPL interaction. I think it makes the act of coding much more intimate because you're not continually referencing consoles to determine what is happening.
Ideally for functions that return void, there would be a way to display a successful code evaluation. For functions that do return data, the ability to show small/short results on the same line, but then have longer/larger results wrap to new line would be nice. Most larger items might not be fully expanded(imaging a very long list of items) and for the editor to be able to expand in some fashion could be nice. For errors displaying them in red and formatted nicely would be good. For documentation it would be nice to display subtle text above a line, so perhaps a feature to show above or below an attached line, and perhaps attach to a column as well. One element of VS Code that does bother me from time to time is showing docs on mouse hover, it would be nice to show docs in a more persistent way for reference while working.
I believe it's important to have an option for results be "attached" to a line until they are dismissed in some fashion, say right click and hide, or perhaps a very small x in upper right to dismiss/close the window. So lines entered above would cause the result to move down with the line. It probably should auto-dismiss if the expression it's attached to is edited because it's no longer a valid result of the displayed expression. A way to clear/hide all results would also be nice.
Widgets that could be styled to appear as part of the editor surface would be nice so they allow focus to stay on the text/code and not be too visually distracting from the act of editing the actual code.
I can also see there being quite a lot of results open at once, so there might be concerns with memory usage.

Swift playground

We have finished our exploration which was about using the webview-tag inside editors. Unfortunately it has many technical challenges (zooming bugs, layout bugs, reparenting etc) that we first have to analyse and understand better.

@jrieken based on explorations so far do you believe that a feature like this can/will ever be added to vscode? Is it something that's still a goal to add someday?

@mikeball This is still high up on our list

@orta this looks interesting, maybe track this if you plan to implement https://github.com/facebook/jest/pull/2629 ?

For ruby users looking for in-line evaluation, you can look at the seeing_is_believing implementation for VS Code by Brandon Conway.
More details on the gem here - https://github.com/JoshCheek/seeing_is_believing

Any news or updates on this feature? Is this simply not likely to happen because of need to change core editor rendering or something like that?

One twist to this would be the ability to just show arbitrary HTML widgets between lines of code, i.e. those widgets would always be full width of the editor, but could have an arbitrary height.
That kind of feature would allow us to add something like the R Notebook feature in RStudio to the julia VS Code extension, something I have wanted to do for a while.

@davidanthoff I'm in the same boat, I don't really care about nor need a full peek widget, just would like to be able to add small html snippets above/to the right and below some point in the editor and have the text/lines moved so that they not covered by the inserted html.
I have a sneaking suspicion that part of the low level problem is optimizations that allow smooth viewing on large files snapshot portions of the editor as an image, and thus are not easy or possible to pop a widget into. Personally I don't need to handle files more than a couple hundred lines long, but some insist in being able to open files millions of lines long.

Does this issue benefit from #43713 in any way? I believe now that the new webview API is almost ready, we should see some progress on this too?

I have the same question as @leocb. Looks like the web view can be only inserted as it's own view in the columns of the editor area, but not as a body of a peek window or (which we be the greatest) as something you could snap on top of a line and has full width of the editor and arbitrary height.
The last UX I strive for because it would enable very interactive experiences to be implemented - intermediate results.

I've been trying to find a way to render markdown and diagrams inline with the code. We have a lot of mathematical notations and flowcharts that should ideally be shown right in the comments, instead of just being linked.
I agree with the idea above by @davidanthoff to have full-width, variable-height regions. And @jrieken's description would also fit with my use cases.
Thanks for all your work!

Is this still being considered, @jrieken? My Clojure extension, Calva, today uses :before and :after decorators to achieve some level of inline evaluation. Looks like so:

But being able to display datasets for exploration would be so much richer and more useful. This lack keeps Clojure coders sticking with inferior code editors.
I keep looking at the tree views in the sidebar and wish I could use such views for this inline evaluation use case, complete with context menus and all.

Please, PLEASE, PLEASE! This!
This is the last piece of functionality that vscode needs before I'd be ready to go all-in with it. When it is, everything I want can be implemented in an extension.
I think I might be willing to invest some time to help make this happen if I could depend on a modicum of guidance from others with the capability but not necessarily the availability. I'll start by looking at #66418, of course, but my impression is that the right implementation for this is architecturally pretty different from that solution.

FWIW, although the Juno support in LightTable and Atom was designed for arbitrary HTML, we haven't really made use of that. For plots and images, for example, we now have a dedicated plot pane and the inline result is just a tick to confirm that the block was evaluated.
For our purposes what we'd need, in order of priority, is:

Multi-line after-like decorators that expand to show their full content when clicked;
Some light formatting options and URLs (so we can turn paths in stack traces into links);
As a bonus, tree views for more complex data structures (as in the debug variables view or Chrome's devtools). Nice if it can load sub-trees lazily.

I suspect that'd cover the vast majority of what people want from this feature, while perhaps being easier to implement than general webviews.

Darn, I've tried PyCharm, Jupyer(lab, notebook), Sublime, Emacs, Vim, VSCode (Python), Atom + Hydrogen but Hydrogen is the highest standard of all; the way it does approach to data science. Live Share is a killer feature with calls and chat and only thing VSCode lacks is Hydrogen-like workflow, please make it happen!

I'd be super grateful of this functionality, hydrogen is the only thing keeping me with atom

@ctr26 Would you call that a... hydrogen bond?

This feature would be great to have. Clojure and other language users who uses REPL would benefit a lot from inline evaluation and structure navigation.

Any solution for Python inline result?

is this feature still not implemented yet?

is this feature still not implemented yet?

Considering it's still open, best guess would be no, it's not implemented "yet".
Personally, I've started citing the VSCode team as a glorious example of the pure, undiluted, steamrolling power of a small but dedicated, highly professional, well-managed team of what I can only assume to be overqualified veterans who each made some unfortunate-but-excusable mistake early in the movie that had them assigned to this mission out there in the jungle that everyone considers a death trap but from which they are about to return, riding exotic animals and smoking funny cigars....
But, I guess, my perspective may not exactly match everyone's.
Still, as general rule, I've found a remarkable correlation between entitled requests for features to be implemented and the sudden appearance of entirely plausible reasons for said features being, unfortunately, not quite possible to implement at this time.

Just want to +1 this to add to the conversation. Being able to do webview-esque things in a peek window using the underlying language server would offer some pretty incredible possibilities.

My heart was broken when I found out that Facebook dropped nuclide support. The atom-ide together with hydrogen has been the ultimate data scientist's and research engineer's wet dream. I'm really hoping this becomes a thing for vscode as I'm seeing the writing on the walls that atom support is slowly being orphaned.

👀

I'm wondering if this is less of a priority as Code fleshes out its Notebook support. Custom peeks would still be great but it's also hard to think of a case that isn't solved by Notebooks.

Some potential uses of custom peek widgets not covered by notebooks (notebooks are not ideal for on larger codebases, at least not directly):

one-way (read-only):

rich library/language help (with links, images, videos)
boolean truth table of
expression/function plot inside a regular source code for a game/app (without needing to create a special notebook)
interactive preview of macro expansion / compile-time evaluation
exception info - nested/inner-exceptions, stack traces (expandable)
preview of selected Markdown/HTML

two-way (read-write):

inline editors for colors/gradients/images (as alternative to hover)
array data visualized/editable as tables
settings/config panels for UI components, server routing, ...
extensions could add things like task-list or comments – either inline or at the top of each file

@jrieken :

Maybe we should think about making the peek experience more rich. Like allowing to preview an html document inside peek

Back when I read this the first time I didn't really understand what was meant by the peek experience. But now I think I do. I can only conclude that this wouldn't be as good as the suggestion. Personally I get confused when the peek appears and I find myself trying to avoid it. The suggestion in OP is something completely else, as.I read it. Especially if we use LightTable as an inspiration. There this kind of widget can start out almost as a line decoration, and the user can then chose to expand it and start drilling down, without causing (to me) anything near the confusion that the current peek experience in VS Code does. It is more like a sticky hover, and there can be several opened at the same time.

Would this be easier if it only supported images? Obviously there are lots of interactive things people would like to do but I imagine just showing static images is the biggest reason to want this (#28083, #98194, #41775), and maybe that avoids the zooming and layout issues that were encountered when using a full web view.

In the mean time, I am trying something different here:
https://github.com/mnesarco/vscode.imagecomments
Images are shown in a side panel automatically based on cursor context.

any workaround for this?
I am also struggling to display multiple lines by using the property -> contentText of ThemableDecorationAttachmentRenderOptions

any workaround for this?
I am also struggling to display multiple lines by using the property -> contentText of ThemableDecorationAttachmentRenderOptions

Me too!. Need something like 'virtual lines' to create a blank space to show something.
like this area

Is there such an API to create 'virtual lines' ?

any workaround for this?
I am also struggling to display multiple lines by using the property -> contentText of ThemableDecorationAttachmentRenderOptions

Me too!. Need something like 'virtual lines' to create a blank space to show something.
like this area
Is there such an API to create 'virtual lines' ?

For now, to make multiple-line works, I have to do some custom width calculation and break the line automatically by the use of white-space:initial, but this only works perfectly for the 2 line paragraph/string

Any update on this?

up

upup

I noticed that Copilot is able to insert some "Virtual text". Does anyone know which API can achieve this?
Like this

The decoration api can insert some "Virtual text" in one line. but i want to insert a block of "Virtual text"

@Linzecong I think it is named "inline completion".

@Linzecong I think it is named "inline completion".

It is, but it can only be inserted at the cursor which means you can only have one at a time in a file. It also means that it will insert the content text, which limits its uses

@Linzecong I think it is named "inline completion".

It is, but it can only be inserted at the cursor which means you can only have one at a time in a file. It also means that it will insert the content text, which limits its uses

Indeed, inline completion can be used for code completion, but it has many usage limitations that prevent me from freely controlling its display and using it independently in other situations.

For anyone like me who's looking at this just needing to insert interline HTML, there is a separate Issue called Editor Insets. It's been merged into main, although its acceptance into production has been ignored for a good few years. Still, you can use it now in VSCode Insiders!


Remove explicit import of NotStrict - fixes #492

DON'T merge this until #476 is merged.

This currently (2/7/17) fails in rocket-chip. See jenkins rocket-chip build 1115.

Wow I was just trying to write some new code in rocket-chip today and encountered a very similar error. I don't think undirectioned bundles are given the "default" direction correctly.

Mine occured in a more complicated bundle though:
Caused by: chisel3.internal.ChiselException: Connection between left (uncore.tilelink.ClientUncachedTileLinkIO@3e641d) and source (uncore.tilelink.ClientUncachedTileLinkIO@487385) failed @.grant.bits.data: Locally unclear whether Left or Right (both internal)

I've think I've correctly threaded the compileOptions through all the required methods (all tests pass), but is there a better way to do this (i.e., as part of sourceInfo setup)?

Since #476 has been merged, is this good to go (once conflicts are resolved)?

@ducky64, could you re-review this please?

retest this please.


bluetooth: kw41: Add KW41Z BLE support

Add build changes to support NXP BLE link layer library to Zephyr
Add BLE link layer controller wrapper around NXP BLE library

Signed-off-by: David Leach<EMAIL_ADDRESS>

Codecov Report

Merging #10384 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #10384   +/-   ##
=======================================
  Coverage    52.9%    52.9%
=======================================
  Files         210      210
  Lines       25732    25732
  Branches     5672     5672
=======================================
  Hits        13614    13614
  Misses       9802     9802
  Partials     2316     2316

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 316f860...464eba7. Read the comment docs.

@dleach02 there seems to be some issues with your commit summaries. We typically add spaces after the colons (ext: mcux: and not ext:mcux) and we also use Bluetooth: controller and Bluetooth: host and not ble:.

@dleach02 : Is there interest in continuing with this PR? Otherwise would you like to close it?

@aescolar there are some third party folks that have been playing with this PR. Internally at NXP, we are still working through the logistics on how to distribute a library used by this PR. For now, I would prefer to just leave the PR as is and as DNM until NXP works out the internal logistics.

@dleach02 Would it be acceptable for you to close this PR? (It can always be reopened, and its base branch would remain in your own clone. Closing it simply reduces the amount of noise maintainers need to sift thru)

Closing this PR until internal logistics are worked out in NXP on how to handle library deployment.


Downloading YouTube playlists isn't working

I tried to download https://youtu.be/eIb1cz06UwI?list=PLoJC20gNfC2gmT_5WgwYwGMvgCjYVsIQg but it just downloads the first video. I also tested another playlist and did the same.

https://github.com/iawia002/annie#supported-sites


Updates VFR Flight Instructor

#1917

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


Package categories doesn't make any sense

Describe the bug
Package categories in the app are completely different from the ones on server and often make zero sense.
To Reproduce
Open the app.
Have some packages installed.
Compare package categories in the app with the ones on server.
Expected behavior
Loco 754 dependencies are not showing up as scenery  and locomotives are not showing up as wagons.
Screenshots

Please complete the following information:
Version [e.g. <IP_ADDRESS>]

Resolved in ef8cfaf by localisations.


don't coerce header value to string on set

Official Koa documentation about response.set says  This delegates to setHeader which sets or updates headers, but setHeader doesn't convert header value types until sending them to the network. This PR fixes behavior of response.set to be according to the documentation.
Also removes recursion on .set calling .setHeader directly, for performance reason.

This change is reasonable but may contains breaking change, I'd like to merge it when we start next  major version's development.

@dead-horse remember that in current implementation you have two more documented ways to set a response header:
ctx.res.setHeader('Content-Length', 256);
ctx.response.header['content-length'] = 256;

I've linked above that official documentation clearly states that ctx.response.set delegates to ctx.res.setHeader while in fact, it's not exactly the same. So, I don't understand why do you think it's a breaking change while, according to official documentation of Koa, it should be a bug fix.

The current major has been out and in use long enough that at this point the bug is in the documentation for it. Seems reasonable to adjust it in next major as @dead-horse said.

good idea.
@dead-horse can we make koa v3 branch to develop?


Fix gflags imported target for Ubuntu

Most likely requires RobotLocomotion/drake#12250.

This change is

Still failing :(
CMake Error at src/particles/CMakeLists.txt:40 (find_package):
  Could not find a package configuration file provided by "gflags" with any
  of the following names:

    gflagsConfig.cmake
    gflags-config.cmake

Still failing :(
CMake Error at src/particles/CMakeLists.txt:40 (find_package):
  Could not find a package configuration file provided by "gflags" with any
  of the following names:

    gflagsConfig.cmake
    gflags-config.cmake

That one, I can fix. We need to switch CircleCI to Bionic.

CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Bazel: Found unsuitable version "1.0.1", but required is at
least "1.1" (found /usr/bin/bazel)

This one is a strange one. There must be a problem with the Bazel apt repo. I guess we have to manually download the .deb and lose our canary for future Bazel issues (for now).

Aye, gotcha.
And for using Bionic, is just switching this line?
https://github.com/RobotLocomotion/drake-external-examples/blob/a37f16d0702a8ff6d0de43924ae50f9bb04be517/.circleci/config.yml#L36

This one also
https://github.com/RobotLocomotion/drake-external-examples/blob/a37f16d0702a8ff6d0de43924ae50f9bb04be517/scripts/continuous_integration/circle_ci/setup#L34
and obviously we can delete the xenial folder completely.

K, I'll make that PR.

I forced a rebuild of the drake binaries, and it looks like this PR is going to pass on Linux, so I think we are good now.

+@EricCousineau-TRI for review


fix: use chain credentials for routers minio client

Motivation and Context
This fixes the issue described in https://github.com/wundergraph/cosmo/issues/1249 by using a minio credential chain. This allows multiple credential providers to be configured which minio will attempt to use in the order provided.
It appears this section of the code base lacks tests, so I haven't added any.
TODO

[ ] Tests or benchmark included
[ ] Documentation is changed or added on https://app.gitbook.com/
[x] PR title must follow conventional-commit-standard

Hi @lachlan-smith, thank you for the PR! Great addition!


add public src

Drift video:https://video.drift.com/v/abavLJuYLallLLeBMJ85E3mnGAFky6goAN48804cJ2ek/
Screenshot:

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
9

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
4

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Metric
Value

alert_status
:x: ERROR

bugs
1

code_smells
9

reliability_rating
B (at least 1 Minor Bug)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Metric
Value

alert_status
:x: ERROR

bugs
1

code_smells
4

reliability_rating
B (at least 1 Minor Bug)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0


modify post verb to merge

modify post verb to merge

CC @edwin-huber @CodeUnicornMartha @iamNoah1
Unblock https://github.com/Azure/Azurite/issues/491 and https://github.com/Azure/Azurite/issues/490


Add web server and use to load HTML UI instead of loading direct via the filesystem.

[x] Add a web server to the Python application and serve up the web UI
[x] Implement mechanism to ensure JS client code uses correct host for WebSocket API

Implemented in 6c2909a601f5663a0b6f81fa61d7c38b9224d493


Always have a non-degenerate path to display for *Task

As I started to run an import, I noticed both in the autotagging prompts and logfile that certain filenames were instead printed as None, e.g.
None (1 items)
Finding tags for album "MF DOOM - MM..FOOD".
Candidates:

It turns out that ImportTask.paths is referenced a bunch of places as an assumed-truthy value. To support these references, I've added a property called paths_for_display which will fall back to the task's items should its paths be falsey.
After changes, we have
/Users/job/Music/collection/4ize/MM..Food_/Guinnesses.mp3 (1 items)
Finding tags for album "MF DOOM - MM..FOOD".
Candidates:

Please advise in terms of any tests that need to be updated.

Thanks for looking into this!
I'm trying to try to understand the root of the problem (i.e., why does task.paths ever become None?), and it looks like this happens when using album-grouping. Does that seem right to you? That is, does the None only arise when you choose the "group albums" option (or else you have that set in your config file)?

@sampsyo yeah, that's certainly consistent with my config.

 ⇨  beet config

directory: ~/Dropbox/music/collection

import:
    write: yes
    copy: yes
    move: no
    incremental: yes
    group_albums: yes
    log: ~/Dropbox/music/beets/beets.log
threaded: yes

ui:
    color: yes
library: ~/Dropbox/music/beets/library.db

Great. Thanks for the extra detail.
I think it was an oversight not to set the task's paths in the first place. The paths field has two purposes: display/logging, as you found here, and also progress/history tracking. For both purposes, I'm pretty sure we want grouped-album tasks to have paths that reflect the individual files involved. So I'm pushing a change now that initializes the field with that in mind.
See also #825, which brought up the same logging issue.
Would you mind trying this out to make sure I didn't break anything?


Add io.lettuce.core.metrics.DefaultCommandLatencyCollector$DefaultPauseDetectorWrapper to the initialize-at-build-time arg

Fixes #2579

Thank you for your contribution. That's merged and backported now.


{CI} Update fabricbot.json

Add container app code owner to reviewers
Support Arc Appliance

This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

CI


UWP print bug: cannot remember print quality

Describe the bug
When printing in a UWP app using the standard print preview dialog, it's not possible to get it to remember the selected output quality. It's possible this may depend on the printer (I'm using an Epson XP-640), but using the old-style preferences dialog from Word can correctly remember the print quality option.
Steps to reproduce the bug
Go through the necessary steps to enable printing in a UWP app. Add a PrintTaksSourceRequestedHandler that looks like the following.
void PrintTaskSourceRequested(PrintTask printTask, PrintTaskSourceRequestedArgs sourceRequested) {
      sourceRequested.SetSource(printDocumentSource);
      printTask.Completed += PrintTask_Completed;
      printTask.Options.DisplayedOptions.Clear();
      printTask.Options.DisplayedOptions.Add(StandardPrintTaskOptions.PrintQuality);
      printTask.Options.PrintQuality = PrintQuality.High;
      PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);
      printDetailedOptions.OptionChanged += PrintDetailedOptions_OptionChanged;
      printTask.Previewing += PrintTask_Previewing; //Implementation omitted
}

private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) {
    System.Diagnostics.Debug.WriteLine(sender.Options.PrintQuality);
}

private void PrintTask_Completed(PrintTask sender, PrintTaskCompletedEventArgs args) {
    System.Diagnostics.Debug.WriteLine(sender.Options.PrintQuality);
}

Note that when opened, the print dialog output quality is set to standard, not high. Upon changing the print quality option or print completed, the quality is logged as PrinterCustom. It will print in high quality if high quality is selected, but there's no way to remember this option or set it in the first place. All the other options I tried to remember (such as paper type) work fine.
It seems that you actually have to have a real printer connected for this to happen. I only have one printer so cannot test with another one.
Expected behavior
PrintTaskOptions.PrintQuality should return the currently selected value instead of PritnerCustom and it should be possible to set this option without it changing back to standard when the preview dialog is displayed.
Version Info

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

May 2020 Update (19041)
Yes

November 2019 Update (18363)
Yes

May 2019 Update (18362)

October 2018 Update (17763)

FWIW: I've seen the OneNote printer driver forget resolution when printing from Win32 apps.

Thanks for reporting this! This is actually a Windows platform bug and not a Project Reunion bug, so I've filed a bug with the platform team (internal bug #31584327) and asked them to follow up here with any updates.
I'll close this thread since this isn't an active issue with Project Reunion itself, but I appreciate you submitting this detailed report!
If you'd like to track the status of the bug, you could submit this bug report through Feedback Hub and then share your link to your feedback so that I can link it up with the platform bug I created.

@andrewleader , thanks for filing the issue. I'm not a fan of the Feedback Hub, but I submitted it anyway - https://aka.ms/AAb117l
Actually I just remembered there is a relatively new GitHub repository for reporting issues, but they are only taking performance-related issues right now - https://github.com/microsoft/WinDev. Do you know if they are going to start accepting platform bugs any time soon?
Also, I'm wondering if there are certain classes of platform bug where project reunion could potentially provide a workaround API that works downlevel. I'm thinking that one of the project's goals is to ensure the user doesn't have to install a major OS update to get new features, but ideally this should also apply to bug fixes as well - perhaps even more so. Do you think that's realistic?


Create curseforge release

Need to create a release for curseforge. Can be done using the existing pipeline github action.
This should follow #45, #46, #47

Added to the yml, will resolve once mods approve on curseforge

https://www.curseforge.com/minecraft/mc-mods/gilly7ce-carpet-addons


[Feature Request] Useless nullable annotation

Hello
Here is a feature request to detect useless annotations:

@ORM\Column(nullable=false): default value is already false according to the doc (https://www.doctrine-project.org/projects/doctrine-orm/en/2.14/reference/annotations-reference.html#annref_column)
@ORM\JoinColumn(nullable=true): default value is already true according to the doc (https://www.doctrine-project.org/projects/doctrine-orm/en/2.14/reference/annotations-reference.html#annref_joincolumn)

Thanks!

And the same goes with ORM\Column(type="string") as string is the default type

Reporting cases where an annotation (parsed with doctrine/annotations) has useless explicit configuration seems like a scope for a separate plugin IMO, instead of conflating all possible doctrine packages into the same plugin.
Currently, this plugin is all about the doctrine object manager projects.
doctrine/annotations is a totally separate package that is used by many other projects than the doctrine object manager projects (and it is targeted at a slow death in favor of attributes)

Just did stumble over this issue if you are using @rectorphp the RemoveRedundantDefaultPropertyAnnotationValuesRector rule covers this and will fix it automatically:

Most people still think rector as only a refactoring tool but I really can recommend it to use it in daily way like phpstan, php-cs-fixer and other linters.

Thank you @alexander-schranz
The rule was removed 3 weeks ago!
https://github.com/rectorphp/rector-doctrine/pull/196


Capturing active window results in empty files

Hi there, first let me thank you for this amazing tool :)
While the modes capturing the monitor and rectangle work, I've noticed the "active window" mode creates 0-byte files on my system.
If there's anything I can do to help debug this issue, let me know!
Microsoft Windows [Version 10.0.19043.1415]

Cheers

Is wcap exe crashing when you try to record your window - is icon staying alive in system tray or disappearing?
What kind of window are you trying to capture?

No crashes, wcap remains running fine. I had tried only tried browser windows (Firefox and Edge) so far, but now tested with a cmd.exe window - which it recorded fine! I could also record a Chrome window... this is a bit weird...

Hmm, I've tried recording Edge and Firefox and both are recording fine for me. Does something changes if you flip "Only Client Area" checkbox in settings? What about disabling (or enabling) "GPU Encoder" setting?

"Only Client Area" did not have any effect, but it starts working when I disable the "GPU Encoder" setting!


Save Changes button in Challenege Editor Displays Unformatted Alert

Looking forward for reporting a security issue:
Please report security issues by following our security policy: https://contribute.freecodecamp.org/#/security
Describe the bug
When using the challenge editor, upon saving changes, the confirmation alert that pops up reads:
{"message":"Your changes have been saved and are ready to commit!"}.
It should instead read simply:
Your changes have been saved and are ready to commit!.
Affected Pages
Error will appear after saving on on any challenge editor challenge.
For example: (http://localhost:3300/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher).
To Reproduce

Run the challenge editor with pnpm run challenge-editor
Go to (http://localhost:3300)
Navigate to any specific challenege.
Pressing the save changes button will then produce the alert with the unformatted message.

Expected behavior
The alert should display:
Your changes have been saved and are ready to commit!.
Screenshots
Currently, the alert displays like this:

When instead it should look like:

System

Device: Macbook Pro
OS: Ventura 13.1
Browser: Chrome
Version: 123.0.6312.59 (Official Build) (x86_64)

Recommended fix or suggestions
The code that handles requests for the challenge editor does not correctly handle saveRoute requests because it expects the incoming object to have the fields stdout and stderr. I propose a fix where we edit the route handler to check if the incoming objeect posses a message field, and if so, alert() the message directly instead of using JSON.stringify().
Additional context
I will be monitoring this issue closely for the next few hours and I am ready and willing to fix this issue.

Sounds good @benzoms, I think we would accept this change. Feel free to make a PR.


feat: add alt text support to decorateIcon

Description
Moving @bstopp's PR from aem-boilerplate.
Opting for an empty alt attribute here in lieu of setting role attribute to presentation based on recommendations from Web Hypertext Application Technology Working Group and the Web Accessibility
Initiative.
The Worldwide Web Consortium provides an example for the use of role="presentation":

An image that is in a container with the img role and where the full text alternative is available and is marked up with aria-labelledby and (if needed) aria-describedby;

Where, in this instance, we don't meet that threshold without the "full text alternative" in this specific implementation.
Related Issue
#18
Motivation and Context

"The Lighthouse output results in a "Links do not have a discernible name" accessibility error which reduces the score" — @dave-fink

"By default, all icons would be purely decorative (most cases), but projects could opt-in to individually override icons they know should be descriptive either in their blocks or in the auto-blocking function." — @ramboz

How Has This Been Tested?

/test/decorate/decorateIcon.test.html
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

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

npm package (@latest dist-tag)
GitHub release
v1.4.0

Your semantic-release bot :package::rocket:


v1.0.0-rc.4 release

@niklasvh Could you please release a v1.0.0-rc.4 build so we can have a released version with the fixes and features that have been merged since v1.0.0-rc.3?

yes please! this would be awesome. ATM we're having to use v1.0.0-rc.1 to avoid TS build errors and other problems

Added/merged some more fixes and published rc.4. Sorry for the delay.


Seek to reuse allocations in dogstatsd's intern mechanism

What does this PR do?
This commit makes two changes to the dogstatsd string intern mechanism. When creating a new instance of stringInterner we now size the strings map up to its maximum size. In addition when we must purge the strings map we now loop through the map and delete each value, preferring to retain and reuse the allocation.
Additional Notes
Profiles suggest purges are relatively rare -- or, at least, they don't show up in the profiles -- and it is growing the map that is the time cost.
Possible Drawbacks / Trade-offs
Depending on the value of maxSize we may preallocate a truly large map where, in practice, the majority of this state space might not be used. Considering the amount of time we spend growing the map and the extant call-sites I do not believe this to be a concern at present.
REF #19125
REF #19142
REF SMP-677

With regard to the last regresison detector run, the changes are throughput neutral with the comparison version having +30Mb live heap objects, which makes sense because we pre-allocate the storage we require. Total lifetime allocation sizes are constant-ish, which again tracks.
If the goal is to improve throughput and reduce memory consumption this -- at least over our experiment window -- is not it. I think a FIFO queue for eviction would be very interesting, as well as the use of clear. I'll do clear next.


Enable Network Discovery in SharingClient

I've noticed that Profiler Tool has a very nice feature to auto discover the server (and other clients) on the current network.
I think that this would be a great feature to have on the SharingClient side so it can be integrated in your HoloLens client app.
I've already made the updates and would like to see what you guys think - I'll submit the PR soon.
The idea is, that if you guys approve, we can update the HoloToolkit-Unity SharingStage class with an AutoDiscover flag that can be used instead of IP. I already have a working version of that too, but I will hold off that PR until you guys confirm that it's a good idea.

Personally I was just talking about doing something like this recently. I worry about the system auto selecting what to connect to, but getting a list would be a great feature I think!

Totally agree that this is a great idea. Also agree that auto selection will not be ideal :)

I think having a UI/option to choose is ideal, but not critical. A lot of users (myself included) would just need an easy way to run a shared experience without worrying about changing the server IP every time. And most will only have one server running in the network so just picking the first will just work.
This PR simply exposes the DiscoveryClient classes to the SharingClient.dll so that it can be used from HoloToolkit-Unity. I can open a new issue there to figure out the best options to expose it to the end-users.

@alexdrenea I think we can leave exposing the list to application developers and that providing them the list is perfect!

That sounds good to me!

Hey guys, any chance to get this merged. Let me know if you think there's anything missing so I can correct it. I want to go ahead and update some of the HoloToolkit-Unity code and it would be nice to use the real HoloToolkit rather than my forks :smile:

This is merged in now.


[Bug]: 0.95.0 Data Snowflake_users returns a list of maps which are not easily navigable to access user data.

Terraform CLI Version
1.5.3
Terraform Provider Version
0.95.0
Terraform Configuration
data "snowflake_users" "users" {
  like = "%"
}

output "airflow_users" {
  value = data.snowflake_users.users
}

Category
category:data_source
Object type(s)
data_source:users
Expected Behavior
The output of the data source has name based identifiers which allows the data object to be used as a parameter for another resource.
For example:
resource "snowflake_network_policy_attachment" "example_policy_attachment" {
network_policy_name = snowflake_network_policy.symedical_unmapped_terms_bot_network_policy.name
set_for_account     = false
users               = [data.snowflake_users.airflow_users.names ]
}
The map has to be traversed down to the describe_output.name value to get an identifier which can be used to evaluate if the proper like was used.
The input is a search pattern.  A top level output or structure like JSON with named nodes would allow for easy accessing and parsing of the result.
Actual Behavior
Because of the structure of the output for data.snowflake_users.airflow_users the object has to be fully parsed and then evaluated in order for useful identifiers to be surfaced.
The map has to be traversed down to the describe_output.name value to get an identifier which can be used to evaluate if the proper like was used.
This creates a need to traverse down into one of the child maps and review its parameters.  Previously a use of an simple index allowed users to create a list of users which could be provided to other snowflake_resources.
Steps to Reproduce
data "snowflake_users" "users" {
like = "%"
}
output "airflow_users" {
value = data.snowflake_users.users
}
copy the above terraform into a environment with a defined provider and run a plan.
It will output the shape of the users output.
How much impact is this issue causing?
High
Logs
No response
Additional Information
No response
Would you like to implement a fix?

[ ] Yeah, I'll take it 😎

Hey @kcarrillorhoads  👋
Please, for now, use the following approach (mapping users to their names):
data "snowflake_users" "test" {
  with_describe = false
  with_parameters = false
}

output "users" {
  value = [for value in data.snowflake_users.test.users : value.show_output.0.name]
}

I'll discuss the change with the team, but we could include resulting IDs as another computed value that could help with filling fields that expect a list or set of object identifiers. Would that work for you?

The previous means of doing this was something like:
data.snowflake_users.test.users[0].name
which was possible because of the structure and a bit more compact.

Yes, but it had fewer outputs available (only SHOW) and I'm not quite sure if data.snowflake_users.test.users.0.show_output.0.name is much more verbose than the previous version

It just becomes increasingly verbose if we are concatenating a list of these data lookups at a time.

Yes, but in the previous version you had to do the same to get the list of user names, but I get your point. Although, I think the separation into collections is pretty reasonable, it's strange to access them. The main reason why we keep them in one element list is because it's a Terraform SDK limitation. We cannot just define an object there; for some reason, it has to be an element list. In the future, we are planning to migrate to Terraform Plugin Framework, where we hope this can be solved and the usability of data sources (and resources) will be better. Nevertheless, we will try to improve the usability with the mentioned computed field that would store object IDs that could be used in cases such as those you provided with snowflake_network_policy_attachment.

@sfc-gh-jcieslak I hadn't realized that by nesting multiple collections in that way we could access it as:
data.snowflake_users.test.users.0.show_output.0.name
You are right its not as onerous as I thought, I was under the impression we would have to do the for comprehension even in scenarios where we expect a single username.
That works for now but a feature enhancement would be great to have an additional output that is just a list of strings for the user_names as a nonsensitive element.  That would make usability so much cleaner and more intuitive.
Thank you for the prompt response!

Hey 👋
Despite the misunderstanding, we would like to discuss and consider implementing this new computed field in data sources to hold all by SHOW IDs for easier use with resources that need such lists. I'll create an internal task for it, but If you would like to track it, I can create a feature request (as GH Issue). Would it be ok If we close this one as the problem was more or less resolved?


Easy-to-Read english version of bible

Do you have some plans to add more or ERV it's enough for the start?
What do you think?

I have semi-parsed NIV ( https://en.wikipedia.org/wiki/New_International_Version )and RSVCE ( https://en.wikipedia.org/wiki/Revised_Standard_Version_Catholic_Edition ) versions but it will take a time to bring these versions to good condition (for commit)

I have prepared some versions, is that possible to ask you to check it out?
https://yadi.sk/d/s0zzQwW4rpvKQ

Yeah I can add these versions into this PR

Please do it and I'll merge :)

Ping. @heni are you ok to do it?

Sorry for long delay!
All done :)

And unfortunately I haven't understood what bible revision is under BOOKS.json files.
After small examination of content I suppose that it's like a "New International Version".
Is it true? And if yes does make sense to rename BOOKS.json files to NIV.json ones.


Refactor Kubernetes and etcd modules

[x] Refactor etcd.
[ ] Kubernetes igntions

[x] Refactor kubelet.
[x] TLS bootstrapping.
[x] etcd data encryption.
[x] Make Kubernetes components are a bit more secure.
[x] Remove deprecated function.
[ ] Update addons.
[ ] Add and test new addons. (other branch, I will rebase commit while other feature has completed)

[x] Metrics-server.
[x] Autoscaler.

aws

[ ] Refactor master.
[ ] Refactor worker

Remove hyperkube. refer: https://github.com/kubernetes/kubernetes/pull/88676.


Fix melding of one-ofs

Previously, when melding one-ofs together, the variants were just lumped together. Now, we go deeper into the one-ofs by ensuring that any variants that are structs get melded together, and similarly for variants that are lists.

Closed in favor of #109.


Plan functionality to link points lines and polygons to the network.

There is a suite of network linking functionality that would be helpful as a general set of utilities.
I've implemented a pretty good method for points over here: https://github.com/dblodgett-usgs/nwm_subset/blob/master/nexus_locations/collate_sites.R
Could probably pull in some functionality directly from or inspired by: https://github.com/lawinslow/hydrolinks
Could look into using the event web services employed by the HydroLink tool -- use this notebook for inspiration: https://github.com/dwief-usgs/batch-hydrolink/blob/master/nhd_batch_hydrolink.ipynb
The EPA has developed some nice methodologies for catchment-based indexing -- see figure 14 here: https://www.epa.gov/sites/production/files/2016-04/documents/final_geopilot_report_2016-03-21.pdf
This issue can be closed when the basic function input/output and algorithm has been laid out in a new set of issues. Basic planning should take place in the comments of this issue and possible taken out to a wiki page or some roughed in roxygen.

This is done enough. #19 and #31


Fix JSONSchema unmarshalling in TableView

Fix JSON unmarshalling in TableView and add test coverage for more schema types.
The simple schema types already worked (although the "quirk" that StringSchema returns *string looks even more unusual now).
I haven't got the proto schemas tests working but I don't want to pause our work that depends on this so I suggest merging this for now and we can add proto tests in a later PR.

LGTM

Push some changes:

add tests for Proto and ProtoNative schema
use existing test schemas and types


error "QNN execution provider is not supported in this build" when testing ONNX QNN EP

Recently, i'm trying to use QNN EP in ONNX to make my model run faster on Android platform:
So i compiled the onnx + qnn android dynamic library according to https://onnxruntime.ai/docs/build/eps.html#qnn
ONNX VERSION: 1.16.3
QNN SDK: <IP_ADDRESS>223
After finishing the compile, i add some related code in my project (i wanna test on cpu backend)：
std::string backend = "QnnCpu.so";
std::vector<const char*> options_keys = {"backend_path"};
std::vector<const char*> options_values = {backend.c_str()};

ORT_ABORT_ON_ERROR(g_ort->SessionOptionsAppendExecutionProvider(st->session_options, "QNN", options_keys.data(), options_values.data(), options_keys.size()));

then i run my project on android, i get the error "QNN execution provider is not supported in this build".
Can anyone help me solve my problem?

Hello, I want to know what qualcomm soc platform you use?

Hello, I want to know what qualcomm soc platform you use?

Hi, thanks for replying, i use qualcomm 8295

Recently, i'm trying to use QNN EP in ONNX to make my model run faster on Android platform:
So i compiled the onnx + qnn android dynamic library according to https://onnxruntime.ai/docs/build/eps.html#qnn
ONNX VERSION: 1.16.3 QNN SDK: <IP_ADDRESS>223
After finishing the compile, i add some related code in my project (i wanna test on cpu backend)：
std::string backend = "QnnCpu.so";
std::vector<const char*> options_keys = {"backend_path"};
std::vector<const char*> options_values = {backend.c_str()};

ORT_ABORT_ON_ERROR(g_ort->SessionOptionsAppendExecutionProvider(st->session_options, "QNN", options_keys.data(), options_values.data(), options_keys.size()));

then i run my project on android, i get the error "QNN execution provider is not supported in this build".
Can anyone help me solve my problem?

Just change the QNN sdk version to <IP_ADDRESS>101, it works


chore: Auto update github actions with dependabot

Why are these changes needed?
Github Actions workflows use runners that are not up to date. Automatic updates can solve this and keep the project up to date in the future.

Related issue number

Checks

[ ] I've used pre-commit to lint the changes in this PR, or I've made sure lint with flake8 output is two 0s.
[ ] I've included any doc changes needed for https://microsoft.github.io/FLAML/. See https://microsoft.github.io/FLAML/docs/Contribute#documentation to build and test documentation locally.
[ ] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

This PR adds a dependabot file to update the versions of the Github Actions used for CI jobs.
This requires to create a dependabot.yml file and to enable dependabot version updates in the settings of the repository
I applied this to my fork and it proposed the correct updates for the github actions.
https://github.com/iemejia/FLAML/pulls

It looks good to me. Thanks! @iemejia


Fix extra warnings in Android build

Disable some warnings in Vulkan include from NDK and re-enable warnings=extra in Travis build.
Based on https://github.com/godotengine/godot/pull/37729#discussion_r406477853
@akien-mga

Just pushed the changes. I ended up adding an android folder inside of thirdparty/vulkan to make sure the header is included from the NDK.

Thanks!


Never get notifications (when recently used webapp, or app is in background)

EDIT by @gnprice following this comment: the root cause seems to be

if you've used the webapp in the last minute or two,
you don't get a notification, or not before a minute or two's delay.

Repro procedure:
1. Log in to the Android app as User A.
2. Navigate to the "PMs with User B" screen.
3. Press the Home button to go directly to the Home screen. Do not force-quit the app; at this stage it should still be running in the background.
4. As User B, quickly send a PM to User A.
No notification will appear on the Android device.
5. Bring up the app list. Slide Zulip off into oblivion.
6. As User B, send a PM to User A.
Exactly one notification will (eventually) appear on the Android device, for only the PM sent in step 6.
Expected behavior:
A notification for the PM sent in step 4 eventually appears – either coincident with or prior to the notification for the PM sent in step 6.

N.B.: This may be related to a note on the Android Pie changelog describing how notifications from "suspended" apps have hitherto been canceled.
If so, I'd expect that on Pie devices the user will receive one notification containing both the step 4 and step 6 PMs. (In that case we'll probably still want some sort of workaround for pre-Pie systems, though.)

Thanks for this report!
I didn't repro this on my phone (Pixel 2 XL, running Android 10 and the current Zulip beta) when we tried earlier today.
I'm not sure if we satisfied this bit, though:

As User B, quickly send a PM to User A.

How quickly does it seem to need to be to trigger the issue?

Thanks for this report!
I didn't repro this on my phone (Pixel 2 XL, running Android 10 and the current Zulip beta) when we tried earlier today.

I don't recall if you had the PMing user's message-list open, though – I think you might have been at the PMs-list page.
(For reference, I tested on a Samsung with Marshmallow. The emulator had similar issues, but I've found in-emulator notifications to be of questionable reliability anyway.)

I'm not sure if we satisfied this bit, though:

4. As User B, quickly send a PM to User A.

How quickly does it seem to need to be to trigger the issue?

I haven't tested this extensively; I've just tried to keep it down to 5s or so.

I don't recall if you had the PMing user's message-list open, though – I think you might have been at the PMs-list page.

Hmm, yeah.
I just tried again making sure of that step too, though -- so it was steps 1-4 as written above exactly -- and it still didn't reproduce; the notification arrived promptly as usual.
(Same Android 10 device as mentioned above; the app version is 26.11.134.)
I demonstrated for you in person just now, and you added that it reliably reproduces on that Samsung Galaxy J5 running Android 6 Marshmallow.
More investigation to be done, then :slightly_smiling_face: This is quite a bad symptom, so if this shows up on a lot of people's devices then it's an important one to figure out and fix.

The notifications are not being displayed because the server is not sending them – and this appears to be documented behavior.
Speaking strictly from a user perspective, this was confusing! Off the cuff, I suspect a better approach might be to allow the app to jump the gun, and immediately set itself as "idle" for the purposes of notifications when it loses the foreground state.

The notifications are not being displayed because the server is not sending them – and this appears to be documented behavior.

Hmm! I guess it does say:

Normally, mobile notifications are only sent after you've been idle for a few minutes

That doesn't seem like great behavior, thinking about it when put that way.

Does a notification for the message eventually get sent, after a few minutes when you've stayed idle? I think the answer is that it does; but if it doesn't, that's real bad.

Even if the behavior is the notification eventually gets sent, that feels like not the desired behavior for a mobile chat application.

Basically I think this is behavior that made sense in the context of being active on a desktop app (web or otherwise), and sending email notifications. It'd indeed be annoying if every time you focused something else on your screen to do something outside the chat, and someone replied to your PM, you got an email for it.
 You're not expecting to go switch back to the app just to check.
Also, if you get a dozen mobile notifications in the course of a conversation where you're in and out of the app, that doesn't turn into a dozen items to clear out of an inbox -- they're all ephemeral. So from the user perspective there's basically zero cost (assuming they wanted to know about the messages at all.)

In fact, I think this is very likely to be the cause of a solid fraction of the reports we sometimes get that "notifications don't work".
(... I'm going to go turn off that setting (reverting to the default behavior) for my own czo account. I'd forgotten I even had it on.)

Yeah, the tricky thing about this "offline or note" thing is that the simple alternative is that if you're on your computer having a long PM conversation with someone, then every time you they send you a message, your phone in your pocket vibrates and dings, which can be a quite annoying user experience.  It's probably a good idea at the very least to flip the user-level default behavior (so that you get the potentially-annoying-but-it-clearly-works experience at first, and can turn it off, rather than the alternative).  But currently the time threshold is 80-140s (the range because of every-minute-syncing of presence data); if you haven't done anything in your Zulip browser tab for 140s, it switches to dinging your phone.
Now that we have actual code that runs on the phone at the time a message is received that can control behavior, we can also consider fancier options for what to do in the "maybe don't ding my phone on every PM because I'm actively using Zulip on my computer" case (like making the notifications appear in the phone's notification area, but not making a ding sound, rather than not sending a notification at all, so you can see it right there on your phone if you check).

if you haven't done anything in your Zulip browser tab for 140s, it switches to dinging your phone.

@ray-kraesig Could this explain the behavior you saw?

Yeah, the tricky thing about this "offline or note" thing is that the simple alternative is that if you're on your computer having a long PM conversation with someone, then every time you they send you a message, your phone in your pocket vibrates and dings, which can be a quite annoying user experience.

Hmm. Yeah, I agree that behavior isn't awesome in that case.
That description brings to mind a comparison data point, though: I'm pretty sure that is exactly the behavior I routinely get with both Facebook Messenger and Google's "Messages". (The latter being the SMS client on stock Android in recent years, and also https://messages.google.com/web .)

It's probably a good idea at the very least to flip the user-level default behavior (so that you get the potentially-annoying-but-it-clearly-works experience at first, and can turn it off, rather than the alternative).

Yeah, I think this is probably right.

That description brings to mind a comparison data point, though: I'm pretty sure that is exactly the behavior I routinely get with both Facebook Messenger and Google's "Messages". (The latter being the SMS client on stock Android in recent years, and also https://messages.google.com/web .)

I think those 1:1 chat apps not used for work aren't the right comparison point in that the tradeoffs are different; if the use case for the app is 90% mobile, most activity will be on mobile and the consideration of what to do when the person is at their desk on their computer isn't particularly important.  I would look at apps like Slack or Discord that are more about large group conversations to see how other apps address this.

(I've edited the title, labels, and top of the description to reflect where this thread went once we understood the cause better.)

Just this afternoon I had an alarming experience that it took me a moment to realize was because of this behavior. I actually had the thought "oh no, notifications aren't working"; and if I hadn't specifically known about this behavior, I would have taken that away as my conclusion.
Specifically, I was setting up a new personal phone. Among the many apps to go open up, log into, and make sure everything was set up in was Zulip. So I opened it up, logged in... and then I wanted to check that notifications worked. So I returned to the launcher, then on my desktop opened up an alternate browser profile and logged into a demo user, and sent myself a PM from there. (If I weren't a Zulip developer, I'd have gotten the same effect by asking a colleague to send me a PM.)
Nothing happened. :open_mouth: I waited for a bit -- still nothing. Oh no! What was wrong?
Then I remembered this thread. In the webapp I went and switched to the "always send" setting, and repeated the test. Perfect success -- the notification arrived immediately.

Before the discussion above, I'd had the "always send" setting enabled for probably close to two years, and it's never bothered me. I've been on the default, "avoid sending" setting for less than two weeks (*) before hitting this experience. We can iterate on refining the heuristics that drive it, but I don't think they're currently reliable enough to be an acceptable default for users, and we should switch the default to "always send".
(*) since Nov 11, I think; I mentioned doing so in an earlier comment, but I forgot then and remembered when coming back to this thread.

Some further observations on the current behavior of the "avoid sending" heuristics:

I repeated the test: moved the webapp's browser window way off to the side where I could be sure to avoid giving it focus even momentarily, then sent a test message. Waited for a notification... waited over 10 minutes, and it never came.
Went and switched to another tab in that window, so the webapp isn't even visible. Again sent a test message and waited for a notification... over 4 minutes.
Closed the browser tab entirely, and sent a test message. Waited... over 2.5 minutes.
... oho! Force-quit the app, on that device, and resent. (Android 10, with v26.15.138.) Now it worked immediately! Guess I edited this issue title and description too completely.
Reopened the webapp, and promptly switched to another tab. Back to not working. :-/

(ongoing...)

I can confirm that this does not require any use of the webapp; I've just tested with a user not currently logged in anywhere but the mobile app.

Reopened the webapp, and promptly switched to another tab. Back to not working. :-/

Now past 3 minutes, and no notification.
So it looks like both the webapp and the mobile app can (with the heuristics that currently are the default setting) prevent notifications from getting sent, even when they're away in the background.

It looks like on the webapp side the behavior is basically

there's some timeout (perhaps 80-140s as described above) after which it stops affecting notifications;
but if a message comes in within that timeout, that message never produces a notification.

Further observations were:

I sent another test message, without having changed anything -- the webapp was still in a tab with a different tab in the window's foreground, but now it'd been a few minutes -- and it arrived immediately.
Then I switched tabs to the webapp, scrolled briefly, switched away again, and went and sent another test message. This one never arrived as a notification, even after 10 minutes.

Well, this is different. I recently sent four PMs to the Zulip test user: two before killing the app, two after. As expected (given all the other diagnosis), I received the latter two.
Quite unexpectedly, however, I then also received notifications for the former two a few minutes afterward – about ten minutes after the PMs were first sent.
It may be relevant that I had two devices active.

I haven't had a chance to read the full thread here, but I can explain that 10 minutes thing at least.  The backend logic for whether we consider the receiver user "off zulip" has a few parts:

If the user is idle in presence, we consider them off Zulip (get_active_presence_idle_user_ids computed in zerver/lib/actions.py).
If the user has no event queues, we consider them off Zulip (receiver_is_off_zulip in zerver/tornado/event_queue.py).
To handle cases where there's an event queue but the user is actually gone, additionally, when we garbage-collect a user's last even queue (after 10 minutes of inactivity), we will trigger a push (missedmessage_hook in zerver/tornado/event_queue.py) for any notifiable messages that hadn't triggered a notification before.  This handles the case that the user's laptop was suspended and then you send the user a message before their queue is GCed.

So the 10 minutes after case is almost certainly that 3rd code path.
I think there's a couple possible bugs here:

That first presence check should potentially ignore mobile activity?  The current logic was I think designed around the email notifications use case, where it sounds correct (you definitely don't want an email notification on every message if you're actively having a back-and-forth chat within the mobile app, but you might still want the push notification).  However, I think that email notification issue was fixed another way by the fact that we now wait 5 minutes after a message is sent before emailing about it, so it's possible it'd be correct to just change this unconditionally.  I don't think it's be a complex change; basically this:

    rows = UserPresence.objects.filter(
        user_profile_id__in=user_ids,
        status=UserPresence.ACTIVE,
        timestamp__gte=recent
-    ).distinct('user_profile_id').values('user_profile_id')
+    ).exclude(client__name="ZulipMobile").distinct('user_profile_id').values('user_profile_id')

That second "no event queues" check should potentially ignore mobile app event queues?

Very informative, thanks!
In addition to the case Ray observed where he got notifications about 10m after the messages were sent, one or two of my test cases described above were well over 10 minutes, and in none of the cases did I get a belated notification. (There were the couple of cases where there was a notification immediately, and in all other cases I never got a notification.)
In those cases, I did have the webapp open in a desktop browser tab, just one that never got focus for a long time. So there would have been an event queue that was actively being consumed. If I understand right:

when we garbage-collect a user's last even queue (after 10 minutes of inactivity), we will trigger a push (missedmessage_hook in zerver/tornado/event_queue.py) for any notifiable messages that hadn't triggered a notification before.

This only affects messages that are still in the queue, right? In which case it's consistent with the observations where I never got a notification even after more than 10 minutes.
More generally, this case will send a notification if the recipient's laptop was already suspended when the message was sent, but not if they were in the process of closing the lid and suspending it, or if they were simply AFK.

That first presence check should potentially ignore mobile activity? [...]
That second "no event queues" check should potentially ignore mobile app event queues?

These both sound like good changes, and I think they would resolve the cases Ray described.
IIUC they wouldn't have had any effect on some of the cases I described, including the one that alarmed me yesterday and brought me back to this thread. In all of those cases, I'd recently used the webapp and it was still in a tab. So the webapp had me not yet idle, it still had an event queue, and it was actively pulling events off the queue... it's just that I wasn't actively looking at it.
One solution for that might look like: in any case where we hold back from sending a mobile notification because we think you're active, we test that empirically by looking N seconds later (like 5-10s) to see if the message is now read. If it's still unread, then you weren't so actively reading there after all, and we go ahead and send the notification. I think that failsafe might give the "avoid sending" configuration reliable enough delivery to be acceptable as the default.

in any case where we hold back from sending a mobile notification because we think you're active, we test that empirically by looking N seconds later (like 5-10s) to see if the message is now read.

This sounds like it would give a false positive if you're active in the webapp, but currently working in a narrow that excludes the new message.

@timabbott wrote:

The current logic was I think designed around the email notifications use case, where it sounds correct [...]

There's the rub. I'm coming to think that the mobile app should count as "presence" for the purpose of sending email notifications, but not for the purpose of sending mobile notifications. Or at least that the mobile app should be better about declaring its lack of presence. (We could possibly put something appropriate in handleAppStateChange... but there's a reportPresence call in there that looks like it's supposed to handle exactly this. :confused:)
Whether and how the webapp should count as "presence" for mobile notifications is the other part of this bug – and one that I think that probably deserves to be considered as a separate issue, instead of being folded in with this one.

This sounds like it would give a false positive if you're active in the webapp, but currently working in a narrow that excludes the new message.

It would mean you get a push notification in that case, yes. Whether that's "false" is more a matter of taste, and of tradeoffs. It's possible there should be an opt-in setting that has more aggressive heuristics to decide you're active and suppress notifications, more like the status-quo default, for people who prefer that tradeoff.
What I want to avoid by default is the situation where we suppress a notification because we think you're active, when the reality is that you're paying attention to something else on your computer. That includes cases where Zulip is on your screen -- and then short of eye-tracking it's impossible to distinguish between staring at Zulip and pondering some other messages there, and staring at something else entirely. (Alternatively if we wanted to use "on your screen" as a criterion, I'm not sure we could reliably distinguish it from being in a non-selected tab, or in a window that's on another workspace.) So anything that suppresses notifications in the former case will unavoidably do so in the latter.
I guess if we wanted to use the criterion "you're actively giving input to Zulip", we could in principle do that. But that'd be a new stream of data to build.

Or at least that the mobile app should be better about declaring its lack of presence. (We could possibly put something appropriate in handleAppStateChange... but there's a reportPresence call in there that looks like it's supposed to handle exactly this. )

Hmm. There is indeed that:
  handleAppStateChange = (state: 'active' | 'background' | 'inactive') => {
    const { dispatch, unreadCount } = this.props;
    dispatch(reportPresence(state === 'active'));

But then there's also this:
export const doInitialFetch = () => async (dispatch: Dispatch, getState: GetState) => {
  dispatch(reportPresence());
  setInterval(() => dispatch(reportPresence()), 60 * 1000);

That doesn't know anything about being in the background or not. And the hasFocus argument to reportPresence defaults to true. So one thing that may be happening is

app is put in background
handleAppStateChange gets called; calls reportPresence(false)
sometime in the next 60 seconds, the timer set up by doInitialFetch fires

... and the OS hasn't yet totally put us on ice. So it runs, and does effectively reportPresence(true), which tells the server we're active after all.

So that, at least, seems like straightforwardly a bug.

So one thing that may be happening is [...]
So that, at least, seems like straightforwardly a bug.

Forked that off as #3699 .

So one thing that may be happening is [...]
So that, at least, seems like straightforwardly a bug.

Forked that off as #3699 .

And with #3727 merged, #3699 is now fixed!
There were several angles to this issue, and I'm not sure we 100% got to having a handle on them and I definitely don't have them all in my head now. It may be productive to come back to this issue and think through it again, with the particular confusions that went into #3699 now cleared out of the way.

We had a report today in chat of symptoms that fall under this issue:

I am facing a issue with notifications for quite a some time now.
I open my mobile app, read the mesasges and then keep it running in the background.
While there are unread messages, I do not get notification and I open the app just for checking if I have received any messages or not.
I just read those messages and again keep the app running in background.
After some time I receive the notifications for the messages that I have read recently.
(FYI I am using android app)

A couple of interesting points there:

The app is in the background, and they aren't getting notifications.
They eventually do get notifications... and by that time they've already read the messages.

I've just filed zulip/zulip#18072 in the server repo with a fresh repro of this issue, in the version involving no interaction from the mobile app at all (so there's no question about how the mobile app is reporting presence or anything like that.)
I believe that covers the aspects of this that are still open. There may of course still be bugs in the app's behavior -- we should file those as new issues if we find them.
Because the issue is experienced as part of the mobile app, I think it's helpful to keep it open in our tracker so it's visible when looking for known issues. I've applied the "dupe from server" label to indicate that's the story.


Google Play button not visible

this error seems to be coming in adb logcat and Google Pay button not visible instead childOnError triggered.
04-01 02:23:13.308 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]
04-01 02:23:13.308 3020 15516 I TapAndPay: Disabling TapAndPay HCE service [CONTEXT service_id=79 ]
04-01 02:23:13.375 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]
04-01 02:23:13.376 3020 15516 I TapAndPay: Disabling TapAndPay HCE service [CONTEXT service_id=79 ]
04-01 02:23:13.400 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]
04-01 02:23:13.400 3020 15516 I TapAndPay: Disabling TapAndPay HCE service [CONTEXT service_id=79 ]
04-01 02:23:13.409 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]
04-01 02:23:13.409 3020 15516 I TapAndPay: Disabling TapAndPay HCE service [CONTEXT service_id=79 ]
04-01 02:23:39.243 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]
04-01 02:23:39.243 3020 15516 I TapAndPay: Disabling TapAndPay HCE service [CONTEXT service_id=79 ]
04-01 02:23:39.267 3020 15516 W TapAndPay: shouldEnableGooglePay: false [CONTEXT service_id=79 ]

How does your UI code look like?

@JlUgia
This is the UI code
                       GooglePayButton(
                        paymentConfigurationAsset: 'gpay.json',
                        paymentItems: [
                          PaymentItem(
                            label: 'Pay',
                            amount: newPlanCost,
                            status: PaymentItemStatus.final_price,
                          )
                        ],
                        width: 200,
                        height: 50,
                        style: GooglePayButtonStyle.black,
                        type: GooglePayButtonType.pay,
                        margin: const EdgeInsets.only(top: 15.0),
                        onPaymentResult: (paymentResult) {
                          print(paymentResult);
                          voucherCheckoutHandler(
                            paymentCheckout.newPlanName,
                            paymentCheckout.newPlanDealAmount,
                            uid,
                          );
                        },

@JlUgia please help with this issue asap.

This is the code I used.
                       GooglePayButton(
                        paymentConfigurationAsset: 'gpay.json',
                        paymentItems: [
                          PaymentItem(
                            label: 'Pay',
                            amount: newPlanCost!,
                            status: PaymentItemStatus.final_price,
                          )
                        ],
                        width: 200,
                        height: 50,
                        style: GooglePayButtonStyle.black,
                        type: GooglePayButtonType.pay,
                        margin: const EdgeInsets.only(top: 15.0),
                        onPaymentResult: (paymentResult) {
                          print(paymentResult);
                          voucherCheckoutHandler(
                            paymentCheckout.newPlanName!,
                            paymentCheckout.newPlanDealAmount,
                            uid,
                          );
                        },
                        onError: (error) {
                          print(error);
                        },
                        childOnError: Text('Error'),
                        loadingIndicator: const Center(
                          child: CircularProgressIndicator(),
                        ),
                      ),

Added onError, but it didn't print anything on the console.
onError is not executed.

As shown in the image above, this is how the UI appears; childOnError is executed.

same issue here also. But onError is printing package:pay_platform_interface/core/payment_configuration.dart': Failed assertion: line 55 pos 16: 'configuration.containsKey('provider')': is not true.

my code is exactly like yours @HaardikBhagtani. any solution on this

my code is exactly like yours @HaardikBhagtani. any solution on this

No, haven't found any solution.

@HaardikBhagtani Please set the static height and width in Googlepaybutton.
`SizedBox(
width: Get.width*0.5,
height: 50,
child: GooglePayButton(
type: GooglePayButtonType.standard,
onTap: (){
                },

              ),
            ),`

@HaardikBhagtani Please set the static height and width in Googlepaybutton.
       `SizedBox(
                width: Get.width*0.5,
                height: 50,
                child: GooglePayButton(
                  type: GooglePayButtonType.standard,
                onTap: (){},
              ),
            ),`

no, it didn't work. @panchalAlpit

Google Pay is not available in all countries.Please take a look at this : https://support.google.com/pay/india/answer/9023773?hl=en-GB#zippy=%2Cpay-online-or-in-apps

Google Pay is not available in all countries.Please take a look at this : https://support.google.com/pay/india/answer/9023773?hl=en-GB#zippy=%2Cpay-online-or-in-apps

@kennest  The link says that Google Pay is available in India, and it is where I am building the app, so why is the issue coming up?

i'm having the same problem, did u find a solution for this ?

i'm having the same problem, did u find a solution for this ?

No, not yet. @kldawad-wecan

same problem, apple button and other options to pay showing error failed to open the config json file on real device
case:
i tried clone example app, then i just change value assets/default_payment_profile_apple_pay.json => merchantIdentifier and then run the app on real device. showing error "fopen failed for data file: errno = 2 (No such file or directory)

@codendtech in your case, the error is pointing to your configuration, which is missing the provider key. Take a look at the configuration in the example application as a reference.
@HaardikBhagtani @kldawad-wecan @teoprayoga, can you share the configuration you are using? (make sure to remove any secret value before doing so).

I'm facing the same issue. The code doesn't throw any error and the GooglePayButton and ApplePayButton are being shown in WidgetInspector but not in the UI. I have tried wrapping the button inside sizedBox also and checked all configs for the plugin.

i'm having the same problem, did anyone find a solution for this ?

I think this is also happening to me, but i found that its only happens on emulator with API 30 and my phone, i tested on a emulator with API 31 and 33 and the button show up

Hello, I have the same problem. How did you solve it

i'm having the same problem, did anyone find a solution for this ?

Hello, I have the same problem. How did you solve it

The button is only shown if the isReadyToPay call returns true. That is, if the device and user can use Google Pay. Note that Google Play services needs to be installed on the device, and you need to be logged in with a valid account.
See #207 for additional context.

Same problem here, any solution

As mentioned above, there are multiple reasons why the Google Pay button does not show if you use the quick integration path. To test the integration make sure that:

You are operating in the TEST environment (check your configuration JSON).
You have a device with a recent version of Google Play services installed and a valid gmail/Google apps account set up in the device (more details).
Your payment configuration is valid

If you still don't see the Google Pay button, add a comment to this thread including the code that draws your button and your payment configuration JSON (redacting sensitive information before posting).

@JlUgia can I use Google Pay (this library) on iOS device? the button only show on Android device. so I assume it won't be available for iOS right?

hell

Same problem here, any solution

i have the same problem also any solution with this , my code only showing on emulator , was not showing on real device, my location was nigeria please help

That's right @AgungLaksana, Apple Pay is only supported on iOS, and Google Pay is only supported on Android at the time.

Hi @Ridwan093, can you verify that the requirements to use Google Pay are met in the device that you are using to test?

change your region from your device. I think you can try to change your region from your country to United States for testing purpose. I am from Bangladesh and I also face same issue because Apple pay and Google pay have no support for Bangladesh. So, try in this way I think you can see the magic.

I had this issue and it was ultimately down to ensuring that the state of widget holding the button was correctly set. I had user actions that were determining when the pay button would show, but button would not show and this caused it always to attempt to access the childOnError property. I used this function every time state was changed and it resolved the issue:
updateAppState() async {
    int value = 0;
    await Future.doWhile(() async {
      value++;
      await Future.delayed(const Duration(milliseconds: 700));
      if (value == 5) {
        if (mounted) {
          setState(() {});
        }
        return false;
      }
      if (mounted) {
        setState(() {});
      }
      return true;
    });
  }

And then wherever state was changed I made a call to that function:


C8928: Hardcoded EN locale in link

Hello, @dragon119,
Reported links are hardcoded so it can't lead to target laguages for localized versions. Could you help to merge this PR, please?
Many thanks in advance.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/best-practices/background-jobs.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

#sign-off

Hello, @dragon119,
Reported links are hardcoded so it can't lead to target laguages for localized versions. Could you help to merge this PR, please?
Many thanks in advance.


CLOUDSTACK-10294: PEP-8 fixes and enhancements to security_group.py

The code in security_group.py is very old.
I looked into using Libvirt network filters for this, but it's lacking functionality we require.
This is my first attempt in cleaning up this file. There is a lot more work to do.
I tested this on a local system with Basic Networking and that worked just fine in my case.
The quality of the code is still horrible though:
Your code has been rated at 3.60/10 (previous run: 3.56/10, +0.04)
A lot more work is needed, but I'm taking baby-steps so that it makes the review a bit easier and not one big bang with changes.

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1703

We can merge this one, right?

@wido let me kick a test round.
@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-2259)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 19611 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr2432-t2259-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_internal_lb.py
Intermitten failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 66 look OK, 1 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_hostha_enable_ha_when_host_in_maintenance
Error
1.07
test_hostha_kvm.py

@wido can you add a JIRA id for this?

Done @rhtyd , updated the title with the issue: https://issues.apache.org/jira/browse/CLOUDSTACK-10294

Packaging result: ✖centos6 ✖centos7 ✖debian. JID-2613


Bug in TMO: latest closing compared with preceding opening prices in window of length TMO length

The PR i submitted here for the development branch has a bug, in that i was computing the price delta of closing and opening prices, rather than price delta of latest current price and preceding opening prices.
I'll submit a new PR soon. Feel free to assign this to me.

@luisbarrancos
No worries! Thanks for all the help. 😎

@twopirllc done, the PR is here with more details.


[CI] Support SBOM for component images

Is your feature request related to a problem? Please describe (👍 if you like this request)
Integrate the following tasks to our build

Leverage https://github.com/anchore/syft or a similar tool to generate an SBOM file for each delivered image including self-own and mirrored images to understand ingredients and lib dependencies in each image.

The image can be built and published with sbom attached by adding --sbom=true paramter:
docker buildx build --sbom=true -t <myorg>/<myimage> --push .

And the sbom content can be viewed by:
docker buildx imagetools inspect <image> --format "{{ json .SBOM }}" > sbom.spdx.json

ref:
https://www.docker.com/blog/generate-sboms-with-buildkit/
https://docs.docker.com/scout/sbom/#attest
https://github.com/docker/build-push-action?tab=readme-ov-file#customizing
https://docs.docker.com/scout/sbom/#remote-image

@yangchiu For mirrored images, are we able to do this as well? even though the mirror is not through GH action.

@yangchiu For mirrored images, are we able to do this as well? even though the mirror is not through GH action.

No, for mirrored images, we just use skopeo to copy an image from one registry to another. The sbom file should be attached by other means. More investigation needed.

Then, what we should do are:

For self-owned images, sbom included
For all images including mirrored and self-owned, sbom file attached to the release note

The second item needs to be improved in the release process longhorn/release which is outside of this scope.

No, for mirrored images, we just use skopeo to copy an image from one registry to another. The sbom file should be attached by other means. More investigation needed.

Still investigate if it's possible to attach sbom files to an existing image manifest.

Both oras attach --artifact-type "application/spdx+json" <IMAGE>:<TAG> toattach.spdx.json and cosign attach sbom --sbom toattach.spdx.json <IMAGE>:<TAG> create extra artifacts (The sha256-5c31e in the screenshot) in the repo. Users have to pull this extra artifact to get the sbom file, instead of embedded sbom in the published image like what docker buildx build --sbom=true does. But how to achieve what docker buildx build --sbom=true does, and how/where it stores the sbom is still unknown. More investigation needed.

ref:
https://learn.microsoft.com/en-us/azure/security/container-secure-supply-chain/articles/attach-sbom
https://edu.chainguard.dev/open-source/sigstore/cosign/how-to-sign-an-sbom-with-cosign/

Probably workable:
cosign attach sbom --sbom toattach.spdx.json docker.io/yangchiu/csi-snapshotter:v6.0.1-amd64
cosign download sbom docker.io/yangchiu/csi-snapshotter:v6.0.1 --platform=linux/amd64

But extra artifact will still be created in the repo like:
yangchiu/csi-snapshotter:sha256-994f83f6be2bacf89262c587b28352e5fce5be81c27d06a31c061d84dea2d33d.sbom

It seems unavoidable.

How does it know the extra snapshot related to the image? If having two platforms, does it mean pulling sbom twice is required?

How does it know the sbom is related to the image?

The sbom is associated with the image using its digest. For example:
$ cosign attach sbom --sbom toattach.spdx.json docker.io/yangchiu/csi-snapshotter:v4.0.1-amd64
Uploading SBOM file for [index.docker.io/yangchiu/csi-snapshotter:v4.0.1-amd64] to [index.docker.io/yangchiu/csi-snapshotter:sha256-3023fdbdee1b5d7119287d8e778b421e4623a578428795e794aac67657e70f6e.sbom] with mediaType [text/spdx+json].

It created an artifact for the sbom of docker.io/yangchiu/csi-snapshotter:v4.0.1-amd64 with tag sha256-3023fdbdee1b5d7119287d8e778b421e4623a578428795e794aac67657e70f6e.sbom.
The 3023fdbdee1b5d7119287d8e778b421e4623a578428795e794aac67657e70f6e part is the digest of docker.io/yangchiu/csi-snapshotter:v4.0.1-amd64:
$ docker buildx imagetools inspect yangchiu/csi-snapshotter:v4.0.1-amd64
Name:      docker.io/yangchiu/csi-snapshotter:v4.0.1-amd64
MediaType: application/vnd.docker.distribution.manifest.v2+json
Digest:    sha256:3023fdbdee1b5d7119287d8e778b421e4623a578428795e794aac67657e70f6e

If having two platforms, does it mean pulling sbom twice is required?

Yes, we need to attach the sbom twice, and users must pull the corresponding sbom for their specific architecture.

An additional artifact for the sbom will be created in the repository.

It looks like that's how it works now. A registry is no longer limited to just container images. Various types of artifacts, including Helm charts, SBOMs, and vulnerability reports, can now be stored in a registry.
In my opinion, this approach makes the repository cluttered. The only method that makes sense to me is what docker buildx build --sbom=true does, but unfortunately, it happens during the build time, and Kubernetes CSI components don’t implement it.
I think we should try switching to https://github.com/longhorn/longhorn/issues/8821 to attach sbom files to the release notes for now.

Sounds good. Good enough for our own images.

Do we need to add a doc page for the feature? @innobead ?


POC: Add sanitization protocol for structs

Sometimes, we don't want to store sensitive data in the tracing
software. We also want to ensure that data can be safely
stored in usually JSON-like storage. At the same time, conversion to
JSON is a contextual - conversion for internal API is different than
the conversion for logs.
That means that we need a protocol implemented before converting
data to JSON.
Signed-off-by: Maciej Szlosarczyk<EMAIL_ADDRESS>

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: maciej-szlosarczyk
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [maciej-szlosarczyk]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: maciej-szlosarczyk, Vollmond
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Vollmond,maciej-szlosarczyk]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Storage Documentation Error

There appears to be a mis-match of information in this table in the storage docs Storage Volume Configuration - the descriptions do not appear to match up with the keys.
Maybe it got out of order during an edit?

Right.

@brauner are you sending a fix? I was about to start preparing one.

@stgraber, go ahead if you already have one.

@brauner don't have one yet, just noticed this issue and was about to create a branch for it :)

Then lemme send one. :)


Raspberry Pi 3B+

Great work on Windows IoT. I am planning to buy a Raspberry Pi 3B+ soon. I know Windows IoT support for 3B+ is in technical preview and does not yet support Onboard WIFI and Bluetooth. Do you have any time estimate as to when there will be support for 3B+ or would there perhaps be a forthcoming technical preview (version 2) that might support onboard wifi and bluetooth on the 3B+?  Thanks!

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 257dc32b-f302-db2a-2571-8f217007d893
Version Independent ID: 92b2f238-f621-3feb-5b5b-07aed095b115
Content: Suggested Prototype Boards - Windows IoT
Content Source: windows-iotcore/tutorials/quickstarter/PrototypeBoards.md
Product: windows-iot
GitHub Login: @saraclay
Microsoft Alias: saclayt

Hi @Trenticus, we would highly recommend using the 3B for commercialization. There is no timeline for a version 2. In the future, we are looking to work closely with the Raspberry Pi foundation so that we can better support the next series of RPi. Is there a reason that using the 3B would be a blocker issue?

Thanks for the reply. No, using 3B is not a blocker issue... that's the direction we will go. If support for the 3B+ was imminent we would simply use their latest hardware but we definitely can use the 3B for now.


raspi-gpio: bump to revision 2eaa8b8

This includes the following changes:
2eaa8b8 Initialise hwbase so that access without /dev/gpiomem works again
f36777c Whitespace tidyup (and re-ran astyle). No functional changes.
80fa7d0 Add support for 2711
bf7f4c8 Reformat with astyle (cosmetic change)
aa55bbd Autoreconf for Buster
5e453d0 raspi-gpio: Fix handling of "funcs" mode
Signed-off-by: Pierre-Jean Texier<EMAIL_ADDRESS>

Can one of the admins verify this patch?

@agherzan-ci ok to test


Logger behavior in shutdown tasks

With such code my output on server shutdown looks like:
[Thread-1] [20:15:03] (MinecraftServer.stopCleanly) - INFO - Stopping Minestom server.
[Thread-1] [20:15:03] (SchedulerManager.shutdown) - INFO - Executing all shutdown tasks..
bye

Sometimes it also catches first info() from that code-snippet.
It seems that logger (or maybe it's output to console?) is being disabled somewhere in parallel with the execution of shutdown tasks.

The log manager is disabled via a shutdown hook. There is no way that you can guarantee the order that shutdown hooks will be executed when the server is shut down. The solution I think would be most fitting is to disable the shutdown hook in the Log4J 2 configuration and manually shut down Log4J 2 when the server is shut down. This way, you can guarantee when Log4J 2 is going to be shut down.

Since we don't use LOG4J2 I believe this ticket is no longer of relevance.
Please reopen if you disagree.