feat(vite): full source-map support for ssr

Description
This PR implements my suggestion from and resolves https://github.com/vitejs/vite/issues/3288.
With this change SSR modules transformed via ssrLoadModule now receive an inline sourceMappingURL as a datauri.
This means with --enable-source-maps or using --require source-map-support/register with node debugging, errors and whatnot are all source mapped properly.
Additional context
One performance related detail about this implementation is that I've set it up to avoid serializing sourcesContent when there is already a file on disk by checking for mod.file. If there is no file then it will inline the sources content.
Also because this change should invalidate the need for ViteDevServer.ssrFixStacktrace I have deprecated it in this PR. We could however keep it around if anyone thinks there is any value there.

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the Commit Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

@Shinigami92 I've now rebased and added the return type a suggested.
Let me know if anything else needs to change here 😄

I tried this PR against vite-plugin-ssr's test suite. They fail because the following piece of code doesn't work anymore.
// Check whether `val` is a plain JavaScript object
function isPlainObject(val) {
  return val && val.constructor === Object;
}

The vm.runInNewContext seems to create a second Object value.
I couldn't find an alternative way to implement isPlainObject(). I could dig deeper and maybe find a solution, but this is a (slight) problem for vite-plugin-ssr.
If I remove all isPlainObject() instances, then all tests go green though.
The --enable-source-maps flag is still Stability: 1 - Experimental. Not being able to trace errors is one of the most painful experience; I'm not sure we want to be experimental here?
Also, forcing my users to use --enable-source-maps is not ideal. I'm wondering if that would also apply to SvelteKit users: would they need to svelkit dev --enable-source-maps? Once Node.js native Source Map support stabilizes, they'll probably then remove the flag.
It would be super neat to get rid of ssrFixStackTrace, but maybe we should wait for Node.js's Source Map support to stabilize?

@brillout probably this should be changed to not rely on runInNewContext, my main reason for going that route was to avoid using new Function (source map inconsistency) or manually appending the wrapper code (requires augmenting the sourcemap). But yeah this doesn't really work and will have edge cases as you mention. I'll try to find some time to augment this to probably use my latter suggestion.
Regarding --enable-source-maps, it is no longer experimental (https://nodejs.org/dist/latest-v16.x/docs/api/cli.html#cli_enable_source_maps) but does still require being set. The alternative, which I mention in the deprecation message, is to use a tool like https://www.npmjs.com/package/source-map-support. One thing we could do to smooth things out for the user it to detect if sourcemaps have been loaded via --enable-source-map and fall back to that module if not. Curious what you all think of that option? It would involve evaling some psuedo sourcemapped code that throws an error and checking to see if the stack was mapped or not.

@DylanPiercey Neat digging 👍.
I'm just seeing:

Overriding Error.prepareStackTrace prevents --enable-source-maps from modifying the stack trace.

How would we allow Vite users to override Error.prepareStackTrace while also allowing them to ssrFixStacktrace?

it is no longer experimental

Do we know whether there are breaking changes between v12 and v16? Quite relevant since we need to support all versions since 12+.

Also, forcing my users to use --enable-source-maps is not ideal. I'm wondering if that would also apply to SvelteKit users: would they need to svelkit dev --enable-source-maps? Once Node.js native Source Map support stabilizes, they'll probably then remove the flag.

Thoughts on this? IMO, forcing all users to use a flag is less than ideal.
Does Node.js plan to set the flag to true by default? @vdeturckheim

use a tool like https://www.npmjs.com/package/source-map-support

I don't know how source-map-support works; seems like it does magic that could lead to conflicts?

Actually, why don't we use Error.prepareStackTrace instead of --enable-source-map?

@brillout that would only solve part of the issue. The main issue from my perspective is that there is no way currently to hook up a debugger with proper source maps when using vite for ssr.

Does Node.js plan to set the flag to true by default? @vdeturckheim

I don't know but it would sound weird to me to enable such behaviour by default in node.
But doing --require X is usually the equivalent of running require('X') as the first line of code of the app.
Alternatively, it might be possible to dig in the codebase to see if the --enable-source-maps flag could be set at runtime but that might have some potential security impact I am not fully certain of yet.
I don't know Vite enough to think of alternatives that could fit the desired UX.

I opened a feature request to replace --enable-source-maps with --disable-source-maps https://github.com/nodejs/node/issues/38817.

Closing in favor of #3928


Documentation window disables right click so I can't open links in a normal web browser

Describe the bug
When you open the documentation for a bug, you are referred to a documentation that has links. You can't use the right click to open the link in another browser, so the navigation is not good enough
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
It should be possible to right click so you can open links , copy and paste, etc, in the documentation
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

What version of the documentation is open? It should match the version of the K8s configuration in Monokle.

I'm not sure if I understand this issue


Unit test each API

It might be a good idea to set up a test infrastructure such that we could verify compatibility of each API's result with corresponding psutil API's.
Unit testing will also, of course, help prevent future breaking changes.

I have one or two more APIs to implement for the basic thing. After
that, I'll work on the unit testing. I have some ideas for how to do it
but will need a shared lib target so that I can load it up.

It's coming soon. :)

I've got infrastructure for this and some actual tests in the testing branch.

I've merged ths into master.

I've merged ths into master.


Move out the library from Jcenter

Hello, Jcenter is bound to shut down soon. Please place your library on MavenCentral for it to be used :)

@lopspower yeah would be nice

very nice ;)

This would be awesome to be able to keep using the library in the future!

Sorry for the delay 🙏
The version 3.1.0 is now available on MavenCentral :
implementation 'com.mikhaellopez:circularprogressbar:3.1.0'


Cannot retrieve favorite status PLEASE FIX ASAP

the old tweet has bug when I try to like tweets on my alt accounts it says  Cannot retrieve favorite status

I have provided a picture

Fixed


Development: Parsing of server sided endpoints

Context
This issue builds up on the GitHub action created in this PR. The action identifies the code files for client and server modified in a PR. The gathered Information will be the foundation of the analysis of server-sided endpoints. A concise
Problem

Many Artemis developers have little experience in the field of software development, and the Artemis codebase is extensive and complex. Thus, the code review process is time-consuming, difficult, and error-prone. The time required for purely manual reviewing leads to several disadvantages:

Delayed Development: Time-consuming tasks, like making sense of method names, endpoint URIs, and other crucial information on server-sided endpoints, can slow down the development process, potentially delaying the delivery of new features or updates.
Reduced Efficiency: Errors that are not discovered during the review process may lead to reduced usability and security concerns. Developers may need to spend additional time fixing mistakes, reducing overall efficiency.

Motivation

To make the review process more efficient for developers and maintainers and reduce the amount of undiscovered issues in the code, the review process needs to be partially automated. The time saved during the review process and the saved time by preventing bugs that need to be identified, debugged, and fixed manually, can be used for improving existing features or even developing new ones.

Requirements Engineering
Existing (Problematic) Solution / System

Currently, the review process is performed manually by multiple developers and maintainers, testing newly developed or modified features and reviewing changes made in the source code. For example, Changes in server-sided URIs that have not been migrated to every REST API call by the client will cause the features left out to malfunction. As there currently is no concise overview of all existing endpoints and REST calls, identifying endpoints in seemingly endless amounts of lines of code is overwhelming and tedious.
Proposed System

The new solution is the extension of a GitHub action. The action will run on every pushed commit and identify new or modified endpoints on the server. The Endpoints will be parsed out utilizing the QDox library. The action will output essential Information regarding the endpoints contained in modified files. The output information contains the endpoint's

Request Mapping
Name
HTTP Method
Path
Class
Line
All annotations

Requirements

Functional Requirements:

FR: Value: The GitHub action must display newly created or changed files containing endpoints on the server side.
FR: Value: The GitHub action must display every endpoint's name
FR: Value: The GitHub action must display every endpoint's HTTP method
FR: Value: The GitHub action must display every endpoint's class
FR: Value: The GitHub action must display every endpoint's line

Nonfunctional Requirements:

NFR: Supportability: Adaptability: The action needs to be adaptable to changes in or new types of endpoints.
NFR: Usability: Performance: The action needs to provide the results within 10 Minutes.

 ## Analysis

> ### Analysis Object Model
> What are the involved Analysis Objects?

> ### Dynamic Behavior
> Include dynamic models (Activity Diagram, State Chart Diagram, Communication Diagram) here to outline the dynamic nature of the PROBLEM

> ---
> ## System Design

> ### Subsystem Decomposition
> Show the involved subsystems and their interfaces. Make sure to describe the APIs that you add/change in detail. Model the DTOs you intend to (re)use or change!

> ### Persistent Data Management
> Describe the Database changes you intend to make.
> Outline new config options you will add.
> Describe all other data persistency mechanisms you may use.

> ### Access Control / Security Aspects
> Describe the access control considerations for your feature

> ### Other Design Decisions
> Potential candidates to discuss here: Websockets, Test strategy

> ---
> ## UI / UX
> Describe the user flow (references to dynamic model).
> Screenshots of the final UI mockup -->

Steps for Testing

Push a commit with changed files containing one or more endpoints.
Then take a look at the GitHub workflow and check if the output fulfills the requirements.
Then revert the test changes again.
A test-commit can be found here: https://github.com/ls1intum/Artemis/actions/runs/8959112289/job/24604133230

In theroy you can also annotate a method with @RequestMapping(value = "path", method = HttpMethod.GET) instead of @GetMapping, your script does not recognize such endpoints.
I also agree with @iyannsch that the build process could be simplified, e.g. by using the application gradle plugin. See https://www.baeldung.com/gradle-run-java-main


FR: Disabling format in file

Which Antlers Toolbox products are you requesting a feature for?

[x] Antlers Toolbox for VS Code

Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
I'd like to be able to turn off formatting for a specific section of code
{{# @format false #}}

Hahaha

{{# @format true #}}

Describe alternatives you've considered
None
Additional context
Same feature as this in Blade https://marketplace.visualstudio.com/items?itemName=shufo.vscode-blade-formatter#disabling-format-in-file

This is now available in the following versions:

Antlers Toolbox (VS Code): 2.5.0
antlers-language-server (npm): 1.2.0
antlers-formatter (npm): 1.2.0
prettier-plugin-antlers (npm): 1.2.0

To disable formatting, we can use the special {{# format-ignore-start #}} and {{# format-ignore-end #}} Antlers comments:

{{# format-ignore-start #}}

            This section
                will not be formatted.

{{# format-ignore-end #}}

The special formatting comments must appear on separate lines by themselves.


scratchpad (as in i3wm)

Hi Luke!
What you think about scratchpad in dwm?
I made it: https://github.com/GasparVardanyan/dwm-scratchpad

I would love this in DWM :)

This has been added now.

@LukeSmithxyz this isn't the same scratchpad as the one on suckless.org, this one allows you to send any window to the scratchpad :) you should check it out

I'm really wanted scratchpad window which have ability as scratchpad like scratchpad window on i3WM.
It can appear and disappear like a Ninja. Lol.
Your @GasparVardanyan scratchpad provide my need.
So, thank you very much for your hard work.
Good job, Bro!

You're welcome @bandithijo.

@bandithijo now starting windows in scratchpad is supported. See the README.md ))


0.9.5 has been out for a while

I'm merging this, please tag a new release when you get a chance :)

Please also update the README line: https://github.com/paulfantom/ansible-restic/blame/master/README.md#L25


Client APIs for new Custom Fields and Invoice/Purchase Order Fields

Implement the client-facing APIs to accommodate the changes of #713.
Testing

All combinations of custom field types (binary, int, dec, string, bool)

Acceptance Criteria

Testworld test-cases and all the other usual stuff
Documentation is updated
Announce the API changes in release notes and to users.

Dependencies and affected external components
Keep the documentation in mind -> update the docs with new example calls.
Announce the API changes in release notes and to users.

This could make custom fields a bit simpler to handle: https://github.com/centrifuge/precise-proofs/issues/38 I've asked @vimukthi-git to review and make sure we can merge it.


Add option to use permessage-deflate compression

Public-Facing Changes

Add option to use permessage-deflate compression

Description

Add option to use permessage-deflate compression

Found out that this was possible when implementing #151. Not sure if it is really useful tho, the additional CPU load is quite high (I can provide some measurements on request)

Compression would definitely be useful from my perspective. My systems are running on limited cellular or satellite connections and I'd rather spend CPU time to save bandwidth.
Might be cool if it could determine automatically that a certain topic doesn't compress very well (i.e., image data).


autotiling: init at 1.1

autotiling for i3 & sway
Motivation for this change
I use it and i think it will be useful for other people too
closes: #91244
Things done

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

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@Artturin Grats on your first PR!

@ryantm thank you very much!


[DX] Indicate new/updated entities

Tasks

[ ] [Findable] Implement new/updated entities
[ ] [HCA DB] Implement new/updated entities

Not required.


Adding Bidirectional Selection Sort algorithms in C, C++, Python and Java.

Is your feature request related to a problem? Please describe.
I request to add a new algorithm which is an improvised version of selection sort.
Describe the solution you'd like
Instead of the general selection sort where we continuously select the smallest element from unsorted part and put it in its position, in bidirectional selection sort, there are two pointers which handles the positions of the smallest and largest element and sort them accordingly.
Describe alternatives you've considered
I have implemented the solution using while loop. Whereas, it can also be done using recursion.
Additional context
There are 2 lines of user input :
The first line of input requires the number of elements in an array to be sorted.
The second line requires the elements itself.

Assigned!
@rahulmalakar42 : C, C++, Java & Python


More flexible hooks

Feature suggestion
Current state

Order of hook execution is fixed and arbitrary. Specifically, builtin hooks always execute before entry-point hooks.
The first hook method (initialize) is already used to execute business logic in builtin hooks (version hook). That means user cannot execute any logic nor capture Context before builtin hook.
format_version in SCM version hook does not have access to Context

Alternative proposals

Ability to specify hook execution order (integer) that is used to sort hooks before execution
Provide additional hook method that must not contain any business logic and can only be used to capture context (eg. pdm_set_context)
Provide context to format_version to enable more complex logic (eg. additional calls to git)

Can you explain more about "capture context", what do you want to achieve?

Sure. I would like to make some additional calls to git from format_version. I need context.root to do that. I could get it as an argument - arguably the easiest solution.
While I was looking for a workaround, I considered creating a hook which would store Context provided in pdm_build_initialize as a class field, which could be later used by format_version (also a method of the same hook). Unfortunately, I learned that it won't work, because SCM version hook runs first and does it's magic (a call to format_version) in its pdm_build_initialize - the first hook method ever called. From this exercise I came up with some ideas how hook could be made more flexible to allow such trickery.

Okay, so could it be solved if the context is passed to format_version, any other problem remaining?

format_version in SCM version hook does not have access to Context


libSyntax: Parse member access expression.

This patch uses createNodeInPlace from syntax parsing context API to
merge an expression with its suffix to create recursive nodes such as
member access expression.
Meanwhile, this patch breaks down a signed integer or float literal to a
prefix operator expression. This expression consists of two parts: an
operator and the following expression. This makes "literals" like "+1" or
"-1" no difference from other prefix unary expressions such as "!true".

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test


Use "|" as the separator between module path and name.

":" is already a path character in Windows. This is why the
dartdevc tests aren't working on Windows. Because they try to do:
-sC:/some/path/blah.dart:blah
And it splits at the first ":". Oops.

FYI -- this is possibly a breaking change for build. Can you follow up and fix build scripts if needed?

How about =?


Why do I need to include a tag_name property when using dropletsGetAll() ?

I'm trying to retrieve data about all my droplets using the following code
api.dropletsGetAll().then((data) => {
        console.log(data.body);
      }).catch((error) => {
        console.log(error.body);
      });

but i get the following error
(node:35611) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'tag_name' of undefined
    at a.value (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/do-wrapper/dist/do-wrapper.js:1:2436)
    at Object.execute (/Users/alexanderhoerl/Developer/discord-music-bot/commands/server.js:24:11)
    at Client.client.on (/Users/alexanderhoerl/Developer/discord-music-bot/index.js:37:32)
    at Client.emit (events.js:182:13)
    at MessageCreateAction.handle (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/discord.js/src/client/actions/MessageCreate.js:24:14)

    at MessageCreateHandler.handle (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageC
reate.js:5:53)
    at WebSocketPacketManager.handle (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacket
Manager.js:103:65)
    at WebSocketConnection.onPacket (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:3
16:35)
    at WebSocketConnection.onMessage (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:
279:10)
    at WebSocket.onMessage (/Users/alexanderhoerl/Developer/discord-music-bot/node_modules/ws/lib/event-target.js:120:16)
(node:35611) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a c
atch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:35611) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminat
e the Node.js process with a non-zero exit code.

even though in the DigitalOcean api documentation you don't need to specify any parameters when retrieving data to all droplets.

@AlexanderProd this has been corrected as part of https://github.com/matt-major/do-wrapper/pull/7
Please pull the latest version (3.14.3) to resolve this.


Fix bug that caused encoding Int to loop forever.

This is @meteficha's suggestion that fixes https://github.com/bos/text/issues/114 and https://github.com/bos/aeson/issues/246. I have tested it locally.

Thanks!


Add supervisor for app restart after crash

closes #123

@Devaniti can you take a quick look? it looks ok to me but I'd rather check with you until I get enough time to get fluent in that script

On windows ctrl-c seems to generate non 0 exit code
You can take a look at go code to make it return 0 in that case, and I'll write supervisor in that script in the meantime

Oh wait, Ctrl+C stops whole batch script, so supervisor will not deadlock even if exit code is wrong

I made another pull request, same idea, but with comments, without using start command (I guess it's my personal preference), and with graceful exit from script when app does graceful exit
https://github.com/Arriven/db1000n/pull/141
Thanks @5har0varik for the idea!


MAINT: Add a reader which dispatches on asset type

Add AssetDispatchSessionBarReader and corresponding minute and session
bar version of that reader.
This reader routes requests to the appropriate reader based on the asset
type of the requested sids.
load_raw_array in the dispatch reader batches the sid by asset type
and then interleaves the results in the out arrays, so that the arrays
data corresponds with sids in the order that sids are passed to the
method, to meet the expected behavior of load_raw_arrays.
The dispatch redaer is intended for use by the data portal when using
both future and equities. The dispatch reader will also be passed to the
to the HistoryLoaders contained within the data portal, where the
batched load_raw_arrays will be used.
Also, BUG:

Fix the return of MinuteResampleSessionBarReader.load_raw_arrays to
match all other readers.
Use the input dt for the MinuteResampleSessionBarReader.load_raw_arrays
as a session label, instead of a minute dt, since it is a session bar
reader.
(Both of these bugs where discovered when using the resample reader for
future data in the dispatch tests.)

Coverage increased (+0.02%) to 86.312% when pulling 0f604686b6e9d7ac4d6604c29cbb1fda4fb3c07b on dispatch-bar-reader into 67112e0e1175f799df9b045c95f996f4b3fcd3d4 on master.


Send to Matt for Edits

SDMResearchProposal.docx
@MKLau I am uploading my proposal here becuase for whatever reason, git still keeps trying to add all those data files even though I've already moved them to the "docs" folder.

No worries, we can fix that tomorrow, or check out this instruction page:
http://stackoverflow.com/questions/1274057/making-git-forget-about-a-file-that-was-tracked-but-is-now-in-gitignore
Basically, you can do:
git rm --cached .

Just took a quick look at the proposal and it's a really good start. Let's chat a bit about it first thing tomorrow. Re-arranging the sentences on the conceptual modeling and adding some summary sentences would make the abstract complete and form a firm basis for the rest of the proposal.


ROX-12982,ROX-21061,ROX-21062: Switch to stock SCCs

Description
This is part 1 of a stack of multiple PRs. This PR is only concerned with the initial SCCs in Helm templates.
Therefore, Operator-related tests are failing because of these changes. They are fixed in the next layered PR.
Switch from our custom SCCs to stock SCCs OpenShift ships with.
The table below lists all components and the planned changes for them.

Component
Custom SCC before
OpenShift 4 SCC
Reasoning

Sensor
stackrox-sensor
restricted-v2
Great!

Admission Controller
stackrox-admission-control
restricted-v2
Great!

Central
stackrox-central
restricted-v2
Great!

Central-db
stackrox-central-db
nonroot-v2
Image running as fixed uid:gid

Scanner
stackrox-scanner
nonroot-v2
Image running as fixed uid:gid

Scanner-db
stackrox-scanner
nonroot-v2
Image running as fixed uid:gid

Collector
stackrox-collector
privileged
Needs full access to Node

monitoring
stackrox-monitoring
nonroot-v2
Image running as fixed uid:gid

To Dos to get this PR ready to merge

[x] Helm deployable on OpenShift 4
[x] Update unit tests
[x] Update E2E tests

Follow-up PRs:

[ ] Implement changes in Operator
[ ] Update Operator upgrade tests
[ ] Add upgrade instructions for Manifest-based installations
[ ] Update teardown script in stackrox/workflows to clean up the new/changed resources

Checklist

[x] Investigated and inspected CI test results
[x] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
Here I tell how I validated my change
I deployed on an OpenShift 4 cluster and ensured that all containers are running and StackRox is working as intended.
Reminder for reviewers
In addition to reviewing code here, reviewers must also review testing and request further testing in case the
performed one does not seem sufficient. As a reviewer, you must not approve the change until you understand the
performed testing and you are satisfied with it.

@Maddosaurus regarding the table in the PR description - It looks good, but I would love to see a reason (if possible) for picking nonroot-v2 instead of restricted-v2.

/retest

/test ci/prow/gke-nongroovy-e2e-tests

I added the ci-all-qa-tests label

Current dependencies on/for this PR:

master

PR #8663   👈

PR #8766

This stack of pull requests is managed by Graphite.

@vikin91

Are all tests functional when we merge this?
AFAIK, the Operator ships embedded Helm charts, so that shouldn't break. That said, I don't know about newly compiled/dev versions of the Operator.

Would some installation method or CI be broken?
Likely the Operator E2E tests will stay broken until we update either the tests or better, the Operator.

That said, we could merge this PR as-is, as it results in a running Helm deployment, but I'd prefer to merge it together with the follow-up.
On the other hand, it's a run against time, as multiple people are currently working on the Helm charts.

@vikin91

Are all tests functional when we merge this?
AFAIK, the Operator ships embedded Helm charts, so that shouldn't break. That said, I don't know about newly compiled/dev versions of the Operator.

Would some installation method or CI be broken?
Likely the Operator E2E tests will stay broken until we update either the tests or better, the Operator.

That said, we could merge this PR as-is, as it results in a running Helm deployment, but I'd prefer to merge it together with the follow-up. On the other hand, it's a run against time, as multiple people are currently working on the Helm charts.

If it breaks CI for master (more than it is broken now), then I would say: wait. If not, then you can merge it.


NetworkManager crashes trying to connect to Wi-Fi

Describe the bug
When supplying a WiFi password to a GUI version of NetworkManager (e.g. in nm-connection-editor), the GUI will crash and the password will not be saved. The following message is visible in the terminal:
(nm-connection-editor:1645): GLib-GIO-ERROR **: 21:44:47.629: settings object created with schema 'org.gnome.nm-applet.eap' and path '/org/gnome/nm-applet/eap/<uuid>/', but path '/org/gnome/nm-applet/eap/' is specified by schema
Trace/breakpoint trap (core dumped)

nmtui and nmcli are able to save passwords fine.
Steps To Reproduce
Steps to reproduce the behavior:

Connect to new Wi-Fi network (or edit existing network)
Supply Wi-Fi password
Click Save or Connect

Expected behavior
The connection is made.
Additional context
Appears to be an upstream issue.
Other distro reports: https://forum.endeavouros.com/t/cannot-add-new-connection-in-nm-applet-and-nm-connection-editor-crash/33694/5
Upstream report: https://gitlab.gnome.org/GNOME/libnma/-/issues/18
Possible (temporary?) fix: https://gitlab.gnome.org/GNOME/libnma/-/merge_requests/44
Notify maintainers

@jtojnar @NixOS/gnome
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-linux"`
 - host os: `Linux 6.1.0-asahi, NixOS, 23.05 (Stoat), 23.05pre435044.0f5996b524c`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.12.0`
 - channels(thomaswatson): `""`
 - channels(root): `"nixos"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Hi, can you please help test #205687?

Yes, that patch solves my issue.


Removed prerelease version. Updated icon

Fixes https://github.com/NuGet/docs.microsoft.com-nuget/issues/2184

Docs Build status updates of commit b2e4f18:
:clock10: Pending: waiting for processors (39 builds ahead of you)
:warning: Docs Build is busy, currently there are 39 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

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

File
Status
Preview URL
Details

docs/create-packages/Creating-a-Package.md
:bulb:Suggestion
View
Details

docs/create-packages/Creating-a-Package.md

Line 3, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning.' is duplicated in 'create-packages/Creating-a-Package.md(3,14)', 'create-packages/creating-a-package-dotnet-cli.md(3,14)', 'create-packages/creating-a-package-msbuild.md(3,14)'.
Line 5, Column 12: [Suggestion-ms-author-invalid] Invalid value for 'ms.author', 'karann' is not a valid Microsoft alias.
Line 315, Column 1: [Suggestion-code-block-indented] Indented code blocks aren't allowed. Use a Markdown code block surrounded by triple backticks (```).

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

Docs Build status updates of commit 9e7aed8:
:clock10: Pending: waiting for processors (41 builds ahead of you)
:warning: Docs Build is busy, currently there are 41 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 9e7aed8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/create-packages/Creating-a-Package.md
:white_check_mark:Succeeded
View

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


New package: Microsoft.PCManager version <IP_ADDRESS>

Pull request has been created with komac v2.2.1 :rocket:
Microsoft Reviewers: Open in CodeFlow

@wingetbot run


Add persistent storage for card and transactions associated with cards along with bug fixes

This PR has a lot of code changes, on top of that, there was a lot of merge conflicts in cardlist.java due to huge changes that @BrianTKM did previously, I am not sure if I fixed them correct, please have a look

Codecov Report

Merging #198 into master will increase coverage by 2.19%.
The diff coverage is 30.09%.

@@             Coverage Diff              @@
##             master     #198      +/-   ##
============================================
+ Coverage     25.71%   27.91%   +2.19%
- Complexity      433      462      +29
============================================
  Files           122      122
  Lines          4448     4650     +202
  Branches        623      641      +18
============================================
+ Hits           1144     1298     +154
- Misses         3232     3269      +37
- Partials         72       83      +11

Impacted Files
Coverage Δ
Complexity Δ

src/main/java/owlmoney/model/goals/GoalsList.java
44.77% <ø> (+1.49%)
17 <0> (ø)
:arrow_down:

...va/owlmoney/model/transaction/TransactionList.java
81.1% <ø> (-0.47%)
79 <0> (-1)

src/main/java/owlmoney/model/bank/Investment.java
78.07% <0%> (+22.8%)
26 <0> (+4)
:arrow_up:

src/main/java/owlmoney/model/bank/Saving.java
49.72% <0%> (+3.86%)
27 <0> (ø)
:arrow_down:

src/main/java/owlmoney/model/card/Card.java
56.28% <14.28%> (-29.28%)
31 <1> (+2)

src/main/java/owlmoney/model/profile/Profile.java
26.22% <36.61%> (+16.05%)
25 <6> (+15)
:arrow_up:

src/main/java/owlmoney/model/card/CardList.java
37.27% <40.57%> (+0.3%)
33 <4> (+4)
:arrow_up:

src/main/java/owlmoney/model/bank/BankList.java
38.75% <50%> (-2.46%)
71 <0> (+1)

... and 9 more

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 ba27c3b...a33000e. Read the comment docs.

Resolves: #180 such that there was a typo in the error message that was not discovered.


Spike on switching images/placeholders on scroll

#138191235
#138191277

@rynbyjn. Wanted to get a spike around what I was thinking about on the 🐕 🚶. It's kind of working in this state but would need a bunch more hashed out. Something to chat about and compare with #118 when we get there.

@rynbyjn closing this based on our findings. There is some good stuff in here which might be useful down the road though.


Transform is not properly applied with widget which has wrapped with RepaintBoundary

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
I've encountered a problem which is an unexpected behavior when the transform is wrapped with the RepaintBoundary, see the video below.

I've done the test on flutter web(wasm/html) and macOS native, and I got this result table:

idk which is the expected behavior, but they should show the same rendering result on the platform whatever I choose.

git clone this repo: https://github.com/Kingtous/dora_demo
flutter run

I've reproduced with Flutter 3.0.5, 3.3.0, and 3.10.3.
Expected results
RepaintBoundary should not influence the rendering.
Actual results
RepaintBoundary causes the transform performs incorrectly.
Code sample
Code sample
Reproduce demo: https://github.com/Kingtous/dora_demo
import 'dart:math';
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'dart:ui' as ui;

void main() {
  runApp(App());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Stack(
        children: const [
          Home(),
        ],
      ),
    );
  }
}

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

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  var rotateX = 0.0;
  var value = 0.5;
  final key = GlobalKey<State>();
  var flipRateScale = 2.0;
  Uint8List? img;

  @override
  Widget build(BuildContext context) {
    var transform = Matrix4.identity()..setEntry(3, 2, 0.001);
    // print(transform);
    return Scaffold(
      body: Row(
        children: [
          Expanded(
              child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(32.0),
                child: Column(
                  children: [
                    const Text("With RepaintBoundary"),
                    Transform(
                      transform: transform.clone()
                        ..rotateX(-value * flipRateScale),
                      child: Container(
                        color: Colors.red,
                        width: 150,
                        height: 150,
                        alignment: Alignment.center,
                        child: RepaintBoundary(
                          key: key,
                          child: Transform(
                            // key: key,
                            transform: transform.clone()
                              ..rotateY(-value * flipRateScale),
                            child: Container(
                              color: Colors.black,
                              width: 60,
                              height: 60,
                            ),
                          ),
                        ),
                      ),
                    ),
                    // Material(
                    //   child: Container(
                    //     child: Text("${transform}"),
                    //   ),
                    // ),

                    // Material(
                    //   child: Transform(
                    //     transform: Matrix4.skewX(0.1)..rotateX(rotateX),
                    //     child: ColoredBox(
                    //       color: Colors.black,
                    //       child: Transform(
                    //         alignment: Alignment.topRight,
                    //         transform: Matrix4.skewX(0.1)..rotateX(rotateX),
                    //         child: Container(
                    //           padding: const EdgeInsets.all(8.0),
                    //           color: const Color(0xFFE8581C),
                    //           child: const Text('测试！'),
                    //         ),
                    //       ),
                    //     ),
                    //   ),
                    // ),
                    const SizedBox(
                      height: 8.0,
                    ),
                    Material(
                      child: SizedBox(
                        width: 100,
                        height: 10,
                        child: Slider(
                            value: value,
                            onChanged: (v) {
                              setState(() {
                                rotateX = 2 * pi * v;
                                value = v;
                              });
                              Future.delayed(Duration.zero, () {
                                final bound =
                                    key.currentContext?.findRenderObject()
                                        as RenderRepaintBoundary;
                                bound.toImage().then((value) async {
                                  final img = await value.toByteData(
                                      format: ui.ImageByteFormat.png);
                                  setState(() {
                                    this.img = img?.buffer.asUint8List();
                                  });
                                });
                              });
                            }),
                      ),
                    ),
                    const SizedBox(
                      height: 8.0,
                    ),

                    Column(
                      children: [
                        TextButton(
                            onPressed: () {
                              final bound = key.currentContext
                                  ?.findRenderObject() as RenderRepaintBoundary;
                              bound.toImage().then((value) async {
                                final img = await value.toByteData(
                                    format: ui.ImageByteFormat.png);
                                setState(() {
                                  this.img = img?.buffer.asUint8List();
                                });
                              });
                            },
                            child: const Text("Catch Images")),
                        img == null
                            ? Text("img")
                            : Image.memory(
                                img!,
                                width: 100,
                                height: 100,
                                fit: BoxFit.contain,
                              )
                      ],
                    )
                  ],
                ),
              )
            ],
          )),
          Expanded(
              child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(32.0),
                child: Column(
                  children: [
                    const Text("Without RepaintBoundary"),
                    Transform(
                      transform: transform.clone()
                        ..rotateX(-value * flipRateScale),
                      child: Container(
                        color: Colors.red,
                        width: 150,
                        height: 150,
                        alignment: Alignment.center,
                        child: Transform(
                          // key: key,
                          transform: transform.clone()
                            ..rotateY(-value * flipRateScale),
                          child: Container(
                            color: Colors.black,
                            width: 60,
                            height: 60,
                          ),
                        ),
                      ),
                    ),
                    // Material(
                    //   child: Container(
                    //     child: Text("${transform}"),
                    //   ),
                    // ),

                    // Material(
                    //   child: Transform(
                    //     transform: Matrix4.skewX(0.1)..rotateX(rotateX),
                    //     child: ColoredBox(
                    //       color: Colors.black,
                    //       child: Transform(
                    //         alignment: Alignment.topRight,
                    //         transform: Matrix4.skewX(0.1)..rotateX(rotateX),
                    //         child: Container(
                    //           padding: const EdgeInsets.all(8.0),
                    //           color: const Color(0xFFE8581C),
                    //           child: const Text('测试！'),
                    //         ),
                    //       ),
                    //     ),
                    //   ),
                    // ),
                    const SizedBox(
                      height: 8.0,
                    ),
                    Material(
                      child: SizedBox(
                        width: 100,
                        height: 10,
                        child: Slider(
                            value: value,
                            onChanged: (v) {
                              setState(() {
                                rotateX = 2 * pi * v;
                                value = v;
                              });
                              Future.delayed(Duration.zero, () {
                                final bound =
                                    key.currentContext?.findRenderObject()
                                        as RenderRepaintBoundary;
                                bound.toImage().then((value) async {
                                  final img = await value.toByteData(
                                      format: ui.ImageByteFormat.png);
                                  setState(() {
                                    this.img = img?.buffer.asUint8List();
                                  });
                                });
                              });
                            }),
                      ),
                    ),
                    const SizedBox(
                      height: 8.0,
                    ),

                    Column(
                      children: [
                        TextButton(
                            onPressed: () {
                              final bound = key.currentContext
                                  ?.findRenderObject() as RenderRepaintBoundary;
                              bound.toImage().then((value) async {
                                final img = await value.toByteData(
                                    format: ui.ImageByteFormat.png);
                                setState(() {
                                  this.img = img?.buffer.asUint8List();
                                });
                              });
                            },
                            child: const Text("Catch Images")),
                        img == null
                            ? Text("img")
                            : Image.memory(
                                img!,
                                width: 100,
                                height: 100,
                                fit: BoxFit.contain,
                              )
                      ],
                    )
                  ],
                ),
              )
            ],
          ))
        ],
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration

Logs
Logs
None

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.10.3, on macOS 13.4 22F66 darwin-x64, locale zh-Hans-CN)
    • Flutter version 3.10.3 on channel stable at /Users/kingtous/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f92f44110e (6 days ago), 2023-06-01 18:17:33 -0500
    • Engine revision 2a3401c9bb
    • Dart version 3.0.3
    • DevTools version 2.23.1
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/kingtous/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /usr/local/opt/openjdk@11/bin/java
    • Java version OpenJDK Runtime Environment Homebrew (build 11.0.19+0)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

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

[!] Android Studio
    • Android Studio at /Users/kingtous/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9526055/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.4 22F66 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 114.0.5735.106

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

! Doctor found issues in 1 category.

Thanks for filing the issue. It seems to be similar to #113924. Can you check and confirm this?

It seems irrelevant with this issue. markNeedsCompositedLayerUpdate is not working in this issue.

Labeling the issue for further investigation. I also see this issue on Android and iOS platforms.

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.10.4, on macOS 13.0.1 22A400 darwin-x64, locale en-VN)
    • Flutter version 3.10.4 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 682aa387cf (2 days ago), 2023-06-05 18:04:56 -0500
    • Engine revision 2a3401c9bb
    • Dart version 3.0.3
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 32.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (3 available)
    • Pixel 3a (mobile) • 964AY0WL20 • android-arm64  • Android 12 (API 32)
    • macOS (desktop)   • macos      • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)      • chrome     • web-javascript • Google Chrome 114.0.5735.106

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

• No issues found!

[!] Flutter (Channel master, 3.12.0-2.0.pre.20, on macOS 13.0.1 22A400 darwin-x64, locale en-VN)
    • Flutter version 3.12.0-2.0.pre.20 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1bd1b5014c (2 hours ago), 2023-06-07 18:16:30 -0700
    • Engine revision a5f7d5d75f
    • Dart version 3.1.0 (build 3.1.0-171.0.dev)
    • DevTools version 2.24.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 32.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (3 available)
    • Pixel 3a (mobile) • 964AY0WL20 • android-arm64  • Android 12 (API 32)
    • macOS (desktop)   • macos      • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)      • chrome     • web-javascript • Google Chrome 114.0.5735.106

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

! Doctor found issues in 1 category.

Labeling the issue for further investigation. I also see this issue on Android and iOS platforms.
flutter doctor -v (stable and master)

I'm willing to contribute to this issue, but now I didn't find a good entry to debug this problem. Which way is a good start to handle this issue? Thx.

After few weeks for investigating this issue, I've found that there're two seperated reasons which causes the rendering issue:

As for Flutter web, 4x4 transform is applied correctly but for the one rendered by HTML renderer, preserve-3d or some properties is missing on some DOM nodes, so the browser is always performing 2d matrix calculation regardless of z-axis. But I've found if we adds preserve-3d on transform dom nodes and their parents dom nodes, there comes a new layer problem because the nodes which have the preserve-3d property is always on the new and the top layer. So further z-index may be required.
As for Flutter native, the transform layer ignores the value from z-axis(only accepts 3x3 transform), and I've enabled 4x4 transform by this PR: https://github.com/flutter/engine/pull/43434.


Please relax AppSourceCop rule AS0011 'A prefix is required'

The rule AS0011 'A prefix is required' forces to use a prefix everywhere, including page controls and table fields in new objects. I would like to have this relaxed a bit and only require where you really would expect a possible conflict:

All object names
All new fields / keys in tableextensions
All new controls in pageextensions

I don't see any possible conflicts inside new tables or new pages. Or do I miss something here?

This is fixed in AL Language build 2.1.66478.

seems to be an issue again. I have installt AL 3.0.121490 and do get this error if moving a field


Integrate local state index

Description
Integrate local state index complying to the EVM client interface. A client handler was added which is a way to execute both remote and local client and compare results. We only use the local state result if the remote client fails. We also can then change this handler to be smarter in ways it chooses which client to use (for example as long as the state index is healthy use local otherwise use remote).
Please note there are a lot of changes that are results of renaming types.

For contributor use:

[ ] Targeted PR against master branch
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the standards mentioned here.
[ ] Updated relevant documentation
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Added appropriate labels

Summary by CodeRabbit

New Features

Introduced a new ClientHandler for enhanced EVM operations with local and remote client support.
Added EVMClient interface for structured EVM interactions.
Implemented Engine and BlockState for robust blockchain state management.
New integration test for state execution of transfers within the Flow EVM environment.

Bug Fixes

Improved error handling and logging for EVM operations.

Documentation

Enhanced configuration options for the emulator in testing scenarios.

Tests

Comprehensive test suite for Register functionality and new integration tests for state execution.

mreged into feature/state


fix: missing dependency

vbom.ml no longer exist (see also kubernetes/kubectl#925).

/assign @k82cn

/lgtm


On 'step' currStepProgress

Hey there,
I'm looking to use this library for a simple project. I've got it all working well, but I'm running into some undesirable behavior:
On a step or goto event, the roll moves to the desired step, but the currStepProgress defaults to approximately 25%. The reason this is undesirable is that I'm attempting to draw svg paths which correlate to the currStepProgress, so that when a step event occurs, they're already a quarter drawn. I'd like to be able to ensure that on this event, it sets the progress to zero or very close to it.
I'm perusing the source code, but i'd be grateful if you could point me in the right direction.

Hi Will, sorry about the late reply. I'm guessing this is probably due to
the "padding" between chunks. If padding is 0, then the step progress
should match exactly with the position. See if that solves your problem.
https://github.com/williamngan/roll/blob/master/src/roll.js#L182
On Thu, Jan 19, 2017 at 8:58 AM, Will Carron<EMAIL_ADDRESS>wrote:

Hey there,
I'm looking to use this library for a simple project. I've got it all
working well, but I'm running into some undesirable behavior:
On a step or goto event, the roll moves to the desired step, but the
currStepProgress defaults to approximately 25%. The reason this is
undesirable is that I'm attempting to draw svg paths which correlate to the
currStepProgress, so that when a step event occurs, they're already a
quarter drawn. I'd like to be able to ensure that on this event, it sets
the progress to zero or very close to it.
I'm perusing the source code, but i'd be grateful if you could point me in
the right direction.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/williamngan/roll/issues/5, or mute the thread
https://github.com/notifications/unsubscribe-auth/AEKCWpTbhdUeH1Wgw8U0lpGDC3gmoj9Hks5rT5YfgaJpZM4LoWXz
.


index.remove(idx) - Graph::removeEdgeReliably: Lost conectivity!

Hello,
I would like to ask a question about removing nodes from an existing index.
When I remove nodes from my index I receive errors like this:
Graph::removeEdgeReliably: Lost conectivity! Isn't this ANNG? ID=2 anyway continue...
and also
/NGT-1.9.1/lib/NGT/Index.h:1622: remove:: cannot remove from tree. id=5 /NGT-1.9.1/lib/NGT/Tree.h:191: VpTree::remove: Inner error. Cannot remove object. leafNode=1693:/NGT-1.9.1/lib/NGT/Node.cpp:260: VpTree::Leaf::remove: Cannot find the specified object. ID=5,0 idx=21 If the same objects were inserted into the index, ignore this message
After removing a subset of nodes from an existing index, will running index.build_index() restore connectivity?
If I receive failures when attempting to remove a node, do I need to build a new index using a dataset that excludes the node(s)?
An example of my current usage could be:
# initial creation
# 65 thousand items added to index, index built and saved
# at a later time, we update the index

# load the existing index within a python3 application.
index = ngtpy.Index(index_path)

# process that updates index
index.remove(0)
# Graph::removeEdgeReliably: Lost conectivity! Isn't this ANNG? ID=2 anyway continue...
index.remove(1)
index.remove(2)
/NGT-1.9.1/lib/NGT/Index.h:1622: remove:: cannot remove from tree. id=5 /NGT-1.9.1/lib/NGT/Tree.h:191: VpTree::remove: Inner error. Cannot remove object. leafNode=1693:/NGT-1.9.1/lib/NGT/Node.cpp:260: VpTree::Leaf::remove: Cannot find the specified object. ID=5,0 idx=21 If the same objects were inserted into the index, ignore this message

# in my test I removed the first 10 nodes I previously added when building the index

# at end of update process
index.build_index()
index.save()

# Is connectivity repaired for our index? Were all nodes removed successfully?

My current test index is 65 thousand nodes. My use case is to create an index of 3-5 millions nodes, periodically remove a small subset of nodes and add new nodes. I am hoping to avoid inserting millions of nodes, rebuilding a fresh index every time.
Issues that cite adding and removing nodes support:
https://github.com/yahoojapan/NGT/issues/38
https://github.com/yahoojapan/NGT/issues/19

Thank you for your time and consideration. Please let me know if there is any additional information that would help address my question.
Regards,
Erik

Hello,
First, I am wondering why the inconsistency occurred. Do you have any ideas about that. If not, could you answer the following questions?
What is your OS?
Did you install your ngtpy from PYPI, or install it with setup.py?
Did you build and install NGT (not ngtpy) with a shared memory option?
Did you reconstruct ONNG from a default index with the optimizer?
Did you insert and remove by multiple threads without locking?
Could you run the below command to check your index and send the result?
ngt info -m a [index-folder]
We use NGT for our company's services to build an index for more than 1 M objects and continuously update the index. However, inconsistency has not occurred except the beginning of the service. At this moment, there is no functions to fix inconsistency of indexes. Since I understand the demand, I will consider implementing such functions.

Hello,
Thank you for your response. I believe that I was able to find the cause of the inconsistency.
I was creating a tar.gz of the index and backing it up after executing these methods
index.build_index()
index.save()

Running the aforementioned sequence of methods, before creating an archive of the index, was a reliable way to create an inconsistent index.
I reread the ngtpy API and reviewed some of the source code and noticed the close() method.
I updated my logic to close the index, before I attempt to archive the index directory.
index.build_index()
index.save()
index.close()

I have found that closing the index before creating an archive prevents the inconsistency.
I am now able to load and modify archived indexes without errors.
Thank you for taking the time to communicate with me. If you have any other questions, please let me know.
Regards,
Erik

Hello,
If you use NGT built with the shared memory option, close is needed to achieve. However, if you use NGT without the shared memory option, I think that no close just causes memory leaks. Which one do you use?

I build NGT like this:
cd NGT-1.9.1 \
	&& mkdir build \
	&& cd build \
	&& cmake .. \
	&& make \
	&& make install \
	&& ldconfig /usr/local/lib

I believe that this excludes the shared memory option.
For now closing the index before archiving data is fine for my use case. But if this is useful information and you have additional questions, please let me know.

Thank you for your information. It seems you do not use shared NGT.
Although I tried various things, I was not able to reproduce the bug. If you have time, could you reproduce an index (an archive) from which you cannot remove objects and send it?
BTW, after only removing objects, you do not need to call build_index. remove() updates indexes as well.


how is use api?

how is use api?

The instructions for using the API via Python can be found at the link below:
https://github.com/Uminosachi/sd-webui-inpaint-anything/blob/main/README_DEV.md

Will similar API fastapis be added in the future?
------------------ 原始邮件 ------------------
发件人: @.>;
发送时间: 2023年9月18日(星期一) 下午5:04
收件人: @.>;
抄送: @.>; @.>;
主题: Re: [Uminosachi/sd-webui-inpaint-anything] how is use api? (Issue #95)
The instructions for using the API via Python can be found at the link below:
https://github.com/Uminosachi/sd-webui-inpaint-anything/blob/main/README_DEV.md
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

At this time, there are no plans in place to develop a web API.

Segments Image Create Mask use many point?

无法定位程序箱入点
?assertSignaturelsCorrect@ OperatorEntry@impl@c10@@QEBAXVCppSi
gnature@23@ N@Z 于动态链接库
C: Users xiaoyulanaconda3 envs'stable diffusion python10 Lib'site-packages\torchvision), C.pyd 上

The inpalib in the web UI extension version requires webui.bat to be running to function properly. In contrast, the standalone version of inpalib is more user-friendly.
The README_DEV of the Standalone version:
https://github.com/Uminosachi/inpaint-anything/blob/main/README_DEV.md

https://github.com/Uminosachi/sd-webui-inpaint-anything/blob/main/ia_file_manager.py

Excuse me, where did the modules in the fifth line of this file (from modules import shared) come from ?

That import is loading the shared.py file in the stable-diffusion-webui/modules directory.

Excuse me,I copy the code in https://github.com/Uminosachi/sd-webui-inpaint-anything/blob/main/README_DEV.md,but it did not work.

什么事


feat: add holesky network

ref:

https://github.com/eth-clients/holesky/pull/57
Closes #5875

:tada: This PR is included in v1.11.0 :tada:


Type coercion methods

https://github.com/vega/vega-loader/blob/3040897c60d7aba0b3c99216129107386ff0f371/src/type.js#L47 has some useful methods that Vega-Lite needs in expressions.
toNumber ??? parseFloat is not the same: https://stackoverflow.com/questions/17106681/parseint-vs-unary-plus-when-to-use-which
toDate ??? timeParse requires a format specifier. We could use d3.isoFormat.
toBoolean ???
toString ???

This is blocking https://github.com/vega/vega-lite/pull/2174

OK, these have been added to the expression language in vega-parser (not vega-expression). I have also reverted vega-expression to longer support type checking directly, this is instead added in vega-parser as well. I decided the methods are extraneous here, and more importantly the new scheme ensures that the same core set of methods (now moved to vega-util) are used across contexts such as loading, expressions, etc.

Fantastic. Thank you!


Use helm install submariner， how to Run the verification

What happened:
Follow https://submariner.io/operations/deployment/helm/ to install.
Three clusters I have ,  one is host cluster , the other two cluster is member.
Installed  broker and subctl  on host cluster , submariner-operator  on two member clusters.
KUBECONFIG=member1-config:member2-config subctl verify --kubecontexts member1,member2 --only service-discovery,connectivity --verbose
Performing the following verifications: service-discovery, connectivity
Running Suite: Submariner E2E suite
===================================
Random Seed:<PHONE_NUMBER>
Will run 37 of 41 specs

STEP: Creating kubernetes clients
STEP: Creating lighthouse clients
Failure [240.028 seconds]
[BeforeSuite] BeforeSuite
github.com/submariner-io/shipyard@v0.13.0/test/e2e/e2e.go:42

  Failed to find Clusters to detect if Globalnet is enabled. No Cluster found
  Unexpected error:
      <*errors.errorString | 0xc0002148b0>: {
          s: "timed out waiting for the condition",
      }
      timed out waiting for the condition
  occurred

  github.com/submariner-io/shipyard@v0.13.0/test/e2e/framework/framework.go:517
------------------------------

Ran 37 of 0 Specs in 240.044 seconds
FAIL! -- 0 Passed | 37 Failed | 0 Pending | 0 Skipped
[] E2E failed

subctl version: v0.13.0

install values.yaml
---
submariner:
  clusterId: "xxx"
  clusterCidr: "xxx"
  serviceCidr: "xxx"
  images:
    repository: private-repo/submariner
    tag: "0.12.2"
broker:
  server: "${SUBMARINER_BROKER_URL}"
  token: "${SUBMARINER_BROKER_TOKEN}"
  namespace: "submariner-broker"
  ca: "${SUBMARINER_BROKER_CA}"
ipsec:
  psk: "${SUBMARINER_PSK}"
operator:
  image:
    repository: private-repo/submariner/submariner-operator
    tag: "0.12.2"
gateway:
  image:
    repository: private-repo/submariner/submariner-gateway
    tag: "0.12.2"

on member cluster
kubectl get pods -n submariner-operator
NAME                                            READY   STATUS    RESTARTS   AGE
submariner-lighthouse-agent-6dd4bc9b4b-ft6cq    1/1     Running   0          3h15m
submariner-lighthouse-coredns-8bf8fccdb-92kpd   1/1     Running   0          3h15m
submariner-lighthouse-coredns-8bf8fccdb-gxpxs   1/1     Running   0          3h15m
submariner-operator-d4cd68cb9-4qdv5             1/1     Running   1          3h15m
submariner-routeagent-8mwrh                     1/1     Running   0          3h15m

Cloud provider or hardware configuration:
Install tools:  helm3  submariner-k8s-broker-0.12.2.tgz  submariner-operator-0.12.2.tgz
Others:

I  find https://github.com/submariner-io/submariner/issues/1926#issuecomment-1191276554  and  add label submariner.io/gateway=true  to the node in two clusters.
And the gateway pod CrashLoopBackOff
+ trap 'exit 1' SIGTERM SIGINT
+ export CHARON_PID_FILE=/var/run/charon.pid
+ CHARON_PID_FILE=/var/run/charon.pid
+ rm -f /var/run/charon.pid
+ SUBMARINER_VERBOSITY=2
+ '[' false == true ']'
+ DEBUG=-v=2
++ cat /proc/sys/net/ipv4/conf/all/send_redirects
+ [[ 0 = 0 ]]
+ exec submariner-gateway -v=2 -alsologtostderr
I0816 07:52:38.140355       1 main.go:93] Starting the submariner gateway engine
W0816 07:52:38.142494       1 client_config.go:608] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0816 07:52:38.145015       1 main.go:115] Creating the cable engine
E0816 07:52:58.164530       1 public_ip.go:81] Error resolving public IP with resolver api:api.ipify.org : retrieving public IP from https://api.ipify.org: Get "https://api.ipify.org": dial tcp: lookup api.ipify.org on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:39744-><IP_ADDRESS>:53: i/o timeout
E0816 07:53:18.167455       1 public_ip.go:81] Error resolving public IP with resolver api:api.my-ip.io/ip : retrieving public IP from https://api.my-ip.io/ip: Get "https://api.my-ip.io/ip": dial tcp: lookup api.my-ip.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:53572-><IP_ADDRESS>:53: i/o timeout
E0816 07:53:38.178138       1 public_ip.go:81] Error resolving public IP with resolver api:ip4.seeip.org : retrieving public IP from https://ip4.seeip.org: Get "https://ip4.seeip.org": dial tcp: lookup ip4.seeip.org on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:56368-><IP_ADDRESS>:53: i/o timeout
F0816 07:53:38.178181       1 main.go:267] Error creating local endpoint object: Unable to resolve public IP by any of the resolver methods: [api:api.ipify.org api:api.my-ip.io/ip api:ip4.seeip.org]
github.com/submariner-io/submariner/pkg/endpoint.getPublicIP
        github.com/submariner-io/submariner/pkg/endpoint/public_ip.go:85
github.com/submariner-io/submariner/pkg/endpoint.GetLocal
        github.com/submariner-io/submariner/pkg/endpoint/local_endpoint.go:89
main.main
        command-line-arguments/main.go:125
runtime.main
        runtime/proc.go:225
runtime.goexit
        runtime/asm_amd64.s:1371
could not determine public IP
github.com/submariner-io/submariner/pkg/endpoint.GetLocal
        github.com/submariner-io/submariner/pkg/endpoint/local_endpoint.go:91
main.main
        command-line-arguments/main.go:125
runtime.main
        runtime/proc.go:225
runtime.goexit
        runtime/asm_amd64.s:1371

I  find https://github.com/submariner-io/submariner/issues/1649  and add annotate gateway.submariner.io/public-ip=ipv4
Now all the check is well for member clusters
subctl  diagnose all --kubeconfig member1-config
Cluster "default"
 ✓ Checking Submariner support for the Kubernetes version
 ✓ Kubernetes version "v1.19.5+k3s2" is supported

 ⚠ Checking Submariner support for the CNI network plugin
 ⚠ Submariner could not detect the CNI network plugin and is using ("generic") plugin. It may or may not work.
 ✓ Trying to detect the Calico ConfigMap

 ✓ Checking gateway connections
 ✓ All connections are established

 ✓ Non-Globalnet deployment detected - checking if cluster CIDRs overlap
 ✓ Clusters do not have overlapping CIDRs
 ✓ Checking Submariner pods
 ✓ All Submariner pods are up and running

 ✓ Checking Submariner support for the kube-proxy mode
 ✓ The kube-proxy mode is supported

 ✓ Checking the firewall configuration to determine if the metrics port (8080) is allowed
 ✓ Skipping this check as it's a single node cluster

 ✓ Checking the firewall configuration to determine if intra-cluster VXLAN traffic is allowed
 ✓ Skipping this check as it's a single node cluster

 ✓ Globalnet is not installed - skipping

Skipping inter-cluster firewall check as it requires two kubeconfigs. Please run "subctl diagnose firewall inter-cluster" command manually.

verify still get error
KUBECONFIG=member1-config:member2-config subctl verify --kubecontexts member1,member2 --only service-discovery,connectivity --verbose
Performing the following verifications: service-discovery, connectivity
Running Suite: Submariner E2E suite
===================================
Random Seed:<PHONE_NUMBER>
Will run 37 of 41 specs

STEP: Creating kubernetes clients
STEP: Creating lighthouse clients
STEP: Creating submariner clients
[dataplane-globalnet] Basic TCP connectivity tests across overlapping clusters without discovery when a pod connects via TCP to the globalIP of a remote service when the pod is not on a gateway and the remote service is not on a gateway
  should have sent the expected data from the pod to the other pod
  github.com/submariner-io/submariner@v0.13.0/test/e2e/dataplane/tcp_gn_pod_connectivity.go:35
STEP: Creating namespace objects with basename "dataplane-gn-conn-nd"
STEP: Generated namespace "e2e-tests-dataplane-gn-conn-nd-tzc2l" in cluster "member1" to execute the tests in
STEP: Creating namespace "e2e-tests-dataplane-gn-conn-nd-tzc2l" in cluster "member2"
STEP: Deleting namespace "e2e-tests-dataplane-gn-conn-nd-tzc2l" on cluster "member1"
STEP: Deleting namespace "e2e-tests-dataplane-gn-conn-nd-tzc2l" on cluster "member2"

• Failure in Spec Setup (BeforeEach) [0.017 seconds]
[dataplane-globalnet] Basic TCP connectivity tests across overlapping clusters without discovery
github.com/submariner-io/submariner@v0.13.0/test/e2e/dataplane/tcp_gn_pod_connectivity.go:28
  when a pod connects via TCP to the globalIP of a remote service [BeforeEach]
  github.com/submariner-io/submariner@v0.13.0/test/e2e/dataplane/tcp_gn_pod_connectivity.go:58
    when the pod is not on a gateway and the remote service is not on a gateway
    github.com/submariner-io/submariner@v0.13.0/test/e2e/dataplane/tcp_gn_pod_connectivity.go:65
      should have sent the expected data from the pod to the other pod
      github.com/submariner-io/submariner@v0.13.0/test/e2e/dataplane/tcp_gn_pod_connectivity.go:35

      Error creating namespace &Namespace{ObjectMeta:{e2e-tests-dataplane-gn-conn-nd-tzc2l      0 0001-01-01 00:00:00 +0000 UTC <nil> <nil> map[e2e-framework:dataplane-gn-conn-nd pod-security.kubernetes.io/audit:privileged pod-security.kubernetes.io/enforce:privileged pod-security.kubernetes.io/warn:privileged] map[] [] []  []},Spec:NamespaceSpec{Finalizers:[],},Status:NamespaceStatus{Phase:,Conditions:[]NamespaceCondition{},},}
      Unexpected error:
          <*errors.StatusError | 0xc0000300a0>: {
              ErrStatus: {
                  TypeMeta: {Kind: "", APIVersion: ""},
                  ListMeta: {
                      SelfLink: "",
                      ResourceVersion: "",
                      Continue: "",
                      RemainingItemCount: nil,
                  },
                  Status: "Failure",
                  Message: "namespaces \"e2e-tests-dataplane-gn-conn-nd-tzc2l\" already exists",
                  Reason: "AlreadyExists",
                  Details: {
                      Name: "e2e-tests-dataplane-gn-conn-nd-tzc2l",
                      Group: "",
                      Kind: "namespaces",
                      UID: "",
                      Causes: nil,
                      RetryAfterSeconds: 0,
                  },
                  Code: 409,
              },
          }
          namespaces "e2e-tests-dataplane-gn-conn-nd-tzc2l" already exists
      occurred

      github.com/submariner-io/shipyard@v0.13.0/test/e2e/framework/framework.go:473
------------------------------


some bug in processing ldap groups

In file authLdap.php is:
/// my  variable $groups contains
/// array(2) { ["count"]=> int(1) [0]=> array(2) { ["count"]=> int(0) ["dn"]=> string(73) "CN=site-admin,OU=sitename,OU=NewUsers,DC=example,DC=com" } }
// $authLDAPGroupAttr contains "dn"
// and below have no chance to work with content of my variable $groups,
$grp = array();
for ($i = 0; $i < $groups ['count']; $i++) {
for ($k = 0; $k < $groups[$i][strtolower($authLDAPGroupAttr)]['count']; $k++) {
$grp[] = $groups[$i][strtolower($authLDAPGroupAttr)][$k];
}
}

What is your exact configuration and what is your actual issue?

I think this bug is now obsolete.


v3.0.1 introduces an error

Hi, upgrading from 3.0.0 to 3.0.1 introduces this error.

Thanks

@calin-berindea thank you for your feedback.
@rcrdlbl hi friend, could you help to fix this issue?

@calin-berindea I've release v3.0.2, please help me check if this issue is still occurring with your dev environment! Thanks.

@ndaidong the update to v3.0.2 is working. Thank you.


Add e2e CI variant that runs on AWS

9d45af4 Add e2e CI variant that runs on AWS
commit 9d45af42ef25ac768d4540d7462d16cf5ece27e8
Author: Russell Bryant<EMAIL_ADDRESS>Date:   Mon Jul 1 21:27:19 2024 -0400
Add e2e CI variant that runs on AWS

This commit introduces a new approach for running the e2e CI job.
Instead of using a runner provided by github, use a similarly powered
runner on AWS that is much cheaper.

The real benefit of this approach is the ability to run on any other
instance type, giving us access to GPU instances that are more
powerful than what was built-in to GitHub. More powerful e2e variants
will come in future commits.

This job can only be manually triggered for now. At some point we may
create a configuration that can replace the one that runs
automatically on every commit, but I'd like to exercise this for a
while to make sure it's stable. It's also not quite as simple as just
running this automatically directly on PRs, because have to be careful
to protect against what's possible with a malicious PR. In any case,
that is future work.

Similar to how the original `e2e` job worked at first, this one can be
manually triggered to be run against any PR. Comments will be posted
to a PR so you can follow its progress, as well as be notified of its
results.

Signed-off-by: Russell Bryant<EMAIL_ADDRESS>Co-authored-by: Brent Salisbury<EMAIL_ADDRESS>

follow-up next step -- https://github.com/instructlab/instructlab/pull/1556


Add title and body field to apns payload for iOS push notifications

This adds a title and body keys, so the final should look something like this
{'zulip': {'message_ids': [31]}, 'aps': {'alert': {'body': 'This is test content', 'title': 'New private message from King Hamlet'}}}
And the previous one was
{'zulip': {'message_ids': [31]}, 'aps': {'badge': 1, 'alert': 'New private message from King Hamlet'}}
Also removed the badge because setting the badge as 1 will show the badge count as 1 even if there are multiple messages received
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html
Apns payload: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

@gnprice can you review?

One concern I have with this change is that we should make sure our documentation on how the push notification bouncer works from a privacy perspective is consistent with the code here.  It might be better to have the push notifications just contain message IDs, and have the app fetch the message content from the server when it receives a push notification. (Does iOS support that?)

The iOS doesn't support giving callbacks after a remote notification (if the app is terminated) so we'll have to send the information in this payload!
If the app is in background state then the remote notification callback will be triggered, which will not be the case every time!

A bit of web searching tells me that as of 2016 (and iOS 10), there is actually a way to have your app's code invoked when a notification is delivered! Docs here: https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension
It's not well documented. The APNs payload reference @kunall17 linked above doesn't mention the relevant key, and claims that all keys not mentioned "are ignored by Apple". I'm a little dubious of how well-supported it will be, like whether the OS will reliably actually call the extension and how much time it'll give the extension to run. As part of Apple's obsession with battery life for iOS, they've always been stingy with every form of background processing for apps, which is why push notifications without this API have always been self-contained data that the OS would interpret without consulting the app.
I think my inclination would be:

For now, just include the message content like every other app that includes content in notifications must have been doing until last October.
Later, improve on that to keep the data encrypted end-to-end from the Zulip server to the device -- but by including it in the message, encrypted with a key the app has previously exchanged with the server, so that no network fetch is required. That won't make it for 1.7, but I think a natural way of engineering it will allow it to work for any given user as soon as both their client app and their server run a version that supports it.

That plan is consistent with the privacy properties we promise in our documentation, which allows for the notification bouncer to handle private data but says we'll treat it carefully:

All of the network requests [...] are encrypted over the wire with SSL/TLS.
The code for the push notification forwarding service is 100% open source [...]. The service's logging is designed to protect the privacy of users of Zulip servers that are using the forwarding service.
The push notification forwarding servers are professionally managed by a small team.

I'll be glad to get to upgrade that promise in the future, though.

Merged as 1436d558a39cc93b2f86bb3afe9f5aa7f457f129.

@gnprice do you feel we should add some text to http://zulip.readthedocs.io/en/latest/prod-mobile-push-notifications.html#security-and-privacy-implications related to this?

Thanks for the merge @gnprice, and for the info about UNNotificationServiceExtension.
So using this seems easy if I manage to find a way to extract the API key used to login by the user, and then fetch the message.
Extracting the API key can be cumbersome as all this would work on the native side, and the API key would be in the redux store, I'll see about this after a stable release!
Btw how high priority would be this task of privacy will be?

@timabbott I don't think we need to add anything -- it's already pretty clear about the situation.
There's a whole mini-industry of cloud services that forward push notifications to APNs, GCM, and other services (for Amazon Fire, for Windows Phone, and through Baidu for Android devices in China). I just scanned the docs of several of the leading ones; none of them offer end-to-end encryption (you might DIY it, but they don't mention the idea), and in their voluminous documentation none of them say nearly as much about the issue as we already do in that short doc. Here's what I found (after googling [push notification services] and then clicking through to read about the top result and the services I'd heard of):
https://documentation.onesignal.com/docs/security (like ours, but much terser)
https://aws.amazon.com/sns/faqs/ (like ours, obliquely, if you piece it together)
https://docs.urbanairship.com/ (I couldn't find even a word about this)
What we're doing is the industry standard. It'll be great to do better in the future, and we can boast about it then, but while we're doing the standard thing there's no need to apologize for it or to raise red flags that say people should be afraid; just to be clear about the facts of it, which I think we are.

@kunall17 My suggestion would actually be to not go and fetch the message -- that will take time, and potentially won't work if the user's connection is flaky. And the OS is going to give us a limited time to run, potentially very limited. Instead, I'd suggest we include the message text there in the notification, in the custom data, but encrypted.
This will definitely be a feature where it'll be good to write up a design in a few paragraphs of English text first, and discuss that, before implementing it -- we'll want to think carefully about how the message is encrypted, and what key is used and how that gets set up between the client and the server.
I think this would be a solid feature to be proud of, but definitely a "nice to have" -- it's not a feature that anyone else does, as far as I know, and not something I've heard people clamoring for. And the fact that nobody else does it is a sign that there are likely to be uncharted obstacles to deal with along the way. :wink: There are a lot of other important features for the mobile app that will make a big difference for a lot of users right away, so I'd prioritize this after those.

Once I finish up the mobile app bugs/patches, I'll start working on the badge count first then the encryption!


Use the localAmount sent from blockchain-api

Description
The blockchain-api returns values with the exchange rate at the time of the transactions. We weren't using them correctly and using the current exchange rate instead. This PR fixes that.
Other changes
N/A
Tested
Manually and with unit tests
How others should test
Look at all transactions and make sure that the exchange rate in them is the exchange rate at the time, not the current one.
Related issues

Fixes #1738

Backwards compatibility
N/A

For later: Would love to see/discuss how we could converge on a solution for displaying token and currency values. We have very similar concerns split across CurrencyDisplay and TokenDisplay.

Yeah, so when we started with all these changes trying to force CurrencyDisplay to work for multiple tokens seemed like would be very complex and the code there had already been through many patches to accomodate one-off use cases, many of which weren't used anymore, so I started over with TokenDisplay. I think eventually there should be no more uses of CurrencyDisplay and we could switch to TokenDisplay for all amounts that show a token amount.

Hey @MuckT "Look at all transactions and make sure that the exchange rate in them is the exchange rate at the time, not the current one."
Can you please provide us from which link we can identify or get the updated exchange rate for blockchain API


Add support of choosing binary based on standard lib c library.

There are few standard lib c libraries, musl and glibc.
BInary files builded on one linux system e.g. ubuntu doesn't compatible with another system, e.g. Alpine Linux.
I would like to have opportunity to choose binary file based on standard lib c library.
It will be very useful for Linux systems.
What do you think about this feature?

There is the npm module for checking libc https://github.com/lovell/detect-libc.
There is an open issue on npm for adding libc parameter to the process object https://github.com/nodejs/node/pull/17993.


3RSB22BZ button

Change-Id: Ib630fcc02291061935571d7ef1230c88a3060ab5

@greens @brianj94  https://github.com/SmartThingsCommunity/SmartThingsEdgeDrivers/issues/771

@brianj94 Hi, i want to submit the cetification of our button, i select Products from the navigation in Console and add smart button.
I fill in the Driver Pull Request URL(https://github.com/SmartThingsCommunity/SmartThingsEdgeDrivers/pull/772), but in drivers, there is no zigbee-button listed, Do you know how to display the zigbee button driver in the list?

@brianj94

@Brianj94 Hi, i want to submit the cetification of our button, i select Products from the navigation in Console and add smart button. I fill in the Driver Pull Request URL(#772), but in drivers, there is no zigbee-button listed, Do you know how to display the zigbee button driver in the list?

@brianj94 can you please take a look at this?

Hi @weihuan1111 , yes so in order for the Zigbee button option to show up under drivers you will need to share that driver with your organization in the SmartThings CLI.
I have included some documentation and a link to download the program in order to help you get started with the CLI. You will  also need a code editing program if you did not use one for making your Pull Request. We recommend Visual Studio Code but you can use any similar program that you prefer.
CLI Documentation:
[Link](https://developer.smartthings.com/docs/devices/hub-connected/get-started/#the-cli
https://github.com/SmartThingsCommunity/smartthings-cli)
CLI Download:
Link
Steps to Add a Driver to Console Using the CLI

On your desktop, create a new folder for your device. Make sure there are no spaces or special characters in your folder name. For example "ZigbeeButton" would work for this folder's name.

In your code editing program, load the device folder to the program and then create two new folders inside the device folder named Profiles and src (Note: capitalization and punctuation matters for all work within the CLI)

Add two new files under your device folder called config.yml and fingerprints.yml

Find the device profile on the SmartThings Public Repository:  Link

Copy the config.yml file on the SmartThings device profile page to your new file in your code editor also called config.yml.

Copy the fingerprint information from your device's Pull Request and paste it into your fingerprints.yml file.

In your Profile folder, add a file named the same name as the fingerprint listed in Profiles on the SmartThings Edge Driver repository.

For example, since you are building a button, you would select the Zigbee Button folder on the SmartThings Github page and then select the profile that has the same capabilities as your Button. For this device you would select the profile "one-button-battery".

In your src folder, add a file named init.lua and copy the information from the SmartThings Edge Driver repository to your init.lua file.

Note: You can select the “Copy Raw Contents” in the upper right hand corner in Github to make sure you copy everything correctly on that page.

In your src folder, add another file that has the same name as the file listed in the Test folder in the SmartThings Edge driver repository and copy the information directly from that test folder to your test folder.

Save All in your code editing program.

Open the SmartThings CLI and run the command smartthings organizations to see a list of your organizations. (You can also get this ID from the Console under Third Reality (top right corner) > Manage Organization)

Copy your Organization ID

Run the command below to add your Edge driver to your organization.

smartthings edge:drivers:package {file path} -O {oranization ID}

*Note: Add your organization ID and your file path without the brackets when running the command.

If you run into an error, fix the error first before proceeding. The final message in the CLI should have the Driver ID, Name, Package Key, and Version.

In the SmartThings Console, you should now see your Driver and Fingerprint.

Note: Make sure Protocol is selected if your Driver option is still grayed out.

Let me know what questions you have with the steps above. Thanks!

We'd like to see some test coverage.

@greens How to add unit tests? And how to test the unit tests?

Hey @weihuan1111 Yes - Unit tests are necessary. It provides code coverage for the devices under certification that will be a benefit for many years to come.
Please review this document here to support. https://developer.smartthings.com/docs/devices/hub-connected/test-your-driver
Thank you.

@lelandblue Test units has been added.

@greens 0x0012 is not  custom clusters, it is zigbee standard cluster. But in edge drivers, i can not find it. Do you know in "st.zigbee.zcl.clusters", what is 0x0012 defined as?

@greens test units has been fixed.

@Brianj94 Hi， have you completed working through your internal code review process for these submissions. When will the tickets bring in UL? Thank you.

@greens Fixed， please review it, thank you.

@Brianj94  Hi, now, we have not receive the e-mail from UL to do WWST certification. When will you finish the code review process and create the necessary tickets on your side to bring in UL

Hi @weihuan1111 , thank you for adding the firmware to the new request for this device. It looks like the product category is now set to Receiver / Extender. Could you please change that to Remote / Button? Thank you.

@Brianj94 I have change the category to Remote/Button.

Hello @weihuan1111 There are conflicts on this PR. Can you please address them ? Once that is clear we can merge.

@lelandblue The conflicts have been resolved.

@Brianj94 @lelandblue Hi, May I ask if this product WWST has passed the test? When will this pull request be merged?