Add fetchApiRef which implements fetch, plus Backstage token header when available

We need a structured way of conveying the user's identity to backends when making outgoing requests, in particular when using an auth middleware. Hopefully without having to place custom logic and identity API dependencies in all client calls everywhere.
This PR implements a fetchApiRef that can be used anywhere, and which injects a Authorization: Bearer <token> header with the user's token as returned by the identity API if available. This makes it opt-in. It also, however, makes it available only in the react context.
This PR also implements a middleware for the plugin: URL scheme, so that people can fetchApi('plugin://catalog/entities'), which then gets resolved by plugin ID (catalog in this example) using the discovery API.
Considerations
The Backstage token should be considered sensitive. The current implementation of that middleware by default sends the header to only targets starting with the backend base URL. That means that the entire fetchApi becomes "risky" to use, in a way that may not be apparent at first glance; however, the backend base URL should in general be safe to assume to be a reliable target. In its current form, the API should only be used by clients that know that they talk to the intended backend.
Consider: what if the customer has implemented a custom plugin resolver; we can't just assume that backend.baseUrl are the only targets to decorate calls for. Some further tweaks should probably be taken here, going forward.
Alternatives
Also considered:

Using a Service Worker to intercept all calls, or
Just plain replacing the global fetch with one that we control

Service workers are very well supported these days. That might work out. They do have some oddities. They only work on https and localhost. You can't communicate code to them so the callback getIdToken will have to be polled regularly on a timer in the surrounding app to be passed to the worker. And their installation flow is a bit special, I am not sure if it's guaranteed that the worker will actually always be alive and usable, and if it isn't, will all authed request flows break?

@Fox32 @dhenneke @Rugvip if you find this interesting

The first thing that comes into my mind: Would be neat to have a compatible solution in frontend and backend. So some use cases where I would like to be able to intercept fetch operations:

Authentication
Collecting metrics about calls
Passing trace ids down the call chains

And passing through the backend-token itself, in some server-to-server scenarios. For example when starting a scaffolding step and the scaffolder backend wants to turn around and query the catalog backend for the template details - that should be done on behalf of the original user.

Instead of introducing a new header, can we continue using Authorization and use Proxy-Authorization if needed for proxy-backend? Are there any other scenarios where we'd run into conflicts with the Authorization header (assuming we only send it to backstage backends)?
I like the custom URL scheme idea (backstage://{pluginId}/*). That could make it easier for whatever fetch api we provide to encapsulate both auth header injection and backend discovery.
The fetch-intercept approach seems nice because it's open for extension, so we can support other use cases like @Fox32 mentioned. However, that implementation and others I've seen patch the global fetch instance, which comes comes with some complexity/magic, especially on the backend and test environments. That got me curious what a "scoped" version of fetch intercept could look like, so I hacked on a gist to demonstrate that. It doesn't really change what you've proposed though, just an implementation detail 😄

Instead of introducing a new header, can we continue using Authorization and use Proxy-Authorization if needed for proxy-backend? Are there any other scenarios where we'd run into conflicts with the Authorization header (assuming we only send it to backstage backends)?

We're open to suggestions!
The main reasoning was,

This might be replacing all direct use of fetch. Not just for injection of auth; it can be a focus point where we and adopters can inject any set of behaviors such as restrictions, metrics, etc. Kinda like we want Link to be used everywhere instead of <a>. We can't be sure how it will be used, to what targets. I think it is reasonable that it will for example be used to pass github auth or similar in Authorization, as required by the target. I think it might be safest to communicate this in a separate header to avoid collisions.
It is important that the token does not get leaked to external parties. We will probably want to allowlist the targets that it gets sent to, maybe automatically including the backend base URL. The proxy or other bridging backend plugins will benefit from knowing exactly where the secret will be passed and how to reliably strip it before passing along the request.

What makes you prefer the Authorization header? Could it be a complicating factor to sometimes use that and sometimes use Proxy-Authorization?

I like the custom URL scheme idea (backstage://{pluginId}/*). That could make it easier for whatever fetch api we provide to encapsulate both auth header injection and backend discovery.

Indeed! This is one of those behaviors that we can inject nicely here.

The fetch-intercept approach seems nice because it's open for extension, so we can support other use cases like @Fox32 mentioned. However, that implementation and others I've seen patch the global fetch instance, which comes comes with some complexity/magic, especially on the backend and test environments. That got me curious what a "scoped" version of fetch intercept could look like, so I hacked on a gist to demonstrate that. It doesn't really change what you've proposed though, just an implementation detail 😄

I'll have a look next week, thank you very much for contributing ideas here!

What makes you prefer the Authorization header? Could it be a complicating factor to sometimes use that and sometimes use Proxy-Authorization?

No strong opinion other than sticking with the standard header / what we use now. I was curious if a custom header is still helpful with a solution that doesn't modify global fetch and uses custom URL scheme. It doesn't seem too complicated to switch to Proxy-Authorization when the plugin is proxy, but I'm probably missing some other factors.

I opened https://github.com/backstage/backstage/issues/23015 as I'm trying to understand why we have both fetchApi middleware and hardcoded authorization: https://github.com/backstage/backstage/blob/dcf9eb531e0ed0594809e6486656c156155328a2/packages/catalog-client/src/generated/apis/DefaultApi.client.ts#L94-L95


#1872: map attribute 'for' to 'htmlFor' property

In can.attr added a special attribute mapping 'for' to 'htmlFor' property. Tests added.

Why is the attribute capital READONLY? I would probably lowercase it. Looks good besides that.

It does not matter, we lower case it anyway.

Closes #1872 and #1874.


Init: chromium darwin

Description of changes
Provides a simple chromium package for darwin as well as a makeDarwinApp.
There are still some possible improvements, but I would like to keep this PR small and add those improvements in later PRs instead of having one enormous PR.

an update script
a common mkDerivation.meta (though that may be messy)
makeDarwinApp should be able to retrieve the version from the source (Info.plist should contain a field with the app version)

Notes
The diff looks like chromium/default.nix was edited, but I moved it all into chromium/linux and created a new one. The diff is unfortunately not better, but I hope that won't be a problem
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Would be nice if we could get a Linux maintainer's opinion on the reorganizing of the package.

Yeah that reorg is going to create a massive merge conflict with pending PRs like #229265.

@amjoseph-nixpkgs there doesn't seem to be an existing chromium-bin. There wouldn't be a need for if stdenv.hostPlatform.isDarwin then chromium-bin else ... in all-packages.nix, correct?

@amjoseph-nixpkgs there doesn't seem to be an existing chromium-bin.

Right; I was suggesting that you create one.  But, as you point out:

There wouldn't be a need for if stdenv.hostPlatform.isDarwin then chromium-bin else ... in all-packages.nix, correct?

I guess if you really want to avoid creating another top-level entry you could just have callPackage ../applications/networking/browsers/chromium/darwin.nix {}.
The -bin convention is pretty well-established, though.  We have 163 packages in all-packages.nix with the -bin suffix (including firefox).

Hey, looking much better, thanks a bunch for reorganizing this.  I'll leave the rest of the review up to people who have Darwin hardware to test on.  Nice work!

Hey, looking much better, thanks a bunch for reorganizing this. I'll leave the rest of the review up to people who have Darwin hardware to test on. Nice work!

I just tried it out via home-manager (set the package option to chromium-bin) and it seems to be working fine. I couldn't get the extensions option to work though, but that might be related to the bin maybe? Installing them directly in the browser worked fine

@WeetHet as per my last comment, there's no time for this on my end. I'm actually going to sell my mac as it's not necessary anymore.
Feel free to branch off my branch and make the changes @toonn wanted (that I disagreed with). It's probably what will get the PR approved.

I've opened #324701, simplifying this as much as possible in order to get it merged. Someone with more motivation may get something like extract-darwin-app working in the future.


unable to login Azure Sql DB using Azure Data studio & SSMS.

I had created Azure Sql DB via portal and create server level firewall rule to access the DB from on premises.
i am getting an error while accessing DB using  Azure DB studio and SSMS.Attached are the error screenshots.

I had fix the issue, now i can access Azure DB using SSMS & Azure Data studio.


Move indent right one when the highlighted line is a scope start/end

Previously, the indent was always to the left of the current line.
While this logic was easier to implement, it is inconsistent with the
behavior expected. This commit changes it to select the scope (or a rough
proxy of that), rather than the line's indent. This is not a complete fix for #49342, as this
does not add support to semantic detection, however, this will work in
probably 90% of the cases, and is a relatively straightforward fix.
In general, this works:

However, there are still edge cases where this does not work correctly, since it's not really semantic, it's just based on the indentation of the above and below lines.

For what it's worth, this does work in Notepad++ at least:

This is a relative edge case, and this should solve the problem in most codebases, but not all. The correct solution of course is to find the indents based on semantics, which is what #49342 is about, so I don't think this actually closes the bug totally, and so suggest it remain open. However, solving that problem is a bigger task, and requires a large amount of changes in the model, so in the meantime I think this is a good stopgap, and anyways is an appropriate fallback for plain text and unknown syntax.
Where begin/end scope is ambiguous, for instance in yml, where there aren't really "end scopes" per se, it prioritizes it as a begin scope:

There is strange behavior when the configured indents don't line up with the indents in the source. These are hidden by the current behavior, but now my PR exposes them in a weird way.
Current version:

My version:

This makes the odd behavior a bit more obvious, but I think the underlying issue is that the indent detection isn't semantic anyways, it's entirely based on the number of spaces compared to the configured indent size. The issue here is that a, b, c, d, and f (but not e and second a) are in the 0th scope, and e and second a are in the 1st scope, because tab settings are set to 4 spaces. I'm not sure what to do about this.
I should also mention that this will not do the appropriate indentation in Allman's style if the line above the { is selected, as mentioned in #53737, but I think that's probably ok, as correct behavior will be seen if the bracket is selected.

LGTM! Small change, big improvement, even if it's not a 100% fix.

Thank you!


Automatic path detection.

For ppl not using overthebox, this may help a lot.

Ok, the code for doing that will be very linked to the running system and it will complicate a lot of things for a rather low usage. A dedicated tool for buildroot or openwrt may be developed later.
Simplicity is key :)


chore(cherow): Optimization for tokenizing string literal (fixes #117)

let me know if some more can be done. 😄

This pull request introduces 3 alerts when merging b5594e219b836e7f462b5f56a6802d2ab63109a5 into 0b21c5022782d1e0160ec68927a7b99ba92ce561 - view on LGTM.com
new alerts:

3 for Useless assignment to local variable

Comment posted by LGTM.com

@Aladdin-ADD your latest changes looks promising, but closed because moving to Master brach. Can you open a new PR targeting Master?


Time not accurate with multiple tracks

I've been messing around with this lately, and I think I found an issue when iterating over midi message for a midi with multiple tracks.
for i in mid:

    if i.type == 'note_on' or i.type == 'note_off' or i.type == 'time_signature':
        mididict.append(i.dict())

for i in mididict:
    if i['type'] == 'note_on' and i['velocity'] == 0:
        i['type'] = 'note_off'

    mem2=[]
    if i['type'] == 'note_on' or i['type'] == 'note_off':
        mem2.append(i['type'])
        mem2.append(i['note'])
        mem2.append(i['time'])
        mem2.append(i['channel'])
        output.append(mem2)

    if i['type'] == 'time_signature':
        mem2.append(i['type'])
        mem2.append(i['numerator'])
        mem2.append(i['denominator'])
        mem2.append(i['time'])
        output.append(mem2)

    for i in output:
        ...

When iterating for i in output:, i[2] (which should be the time for each message) doesn't quite fall in line with what it should be. It seems to really only be an issue with midis that have more than one track. I also might be completely misunderstanding something, but from what I understand, that should be working as intended

Could you please provide a sample output with it's expected counterpart.
I can't wrap my head around what you mean.
Thanks!


Add SFS and LD figures, using moments.

And any other cool things that moments facilitates.

I've changed my mind, I think the proper place to have this would be in a vignette.


Fixes exclude options

Fixes issue: #7126

if outDir is specified, we should add it to the excludes. if not, nothing should be added.

Ok I submit a new PR tomorrow. Don't have time today.


add macros for Algebraic Data Types

like syntax suger, add a dsl to write algebraic data types fast and easily.

This seems impossible without modifying the Sorbet itself.
b10a8587e3c119aec530d4ced101b6e30636de6e

I remembered that I could use Tapioca.


Upgrade to Spark 3.3.0 in spark3.0-iceberg

Spark 3.3 supports AS OF syntax for SQL time travel queries.
https://archive.apache.org/dist/spark/spark-3.3.0/

Spark 3.3.0 in spark3.0-...

i guess the image name should be changed to spark3.3-...


GovToken, council and proposal changes.

We need to change how the GovToken interacts with the Council and the proposals.
GovToken changes

[ ] We want to make the council members to vote on proposals with their GovTokens.
[ ] The GovToken will be acting like your "voting power". If you vote yes and you have 30 GovTokens, 30 yes votes will be added to the proposal.
[ ] For any proposal to be approved, we want a minimum of 30% of the total GovTokens to participate in the proposal.

Proposal Changes

[ ] If a proposal (non-recurring) gets approved, but the treasury cannot fund it, the proposal will be rolled over the next spend period, but the votes will become NULL.
[ ] If a recurring proposal gets approved, but the treasury cannot fund a segment of it in a spend period, the proposal will lose that segment.

Council Changes

[ ] Remove the maximum seats.

Council is an instance of pallet-collective. Therefore we should create a new pallet containing named pallet-council. I'll start implementing this and see if it actually fit our specifications.
cc. @zycon91

Council is an instance of pallet-collective. Therefore we should create a new pallet containing named pallet-council. I'll start implementing this and see if it actually fit our specifications. cc. @zycon91

Totally agree. Either council or technical_committee should be in each own pallet. I think it makes more sense to move council to a new pallet (pallet_council like you said).

Let's finish the tests for theses changes and close this issue. @zycon91 ping me when you're ready

All the tasks are done and have been tested in the UI and via some unit tests. Ready to close.


chore: fix function names in comment

Summary
fix function names in comment
How was it tested?

Thanks @needsure !


usb: device_next: Add Kconfig to set maximum speed

Setting maximum supported speed to Full-Speed can reduce code size by allowing compiler optimizations at compile time and also helps reducing RAM by allocating smaller bulk buffers.
Another idea is that High-Speed capable drivers can use this information to limit operating speed to user choice. This PR implements this only for udc_dwc2 driver.
Implements: #75002

Rebased to fix merge conflicts.

Rebased to fix merge conflicts.


Embedded query

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

120 of 199 (60.3%)  changed or added relevant lines in 6 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-2.0%) to 82.402%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pathgen/pathgen.go
76
96
79.17%

pathgen/gnmigen.go
16
75
21.33%

Totals

Change from base Build<PHONE_NUMBER>:
-2.0%

Covered Lines:
1859

Relevant Lines:
2256

💛  - Coveralls


RR doesn't update if you keep the app open during multiple matches.

If you open the app during a match, it shows the right current RR. But if you keep the app open and refesh it for the next match, the change in RR isn't captured.

I think there's a problem with how data is being stored temporarily, and honestly, I don't want to deal with fixing it because it's too cumbersome. NOWT makes a lot of requests to Valorant (API), so it can quickly hit limits unless we store the responses.
A quick fix could be asking Valorant for the RR only of the current user.
But it would not work for party members or people you find again.


Any Suggestions Please?

Hello,
I haven't revisited my fabric Python installation I did in the first of the year until now.  In reviewing the current installation instructions it indicates that fabric SHOULD be installed using GO.  My question is:  Is it NECESSARY to upgrade fabric by reinstalling it using the GO installation instructions?  Can I get an upgraded fabric build while staying on the Python version?  The reason I'm wanting to stay on the Python version is because I've gone through some of the discussions and there appears to be some problematic issues after making the transition from the Python version to the GO version.  Just wondering if support for the Python will be ongoing or will the transition to the GO version be required to get any further updates to fabric.   Thanks in advance for your feedback. Danny
Originally posted by @dsaldivar in https://github.com/danielmiessler/fabric/discussions/1176

@dsaldivar I think you're better of switching to the go version.
Do you you need some help transitioning?


revisit train-test split

splits into train/test set
runs CV / hyperparam search on training set
implements model_test_score to get prediction metrics on a single model

resolves #161

Codecov Report
Attention: 4 lines in your changes are missing coverage. Please review.

Comparison is base (28541d5) 91.62% compared to head (098a03e) 91.90%.

Files
Patch %
Lines

autoemulate/hyperparam_searching.py
20.00%
4 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #173      +/-   ##
==========================================
+ Coverage   91.62%   91.90%   +0.28%
==========================================
  Files          40       42       +2
  Lines        1790     1817      +27
==========================================
+ Hits         1640     1670      +30
+ Misses        150      147       -3

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


Extension causes high cpu load

Issue Type: Performance
Extension Name: python
Extension Version: 2019.3.6558
OS Version: Windows_NT x64 10.0.17134
VSCode version: 1.33.1

:warning: Make sure to attach this file from your home-directory:
:warning:C:\Users\MASHONA\ms-python.python-unresponsive.cpuprofile.txt
Find more details here: https://github.com/Microsoft/vscode/wiki/Explain:-extension-causes-high-cpu-load

Trying to run python code that has an "import pandas".

What version of Language Server do you have?
Please go into Python output panel and check the version of Lanaguage Server (it will be displayed in there, towards the top)

Closing this as no response was provided


[fix] webpackOptionsSchema

Updates webpackOptionsSchema "stats" object to include "additionalProperties: false"
Adds missing stats options
Adds test for ensuring new stats options fail the schema check (if not included)

What kind of change does this PR introduce?
Fix/Test Update
Did you add tests for your changes?
Yes - I've added a Validation test for the stats object and it's use of additionalProperties: false
If relevant, link to documentation update:
N/A
Summary
Update based on @sokra's comment on #5811 (here). This adds a test that ensures validation will fail for the stats object if there are properties found in the configuration and not in the schema (additionalProperties).
I've also added the ability to add a custom "test" for the validation object(s).
Does this PR introduce a breaking change?
No.
Other information
~There are a few properties that need to be added for the Stats.test.js cases, but wanted to make sure this was an acceptable approach before continuing.~ I went ahead and just resolved these.

Thanks


edited CreateCommentCommandTest and updated dev guide

Pull Request Test Coverage Report for Build 289

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.6%) to 54.441%

Totals

Change from base Build 288:
0.6%

Covered Lines:
1661

Relevant Lines:
3051

💛  - Coveralls


Disabling line numbers

Catppuccin sets line-numbers = true in delta by default. This is non-trivial to disable, as there is no flag like --no-line-numbers (at least until https://github.com/clap-rs/clap/issues/815).
After reading https://github.com/dandavison/delta/issues/307, the best way I found[^1] was to add a delta "feature" to your gitconfig[^2]:
[delta "no-line-numbers"]
	line-numbers = false

Then either export DELTA_FEATURES=+no-line-numbers, or prefix it to your delta and git commands.
Since Catppuccin's theme is a delta "feature" itself, using another "feature" to override it is a bit of an edge case. I think we should either:

Document this in the README, or
Stop enabling line numbers by default.

[^1]: Another way is to run git with git -c delta.line-numbers=false, but that only works when running delta via git.
[^2]: https://github.com/dandavison/delta/issues/446 doesn't apply in this case, maybe because Catppuccin sets line-numbers = true in a "feature".

I opted to stop enabling line numbers by default. This seems much simpler for users to change themselves and the theme should minimize assumptions about user preferences anyways.

This is weird: When you pass --line-numbers to delta, it gives you non-Catppuccin-styled line numbers.
https://github.com/dandavison/delta/issues/1837


Remove redundant thread sync counter draw_pending

The functions that used it already use a threadsafe FIFO queue
to communicate between threads and a sync to have the main thread
wait for the render thread.
Fixes #35718

Since VisualServer was replaced with RenderingServer in the master branch, this pull request should likely be remade against the 3.x branch and tested there again. Note that there have been significant changes to multi-threading in both 3.x and master too.

I updated this PR to current master, including system rename and multithreading architecture change (easy because it's just removing a thing and its use). If you really want this in 3.x as well, I prepared #47232.

Sorry it took a while to review, but this seems correct!


Link for C++ API documentation not working

Link for the C++ API documentation doesn't appear to be working
To Reproduce
Click any of the C++ API documentation Links
or try to go here
https://pathplanner.dev/api/cpp/

It's working fine. If you're on a school network it's likely being blocked.

hmm.. not on a school network.  I am using Chrome browser...  When I click "PPLib C++ API" from the "Getting Started" page

It takes me to "https://pathplanner.dev/api/cpp/"
but that looks like

oh wait never mind... I am sorry....


Update StudentsImporter to set nil rather than empty string values

Who is this PR for?
developers
What problem does this PR fix?
If a field is missing, StudentsImporter will set it as nil.  If it's there, but an empty string, it will set it as "".  For making things with most of these enum fields, these mean the same thing.
What does this PR do?
Updates the importer to set "" as nil.  It also improves some Student validations, moving them up to use inclusion: in.
Checklists

[x] Author included specs for new code

selfie


iOS ONNXLive Demo Black Screen

I am trying to run the iOS demo featured here:
https://pytorch.org/tutorials/advanced/ONNXLive.html
I build and run the app on my physical iPhone XS (iOS 12.1), I authorize the app to use the camera, and then I see Xcode debug error (out of memory). I notice the default CoreML models are set up for 1080 x 1080 size images, which is large, so I downsize to new 250 x 540 CoreML models per pytorch tutorial. Then I build and run again, no errors this time, but only a black screen shows on my iPhone, Xcode showing 95% GPU utilization for 15 minutes, no response from app, just black. Restarting and replugging iPhone and Xcode does not solve problem.

iPhone XS 12.1
Xcode 10.1

Does the .mlmodel work fine when you call predict using coremltools in python?

The pytorch models work correctly, I had not tested them in python after export to .onnx and then .mlmodel.
I got it all working in the end by assigning the last layer name according to the Inputs and Outputs name that showed in Xcode for the mlmodel. I have no idea why, but the last layer is called '156', even though pytorch shows only 61 layers. I believe the conversion from pytorch to onnx creates some very arbitrarily strange layer names that then need to be discovered before the conversion to mlmodel.

Yeah pytorch layers gets split into smaller mathematical ops, so thats not surprising.
Please test in coremltools first, thats easier to debug than Xcode.


[WFLY-19506] Upgrade to unstable API scanner plugin 1.0.0.Final

https://issues.redhat.com/browse/WFLY-19506

Thanks @kabir


revert performance baseline

@bot-gradle test APT

I've triggered the following builds for you. Click here to see all build failures.

AllPerformanceTestsReadyForRelease build

The failed performance test also works again with the changes in this branch and the original baseline: https://builds.gradle.org/buildConfiguration/Gradle_Master_Util_Performance_AdHocPerformanceScenarioLinuxAmd64/83519114


The Private FileSystem

Summary
Implement a basic WNFSv2 private filesystem. This will be one of the initial work to get WNFSv2 private filesystem working.

This PR implements the following features

[ ] (#24) HAMT for file tree storage (not certain of degree yet. The likeliest option would be to encode it with the DS).
[ ] (#26) bloom/name filter with ancestry check support.
[x] skip ratchet for backward secrecy and forward transparency.
[ ] private store for protected block store abstraction.
[ ] rust crypto vs web crypto support for signing and verification.
[ ] unit tests

Explain the motivation for making this change. What existing problem does the pull request solve?

Test plan (required)

Testing the Rust core.
cargo test -p wnfs --release

Testing the wasm bindings.
cd crates/wasm

yarn playwright test

Closing issues

Fixes #14
Fixes #26
Fixes #27

Codecov Report

Merging #28 (93175e4) into main (4170b8e) will decrease coverage by 8.97%.
The diff coverage is 47.31%.

@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
- Coverage   80.05%   71.08%   -8.98%
==========================================
  Files           9       20      +11
  Lines         732      996     +264
==========================================
+ Hits          586      708     +122
- Misses        146      288     +142

Impacted Files
Coverage Δ

crates/fs/common/metadata.rs
84.90% <ø> (ø)

crates/fs/private/directory.rs
0.00% <0.00%> (ø)

crates/fs/private/file.rs
0.00% <0.00%> (ø)

crates/fs/private/hamt/error.rs
0.00% <0.00%> (ø)

crates/fs/private/hamt/hamt.rs
0.00% <0.00%> (ø)

crates/fs/private/namefilter/bloomfilter.rs
0.00% <0.00%> (ø)

crates/fs/private/namefilter/namefilter.rs
0.00% <0.00%> (ø)

crates/fs/private/node.rs
0.00% <0.00%> (ø)

crates/fs/public/file.rs
84.21% <ø> (ø)

crates/fs/public/node.rs
60.52% <ø> (ø)

... and 7 more

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

Serde Visitor implementation for enums that use Deserialize derive doesn't work well with libipld 128-bit integer format.
https://github.com/serde-rs/serde/issues/2230
Tried to fix it with a fork but it only broke more deps down the line. I managed to fix all of them but it is a very hacky unpleasant solution, so I'm working on an alternative solution that won't be as intrusive with custom Visitor impl.
I think we still need serde because a good chunk of rust ecosystem including libipld which we rely on atm, leverage it. Implementing sth similar to serde is a non-goal.

Closes #29


Information about subscription-handlers in the README is misleading

The README states that subscription-handlers get db as a ratom and all examples dereference it with @db.
I also got an impression that I need to wrap results of subscription-handlers in a reaction call.
All of this doesn't work this way though, as far as I can tell. Is it addressed in some way already?

@idmit Sorry those docs were made out of date by release v0.8.0.   I am working on the replacement docs but taking longer than expected.  To understand reg-sub please read through:
https://github.com/Day8/re-frame/blob/master/examples/todomvc/src/todomvc/subs.cljs

No worries, if it's a known issue, I'll close it 👍

Oh, I was already using reg-sub. It's all clear now, thank you.


Download Maven dependencies on bootstrap

Bootstrap will take a little longer, but the builds will fail faster if something is wrong. The total build time won't change.

Hmm... looks like mvn dependency:resolve is not able to detect local dependencies that are not built yet? I can't help but think that this is maybe caused by a wrong configuration from our side. @yesamer Would you know?

Things are getting interesting https://github.com/netty/netty/issues/11272

@yesamer Hey! Wow, thanks for really going for it :D No worries about committing directly here, actually, I think that's great 😄
And about the error on the netty dependency.. maybe we don't need that anymore? cc @jesuino
Also, an interesting question... how does it work currently? 🤔

@tiagobento where the netty is used?

@tiagobento As I wrote you in chat, netty is not actually used according to mvn dependency:analyzer

Found a usage import io.netty.util.internal.shaded.org.jctools.queues.MessagePassingQueue.Consumer @ DashboardExporter is maybe required for that?

May

Found a usage import io.netty.util.internal.shaded.org.jctools.queues.MessagePassingQueue.Consumer @ DashboardExporter is maybe required for that?

Maybe this Consumer should be java.util.function.Consumer.

Yep probably. @jesuino can you please fix this? ?^

Ok, so it looks like everything is working great ok Windows, but there's a weird failure on Ubuntu and macOS... very odd scenario 😝

@ederign Thx!! @yesamer and I spoke today about this PR, and we agreed that we need to investigate a little bit more to see why it failed downloading dependencies for the Java Completion Plugin.. although it passed now, it doesn't seem stable enough for us to merge it.
We're going to try and find the root cause of those failures first.

This is not stable enough to go in. Closing for now. Thanks @yesamer for all the help investigating this!


Add More Information

Would be nice to view more information like:

Mining tool
Mining level (which material (level) has the tool to be out of to be able to mine the node)
item id
Modded stuff (like power, fluids, etc)
Production process (for furnaces and machines) [like this]

When entities are added:

Lifes
Armour

Stole moste ideas from Waila
I am very willing to help implement some of these things but as of rn I don't really grasp the code.

coming soon!

Mining tool added. 🦊


List of accessibility issues

An incomplete list of accessibility issues in AMY UI and docs. Expect this to expand over time, especially when we do a proper accessibility audit.

[ ] in docs, include symbols for external links & open them in a new tab
[ ] New event: can't select multiple non-adjacent items in the event tag list with a keyboard (as far as I can tell)
[ ] Bulk add people: can't tab through the table that's created when bulk-adding people to events (and therefore can't make corrections by keyboard)
[ ] New event: specify how to separate email addresses in the docs
[ ] Workshop requests: 'Accept and create event' screen does not work on a narrow screen/at high zoom - the columns overlap

[ ] Request training form: options are styled as links, not sure why
[ ] Sometimes warnings appear after a form has already been submitted - better if they appear before so changes can be made if needed. (I made this note while playing with the training requests page, but don't remember which warnings I was seeing...)
[ ] Training requests: Warning about unmatching before rematching shouldn't be a tooltip - it's easy to press the button before you realise the warning is there!
[ ] Find workshop staff: filter sidebar doesn't display well on a narrow screen. It's not great in general but worse on this page because the location block is nested.

Comments from our Understood report "Summary of Implementation Steps" about the instructor application process:

[ ] Review recommendations from The Carpentries’ WAVE Report
[ ] Correct any labels determined as “orphaned,” i.e., present but not associated with the correct form, such as the “What is your current occupation/career stage?” question.
[ ] Increase the contrast between the foreground (text) color and the background color.
[ ] The application currently lists general contact information, but it should also include contact information specifically for accessibility issues.

@elichad  would it be useful to start separating these out into individual issues?

[ ] remove nested tables, e.g. the "Your workshop activity" table on the instructor dashboard. They're hard to navigate with a screen reader, don't scale nicely for smaller screens, and create some contrast issues due to the double-dark stripes.

I found this useful list with accessibility acceptance criteria for forms: https://kb.iu.edu/d/biev


Error with saving screenshots

Thanks for creating this awesome buildpack!
I'm having so many issues with saving my screenshots from Puppeteer in Heroku and I'm on the verge of just giving up... I've combed through all the issues here and can't seem to find anything related, so I'm not sure if it's related to this buildpack or Puppeteer and Heroku in general.
Basically, I'm trying to take a screenshot so I can Tweet it, and I've created a bot that will Tweet regularly.
Everything works perfectly on my local machine, and each time I run my script Puppeteer overwrites the existing image path (as expected). However, when I deploy to Heroku, the image doesn't seem to save at all. I've tried formatting my script a number of ways (will post below), but none of the things seem to work. The bot still Tweets a random phrase as normal, but it's always the same image each time which leads me to believe Puppeteer isn't running properly.
Here are the different scripts that I've tried:
const puppeteer = require('puppeteer')

const takeScreenshot = async() => {
  const browser = await puppeteer.launch(
    {args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
    ],
  });
  const page = await browser.newPage();
  await page.setViewport({
      width: 720,
      height: 720,
      deviceScaleFactor: 1,
  });
  await page.goto('https://google.com');
  await page.screenshot({path: 'option/folder/screenshot.png'});
  await browser.close();
}

takeScreenshot();

const puppeteer = require('puppeteer')

const options = {path: 'option/folder/screenshot.png',}
const takeScreenshot = (async() => {
	const browser = await puppeteer.launch({
    headless: true,
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
    ]
	});
	try {
		const page = await browser.newPage();
		console.log("here")
		await page.setViewport({
			width: 720,
			height: 720,
			deviceScaleFactor: 1,
		});
		await page.goto('https://google.com');
		console.log("on this site")
		await page.screenshot(options)
    console.log("saved image")
	} catch (err) {
		console.error(err, err.message);
	} finally {
    await browser.close();
	}
});

takeScreenshot();

My heroku buildpacks are in the following order:

Do you know how I can make sure my Puppeteer screenshots save? Any help is appreciated! 😄

I should also add that I don't see any errors in Heroku. Everything looks totally normal when I run a dyno...

Hey @oihamza,
This buildpack is just to get puppeteer running on heroku, but doesn't have any effect on how it works after its running, so I don't believe this buildpack is responsible for issues saving screenshots.
One thought that did occur to me though, is that heroku may have different file permissions regarding overwriting existing files than your local computer does. Have you tried running it on heroku but not overwriting the previous screenshot each time, and instead giving each new screenshot a unique name? That probably wouldn't be ideal for the long run as you'll load up on storage space, but that would at least tell you if that was the problem or not.
Good luck!

We have experienced a very similar problem with our Rails application that uses Puppeteer to generate PDFs from HTML files. The files would be saved as zero bytes, and the version of Chrome packaged with puppeteer crashed with the following message:
Connecting to web.1 on ⬢ nzsl...
Input path: file:///app/tmp/pdf_rendering/1600368639-20b6d81ec0aefed49e26-input.html
Output path: /app/tmp/eoin2.pdf
(node:4626) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process!
/app/node_modules/puppeteer/.local-chromium/linux-800071/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md

    at onClose (/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193:20)
    at Interface.<anonymous> (/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:183:68)
    at Interface.emit (events.js:326:22)
    at Interface.close (readline.js:424:8)
    at Socket.onend (readline.js:202:10)
    at Socket.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1252:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:4626) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4626) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

https://github.com/ODNZSL/nzsl-online/issues/1149 has a log of what we tried, but in short:

Clearing the repo cache
Removing and re-adding the build pack
Dyno restarts

We also observed on the dyno that the shared libraries that puppeteer was missing were in fact present (presumably, added by this buildpack):
▶ heroku run bash -a nzsl
Running bash on ⬢ nzsl... up, run.1783 (Standard-1X)
~ $ find . -name "libnss3.so"
./.apt/usr/lib/x86_64-linux-gnu/libnss3.so

We also observed that LD_LIBRARY_PATH and LIBRARY_PATH appeared to be set correctly to resolve the shared libraries:
LIBRARY_PATH=/app/.apt/usr/lib/x86_64-linux-gnu:/app/.apt/usr/lib/i386-linux-gnu:/app/.apt/usr/lib:
LD_LIBRARY_PATH=/app/.apt/usr/lib/x86_64-linux-gnu:/app/.apt/usr/lib/i386-linux-gnu:/app/.apt/usr/lib:

Chrome also reports that it has all the libraries it needs:
~/node_modules/puppeteer/.local-chromium/linux-800071/chrome-linux $ ldd chrome
	linux-vdso.so.1 (0x00007ffd85b23000)
	/app/vendor/jemalloc/lib/libjemalloc.so (0x00007f43396e7000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f43394e3000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f43392c4000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f43390bc000)
	libgobject-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f4338e68000)
	libglib-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f4338b51000)
	libnss3.so => /app/.apt/usr/lib/x86_64-linux-gnu/libnss3.so (0x00007f433880d000)
	libnssutil3.so => /app/.apt/usr/lib/x86_64-linux-gnu/libnssutil3.so (0x00007f43385de000)
	libsmime3.so => /app/.apt/usr/lib/x86_64-linux-gnu/libsmime3.so (0x00007f43383b2000)
	libnspr4.so => /app/.apt/usr/lib/x86_64-linux-gnu/libnspr4.so (0x00007f4338175000)
	libatk-1.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f4337f4f000)
	libatk-bridge-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f4337d1e000)
	libX11.so.6 => /app/.apt/usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f43379e6000)
	libX11-xcb.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f43377e4000)
	libxcb.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f43375bc000)
	libxcb-dri3.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f43373b8000)
	libXcomposite.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f43371b5000)
	libXdamage.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f4336fb2000)
	libXext.so.6 => /app/.apt/usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f4336da0000)
	libXfixes.so.3 => /app/.apt/usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f4336b9a000)
	libcups.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libcups.so.2 (0x00007f433690e000)
	libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f43366c1000)
	libgio-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f4336322000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f43360f0000)
	libdrm.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f4335edf000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4335b41000)
	libXrandr.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f4335936000)
	libgbm.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f4335727000)
	libasound.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007f4335420000)
	libpangocairo-1.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f4335213000)
	libpango-1.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f4334fc6000)
	libcairo.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f4334ca9000)
	libatspi.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f4334a79000)
	libgtk-3.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f4334171000)
	libgdk-3.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f4333e7b000)
	libgdk_pixbuf-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f4333c57000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4333a3f000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f433364e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f43449b2000)
	libstdc++.so.6 => /app/.apt/usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f43332c5000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f43330bd000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f4332e4b000)
	libplc4.so => /app/.apt/usr/lib/x86_64-linux-gnu/libplc4.so (0x00007f4332c46000)
	libplds4.so => /app/.apt/usr/lib/x86_64-linux-gnu/libplds4.so (0x00007f4332a42000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f433283e000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f4332638000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f43323ed000)
	libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f4332087000)
	libavahi-common.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-common.so.3 (0x00007f4331e7b000)
	libavahi-client.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-client.so.3 (0x00007f4331c6a000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f4331a4d000)
	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f43317c9000)
	libgmodule-2.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f43315c5000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f433139d000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f4331182000)
	libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f4330f2e000)
	libXrender.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f4330d24000)
	libwayland-server.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007f4330b11000)
	libfontconfig.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f43308cc000)
	libpangoft2-1.0.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f43306b6000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f4330402000)
	libthai.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f43301f9000)
	libpixman-1.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f432ff54000)
	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f432fd22000)
	libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f432fb1f000)
	libxcb-render.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f432f912000)
	libXi.so.6 => /app/.apt/usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f432f702000)
	libcairo-gobject.so.2 => /app/.apt/usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f432f4f9000)
	libepoxy.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f432f1f8000)
	libXinerama.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f432eff5000)
	libXcursor.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f432edeb000)
	libxkbcommon.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f432ebac000)
	libwayland-cursor.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f432e9a4000)
	libwayland-egl.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f432e7a2000)
	libwayland-client.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f432e593000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f432e37e000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f432e0a8000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f432de76000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f432dc72000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f432da67000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f432d738000)
	libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f432d51b000)
	libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f432d19d000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f432cf8a000)
	libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f432cd54000)
	libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f432cb20000)
	libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f432c89f000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f432c679000)
	liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f432c45d000)
	libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f432c141000)
	libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f432bef4000)
	libharfbuzz.so.0 => /app/.apt/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f432bc56000)
	libdatrie.so.1 => /app/.apt/usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f432ba4f000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f432b84b000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f432b636000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f432b42f000)
	libgraphite2.so.3 => /app/.apt/usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f432b202000)

We 'fixed' this issue by downgrading Puppeteer to a 2.0 release. While we still need to investigate why this happens, my suspicion is that Puppeteer may launch Chrome in such a way that LD_LIBRARY_PATH or LIBRARY_PATH  do not resolve correctly, causing libraries to be missing. Because I this happens only on Heroku, not locally, I wonder if it has something to do with the .so files being located in .apt/ rather than /usr/lib.


Integrate 3rd-party code snippet (HelpScout) inside nextjs HEAD or body

I'm trying to integrate HelpScout in my next app, but I get syntax errors.
<script type="text/javascript">!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});</script>

I saw https://github.com/zeit/next.js/issues/3980,  and looked up the help docs mentioned there but still can't get it to work without errors. https://github.com/zeit/next.js/tree/canary/examples/head-elements, for example, is showing examples of meta tags, but my issue is more around the JS code within the tags are not getting accepted. Could someone give my a bit more specified guidance.
Thanks!

Use dangerouslySetInnerHTML on a script element inside the Head component in a custom Document. You can view an example here.

Yup that was it.
For future readers...
I converted the OP to....
<script
            dangerouslySetInnerHTML={{
              __html: `!(function (e, t, n) { function a () {
                var e = t.getElementsByTagName('script')[0], n = t.createElement('script');
                n.type = 'text/javascript', n.async = !0, n.src = 'https://beacon-v2.helpscout.net', e.parentNode.insertBefore(n, e) }
                if (e.Beacon = n = function (t, n, a) {
                  e.Beacon.readyQueue.push({method: t, options: n, data: a})
                }, n.readyQueue = [], t.readyState === 'complete')
                return a(); e.attachEvent ? e.attachEvent('onload', a) : e.addEventListener('load', a, !1)
              }(window, document, window.Beacon || function () {}))` }}
          />


error: Processing of app/initialize.js failed. Error: Could not load module 'php-wasm/PhpWebDrupal'

docs-source$ npm install
...
docs-source$ sudo npm install -g brunch
docs-source$ brunch build
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
23:46:34 - error: Processing of app/initialize.js failed. Error: Could not load module 'php-wasm/PhpWebDrupal' from 'docs-source/app'. Possible solution: add 'php-wasm' to package.json and `npm install`.
Stack trace was suppressed. Run with `LOGGY_STACKS=1` to see the trace.
23:46:34 - info: compiled 5 files into 3 files, copied 30 in 3.2 sec

There is no PhpWebDrupal.js file in node_modules/php-wasm/ (0.0.4-b).

The npm module now includes the drupal preload data.


use context ClassLoader to load resources

this should address #2

Coverage remained the same at 90.404% when pulling dfadde62707de03d5727a7d8b96f8bd21f3834e2 on eagle-io:webapp-resources into c6776bcc03950b387b468280d2e5b3fac92bd3b7 on jshaptic:master.

Hi,
Thank you very much for the pull request!
May I ask you also to add the same fix for two other files, which will have most probably the same issue: NonAsciiIdentifierPartTable.java andNonAsciiIdentifierStartTable.java ?


Links in headings cause incorrect TOC links

If I add this markdown to a wiki article:
{{TOC}}

# A heading containing [a link to an external site](http://www.externalsite.com/)

generates the following HTML (taken from the preview window):

A heading containing a link to an external site

A heading containing a link to an external site

While the link in the h1 was expected, I would expect clicking anywhere on the TOC entry should take me to that heading in the wiki article.
Maybe any links could be stripped from a heading when building its related TOC entry?

Uh... there is a bug when rendering not in preview: a-heading-containing-a-link-to-an-external-site-http-www-externalsite-com- vs a-heading-containing--a-link-to-an-external-site--http---wwwexternalsitecom-- (the double -- is converted in a single - in the id. I will see if I can fix it

As it turned out this is a problem of older version of Jingo. The current version (1.6.1) doesn't suffer of that problem :)

Hi, sorry but I'm a bit confused - you seem to be talking about the IDs that get generated? This is not the issue - the issue is that the rendered TOC link contains: a link to an external site
I would expect the "a link to an external site" text from the TOC link to still link to  like the rest of the TOC entry.
I've verified just now that this is still a problem on the current master branch of your Jingo repository.

Ah, I see what you mean. I was distracted by a different bug on the same context :D
And you're right, we should remove any link from any TOC entry. Reopening.


[3.x] Add Selected Collision Group in TileSet Editor

Closes https://github.com/godotengine/godot-proposals/issues/4660 (only for 3.x).
Makes the extra Selected Collision property names readable by putting them in their own group if they exist.
Also moves the TileSet Script property down to its own category to make it look better.

Before
After

Rebased to latest 3.x

Thanks!


use global CXX_STANDARD setting

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.938%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
16021

Relevant Lines:
16193

💛  - Coveralls

Honestly, I don't see why this would impact non-installed versions, but I don't really understand what that command in cmake actually does. The only suggestion I have is to try it out.

The motivation is to avoid specifying C++ standard all over the place. It should not be necessary.


Change srcid notation to source_id for fielded search

Notes for testing

check that field search works and brings back only one record (i.e. source_id:##)
do a few searches to check that keyword searching still works as expected (check at least one term that matches full text content but is nowhere in the book metadata)

See discussion on #149

field searching returns only one record with source_id:#### notation with and without quotation marks around the string. Keyword search seems to be working as normal. src_id notation doesn't work anymore.


Ensure Stackdriver boolean configs are not wrapped in a string literal

Good catch -- thanks!

No problem! When do you expect to create a release for this change? I'll update my puppet configs to point to HEAD for now.

I want to fix #8 and then I'll cut a new one. :soon:


Fail

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project bamboo-telegram-plugin: Fatal error compiling: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException: javax.xml.bind.JAXBException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project bamboo-telegram-plugin: Fatal error compiling

Thank you for a feedback! Could you please provide a more information on how you built a plugin and your environment?


[autograd] minor changes

renamed autograd2* -> autograd*
formatting autograd source files
trimming includes
use is_forward(), is_backward() or is_optimizer() instead of manual checks.

This change is a part of changes for #366, sending this separately for easier review.

Looks good!
We should see with @vmilosevic to add some linting checks on our push as well. Just to keep code in neat form for future changes :))
If you agree @pilkicTT @vmilosevic let's open up an issues on FFE to tackle with it and continue discussion around details there :))

Yeah, I planned to look into enabling clang format as pre commit hook (after that we can check what makes sense to run in CI). Filed an issue #393 .


Connect product data to the Graphql endpoint

Description
Connect product data and schemas to the Graphql API endpoint
Additional Information
Some schema fields are currently incompatible with our sample test dataset,
since its objects have numeric price fields and have no generated values for the
discountedPrice and productId fields.

@snowteamer Remove all occurances of the discountPrice from all files. We'll have a separate API for discounts and I'll write the docs for it tomorrow.

@snowteamer I think you can continue your work here now that the naming problem is resolved.

@snowteamer I've updated the doc with the things I've said recently in DIscord. Follow the docs when it comes to Discount and we're good to go!

Ok, but would not this change maybe better fit in another branch?

Also, I'm still confused by the documentation regarding discounts.
The text reads:
 discounts is an array of objects.
Whereas the embedded schema description has:
  ...
 discount: String,
 discountedPrice: String
}

Also, I'm still confused by the documentation regarding discounts.
The text reads:
 discounts is an array of objects.
Whereas the embedded schema description has:
  ...
 discount: String,
 discountedPrice: String
}

Haha.... I was updating the docs quickly and missed that! I'm looking at it right now...

@snowteamer  The inconsistency with the doc should be addressed by #41.

@snowteamer Is this PR ready? We'll be needing this PR for other PRs in the future as this connects the backend with the DB.
Let me know when you're done.

@Twaha-Rahman I think it is ok, but I still might have forgotten something.

Oops. I'm surprised the linter didn't tell me about this.

Oops. I'm surprised the linter didn't tell me about this. Probably because eslint-config-prettier turned the quotes rule off, but Prettier didn't replace the unnecessary backticks by single quotes. prettier/prettier#2996

Make an issue about this and we'll see what we can do.

LGTM!


[BUG] new-azapplicationgateway cmdlet doesn't work in Cloud Shell PS

To Reproduce
https://learn.microsoft.com/en-us/powershell/module/az.network/new-azapplicationgateway?view=azps-9.7.1
Ran with and without "-priority 123".
Observed Behavior
Run this command in Cloud Shell PS and it will throw an error due to the lack of the priority parameter.
If you add the -Priority then it will also fail because it cannot be recognized... although it is recognized via VSCode.
Expected behavior
Deploy without any errors.
Is this specific to Cloud Shell?
Yes
Interface information
How are you accessing Cloud Shell - https://shell.azure.com, https://portal.azure.com, via Windows Terminal, or some other method?
If a browser, which Operating System and browser are you using? (ex. Edge on Windows 10)
Via Browser. Chrome, latest version.
Additional context

@vegazbabz The error is instructing you that the value passed for the -HttpListeners parameter has at least one item in the collection with Name = 'EAG230516232759-HttpRule' missing a value on its Priority property. I don't think is related to cloud shell or the PowerShell module.

Hi @vegazbabz - Was the information from @lsuarez5280 helpful? I was thinking the same :)


[composer] opening link to a space I am not in leaves blank screen

this is a link to composer.dev which opened with my non-work browser profile and should have yielded some kind of 404 but is just blank

This is another one where prod composer opened with my non-work profile and shows spaces but not one document selected and state is kind of undetermined. It should instead show either "loading" or "404".

@zhenyasav closing this as it's very old and I believe this case is now handled by better fallbacks.


Minting issue: Error: Invalid number of parameters for "mint". Got 1 expected 2!

Hi there, im trying to make my NFT mintable and im doing all same as u doing it inthe yuotube video but when i try to mint one i get some error like this  code down below:
Error: Invalid number of parameters for "mint". Got 1 expected 2!
▼ 23 stack frames were expanded.

/Users/thyechin.lam/Desktop/Screen Shot 2022-02-11 at 11.22.00 PM.png
I having same issue as well

You will need to offer more for someone to help you, Look at your smart contract and look at your mint function it will look something like this _safeMint(address to, tokenURI) or _mint(address to, tokenURI) or amount or something else, then you will need to find out what you are not getting from the minting dapp.

/Users/thyechin.lam/Desktop/Screen Shot 2022-02-11 at 11.22.00 PM.png
I having same issue as well

same solution most likely ^

Replace your ABI with right one. Worked for me

Try changing line 133 in App.js to .mint(blockchain.account, mintAmount) Make sure to save before you give it a go. The smart contract which is explained int the Hashlips video takes 2 parameters (Blockchain account and mint amount). If you have copy/paste his copy you can see that he is taking the minting amount only. He mentions this in the readme file. In order to work you have to either edit your smart contract to take only 1 parameter or add the blockchain account as I told you. I assume it will be easier to add the address inside.

My line 133 looks like that now and it works! thanks @Ivan-Dosev
.mint(blockchain.account, mintAmount)

My line 133 looks like that now and it works! thanks @Ivan-Dosev
.mint(blockchain.account, mintAmount)

You are very welcome, my friend :)

still have same issue

Hi Everyone, I am having the same issue. I have already deployed my contract and am attempting to launch a Minting Dapp using Bubble.io. Can i edit my smart Contract after it has been deployed? the app builder is looking for a second parameter is there something i can enter as a second parameter. i  seem to be going around in circles. here is our smart contract..
// SPDX-License-Identifier: GPL-3.0
// Created by HashLips
// The Nerdy Coder Clones
pragma solidity ^0.8.0;
import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>contract PLUTOGANG is ERC721Enumerable, Ownable {
using Strings for uint256;
string public baseURI;
string public baseExtension = ".json";
uint256 public cost = 0.04 ether;
uint256 public maxSupply = 10000;
uint256 public maxMintAmount = 50;
bool public paused = false;
mapping(address => bool) public whitelisted;
constructor(
string memory _name,
string memory _symbol,
string memory _initBaseURI
) ERC721(_name, _symbol) {
setBaseURI(_initBaseURI);
mint(msg.sender, 50);
}
// internal
function _baseURI() internal view virtual override returns (string memory) {
return baseURI;
}
// public
function mint(address _to, uint256 _mintAmount) public payable {
uint256 supply = totalSupply();
require(!paused);
require(_mintAmount > 0);
require(_mintAmount <= maxMintAmount);
require(supply + _mintAmount <= maxSupply);
if (msg.sender != owner()) {
    if(whitelisted[msg.sender] != true) {
      require(msg.value >= cost * _mintAmount);
    }
}

for (uint256 i = 1; i <= _mintAmount; i++) {
  _safeMint(_to, supply + i);
}

}
function walletOfOwner(address _owner)
public
view
returns (uint256[] memory)
{
uint256 ownerTokenCount = balanceOf(_owner);
uint256[] memory tokenIds = new uint256;
for (uint256 i; i < ownerTokenCount; i++) {
tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
}
return tokenIds;
}
function tokenURI(uint256 tokenId)
public
view
virtual
override
returns (string memory)
{
require(
_exists(tokenId),
"ERC721Metadata: URI query for nonexistent token"
);
string memory currentBaseURI = _baseURI();
return bytes(currentBaseURI).length > 0
    ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
    : "";

}
//only owner
function setCost(uint256 _newCost) public onlyOwner {
cost = _newCost;
}
function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
maxMintAmount = _newmaxMintAmount;
}
function setBaseURI(string memory _newBaseURI) public onlyOwner {
baseURI = _newBaseURI;
}
function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
baseExtension = _newBaseExtension;
}
function pause(bool _state) public onlyOwner {
paused = _state;
}
function whitelistUser(address _user) public onlyOwner {
whitelisted[_user] = true;
}
function removeWhitelistUser(address _user) public onlyOwner {
whitelisted[_user] = false;
}
function withdraw() public payable onlyOwner {
require(payable(msg.sender).send(address(this).balance));
}
}
thanks in advance for any help.

Thanks man, it works

Try changing line 133 in App.js to .mint(blockchain.account, mintAmount) Make sure to save before you give it a go. The smart contract which is explained int the Hashlips video takes 2 parameters (Blockchain account and mint amount). If you have copy/paste his code directly you can see that he is taking the minting amount only. He mentions this in the readme file. In order to work you have to either edit your smart contract to take only 1 parameter or add the blockchain account as I told you. I assume it will be easier to add the address inside.

 Thank you buddy.


Component import does not work in Nuxt.js

Even though the output file clearly says export default Tinybox;, Nuxt keeps telling me stuff like export 'default' (imported as 'Tinybox') was not found in 'vue-tinybox'.
The component itself doesn't really work properly in an SSR-environment; gotta look into it.

I think I have figured it out without even addressing it. I changed the way I import the component in Nuxt and it worked, so hurray. Testing is still required though


✨ [RAW] End-to-end support for raw results for Binary-Artifacts

This adds the plumbing to support arbitrary results via a --raw command.
JSON output:
{
  "date": "2021-12-04",
  "repo": {
    "name": "...",
    "commit": "..."
  },
  "scorecard": {
    "version": "...",
    "commit": "..."
  },
  "metadata": null,
  "results": {
    "binaries": [
      {
        "path": "some/executable"
      },
      {
        "path": "executable2"
      }
    ]
  }
}

friendly ping

High-level feedback:

RawResults inside CheckResult limits us from sharing populated raw data across checks. Data populated by one check should be accessible across checks.

What do you mean? Checks run independently so they cannot access each others' data right now, right?

RawResults should be a well-defined struct and not an arbitrary format. This is also needed to ensure data sharing across checks.

We can make this a structure instead of an interface{}. I have not done this because it requires adding as many structures as we have checks today so I started with the solution that minimized changes. But if we think it's better, I can do this. I think you're right that if we want to share this data with the pkg.RunScorecard API users, a structure is better to avoid having them casting it. Was this the main reason you had in mind or there were others?

So my suggestion would be to add a pointer to a struct, say ScorecardData, inside ScorecardResult. We can populate this struct by default and if raw bool is enabled, we print this field. Wdyt?

That seems doable, yes.
This gives us the ability to change the internal structure without affecting the final output most users will rely upon. It will still affect API users (allstar) for whom we make no guarantees today.
So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

I mean:

A ScorecardData struct which lives in pkg/ dir.
Update CheckRequest and CheckResult to hold a *ScorecardData.

We don't need an internal struct except for convenience.

So you're suggesting we fix this (public) structure, pass it to checks and they will fill it. Right? Seems doable.

So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

I mean:

A ScorecardData struct which lives in pkg/ dir.
Update CheckRequest and CheckResult to hold a *ScorecardData.

We don't need an internal struct except for convenience.

So you're suggesting we fix this (public) structure, pass it to checks and they will fill it. Right? Seems doable.

Yep, thanks!

So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

I mean:

A ScorecardData struct which lives in pkg/ dir.
Update CheckRequest and CheckResult to hold a *ScorecardData.

We don't need an internal struct except for convenience.

So you're suggesting we fix this (public) structure, pass it to checks and they will fill it. Right? Seems doable.

Yep, thanks!

Having a level of indirection is still useful, right?
Without it, I'm concerned that we might run into problems when filling the structure, e.g. if two checks are needed to fill. Note that I have not looked in details when this may happen, but there's a risk since we're moving things around. Wdut?

So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

I mean:

A ScorecardData struct which lives in pkg/ dir.
Update CheckRequest and CheckResult to hold a *ScorecardData.

We don't need an internal struct except for convenience.

So you're suggesting we fix this (public) structure, pass it to checks and they will fill it. Right? Seems doable.

Yep, thanks!

Having a level of indirection is still useful, right? Without it, I'm concerned that we might run into problems when filling the structure, e.g. if two checks are needed to fill the same part. Note that I have not looked in details when this may happen, but there's a risk since we're moving things around. Wdut?

additional thoughts to clarify. Here's where I'm at:

Checks evolve rapidly: As agreed, the checks can have their own internal structure instead of arbitrary interface{} format.
pkg.RunScorecard outputs a format consumed by apps like allstar. We make no guarantees about breaking changes at the moment, but we should not break compatibility as often as checks change. So I envisage this function parsing the check results into an independent structure
pkg.AsJSON outputs format consumed by most users and by policy makers like OPA. We want to change this structure as infrequently as possible. So I envisage this function parsing the results of point 2 into another independent structure. As we refine the output for 2, we can, over time, incorporate them into this structure.

Hope this helps the discussion

So the solution would be: internal structures from checks -> copy to final structures ScorecardData -> set final structure within ScorecardResult. Correct?

I mean:

A ScorecardData struct which lives in pkg/ dir.
Update CheckRequest and CheckResult to hold a *ScorecardData.

We don't need an internal struct except for convenience.

So you're suggesting we fix this (public) structure, pass it to checks and they will fill it. Right? Seems doable.

Yep, thanks!

Having a level of indirection is still useful, right? Without it, I'm concerned that we might run into problems when filling the structure, e.g. if two checks are needed to fill the same part. Note that I have not looked in details when this may happen, but there's a risk since we're moving things around. Wdut?

additional thoughts to clarify. Here's where I'm at:

we talked offline. Below is what we decided:

Checks evolve rapidly: As agreed, the checks can have their own internal structure instead of arbitrary interface{} format.

should be replaced by a structure.

pkg.RunScorecard outputs a format consumed by apps like allstar. We make no guarantees about breaking changes at the moment, but we should not break compatibility as often as checks change. So I envisage this function parsing the check results into an independent structure

optional for now. If allstar wants access to this results, we'll create a structure. Otherwise we'll wait till we make the code public.

pkg.AsJSON outputs format consumed by most users and by policy makers like OPA. We want to change this structure as infrequently as possible. So I envisage this function parsing the results of point 2 into another independent structure. As we refine the output for 2, we can, over time, incorporate them into this structure.

optional for now. I've created this code so we can test things end-to-end anyway. Since we won't be making this code public, we can play around and update it for now.

Hope this helps the discussion

@azeemsgoogle I've made the changes we discussed, PTAL

need an actual LGTM now :-)


Can't Fetch data for

As said in chapter 7, i imported fetchRevenue function and uncommented the
import { Card } from '@/app/ui/dashboard/cards';
import RevenueChart from '@/app/ui/dashboard/revenue-chart';
import LatestInvoices from '@/app/ui/dashboard/latest-invoices';
import { lusitana } from '@/app/ui/fonts';
import { fetchRevenue } from '@/app/lib/data';

export default async function Page() {
    const revenue = await fetchRevenue();
  return (

      <h1 className={`${lusitana.className} mb-4 text-xl md:text-2xl`}>
        Dashboard

        {/* <Card title="Collected" value={totalPaidInvoices} type="collected" /> */}
        {/* <Card title="Pending" value={totalPendingInvoices} type="pending" /> */}
        {/* <Card title="Total Invoices" value={numberOfInvoices} type="invoices" /> */}
        {/* <Card
          title="Total Customers"
          value={numberOfCustomers}
          type="customers"
        /> */}

      <RevenueChart revenue={revenue}  />
        {/* <LatestInvoices latestInvoices={latestInvoices} /> */}

  );
}

And if anyone is wondering if i got data or not

Although the chart is not rendering

I was confused since at  /app/ui/dashboard/revenue-chart.tsx it says:
// NOTE: comment in this code when you get to this point in the course
I just uncomment the code inside it, and now it shows the chart


Allow non-owners to execute confirmed (rejection) transactions

What it solves
Resolves #1811
How this PR fixes it
Transactions with sufficient confirmations are now executable by non-owners.
The canExecute action flag was modified to not require isUserAnOwner. All instances of the isUserAnOwner were remove, where logical. Associated styling was updated and unnecessary props removed.
Note: a bug within processTransaction() was fixed by including a fallback for txHash when an error occurs.
How to test it

Create a transaction on a safe that has a threshold higher than 1.
Confirm said transaction in order to reach the treshold, but do not execute the transaction.
Open the transaction under an account that is not an owner of the Safe. It should be possible to execute the transaction without error.

The above is also possible with rejection transactions (see below).
Screenshots

Issues found:

[x] Can't sign with a 2nd owner: https://github.com/gnosis/safe-react/pull/3151#issuecomment-992449357

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 8 (25.0%)  changed or added relevant lines in 5 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage remained the same at 32.315%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/logic/safe/store/actions/processTransaction.ts
0
1
0.0%

src/logic/safe/utils/aboutToExecuteTx.ts
0
1
0.0%

src/routes/safe/components/Transactions/TxList/hooks/useTransactionActions.ts
0
4
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/routes/safe/components/Transactions/TxList/hooks/useTransactionActions.ts
2
4.17%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3081

Relevant Lines:
8472

💛  - Coveralls

Could you check that the Execute button is still deactivated when you're on a wrong chain?
Seems like this is a bug that that been in hiding. It also affects owners. Working on it now.

Single owner safes work as well, but currently still get this warning message.

@johannesmoormann, can you give it another try after the deploy has finished?

Safe:
https://pr3151--safereact.review-safe.gnosisdev.com/app/rin:0xcACCB4c94376eed9390c2d304fD54113a1fFC9e1/transactions/queue
Issues:
I can't sign with the 2nd owner of my safe. The sign button simply is not showing up

Question: cc @johannesmoormann
Can somebody who is not even connected to the app sign the tx?
I've tried and it seems to fail on every step, but the button to execute is there and a non-connected user is technically a non-owner as well.
So:
Should we allow non-connected users be able to execute tx OR
Should remove the "execute button" for non-connected users and establish the concept of "non-owners" as: a connected user that is not owner of the safe
Currently a owner not connected can see the execute button, but the gas estimation doesn't work, the "nonce" value for the user's wallet (not the safe nonce) and the execution of tx themselves don't work

@francovenica somebody who is not connected should not be able to execute the transaction through the interface. current behavior is ok though. we might want to show a message to the user, that he needs to connect his wallet in order to carry out the execution in the future.

@johannesmoormann Ok, Then I'll ask for the execute button to be removed if there nobody connected to the safe app. Thanks

The execute button should be disabled, not removed.

Suggestion. Should we put some mark to the accounts that executed the tx but are not owners? Until today it was expected that only owner can sign, so is almost understood that everyone in the list of people who signed/executed the tx are all owners

Should we put some mark to the accounts that executed the tx but are not owners?

Do we have a preferred way of approaching this? Or does a simple label modification suffice? @johannesmoormann

I would wait to see if there is a need for this. Until then, I think it is perfectly fine to leave it as it is, since the tools to explore the executor are already there.

The confirm button is no longer in the history tab. That's fixed
Something has changed. I can no longer sign with a non-owner. I get an error in the console stating that
In this safe there is a tx ready to be executed, so you can try with this one:
https://pr3151--safereact.review-safe.gnosisdev.com/app/rin:0xcACCB4c94376eed9390c2d304fD54113a1fFC9e1/transactions/queue

I can no longer sign with a non-owner.

I managed to execute the linked transaction. Perhaps you were unable to because of the current issues we are having with Rinkeby staging. Can you check again?

Insights from the meeting I've just had with @iamacook:

There's no need to call the transaction service when only executing a Safe Transaction. It will be picked by the transaction service as soon as it's executed. Yesterday there were issues on Rinkeby and that's why your testing didn't work. You can try again now.
You need to call the transaction service when a tx is signed, it doesn't matter if it's just sign or sign and execute.

Let me know if you have any questions 🙂

Ok, the tx is going through just fine now when signed by non owners, but we still have that error in the console still popping. We can ignore it for this ticket, but I'll create a new one to see if we can make it not show up at all

Ok, the tx is going through just fine now when signed by non owners, but we still have that error in the console still popping. We can ignore it for this ticket, but I'll create a new one to see if we can make it not show up at all

Yes please. It's not good to have an error on the console and also to do not required requests to the service

Hola guys, I see that the message for when trying to execute a tx from a safe-app with a non owner has changed from the good old: 'You are currently not an owner of this Safe and won't be able to submit this tx' to

I think it would be neat to keep the old message for this scenario :)

I see that the message for when trying to create & execute a tx from a safe-app with a non owner has changed

@JagoFigueroa, good catch! I will create an issue to update the text accordingly


feat(vitest): add "vitest list" command to output test names

Description
Closes #2901

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[ ] It's really useful if your PR references an issue where it is discussed ahead of time. If the feature is substantial or introduces breaking changes without a discussion, PR might be closed.
[ ] Ideally, include a test that fails without this PR but passes with it.
[ ] Please, don't make changes to pnpm-lock.yaml unless you introduce a new test example.

Tests

[ ] Run the tests with pnpm test:ci.

Documentation

[ ] If you introduce new functionality, document it. You can run documentation with pnpm run docs command.

Changesets

[ ] Changes in changelog are generated from PR name. Please, make sure that it explains your changes in an understandable manner. Please, prefix changeset messages with feat:, fix:, perf:, docs:, or chore:.

Currently, it cannot exit for some reason (investigating). The output itself is not here yet. A few questions, @NullVoxPopuli:

Do we output the banner? ([RUN] Vitest 1.0.0)
Do we output test names while collecting them?
How does the finished output look like?

Do we output the banner?

seems fine for stdout

Do we output test names while collecting them?

I don't think there is a need to stream any output if that's easier -- we wouldn't be running the tests themselves, so collecting everything to output at once should be very fast.

How does the finished output look like?

Potentially: https://github.com/vitest-dev/vitest/issues/2901

Hi @sheremet-va! As the Vitest adapter maintainer for Neovim, I was thrilled about this PR. It seems like a game-changer for resolving issues related to test discovery, especially for parameters tests.
Any chance you could provide a quick update on its status? I believe this integration is crucial for everyone developing tools upon Vitest. Your work is greatly appreciated!

Why was this PR closed? 😕
Vitest is version 2.0.0 now. 🙃

It's implemented in another PR: https://github.com/vitest-dev/vitest/pull/6013


Utilize a dict for colors, minor tweaks

This makes some minor style tweaks, and uses a dictionary for filling colors instead - allowing easy expansion in the future.
It also tweaks the ranges to do a linear search through a list of continuous numbers, stopping when the number is greater than n, and returning the corresponding feature - this is easier to maintain.
I also updated some lines to better fit pep8, but that's entirely optional.

Great contribution! There is one ':' on a return statement that caused an error but I will fix that. Thank you for tidying up the code a little and adding the dict, looks awesome!


Recent versions of sims on phet-dev don't load on iPad Pro

I tethered my iPad Pro while trying to load pH Scale Basics 1.3.0-rc.1.   I will check to see if they are throwing any errors.
@ariel-phet, I'm not sure who to assign to investigate, so I'll leave that to you.

Developer meeting discussion:

Let's try the en version of the sim and see if it behaves differently.
If this is different perhaps we need to adjust the issue template to point to the en version.
@KatieWoe to ask @phet-steele why we use the all HTML file for testing. (let's make an issue)
Should we get an iPad Pro?

AP: we could, but it's kinda expensive, let's see if we really need it.

@lmulhall-phet please "kick it to @ariel-phet" with whatever you find in the en version.

Settings > Safari > Privacy & Security > Prevent Cross-Site Tracking needs to be off. If it's on, you'll get the above errors. @zepumph, does it make sense that having that setting on would produce those errors?

Might be a good idea to add this to the Help Center.

@lmulhall-phet can you please see if the *_en_phet.html files of recent sims also produce this error on your iPad?
There really shouldn't be a difference between the _en_phet.html and _all_phet.html except for the inclusion of strings and the acceptance of a query parameter. But perhaps the way we have done this query parameter is causing errors.
Can you check the en_phet.html files before we move ahead with the next step?

Sorry, I forgot to write that I checked the en version. Yes, the en version produces the same error, but the problem stems from Safari settings, not the iPad or the sims.

Since this seems solved, is it alright if I close @ariel-phet?

@KatieWoe I actually want to discuss at dev meeting, lets leave open

@lmulhall-phet @KatieWoe or @ariel-phet can you please elaborate on what "Prevent Cross-Site Tracking" means, why it impacts our sims, and why users may have turned that on?

Best explanation I found for what it is:

Social media sites often put Share, Like, or Comment buttons on other websites. These buttons can be used to track your web browsing—even if you don’t use them. Safari blocks that tracking. If you still want to use the buttons, you’ll be asked for your permission to allow the site to see your activities on the other websites.

No idea why it would impact our sims.
I looked on my phone, and it seemed to be on by default, but seemed to be off by default on one of our iPads.  For some reason, I didn't seem to get these errors with either device while it was on.

I'll at a minimum try to make sure this doesn't error out (if possible). Ideally we'll find a way to get query string information in that situation.

QueryStringMachine. getForString is where the first error is thrown.  It is a simple method, maybe it would be easy to create an isolated test case to try to understand exactly what is causing the problem.

I may have found something. Checking the "Block all cookies" checkbox in Safari on my MacBook will produce the same errors and the same behavior, which makes me wonder if I made a mistake in thinking it was the "Prevent cross-site tracking" preference that was causing the problem. I could have sworn that having "Prevent cross-site tracking" off solved the problem and it didn't have to do with the cookies preference. I'll take a look at my iPad tonight.

I noticed there was a QueryStringMachine error if "Block all cookies" was enabled on Safari desktop. Patched above so that it doesn't prevent loading of the sim.

"Prevent Cross-Site Tracking" is enabled on both my phone/macbook, and it hasn't prevented running sims at all. From its description, it seems to be a preventative measure for browser fingerprinting, which should not be related to query string handling.

I'm not finding any other security/privacy settings that I can enable to break things, so I'm curious if the localStorage patch above changes the iPad Pro behavior.
Being able to debug live (with the device in person, or at least remote but viewable) would be quite helpful for this situation.
@lmulhall-phet do you mind testing off of master? Let me know if I should deploy a dev version for testing.

@jonathanolson, sure we can try that. I bring my iPad to work now, so we can do the test whenever you're ready to deploy a dev version.

I think @jonathanolson integrated the changes into master. I mistakenly thought he needed to deploy a dev version. Sorry about that. I checked a few sims and none of them failed to load. Closing.


Create /history Page

Bug
/history Directs to 404 Page
What is the current behavior?
Currently /history directs to a 404 page, and /history links are all over the interwebs
What is the expected behavior?
/history Links should direct to a completed page with our history

I am working on the history page today


Only primary group available in JupyterHub Terminal

So. Basically, when I open  a jupyterhub terminal, I only have my primary group...
[morganj@cb0677f233db ~]$ groups
Unix_Users
However, my groups are available to me...
[morganj@cb0677f233db ~]$ groups
Unix_Users
[morganj@cb0677f233db ~]$ newgrp UNIX_AS_AN
[morganj@cb0677f233db ~]$ groups
UNIX_AS_AN             <------- (1)
[morganj@cb0677f233db ~]$ exit
[morganj@cb0677f233db ~]$ newgrp UNIX_AS_AN
[morganj@cb0677f233db ~]$ newgrp Unix_Users
[morganj@cb0677f233db ~]$ groups
Unix_Users UNIX_AS_AN     <---- (2)
[morganj@cb0677f233db ~]$ su adamho
Password:
[adamho@cb0677f233db morganj]$ groups
Unix_Users cm GROUP1 GROUP2 GROUP3 GROUP4 <----- (3)
Okay so at (1) we see I have one group. What's strange is that a newgrp command replaces my primary group. This isn't native linux behaviour. So something is a bit weird. Then if i issue a second newgrp command in subshell, the groups start appending. This is how newgrp is supposed to work (2).
And lastly, we see me using 'su' to change to another user (3).... And lo-and behold, We get all our groups back. I get the impression this is something to do with the terminal implementation in Jupyter.

This is due to group enumeration in the host. And the way guids are read by jupyterhub. In sssd this is solvable with the "enumerate = true" flag.
I'll mark this closed.

@mogthesprog heya, sorry to revive this old issue. Were you using this against PAM authentication or LDAP authentication?

This was all done with PAM Authentication. What are you trying to do and what errors/behaviour are you seeing? Also what version of jupyterhub are you using? :)

@mogthesprog We are running version 0.6.1 using the LDAP authenticator plugin with this config:
### LDAP Auth
c.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator'
c.LDAPAuthenticator.server_address = '<ldap server>'
c.LDAPAuthenticator.bind_dn_template = 'uid={username},cn=users,cn=accounts,dc=ourdomain,dc=com'
c.LDAPAuthenticator.allowed_groups = [
        'cn=group1,cn=groups,cn=accounts,dc=ourdomain,dc=com',
        'cn=groupn,cn=groups,cn=accounts,dc=ourdomain,dc=com'
]

Based on this code, it seems to me that the spawner is not using the LDAP to retrieve the user groups. Rather, it's relying on the user groups reported by the OS. The only workaround is to allow LDAP users to authenticate to the server, which is not what we want.
Wondering if I should open a new issue for this.


AZ marketplace media folder rename

If this PR needs approval, or if the commits need to be pulled into the private repo, contact @ManikaDhiman or @alkohli. Thanks.

THIS IS A DRAFT

@dansisson

consider putting the PR into draft mode  until it's ready to review. Triage (what I am doing now) will still happen, but reviewers will know it's not ready. Up to you of course.
when this is ready for review, tag @alkohli and @ManikaDhiman so they can review it

@alkohli @ManikaDhiman - when this is ready (and approved for merge), can you add #sign-off in a comment? Thanks.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

@ManikaDhiman @dansisson - merging this. please make sure to check the live page after the changes are published to confirm that the images are displaying as intended. thanks
As in the other PR, this screenshot - media/virtual-machine-image-azure-marketplace/deployment-in-progress.png contains a Correlation ID. I'm not clear on if that's PII or not, but if it is, please mask it in a follow-up PR. thanks


[3.x] Various 2.x issues ported

https://github.com/area17/twill/pull/1893
https://github.com/area17/twill/pull/1892
https://github.com/area17/twill/pull/1899
https://github.com/area17/twill/pull/1869

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.3 out of 4 committers have signed the CLA.:white_check_mark: haringsrob:white_check_mark: YasienDwieb:white_check_mark: domihagen:x: tudor-svYou have signed the CLA already but the status is still pending? Let us recheck it.


setting provider to undefined

Summary
Pretty self explanatory. Fixes #134. Pretty hard to test. Would need to rework how the tests are setup pretty considerably I think.

How does this work with hooks that remove fields for external providers? E.g. populate a post with a user whose password is normally removed. In the populate user you will see the password.

@daffl true. I would argue you should probably be always removing the password hash (not just for external). Have a suggestion? It's broken if we don't do this, but might break other things.

Well we can't always remove fields since e.g. the password is needed to be compared for authentication (which was why we were removing it only for external calls).
I don't have an easy fix for this right now but I was thinking that once we make hooks part of core and event emitting a hook we can add a hook.dispatch or similar property which always contains the data converted to a format that external users are allowed to see. This could then be used for dispatching events (we have the same problem there), populating related entities etc.

I posted a comment in https://github.com/feathersjs/feathers-hooks-common/issues/134. The legacy populate did what the new one does. It know of at least 1 person's code what depends on it.
This PR would be a breaking change. It would

Ya, there are definitely implications. I still don't think the current implementation is doing the right thing, however to unblock me, @daffl suggested adding a before hook:
(hook) => {
        if (hook.params._populate) {
          delete hook.params.provider;
        }
}

Which works, so we can stew on this a bit.

I think more discussion is needed on #134 but this PR is not the right solution. We can't take such a brute force approach here. Going to close.


DBZ-925 Change array.encoding to correct options

As in https://github.com/debezium/debezium/pull/672
Both documentation were wrong pointing to a value struct when it should've been document

Merged. Thanks a lot, @renatomefi!


Fix proposal for backend start up (issue #23)

Fix #23

@samlesu Is the current proposal is good for you ? I tried to combine your review with improvements :)


Feature request: Add sep argument for separator

It would be nice to have an option to use tab separated files with this since they sometimes are smaller in size.

This would be an extremely useful feature. I routinely have to work with csv files that use | as the separator, and I would love to be able to use this library to process those files.


Fix exclude-callers in Devcontainer environment

In a devcontainer environment (and maybe in remote-ssh as well), the file paths provided in the ExcludeCallerRequest appear to be prefixed with "vscode-remote://". This messes up the logic for determining the symbol to be excluded.
This attempts to fix the problem by stripping off any such prefix.

Thanks,
However, in the end I've decided to fix this in a different way: by extracting DAP frame id from stack frame view's item id.


Support completionItem/resolve for additional text edits

A small change to allow additional text changes from completionItem/resolve.

I think you also want to change https://github.com/nvim-lua/completion-nvim/blob/bd4f21f35e1b6d6f4a79ff4bb8a89d812bd912a0/lua/completion.lua#L110 to
if next(item.additionalTextEdits) then

This handles the subtle case when item.additionalTextEdits is {}, because if {} then x else y end evaluates to x in lua (rust-analyzer does this when I do a completion and expect to receive an auto-import - it needs to hit the else case added by this PR to get the additionalTextEdit but doesn't because of this).


[beta] /about redirects to map

This issue PLUS on front page, /wiki is target="_blank" to map.
If not related, I will split to a separate issue.

Related?
/commit links to map

These are all related to the language routing system.

Fixed the about problem but didn't see the commit issue. Will address.

Fixed! Thanks @atjonathan and @Bouncey for finding these two!

Memperbaiki server