fix: add/run tests for the latest version of the aio-cli

Description
Adds support for testing the latest aio-cli.
Requires https://github.com/adobe/aio-cli-plugin-asset-compute/pull/109 and a new release of the asset-compute plugin before the aio-next test passes.
Types of changes

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

Checklist:

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

@tmathern The tests only pass once:

PR https://github.com/adobe/aio-cli-plugin-asset-compute/pull/109 merged in
a new release of the asset-compute plugin is released

@tmathern The tests only pass once:

PR fix: add kinds nodejs:18 and nodejs:20, update all image versions to 3.0.41 aio-cli-plugin-asset-compute#109 merged in
a new release of the asset-compute plugin is released

Ack -
Did you run them locally to check?


don't merge until ready: biolink v2 update

don't merge this until this has been fully tested and ready to deploy
The main changes are to src/common/types.ts and src/config.ts.
Then I updated the README and tried to update the tests.

Closing to make a diff PR that isolates the biolink v2.1.0 changes.
Some of the changes here aren't really linked to biolink v2.1.0 update; see this comment for the breakdown and updated PRs.


[YouTube] Crash when downloading playlist with private video in it

[x] I've verified and I assure that I'm running youtube-dl 2<IP_ADDRESS>
[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)

form@server:~$ youtube-dl -v https://www.youtube.com/playlist?list=PLLyofhmfnvHLsg3ECsSlH6i7d74vNYXd9
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'https://www.youtube.com/playlist?list=PLLyofhmfnvHLsg3ECsSlH6i7d74vNYXd9']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.12 - Linux-4.4.0-77-generic-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: ffmpeg 2.8.11-0ubuntu<IP_ADDRESS>, ffprobe 2.8.11-0ubuntu<IP_ADDRESS>, rtmpdump 2.4
[debug] Proxy map: {}
[youtube:playlist] PLLyofhmfnvHLsg3ECsSlH6i7d74vNYXd9: Downloading webpage
[download] Downloading playlist: Testplaylist
[youtube:playlist] playlist Testplaylist: Downloading 3 videos
[download] Downloading video 1 of 3
[youtube] 2HQStlsMD6A: Downloading webpage
[youtube] 2HQStlsMD6A: Downloading video info webpage
[youtube] 2HQStlsMD6A: Extracting video information
[youtube] 2HQStlsMD6A: Downloading MPD manifest
[youtube] 2HQStlsMD6A: Downloading MPD manifest
[debug] Invoking downloader on u'https://r1---sn-4g5e6ne6.googlevideo.com/videoplayback/id/d87412b65b0c0fa0/itag/136/source/yt_otf/requiressl/yes/ei/CxQgWZ6xL9T1WviTk6gB/ms/au/mv/m/mm/31/mn/sn-4g5e6ne6/initcwndbps/1002500/pl/34/ratebypass/yes/mime/video%2Fmp4/otfp/1/otf/1/lmt/1495273933945982/mt/1495274421/key/dg_yt0/signature/42CE12E364D90D11F457A06C4879F5D37983C327.409324FBA4699A551FCA5DF0018AE421C82E4B91/upn/bM0Ap3teHuk/ip/2003:d5:63cc:600:bf61:7e58:f914:49c5/ipbits/0/expire/1495296107/sparams/ip,ipbits,expire,id,itag,source,requiressl,ei,ms,mv,mm,mn,initcwndbps,pl,ratebypass,mime,otfp,otf,lmt/'
[dashsegments] Total fragments: 58
[download] Destination: Testvideo 1 - Not Listed-2HQStlsMD6A.f136.mp4
[download] 100% of 2.22MiB in 00:12
[debug] Invoking downloader on u'https://r1---sn-4g5e6ne6.googlevideo.com/videoplayback/id/d87412b65b0c0fa0/itag/140/source/youtube/requiressl/yes/ei/CxQgWZ6xL9T1WviTk6gB/ms/au/mv/m/mm/31/mn/sn-4g5e6ne6/initcwndbps/1002500/pl/34/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/4774496/lmt/1495273919206161/dur/300.350/mt/1495274421/key/dg_yt0/signature/70C63728BD4560883927D8DB9EF2D0D6A2B48D7D.01421D265DD0AEFB6D821E9B696AC785F651D346/upn/bM0Ap3teHuk/ip/2003:d5:63cc:600:bf61:7e58:f914:49c5/ipbits/0/expire/1495296107/sparams/ip,ipbits,expire,id,itag,source,requiressl,ei,ms,mv,mm,mn,initcwndbps,pl,ratebypass,mime,otfp,gir,clen,lmt,dur/'
[dashsegments] Total fragments: 62
[download] Destination: Testvideo 1 - Not Listed-2HQStlsMD6A.f140.m4a
[download] 100% of 4.55MiB in 00:06
[ffmpeg] Merging formats into "Testvideo 1 - Not Listed-2HQStlsMD6A.mp4"
[debug] ffmpeg command line: ffmpeg -y -i 'file:Testvideo 1 - Not Listed-2HQStlsMD6A.f136.mp4' -i 'file:Testvideo 1 - Not Listed-2HQStlsMD6A.f140.m4a' -c copy -map 0:v:0 -map 1:a:0 'file:Testvideo 1 - Not Listed-2HQStlsMD6A.temp.mp4'
Deleting original file Testvideo 1 - Not Listed-2HQStlsMD6A.f136.mp4 (pass -k to keep)
Deleting original file Testvideo 1 - Not Listed-2HQStlsMD6A.f140.m4a (pass -k to keep)
[download] Downloading video 2 of 3
[youtube] bqNIZicbG8k: Downloading webpage
[youtube] bqNIZicbG8k: Downloading embed webpage
[youtube] bqNIZicbG8k: Refetching age-gated info webpage
ERROR: bqNIZicbG8k: YouTube said: This video is private.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 760, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 433, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/youtube.py", line 1498, in _real_extract
    expected=True, video_id=video_id)
ExtractorError: bqNIZicbG8k: YouTube said: This video is private.

form@server:~$

Description of your issue, suggested solution and other information
When downloading a YouTube-Playlist which contains a video that is flagged as "private" (and you have no access right to it), youtube-dl will crash and doesnt download the "normal" videos which may appear after that private-one in the playlist.
To reproduce, i created a public playlist so you can try it yourself:
youtube-dl -v https://www.youtube.com/playlist?list=PLLyofhmfnvHLsg3ECsSlH6i7d74vNYXd9

Video 1 is flagged as "Not listed"
Video 2 is flagged as "Private" - This will not be downloaded
Video 3 is flagged as "Public" - This will not be downloaded

-i.


window is not defined

When I install this script in a server / client environment I have this error:
ReferenceError: window is not defined

Sounds like your using Universal rendering. I've just had a play with modifying it so ngOnInit looks like
  ngOnInit() {
    if (this.ps.isBrowser) {
      require('intersection-observer');
      this.ngZone.runOutsideAngular(() => this.init());
    }
  }

which seems to work
It would also need something to handle the server side request so that the src is set for seo purposes, but at the moment I'm handling that in my own image component.

Yes, it seems like the universal rendering is failing because of the Intersection Observer polyfill as @dottodot stated.
@dottodot Do you want to make a PR about this too? It seems like you got it right :)

I managed to make it cohabit with the SSR by importing the module in my browser-app.module.ts and not in the app.module.ts
├── app
│   ├── app.component.ts
│   ├── app.browser.module.ts
│   └── app.server.modue.ts
.......
├── index.html
├── main.browser.ts
└── main.server.ts

@anode7 That will work in some cases but you may have issues on lazy loaded modules where you might have to use shared module. I'm just sorting a PR for it anyway.

In my component :
import { Component, OnInit, OnDestroy, Inject, PLATFORM_ID } from '@angular/core';
import {isPlatformBrowser } from '@angular/common';
...
@Component({ ...
})
export class HomeView implements OnInit, OnDestroy {
...
constructor(
    @Inject(PLATFORM_ID) platformId: string,
...
) {
    this.testBrowser = isPlatformBrowser(platformId);//Boolean
}

@anode7 @dottodot Could you please test the new release?
I included the @dottodot's fix for Angular Universal compatibility

@jesusbotella Apologies for not getting round to doing a PR just got sidetracked with everything I have on. Anyway just tested with Universal SSR and it's working well.

@jesusbotella I just tested just now by generating an Angular-cli project with --service-worker and ng generate universal AppName.
No errors, but images are not displayed.

Are they displayed without SSR?
You may find you need to do what I've done and that's create a component for your images that handles if it's browser or server. So if it browser it's ok to set data-src as they will be lazy-loaded, but on the server it needs to set the src.

@dottodot  yes, without using the SSR the images are displayed
with SSR, images are not displayed on the client

OK so that will be because ngx-lazy-load-images doesn't do anything when it server side which is why I said you'll need to setup a component to handle server vs browser images. You don't really want to lazy load ssr images anyway for seo purposes, for for the server side to need to set the src / srcset as normal.

@anode7 Could you please send me the example somehow? I want to try what happen to solve the issue.
@anode7 @dottodot Do you think that the plugin should set the src and the srcset attribute to the node if it is rendered in the server bypassing lazy-load?

@jesusbotella testLazyUniversalSw
example made very quickly without frills


[Feature]: Validate image upload via zod

Contact Details
No response
What do you like to be improved?
Hint: ~~https://stackoverflow.com/a/62522281~~ https://zod.dev/?id=refine
Maybe we can use remix-forms?

It's possible to upload e.g. PSDs


dart2wasm language/async await flaky tests turning RuntimeError

from https://dart-ci.appspot.com/log/dart2wasm-linux-x64-d8/dart2wasm-hostasserts-linux-x64-d8/275/language/async/await_test/none for https://ci.chromium.org/ui/p/dart/builders/ci.sandbox/dart2wasm-linux-x64-d8/275/overview
--- Command "dart2wasm" (took 01.000159s):
DART_CONFIGURATION=ReleaseX64 sdk/bin/dart2wasm_developer -Dtest_runner.configuration=dart2wasm-hostasserts-linux-x64-d8 /b/s/w/ir/cache/builder/sdk/out/ReleaseX64/generated_tests/language/async/await_test_none.dart /b/s/w/ir/cache/builder/sdk/out/ReleaseX64/generated_compilations/dart2wasm-hostasserts-linux-x64-d8/multitest_language_async_await_test_none/await_test_none.wasm

exit code:
0

--- Command "d8" (took 149ms):
DART_CONFIGURATION=ReleaseX64 /b/s/w/ir/cache/builder/sdk/third_party/d8/linux/d8 --experimental-wasm-gc --experimental-wasm-stack-switching --experimental-wasm-type-reflection pkg/dart2wasm/bin/run_wasm.js -- /b/s/w/ir/cache/builder/sdk/out/ReleaseX64/generated_compilations/dart2wasm-hostasserts-linux-x64-d8/multitest_language_async_await_test_none/await_test_none.wasm

exit code:
1

stdout:
unittest-suite-wait-for-done
Expect.isTrue(false, ' basic await value is delayed') fails.
    at Expect._fail (wasm://wasm/00190fc2:wasm-function[1703]:0x35de4)
    at Expect.isTrue (wasm://wasm/00190fc2:wasm-function[2014]:0x3998b)
    at Expect.isTrue tear-off (wasm://wasm/00190fc2:wasm-function[2016]:0x399a6)
    at expect (wasm://wasm/00190fc2:wasm-function[1165]:0x30862)
    at main closure at file:///b/s/w/ir/cache/builder/sdk/out/ReleaseX64/generated_tests/language/async/await_test_none.dart:105:8 inner (wasm://wasm/00190fc2:wasm-function[1190]:0x3121d)
    at wasm://wasm/00190fc2:wasm-function[1191]:0x3123b
    at _asyncBridge2 (wasm://wasm/00190fc2:wasm-function[592]:0x29d34)
    at _asyncBridge (wasm://wasm/00190fc2:wasm-function[56]:0x1ffa5)
undefined:0: [object WebAssembly.Exception]

Deobfuscated error and stack:
unittest-suite-wait-for-done
Expect.isTrue(false, ' basic await value is delayed') fails.
    at     at Expect._fail (wasm://wasm/00190fc2:wasm-function[1703]:0x35de4)                                                                                unparsed
    at     at Expect.isTrue (wasm://wasm/00190fc2:wasm-function[2014]:0x3998b)                                                                                unparsed
    at     at Expect.isTrue tear-off (wasm://wasm/00190fc2:wasm-function[2016]:0x399a6)                                                                                unparsed
    at     at expect (wasm://wasm/00190fc2:wasm-function[1165]:0x30862)                                                                                unparsed
    at     at main closure at file:///b/s/w/ir/cache/builder/sdk/out/ReleaseX64/generated_tests/language/async/await_test_none.dart:105:8 inner (wasm://wasm/00190fc2:wasm-function[1190]:0x3121d) unparsed
    at     at wasm://wasm/00190fc2:wasm-function[1191]:0x3123b                                                                                unparsed
    at     at _asyncBridge2 (wasm://wasm/00190fc2:wasm-function[592]:0x29d34)                                                                                unparsed
    at     at _asyncBridge (wasm://wasm/00190fc2:wasm-function[56]:0x1ffa5)                                                                                unparsed
    at undefined:0: [object WebAssembly.Exception]                                                                                unparsed

--- Re-run this test:
python3 tools/test.py -n dart2wasm-hostasserts-linux-x64-d8 language/async/await_test/none

from https://dart-ci.appspot.com/log/dart2wasm-linux-x64-d8/dart2wasm-hostasserts-linux-x64-d8/274/language/await/await_test for https://ci.chromium.org/ui/p/dart/builders/ci.sandbox/dart2wasm-linux-x64-d8/274/overview
--- Command "dart2wasm" (took 01.000302s):
DART_CONFIGURATION=ReleaseX64 sdk/bin/dart2wasm_developer -Dtest_runner.configuration=dart2wasm-hostasserts-linux-x64-d8 /b/s/w/ir/tests/language/await/await_test.dart /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2wasm-hostasserts-linux-x64-d8/tests_language_await_await_test/await_test.wasm

exit code:
0

--- Command "d8" (took 174ms):
DART_CONFIGURATION=ReleaseX64 /b/s/w/ir/third_party/d8/linux/d8 --experimental-wasm-gc --experimental-wasm-stack-switching --experimental-wasm-type-reflection pkg/dart2wasm/bin/run_wasm.js -- /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2wasm-hostasserts-linux-x64-d8/tests_language_await_await_test/await_test.wasm

exit code:
1

stdout:
unittest-suite-wait-for-done
Type '_Future<dynamic>' is not a subtype of type 'FutureOr<int>' in type cast
    at _AsyncCompleter.complete (wasm://wasm/000e6a52:wasm-function[730]:0x25e7d)
    at _asyncBridge (wasm://wasm/000e6a52:wasm-function[56]:0x19c53)
undefined:0: [object WebAssembly.Exception]

Type '_Future<dynamic>' is not a subtype of type 'FutureOr<int>' in type cast
    at _AsyncCompleter.complete (wasm://wasm/000e6a52:wasm-function[730]:0x25e7d)
    at _asyncBridge (wasm://wasm/000e6a52:wasm-function[56]:0x19c53)
undefined:0: [object WebAssembly.Exception]

Deobfuscated error and stack:
unittest-suite-wait-for-done
Type '_Future<dynamic>' is not a subtype of type 'FutureOr<int>' in type cast
    at     at _AsyncCompleter.complete (wasm://wasm/000e6a52:wasm-function[730]:0x25e7d) unparsed
    at     at _asyncBridge (wasm://wasm/000e6a52:wasm-function[56]:0x19c53)              unparsed
    at undefined:0: [object WebAssembly.Exception]                                       unparsed
    at                                                                                unparsed
    at                                                                                unparsed
    at                                                                                unparsed
    at Type '_Future<dynamic>' is not a subtype of type 'FutureOr<int>' in type cast     unparsed
    at     at _AsyncCompleter.complete (wasm://wasm/000e6a52:wasm-function[730]:0x25e7d) unparsed
    at     at _asyncBridge (wasm://wasm/000e6a52:wasm-function[56]:0x19c53)              unparsed
    at undefined:0: [object WebAssembly.Exception]                                       unparsed

--- Re-run this test:
python3 tools/test.py -n dart2wasm-hostasserts-linux-x64-d8 language/await/await_test

This test was fixed with fa90dcc640bbd4d5d8ade433ab5f575c865278ca and 0358d35db0337d7d10dbd1b077e753da12c015bf.


running fasta file with metaphlan3 but empty output

Hi,
I have successfully installed metaphlan 3 (I think). When I downloaded "SRS014476-Supragingival_plaque.fasta.gz file from the online tutorial then it works fine. I was able to get the results until heatmap. However, when I tried my own real fasta file, it generated empty output. The output files looks like this:
#SampleID       Metaphlan_Analysis
#clade_name     NCBI_tax_id     relative_abundance      additional_species
UNKNOWN -1      100.0
My command is as below:
metaphlan final_assembly.fasta --input_type fasta > ctrl_A_profile.txt
Can anyone please help me what is the difference between running these two fasta files? and why I am getting empty output file?
Thanks in advance.

Hi,
MetaPhlAn is supposed to be run using metagenomic reads and not using an assembled genome, you should run it using the reads you used for assemble the fasta.

You mean it only accepts raw reads? like .fastq?
Then for example, I have 10 groups and 50 replications (raw fastq reads) from each group. There are total like 500 raw reads. Should I process them individually? and later merge them? I was hoping to be able to compare only 10 groups (on group basis) and not 500 samples (not sample basis)...
Would appreciate your help in this regard.
Many thanks

@mars188 This type of question may be better suited for the discussion forums.
But yes, typically metaphlan would be run on each sample separately. If you really don't care about separating replicates, you could concatenate all of the replicate fastqs together. But the goal of this software is to get the relative abundance of individual taxa based on how many reads are hitting them - if you try to pass an assembly, this information is lost.

Great, thank you so much for clarifying this. I will now try to figure out what to do. Thanks again.

Hello guys.
I am trying to run metaphlan with raw paired reads. The run completes successfully but the output profiled_metagenome.txt file is empty. At the same time, bowtie2.bz2 is not empty. Could you help me?
My command is:
metaphlan2.py inp1.fastq.gz inp2.fastq.gz --bowtie2out bowtie2.bz2 --nproc 4 --input_type fastq > profiled_metagenome.txt

Please see #123


Requirements for unfinished Spans

Requirements for unfinished Spans. This covers the topic discussed in issue #85.

Thanks!


[Feature Request] Pull Request

Loving this package! It would be great to have a button/shortcut to create pull requests.

👍🏻

This is not on the roadmap for this project right now.

As discussed on Gitter, this is mainly because Pull Requests are Github-specific, so to add this feature the package would need to ask the user for his Github credentials. This package isn't Github-specific so asking for the Github credentials would be weird. Maybe this feature will be implemented when Atom will have a built-in support for Github authentication.


No Webpages on start

When started, as stated, there is no web page output mentioned.

When you initialise a live trade command you should see "Web GUI running on http://<IP_ADDRESS>:200XX/" under starting live trading where XX will be different for each trading pair. Make sure to do the following to see the output for the bot:

Update the IP address ("<IP_ADDRESS>") to your IP address from which zenbot is running.

Make sure to keep the the port number as shown in the terminal.

After you have loaded the web GUI in your browser, scroll down and you should see the output (the data point are approximately half way down the page).

I hope this helps.

STALE


Idea: Add a "copy in clipboard" button on generated URL

With the different colors, it's a bit difficult to know what is selected in generated URL, so maybe a button would be nice...

http://stackoverflow.com/questions/1383411/how-to-create-copy-button
Can't do that as is. And no way we put flash in navitia-playground ;)

maybe a link?

yep, could be nice.

Do we put the token in the link?

nope, the goal when I asked it was to allow people to share their navitia query avoiding to share their token (and if they want the token, there is still the url even though it includes playground)


Copy of Orchestrator #2

What's done:

renamed packages back

Diff
nulls@DESKTOP-3T90OGI MINGW64 /c/projects/save-cloud (feature/orchestator_sandbox_copy)
$ diff -r save-orchestrator/src/ save-sandbox/src/
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/config/Beans.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/config/Beans.kt
24c24
<      * @param configProperties orchestrator configuration
---
>      * @param configProperties sandbox configuration
54c54
<             "Class [${KubernetesManager::class.simpleName}] requires `orchestrator.kubernetes.*` properties to be set"
---
>             "Class [${KubernetesManager::class.simpleName}] requires `sandbox.kubernetes.*` properties to be set"
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/config/ConfigProperties.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/config/ConfigProperties.kt
2c2
<  * Classes for configuration properties of orchestrator
---
>  * Classes for configuration properties of sandbox
30c30
< @ConfigurationProperties(prefix = "orchestrator")
---
> @ConfigurationProperties(prefix = "sandbox")
50c50
<      * Because a new volume can't be mounted to the running container (in this case, save-orchestrator), and to be able to fill
---
>      * Because a new volume can't be mounted to the running container (in this case, save-sandbox), and to be able to fill
52c52
<      * To be able to access resources, orchestrator and this intermediate container should have a shared mount, and [tmpPath] serves
---
>      * To be able to access resources, sandbox and this intermediate container should have a shared mount, and [tmpPath] serves
80c80
<      * to authenticate orchestrator to the API server
---
>      * to authenticate sandbox to the API server
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/controller/HeartbeatController.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/controller/HeartbeatController.kt
50,53c50,53
<      * 1. Response has IDLE state. Then orchestrator should send new jobs.
<      * 2. Response has FINISHED state. Then orchestrator should send new jobs and validate that data has actually been saved successfully.
<      * 3. Response has BUSY state. Then orchestrator sends an Empty response.
<      * 4. Response has ERROR state. Then orchestrator sends Terminating response.
---
>      * 1. Response has IDLE state. Then sandbox should send new jobs.
>      * 2. Response has FINISHED state. Then sandbox should send new jobs and validate that data has actually been saved successfully.
>      * 3. Response has BUSY state. Then sandbox sends an Empty response.
>      * 4. Response has ERROR state. Then sandbox sends Terminating response.
111c111
<                     // fixme: if orchestrator can shut down some agents while others are still doing work, this call won't be needed
---
>                     // fixme: if sandbox can shut down some agents while others are still doing work, this call won't be needed
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/docker/DockerAgentRunner.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/docker/DockerAgentRunner.kt
79c79
<             // For executions started by the running instance of orchestrator, this key should be already present in the map.
---
>             // For executions started by the running instance of sandbox, this key should be already present in the map.
81c81
<             TODO("${DockerAgentRunner::class.simpleName} should be able to load data about agents started by other instances of orchestrator")
---
>             TODO("${DockerAgentRunner::class.simpleName} should be able to load data about agents started by other instances of sandbox")
213c213
<         val envFile = createTempDirectory("orchestrator").resolve(".env").apply {
---
>         val envFile = createTempDirectory("sandbox").resolve(".env").apply {
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/kubernetes/KubernetesManager.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/kubernetes/KubernetesManager.kt
28c28
<         "orchestrator.kubernetes.* properties are required in this profile"
---
>         "sandbox.kubernetes.* properties are required in this profile"
Only in save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator: sandbox
Only in save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator: SaveOrchestrator.kt
Only in save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator: SaveSandbox.kt
Only in save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/service: BackendAgentRepository.kt
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/service/HeartBeatInspector.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/service/HeartBeatInspector.kt
25c25
<  * TODO: can be used to store data about existing agents on orchestrator startup ([#11](https://github.com/saveourtool/save-cloud/issues/11))
---
>  * TODO: can be used to store data about existing agents on sandbox startup ([#11](https://github.com/saveourtool/save-cloud/issues/11))
127c127
<     @Scheduled(cron = "*/\${orchestrator.heart-beat-inspector-interval} * * * * ?")
---
>     @Scheduled(cron = "*/\${sandbox.heart-beat-inspector-interval} * * * * ?")
diff -r save-orchestrator/src/main/kotlin/com/saveourtool/save/orchestrator/Utils.kt save-sandbox/src/main/kotlin/com/saveourtool/save/orchestrator/Utils.kt
2c2
<  * Utilities for orchestrator
---
>  * Utilities for sandbox
29c29
< internal const val DOCKER_METRIC_PREFIX = "save.orchestrator.docker"
---
> internal const val DOCKER_METRIC_PREFIX = "save.sandbox.docker"
Only in save-sandbox/src/main/kotlin/com/saveourtool/save: sandbox
diff -r save-orchestrator/src/main/resources/application.properties save-sandbox/src/main/resources/application.properties
1c1
< server.port=5100
---
> server.port=5400
6,22c6,22
< orchestrator.backend-url=http://backend:5800/internal
< orchestrator.execution-logs=/home/cnb/executionLogs/
< orchestrator.test-resources.tmp-path=/tmp
< orchestrator.shutdown.checks-interval-millis=5000
< orchestrator.shutdown.graceful-timeout-seconds=60
< orchestrator.shutdown.graceful-num-checks=10
< orchestrator.docker.host=unix:///var/run/docker.sock
< orchestrator.docker.logging-driver=loki
< orchestrator.docker.runtime=runsc
< orchestrator.agents-count=3
< orchestrator.agents-heart-beat-timeout-millis=60000
< orchestrator.heart-beat-inspector-interval=10
< orchestrator.agent-settings.backend-url=http://host.docker.internal:5800
< orchestrator.agent-settings.orchestrator-url=http://host.docker.internal:5100
< orchestrator.agent-settings.debug=true
< orchestrator.agents-start-timeout-millis=60000
< orchestrator.agents-start-check-interval-millis=10000
---
> sandbox.backend-url=http://backend:5800/internal
> sandbox.execution-logs=/home/cnb/executionLogs/
> sandbox.test-resources.tmp-path=/tmp
> sandbox.shutdown.checks-interval-millis=5000
> sandbox.shutdown.graceful-timeout-seconds=60
> sandbox.shutdown.graceful-num-checks=10
> sandbox.docker.host=unix:///var/run/docker.sock
> sandbox.docker.logging-driver=loki
> sandbox.docker.runtime=runsc
> sandbox.agents-count=3
> sandbox.agents-heart-beat-timeout-millis=60000
> sandbox.heart-beat-inspector-interval=10
> sandbox.agent-settings.backend-url=http://host.docker.internal:5800
> sandbox.agent-settings.orchestrator-url=http://host.docker.internal:5100
> sandbox.agent-settings.debug=true
> sandbox.agents-start-timeout-millis=60000
> sandbox.agents-start-check-interval-millis=10000
diff -r save-orchestrator/src/main/resources/application-dev.properties save-sandbox/src/main/resources/application-dev.properties
1,4c1,4
< orchestrator.backendUrl=http://localhost:5800/internal
< orchestrator.docker.logging-driver=json
< orchestrator.docker.test-resources-volume-name=save-tmp-resources
< orchestrator.docker.test-resources-volume-type=bind
\ No newline at end of file
---
> sandbox.backendUrl=http://localhost:5800/internal
> sandbox.docker.logging-driver=json
> sandbox.docker.test-resources-volume-name=save-tmp-resources
> sandbox.docker.test-resources-volume-type=bind
\ No newline at end of file
diff -r save-orchestrator/src/main/resources/application-docker-tcp.properties save-sandbox/src/main/resources/application-docker-tcp.properties
1,2c1,2
< orchestrator.docker.host=tcp://localhost:2375
< orchestrator.docker.runtime=runc
\ No newline at end of file
---
> sandbox.docker.host=tcp://localhost:2375
> sandbox.docker.runtime=runc
\ No newline at end of file
diff -r save-orchestrator/src/main/resources/application-kafka.properties save-sandbox/src/main/resources/application-kafka.properties
2c2
< spring.kafka.consumer.group-id=orchestrator-local-group
---
> spring.kafka.consumer.group-id=sandbox-local-group
diff -r save-orchestrator/src/main/resources/application-mac.properties save-sandbox/src/main/resources/application-mac.properties
1,3c1,3
< orchestrator.executionLogs=/Users/Shared/.save-cloud/cnb/executionLogs/
< orchestrator.test-resources.tmp-path=/Users/Shared/.save-cloud/cnb/tmp
< orchestrator.adjustResourceOwner=false
---
> sandbox.executionLogs=/Users/Shared/.save-cloud/cnb/executionLogs/
> sandbox.test-resources.tmp-path=/Users/Shared/.save-cloud/cnb/tmp
> sandbox.adjustResourceOwner=false
diff -r save-orchestrator/src/main/resources/application-win.properties save-sandbox/src/main/resources/application-win.properties
1,4c1,4
< orchestrator.backend-url=http://localhost:5800/internal
< orchestrator.execution-logs=${user.home}/.save-cloud/executionLogs/
< orchestrator.test-resources.tmp-path=${user.home}/.save-cloud/tmp
< orchestrator.adjust-resource-owner=false
---
> sandbox.backend-url=http://localhost:5800/internal
> sandbox.execution-logs=${user.home}/.save-cloud/executionLogs/
> sandbox.test-resources.tmp-path=${user.home}/.save-cloud/tmp
> sandbox.adjust-resource-owner=false
Only in save-orchestrator/src/main/resources: sandbox
diff -r save-orchestrator/src/test/kotlin/com/saveourtool/save/orchestrator/controller/agents/AgentsControllerTest.kt save-sandbox/src/test/kotlin/com/saveourtool/save/orchestrator/controller/agents/AgentsControllerTest.kt
12d11
< import com.saveourtool.save.orchestrator.service.BackendAgentRepository
13a13
> import com.saveourtool.save.sandbox.service.SandboxAgentRepository
52a53
> import org.junit.jupiter.api.Disabled
55c56
< @Import(AgentService::class, BackendAgentRepository::class)
---
> @Import(AgentService::class, SandboxAgentRepository::class)
57a59
> @Disabled("Not supported yet")
diff -r save-orchestrator/src/test/kotlin/com/saveourtool/save/orchestrator/controller/heartbeat/HeartbeatControllerTest.kt save-sandbox/src/test/kotlin/com/saveourtool/save/orchestrator/controller/heartbeat/HeartbeatControllerTest.kt
18c18
< import com.saveourtool.save.orchestrator.service.BackendAgentRepository
---
> import com.saveourtool.save.sandbox.service.SandboxAgentRepository
63c63
<     BackendAgentRepository::class,
---
>     SandboxAgentRepository::class,
70a71
> @Disabled("Not supported yet")
184c185
<                 times(0).description("Orchestrator shouldn't stop agents if they stop heartbeating after TerminateResponse has been sent")
---
>                 times(0).description("sandbox shouldn't stop agents if they stop heartbeating after TerminateResponse has been sent")
324c325
<                 times(0).description("Orchestrator shouldn't stop agents if they stop heartbeating after TerminateResponse has been sent")
---
>                 times(0).description("sandbox shouldn't stop agents if they stop heartbeating after TerminateResponse has been sent")
397c398
<      * @param heartbeats a [Heartbeat] that is received by orchestrator
---
>      * @param heartbeats a [Heartbeat] that is received by sandbox
510c511
<             registry.add("orchestrator.backendUrl") { "http://localhost:${mockServer.port}" }
---
>             registry.add("sandbox.backendUrl") { "http://localhost:${mockServer.port}" }
diff -r save-orchestrator/src/test/kotlin/com/saveourtool/save/orchestrator/service/DockerServiceTest.kt save-sandbox/src/test/kotlin/com/saveourtool/save/orchestrator/service/DockerServiceTest.kt
16a17
> import com.saveourtool.save.sandbox.service.SandboxAgentRepository
21a23
> import org.junit.jupiter.api.Disabled
50c52
<     BackendAgentRepository::class,
---
>     SandboxAgentRepository::class,
51a54
> @Disabled("Not supported yet")
149c152
<             registry.add("orchestrator.backendUrl") {
---
>             registry.add("sandbox.backendUrl") {
152c155
<             registry.add("orchestrator.agentSettings.backendUrl") {
---
>             registry.add("sandbox.agentSettings.backendUrl") {
diff -r save-orchestrator/src/test/resources/application.properties save-sandbox/src/test/resources/application.properties
1,6c1,6
< orchestrator.backend-url=http://backend:5800/internal
< orchestrator.execution-logs=${user.home}/.save-cloud/test/executionLogs/
< orchestrator.test-resources.tmp-path=${user.home}/.save-cloud/test/tmp
< orchestrator.shutdown.checks-interval-millis=100
< orchestrator.shutdown.graceful-timeout-seconds=60
< orchestrator.shutdown.graceful-num-checks=10
---
> sandbox.backend-url=http://backend:5800/internal
> sandbox.execution-logs=${user.home}/.save-cloud/test/executionLogs/
> sandbox.test-resources.tmp-path=${user.home}/.save-cloud/test/tmp
> sandbox.shutdown.checks-interval-millis=100
> sandbox.shutdown.graceful-timeout-seconds=60
> sandbox.shutdown.graceful-num-checks=10
10,20c10,20
< #orchestrator.docker.host=tcp://<IP_ADDRESS>:2375
< orchestrator.docker.host=unix:///var/run/docker.sock
< orchestrator.docker.logging-driver=json
< orchestrator.docker.runtime=runsc
< orchestrator.docker.test-resources-volume-type=bind
< orchestrator.agents-count=1
< orchestrator.adjust-resource-owner=false
< orchestrator.agents-heart-beat-timeout-millis=5000
< orchestrator.heart-beat-inspector-interval=3
< orchestrator.agents-start-timeout-millis=60000
< orchestrator.agents-start-check-interval-millis=10000
---
> #sandbox.docker.host=tcp://<IP_ADDRESS>:2375
> sandbox.docker.host=unix:///var/run/docker.sock
> sandbox.docker.logging-driver=json
> sandbox.docker.runtime=runsc
> sandbox.docker.test-resources-volume-type=bind
> sandbox.agents-count=1
> sandbox.adjust-resource-owner=false
> sandbox.agents-heart-beat-timeout-millis=5000
> sandbox.heart-beat-inspector-interval=3
> sandbox.agents-start-timeout-millis=60000
> sandbox.agents-start-check-interval-millis=10000
diff -r save-orchestrator/src/test/resources/application-kubernetes.properties save-sandbox/src/test/resources/application-kubernetes.properties
1,4c1,4
< orchestrator.kubernetes.apiServerUrl=http://kubernetes.default.svc
< orchestrator.kubernetes.serviceAccount=${POD_SERVICE_ACCOUNT}
< orchestrator.kubernetes.namespace=${POD_NAMESPACE}
< orchestrator.kubernetes.useGvisor=false
\ No newline at end of file
---
> sandbox.kubernetes.apiServerUrl=http://kubernetes.default.svc
> sandbox.kubernetes.serviceAccount=${POD_SERVICE_ACCOUNT}
> sandbox.kubernetes.namespace=${POD_NAMESPACE}
> sandbox.kubernetes.useGvisor=false
\ No newline at end of file
diff -r save-orchestrator/src/test/resources/application-mac.properties save-sandbox/src/test/resources/application-mac.properties
1c1
< orchestrator.executionLogs=/Users/Shared/cnb/executionLogs/
---
> sandbox.executionLogs=/Users/Shared/cnb/executionLogs/
Only in save-orchestrator/src/test/resources: save-agent.kexe


Response to preflight request doesn't pass access control check

See those error messages in the console (I am on the latest version of Obsidian, 0.14.7)
Access to fetch at 'https://us-central1-obsidian-buffer.cloudfunctions.net/wipe' from origin 'app://obsidian.md' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Any clue?

Hey! Sorry about that, I had a billing error and it went into a junk folder in my email. Ive fixed the billing problem and ive updated my email settings to capture this if it happens again.
The result was google downgraded us to the free plan which disabled many of the project's key features.
Fixed!


Storefront build breaks plugin

PHP Version
No response
Shopware Version
No response
Plugin Version
No response
Actual behaviour
When the plugin mediameetsfacebookpixel is installed, it generates 2 identical js files, one is missing the m in the name.
Therefore the storefront loads the plugin twice and breaks.

Expected behaviour
There should be only one built dist js
Steps to Reproduce?
Install store.shopware.com/mediameetsfacebookpixel and try shopware-cli project storefront-build

latest shopware-cli version?

0.4.4


Refactor template and  fix some bugs

What this PR does / why we need it:
fixes  #11550
conveniently:
fixes #11321
fixes #11481
Special notes for your reviewer:
what did I do?

refactor  helm template related code in template.go
remove --output-dir related code in method renderResources and move --output-dir related test case to template_test.go.
remove useless parameters and mark them deprecated in  Install.
do --show-only file filter for crds and hooks.
fix bugs mentioned by issues.
fix incorrect test case add more test case about helm template.

If applicable:

[x] this PR contains unit tests
[x] this PR has been tested for backwards compatibility

@joejulian looks like a valuable PR. I think we can discuss it at the meeting.

I have opened this PR and issue for three months,  with more and more conflicts, I can no longer maintain it. https://github.com/helm/helm/blob/5abcf74227bfe8e5a3dbf105fe62e7b12deb58d2/pkg/action/action.go#L106


Configure Azure Pipelines

This pipeline configuration builds the application and produces a build for the Release configuration.

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

Error

First


flipper-bids-pass-rough-spec fix

Alternative way of getting flipper-bids-pass-rough-spec.k to work (cf. #1251), using simplifications only.

The CI does not seem to like the simplification at the ML-level. In particular the Java backend is saying:
[Error] Compiler: Simplification rules need to be function/functional like. in reference to the simplification
   // Deconstruction of #WordPackAddrUInt48UInt48 at the meta-logic level
    rule    { #WordPackAddrUInt48UInt48(A:Int, B:Int, C:Int) #Equals D:Int }
         => { A #Equals maxUInt160 &Int  D              }
       #And { B #Equals maxUInt48  &Int (D /Int pow160) }
       #And { C #Equals maxUInt48  &Int (D /Int pow208) }
       #And { #rangeUInt(256, D) }
      [simplification,anywhere]

in tests/specs/mcd/flipper-bids-pass-rough-spec.k.


Add support for basic client request properties

defer partial results
option server

https://github.com/Azure/azure-kusto-java/pull/57


Package subpath './http' is not defined by "exports" in<EMAIL_ADDRESS>

It seems the latest version 1.0.0-next.1 changed the way it exports.  It seems to be a problem with:
const {get_body: getBody} = require('@sveltejs/app-utils/http');

in handler.js

Thanks for raising this, I will take a look.
The 3 new versions since I last tested this are:

1.0.0-next.32
1.0.0-next.33
1.0.0-next.34

I'm going to add the "validated with" version in the README so people know which version to pin to that this adapter will work with.

After looking at the updates I see you were talking about<EMAIL_ADDRESS>

It seems the app-utils package is ESM only(?) now. Error when changing to ES module import syntax
 import {get_body: getBody} from '@sveltejs/app-utils/http' ^^^^^^ SyntaxError: Cannot use import statement outside a module at wrapSafe (internal/modules/cjs/loader.js:1052:16) at Module._compile (internal/modules/cjs/loader.js:1100:27) at Module._compile (pkg/prelude/bootstrap.js:1281:32) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1156:10) at Module.load (internal/modules/cjs/loader.js:984:32) at Function.Module._load (internal/modules/cjs/loader.js:877:14) at Module.require (internal/modules/cjs/loader.js:1024:19) at Module.require (pkg/prelude/bootstrap.js:1225:31) at require (internal/modules/cjs/helpers.js:72:18)

I am no esm expert, especially when it comes to Node.js environments. This was on a Node.js 14.15.3 Firebase emulator Function, I will have to investigate further :thinking:

When the node adapter moves to latest tag I will address this.

In the meantime, please use<EMAIL_ADDRESS>.33 may work, but I have not tested it

This still won't actually work, but for different reasons, see #16


Problems when Building projects

Hi,
I used this package to build a demo for a VR university course. Therefore, I had to build to apk.
I had to manually add a few UnityEditor exceptions for things like undo actions in some of the scripts (mostly for functions that are just relevant in the editor). Moreover it was necessary to add
if (Track.TMax == 0)
{
Track.CombineSections();
}
to the PlaceTrainOnTrack function in the CoasterTrain Script to make the train move in the apk version. (it was always moving in the editor, but not in the build, this one was tricky to figure out :b)
I just thought it would be nice to leave it here, maybe you want to adapt the files, and even if not someone else might find this useful.
Cheers and thank you for publishing this package, saved me a few days of work :)
Niklas

hey! first of all thanks for this project! but i cant open the project i am using unity 2022.3.21f1


Better coverage calculation numbers (float64 -> int) - added some tests

We were seeing quite a few cases where coverage was pretty much identical, but floating point remainders would mis-report the result.
This PR at it's ❤  flips the coverage values to integers where:
int(float64(CODE_COVERED) / float64(CODE_TOTAL) * 10000)

So...

6363 = 63.63%
3175 = 31.75%
0 = 00.00% (obviously!)
205 = 2.05%

The idea being that working with integers will result in somewhat more stable numbers when doing base vs. head compares. Two decimal places on percentages should be more than sufficient too.
In addition:

Added some tests for the cover profile reporter/parser code.
Some tests for the reporting messages given back to the pull request.
Updated GitHub workflow from a lint to a test.
Slightly more durable regular expression for parsing the cover profile lines
Comments and some minor reformatting around the traps.


Upgraded the analyzer version to 3.0.0 for Freezed 1.1.1

Hi,
thanks for the awesome work! :)
Could you please upgrade to analyzer version to 3.0.0
So it compatible with freezed 1.1.1
They just upgrade it like a week ago https://github.com/rrousselGit/freezed/commit/258ee1c9e7e089c7a74e270b838f8acd84ccc95e
Thanks

Fixed in 2.0.0-dev.0


Implement foster offer flow

PR Title
Issue Number(s): #104.
What does this PR change and why?
Implement foster offer questionnaire

Implement question modal per the figma designs
Save question responses into state
Send email upon form submission, displaying toast messages for successful/unsuccessful requests

Checklist

[ ] Requirements have been implemented
[ ] Acceptance criteria are met
[ ] Database schema docs have been updated or are not necessary
[ ] Code follows design and style guidelines
[ ] Commits follow guidelines (concise, squashed, etc)
[x] Relevant reviewers (Senior Dev/EM/Designers) have been assigned to this PR

Critical Changes

Database change/migration to run
Environment config change
Breaking API change

Related PRs

#number_of_pr

Testing
Enumerate steps to test the functionality of your ticket. This should include edge cases and testing of error handling, if applicable.

Notes/Todo: (aka please don't spend your time on these issues @katsukixyz!)

refactor to include _id in IPost rather than using IPostWithId.
replace hard coded email with the current user's email and (time permitting) logic to determine recipient email based on environment.
style toasts to match figma.
[in progress] check with product/design on getting the full set of questions/verbiage for each foster type.

Nice work! I'm running into an issue where I can't input more than one character at a time into the input fields without the inputs becoming unfocused - could you investigate this?
Otherwise, just some minor comments!

The input focus issue was due to abstracting the form input mapping/logic into its own component, so each change event forced a re-render of the entire component. I added the TODO tag to refactor so that the input mapping/logic is not duplicated for web and mobile.


Implement HMAC for command and event queue.

Reference https://secure.php.net/hash_equals to mitigate timing leaks.

Can you please explain what you think is todo and why?


Use Time singleton in VersionControlEditorPlugin

Instead of displaying the exact string, now Godot uses the Time
singleton to calculate the date string from the UTC Unix timestamp and
also handles the timezone offset conversion to string.
This PR was made in parallel to https://github.com/godotengine/godot-git-plugin/pull/107

Important note
I plan to update this PR after https://github.com/godotengine/godot/pull/58485 is merged

I've cherry-picked #58485 to 3.x so you can rebase (will push in a few min).

I have pushed the new changes after the new Time singleton function was merged in

Thanks!


Simple Calculator GUI using Java

Hi, I want to add a simple Calculator GUI program using Java Swing.
I'm new to contributions. I hope you would assign this issue to me : )

Hi, I want to add a simple Calculator GUI program using Java Swing.
I'm new to contributions. I hope you would assign this issue to me : )

Sorry @smilewithkhushi But GUI Calculator using Java has already been contributed by other contributor. you can contribute any other program or any small project other than calculator.

okay, thank you for letting me know.


I want to contribute

@aarontwf
@GhostWalker562
How can I help contribute to the codebase, what's on the roadmap? Contact me

Cool! I've been away for awhile to work on other projects but I plan on working on this package by the end of November. For now, you can wait or take a look at the roadmap on the README. But I'll comment on this PR again when I'm starting.

Hey thanks for that look forward to helping out on this project.

Also want to contribute on this. Specifically on implementing the doc feature and device simulator feature

@Doetheman of course that'd be great 😁. To reiterate, I won't be starting up this project until  the end November so I'll make sure to comment on this PR.

Currently working on the docs feature. If you want to contribute, please take a look at the roadmap and make an issue saying that you are fixing that feature


ip被封禁

浏览一段时间后 跳出来说大量页面加载有爬虫的嫌疑 有什么解决的办法吗

更换节点或升级账户至铜星

谢谢🙏

@chihchy plz close it since someone else has answered the question.


[REQUEST] Show WoL Execute Log On screen or debug mode ?

When i use this project it was easy to build and work great.
The main problem is, when I shutdown computer and immediately WoL it will work, but after night it will fail to wakeup computer (windows).
The system is windows11，and network device is onboard intel i225v，bios and in system setting already checked, and because it was only happen when it power off after night so i can't use traditional way (wireshark) to debug it.
So the best way maybe look the work log flow when use WoL, but i'm not sure the way normal wakeonlan command are same as this project use. So maybe have a debug mode or a show log option is better for this kind of debug use case ?

Sounds like your router will drop the mac address after some time when your pc is offline. You can try and check if your router/switch still shows your pc if wake on lan isn't working anymore.
Maxbe this forum post will help you: https://forums.tomshardware.com/threads/why-does-wake-on-wan-stop-working-after-a-while.1897437/#post-13127191
This project sends the default magic packet via udp to port 9. This is the default for every wol program.
It's difficult to show any more debug logs, as there is no response after sending a magic packet. It just gets send and never receives an answer from hosts. So debugging why your pc won't wake is basically up to you.

If you have another pc on the network, you can try to find out if it is your pc or the router. Either way, feel free to reopen if it's actually an issue with this project.


[2.x] iCloud (TouchID) userHandle is without dash

PHP & Platform
8.3.6 - macOS 14.4.1 aarch64
Database
PostgreSQL 14.11
Laravel version
11.5.0
Have you done this?

[X] I have checked my logs and I'm sure is a bug in this package.
[X] I can reproduce this bug in isolation (vanilla Laravel install)
[ ] I can suggest a workaround as a Pull Request

Expectation
When I use 1Password / my macbook's TouchId, as long as I have registered it in the system, I should be able to login.
Description
When using 1Password as a Passkey, 1Password seems to be sending the userHandle in the format that this package expects, which is without dash, e.g.:
6943324022c046d395de29ceda194b63
Which will be validated in \Laragear\WebAuthn\Assertion\Validator\Pipes\CheckCredentialIsForUser@validateId like so:
hash_equals(Uuid::fromString($validation->credential->user_id)->getHex()->toString(), $handle);
// using the userHandle 1Password provided, the line above becomes:
'6943324022c046d395de29ceda194b63' === '6943324022c046d395de29ceda194b63';

But my MBP's TouchID seems to sent userHandle with dash, i.e.: 69433240-22c0-46d3-95de-29ceda194b63
the hash_equals above effectively becomes:
'6943324022c046d395de29ceda194b63' === '69433240-22c0-46d3-95de-29ceda194b63';

This makes logging-in using my TouchID to be impossible, I reckon other people also can not  login.
Right now this issue is not a problem in my projects,  as I am using this workaround in my WebAuthnLoginController.php:
    public function login(AssertedRequest $request)
        : \Symfony\Component\HttpFoundation\Response
    {
        // hacky workaround =>
        $userHandle = $request->json()->get('response.userHandle');

        $request->json()->set('response',
            [
                'userHandle' => Str::replace(
                    '-', '', $userHandle ?? ''
                )
            ]
            + $request->json('response')
        );

        $user = $request->login();

        // ...
    }

But someone might want to address this issue
Reproduction
// sorry, don't have the time to make a repro, feel free to just close this issue :)
// the issue itself is easily fixable on userland, with a little hack.

Stack trace & logs
// This is the TouchID
[2024-05-03 09:50:12] local.DEBUG: array (
  'request' =>
  array (
    'remember' => NULL,
    'id' => 'ZDariNmfR72XYzZEG-QMubXC9Mc',
    'rawId' => 'ZDariNmfR72XYzZEG-QMubXC9Mc',
    'response' =>
    array (
      'authenticatorData' => 'REDACTED',
      'clientDataJSON' => 'REDACTED',
      'signature' => 'REDACTED',
      'userHandle' => '69433240-22c0-46d3-95de-29ceda194b63',
    ),
    'type' => 'public-key',
    'clientExtensionResults' =>
    array (
    ),
    'authenticatorAttachment' => 'platform',
  ),
  'handle' => '69433240-22c0-46d3-95de-29ceda194b63',
  'Uuid::fromString()->getHex()->toString()' => '6943324022c046d395de29ceda194b63',
)
[2024-05-03 09:50:12] local.DEBUG: Assertion Error: User ID is not owner of the stored credential.

// This is 1Password
[2024-05-03 09:50:35] local.DEBUG: array (
  'request' =>
  array (
    'remember' => NULL,
    'id' => 'auDdo3Qn2MZ47Fp0bg0hIg',
    'rawId' => 'auDdo3Qn2MZ47Fp0bg0hIg',
    'response' =>
    array (
      'authenticatorData' => 'REDACTED',
      'clientDataJSON' => 'REDACTED',
      'signature' => 'REDACTED',
      'userHandle' => '6943324022c046d395de29ceda194b63',
    ),
    'type' => 'public-key',
    'clientExtensionResults' =>
    array (
    ),
    'authenticatorAttachment' => 'platform',
  ),
  'handle' => '6943324022c046d395de29ceda194b63',
  'Uuid::fromString()->getHex()->toString()' => '6943324022c046d395de29ceda194b63',
)

This should be fixed by simply checking if the user handle sent by the Authenticator is an UUID, and normalize it, on the pipe that checks that.


Horizontal initialize repeat vectors once

+9.7% RPS
Before

Running 30s test @ http://.../plaintext
32 threads and 1024 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
Latency     7.81ms   18.85ms 316.60ms   96.24%
Req/Sec    64.00k    12.48k  271.04k    93.95%
61204200 requests in 30.10s, 7.52GB read
Socket errors: connect 35, read 0, write 0, timeout 0
Requests/sec: 2033518.93
Transfer/sec:    255.99MB

After

Running 30s test @ http://.../plaintext
32 threads and 1024 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
Latency     6.43ms   14.78ms 309.77ms   96.32%
Req/Sec    72.50k     7.76k  303.39k    91.70%
67177075 requests in 30.10s, 8.26GB read
Socket errors: connect 35, read 0, write 0, timeout 0
Requests/sec: 2231776.12
Transfer/sec:    280.95MB

:shipit:

:shipit:


How to use APP_BASE_URL?

Hi,
I'm trying to use the APP_BASE_URL in order to change og:tags in .html when using docker but I don't know how do I have to use it...
Thanks in advance

You just pass it to docker run as an env variable:
docker run -p 80:80 -e APP_BASE_URL="https:\/\/my.domain.tld" alethio/ethereu m-lite-explorer
I'm also getting some errors if I don't escape the slashes, so that's probably a bug which I'm going to investigate.
See also the examples here: https://github.com/Alethio/ethereum-lite-explorer#running-in-docker

But is it the way if I want to change the og:title for example? I though this was the purpose as it says "It is used ONLY in index.html for og:tags". Or maybe there's another way...
Thanks @use-strict

Okey I understand now... as it says "It is used ONLY in index.html for og:tags" I misunderstood it and tried to change other og:tags like og:title.
Thanks @use-strict

Escaping issue will be fixed with https://github.com/Alethio/ethereum-lite-explorer/pull/41

But is it the way if I want to change the og:title for example?

No, it's not. Env vars are there only for simple and very common customizations, like the node URL or the base URL. For more advanced customization, you can either mount a custom config.json or, if code changes are needed, you can build from source instead.
In the case of og:title, the string is the same as the application title, which is shown in the browser title bar. Because that is a localized string, it is taken from the src/translation/*.json files, which are packaged  together with the source code and not configurable. In this case you could fork the repo and build from source, but it is an open discussion whether such customization should be supported OOTB.


⚠ Bofrost.es has degraded performance

In 396e25b, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1198 ms

Resolved: Bofrost.es performance has improved in 51ec783 after 13 minutes.


Collection::filter() and map() should not return brand new objects

See: #1125
Surely these should be more like sort():
https://github.com/laravel/framework/blob/master/src/Illuminate/Support/Collection.php#L199
public function sort(Closure $callback)
{
    uasort($this->items, $callback);

    return $this;
}

Like so:
https://github.com/laravel/framework/blob/master/src/Illuminate/Support/Collection.php#L177
public function map(Closure $callback)
{
    $this->items = array_map($callback, $this->items);

    return $this;
}

https://github.com/laravel/framework/blob/master/src/Illuminate/Support/Collection.php#L188
public function filter(Closure $callback)
{
    $this->items = array_filter($this->items, $callback);

    return $this;
}

Otherwise you lose any manipulation you have done previously... Thoughts?

Seems like transform() was added to somewhat fulfill this request!
https://laravel.com/docs/9.x/collections#method-transform


Promote query_relation and manageiq-api-client gems

This is to lock down the query_relation and manageiq-api-client gems for Euwe release.
@abellotti Please review.
cc @carbonin @kbrock @chessbyte

LGTM!! 👍   will merge when 🍏

nice!

Euwe Backport details:
$ git log -1
commit f48982ab98cacb9db3acbb649696209c193b77d4
Author: Alberto Bellotti<EMAIL_ADDRESS>Date:   Mon Nov 14 15:13:05 2016 -0500

    Merge pull request #12622 from Fryguy/ungit_gems

    Promote query_relation and manageiq-api-client gems
    (cherry picked from commit 1f3c92557825cee8800ec9a6d8147cc58d74659b)


Documentation Link Broken

Hello! The documentation link at the top of the repo and inside the readme do not work for me:

The capitalization of Hooked-Form is what seems like is the cause: https://jovidecroock.github.io/Hooked-Form does reach some HTML (but without any CSS and none of the links working due to the same capitalization issue).

Hey,
Thanks for the issue, everything should be fixed now, I changed the capitalization not that long ago and seems like I forgot to publish the website! Thank you so much for bringing this to my ears, my goal is to have better documentation in the near future so any feedback will be welcome!

Thanks! it's all working for me now 🙇♀

@@all-contributors please add tatchi for bug

@all-contributors please add rawrmonstar for bug


Add scroll into view feature

All rework finished.

I will finalize this PR with a manual merge...


FEAT: Allow excluding dependency from top level (aggregate) target.

Let's say you have a target A that depends on pod B.
In B you want to use somePackage from SPM.
To do this you add the spm_pkg => 'somePackage' and so on to the target in the Podfile. an then spm_dependency 'somePackage' to B's podspec.
If pods are built as frameworks, this means that somePackage will be linked into pod B's framework and also to target A, even if target A does not need it. This needlessly increases A's binary size.
I added an option to not link somePackage to A.
It works, but it is of course possible I added this at the wrong level in code cause I don't fully know what I'm doing.

Hey, there. Thank for the contribution!
Actually, one of the design principle of this plugin is to align with how CocoaPods is handling dependencies.
And with CocoaPods, a pod, regardless of whether it's being explicitly declared in Podfile, or being included as a dependency of another, is still being linked to the main target. Therefore, the current behavior for SPM packages is still consistent with how pods are treated.
Yet, I do agree with you that we should be given the option to opt out for the linking to the main target (as we should have been, in case of pods). So, yes, I'm good with the idea in this PR.

The change LGTM. Could you help fix the lint errors https://github.com/trinhngocthuyen/cocoapods-spm/actions/runs/11349092343/job/31564389693?pr=117?
You can run make format to format the code (or make the suggested changes as in the GH action runs)


Supports natsmq

Codecov Report
Patch coverage: 80.00% and project coverage change: -0.03% :warning:

Comparison is base (6265f30) 80.05% compared to head (a230973) 80.02%.
 Consider uploading reports for the commit 2c3d2bf to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main       #3      +/-   ##
==========================================
- Coverage   80.05%   80.02%   -0.03%
==========================================
  Files          46       46
  Lines        4707     4721      +14
==========================================
+ Hits         3768     3778      +10
- Misses        795      798       +3
- Partials      144      145       +1

Files Changed
Coverage Δ

pkg/controllers/dependencies.go
82.45% <0.00%> (ø)

pkg/controllers/pvc.go
95.23% <25.00%> (-4.77%)
:arrow_down:

pkg/controllers/configmaps.go
64.42% <83.33%> (+1.53%)
:arrow_up:

apis/milvus.io/v1beta1/milvus_types.go
75.65% <100.00%> (+1.57%)
:arrow_up:

pkg/controllers/deployment_updater.go
87.67% <100.00%> (-0.17%)
:arrow_down:

pkg/controllers/status_cluster.go
87.24% <100.00%> (ø)

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


Set the destination incentive addresses on package processing

By setting the escrow, we can let plugins get more access to context for a message. This is better than optimistically getting the destination.

@jsanmigimeno Can you verify that this doesn't break anything? It is needed for the explorer.


Replace use of tensorflow::ops::ReadFile in label_image

Use tensorflow::Env instead of tensorflow::ops::ReadFile so that
we can avoid including whole_file_read_ops for Android.

Can one of the admins verify this patch?

@tensorflow-jenkins test this please


kratos: generate minor token in jsonnet and append to username registered from SSO

If users come from OIDC provider, they may have same username as an already existing one (v.g. Peter) at serlo.
It would avoid the user to register and therefore to login at serlo.
It's quite common to append a minor token at such cases like 'Peter-12klk2'.
Create a simple function at https://github.com/serlo/local-dev-env/blob/main/kratos/data_mapper.jsonnet for generating such token.
See https://jsonnet.org/

After some reflexion, I have two solutions now:

We stick to the idea of appending a token to the user name, just use the claim "issued at" (iat) for it: something like 'Peter-1680090710189', it should guarantee that the username is unique. Downside: if the user gets more active in serlo, they may be bothered with such a ugly name, we have to implement the feature of changing username soon.
we just don't append anything and let the user decide what username they want in case of username clash. We have to trust that Kratos is going to work properly, redirecting the user to the registration form, improve the error message, and the user may complete the registration form with a new username.

I think now that 2 is the best solution.
Anyway, let's wait for more information from our partner before going on with this issue.
Either way, lets


Invocations of Channel#basicPublish is blocking

Invocations of Channel#basicPublish is blocking if a resource-driven alarm is in effect.
We need to add default timeout and ability to set up this timeout in consumer.

An ideal solution would be to have a cancellable coroutine, but I am afraid the only way to interrupt this blocking call is to close the channel.

@wrover There is withTimeout method, we can use it with default timeout and provide a way to set it up. Another option is blocking connections notification

The latter is worthwhile, I'll read it. Regarding withTimeout I am still struggling writing a working example. Take a look if you wonder -- https://gist.github.com/wrover/0becefe45bcc1d6110be96e1e6354f26


[Bug] Handle NaN in 2D Shapes Calculator

Provide an alert to enter every field for a particular shape when clicked on Calculate without entering any data in 2D Shapes Calculator!!

Assign me under iwoc and jwoc

Can you assign me this one under iwoc2024?


New grid_client created after disconnecting fails to connect to TF Chain

I have a script which is meant to periodically check a twin's balance using grid_client. On each iteration, it creates a new client and at the end it disconnects. After waiting some time, it tries again. The problem is that only the first iteration is successful without error each time the script is run.
It appears that after calling disconnect, the client reconnects automatically, which is unexpected.
I am running v2.2.0 on mainnet.
Here's the script (saved under grid_client/scripts):
import { getClient } from "./client_loader";
import { log } from "./utils";

async function main() {

  while (true) {
    let grid3
    try {
      grid3 = await getClient();
      log(await grid3.balance.getMyBalance())
    } catch(err) {
      log(err)
    } finally {
      if (grid3) {
        await grid3.disconnect()
      }
    }
    new Promise(resolve => setTimeout(resolve, 5000))
  }
}

main();

And the output:
$ yarn run ts-node --project tsconfig-node.json scripts/simple_balance_loop.ts
yarn run v1.22.21
$ /home/scott/threefold/repos/tfgrid-sdk-ts/node_modules/.bin/ts-node --project tsconfig-node.json scripts/simple_balance_loop.ts
Credentials loaded from env variables...
2024-02-16 09:35:59        API/INIT: RPC methods not decorated: transaction_unstable_submitAndWatch, transaction_unstable_unwatch
2024-02-16 09:35:59        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
{ free: 0.0150136, reserved: 0, frozen: 0 }
disconnecting
WebSocket connection closed unexpectedly.
Reconnecting...
2024-02-16 09:36:04        API/INIT: RPC methods not decorated: transaction_unstable_submitAndWatch, transaction_unstable_unwatch
2024-02-16 09:36:04        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
Connected!
Error: Client couldn't connect to wss://tfchain.grid.tf/ws after 10 seconds
    at TFClient.wait (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/tfchain_client/dist/node/client.js:65:19)
    at async TFClient.connect (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/tfchain_client/dist/node/client.js:92:13)
    at async GridClient.connect (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/src/client.ts:100:7)
    at async getClient (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/scripts/client_loader.ts:32:3)
    at async main (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/scripts/simple_balance_loop.ts:9:15)
{ free: 0.0150136, reserved: 0, frozen: 0 }
disconnecting
Error: Client couldn't connect to wss://tfchain.grid.tf/ws after 10 seconds
    at TFClient.wait (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/tfchain_client/dist/node/client.js:65:19)
    at async TFClient.connect (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/tfchain_client/dist/node/client.js:92:13)
    at async GridClient.connect (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/src/client.ts:100:7)
    at async getClient (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/scripts/client_loader.ts:32:3)
    at async main (/home/scott/threefold/repos/tfgrid-sdk-ts/packages/grid_client/scripts/simple_balance_loop.ts:9:15)

I think the underlying issue has to do with how connections are retained at the class level in the underlying TF Chain client.
Firing up a REPL:
$ cd ../tfchain_client
$ /home/scott/threefold/repos/tfgrid-sdk-ts/node_modules/.bin/ts-node --project tsconfig-node.json

import { QueryClient } from "."
let client = new QueryClient('wss://tfchain.grid.tf/ws')
await client.connect()
await client.nodes.get({id: 1})
await client.disconnect()

await client.connect() // This hangs
QueryClient.connections['wss://tfchain.grid.tf/ws'].connect() // This works
await client.nodes.get({id: 1})

So neither new clients nor existing clients are able to connect once disconnect is called from the client, but reconnecting by calling connect on the connection itself works.

I also tried on v2.3.0-alpha10. It runs into a bit different issue after a couple of loops; this time waiting on replies to RMB messages, but I never sent any RMB messages (the final message repeats until I issue a keyboard interrupt):
yarn run v1.22.21
$ /home/scott/threefold/repos/tfgrid-sdk-ts/node_modules/.bin/ts-node --project tsconfig-node.json scripts/simple_balance_loop.ts
Credentials loaded from env variables...
2024-02-16 19:43:56        API/INIT: RPC methods not decorated: transaction_unstable_submitAndWatch, transaction_unstable_unwatch
2024-02-16 19:43:56        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
Lock acquired
2024-02-16 19:44:06        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
phase: {"applyExtrinsic":10}, section: balances, method: Withdraw, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM",10158]
phase: {"applyExtrinsic":10}, section: tfgridModule, method: TwinUpdated, data: [{"id":5545,"accountId":"5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM","relay":"0x72656c61792e677269642e7466","entities":[],"pk":"0x0250f7007355f694edb979d1cdc7d94ecfcd3e724bd2fb92ae81bbdfdcd6796f8b"}]
phase: {"applyExtrinsic":10}, section: balances, method: Deposit, data: ["5FqHp29vhYLcAyou8nNGY9T4S8bPTyMQq5GwqkvXBgb81Qjs",10158]
phase: {"applyExtrinsic":10}, section: transactionPayment, method: TransactionFeePaid, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM",10158,0]
phase: {"applyExtrinsic":10}, section: system, method: ExtrinsicSuccess, data: [{"weight":{"refTime":287975000,"proofSize":3893},"class":"Normal","paysFee":"Yes"}]
Lock released
Lock acquired
2024-02-16 19:44:12        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
phase: {"applyExtrinsic":6}, section: balances, method: Withdraw, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM",10610]
phase: {"applyExtrinsic":6}, section: tfkvStore, method: EntrySet, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM","0x6d61696e2f353534352f6e6574776f726b732f4e5739323132656630342f696e666f2e6a736f6e","0x354a3663676136594e6c597a78744e436b69465179314d30304f6c74756d4c56595a374e495a4e505336394a6f583938497863356c4e516d7a5362784c30565545695577797a77727469324a5466693449446c3962625156705436376d4249716858786e7a4d6d684c6f6773385a7450677458446d6d6b4b324b726b4a564d4975507a686b4d63342f634b34454751736779346342576d5a584f666b66426b65744547775132316c4638377561566732546e7973734f2f797532694d"]
phase: {"applyExtrinsic":6}, section: utility, method: ItemCompleted, data: []
phase: {"applyExtrinsic":6}, section: tfkvStore, method: EntrySet, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM","0x6d65746164617461","0x3447344b785834427a686e58643571766f7479756137785979576d764c34793176434d474f574c577773624a6c5a5a3534495658303434527659507273334565314c527061714c5730356a706f6a454543356d45744862664d61764b436852702f4e72526932556f7631356c32354f6d4a686b332b6e47514267427a7435575556306a6b4e426646442f7a4a5a714638757372336431473047554871356668336858374c6a5a62525936706374355a49544e38436d5344374c74712f586274522f49504130316854554c634a682b596b67636942756e7961716275574333534331767667306379583934327530634e526f78543930614d7832556f5469513d3d"]
phase: {"applyExtrinsic":6}, section: utility, method: ItemCompleted, data: []
phase: {"applyExtrinsic":6}, section: utility, method: BatchCompleted, data: []
phase: {"applyExtrinsic":6}, section: balances, method: Deposit, data: ["5DkuYHpdkAThvgLrt9zdPh2DATodb7cXkWihzx6Toh5bbLim",10610]
phase: {"applyExtrinsic":6}, section: transactionPayment, method: TransactionFeePaid, data: ["5F9PuNdNXi7MpPs86Y8jgcGiQanhXXJrwem44aPYyqwfMjpM",10610,0]
phase: {"applyExtrinsic":6}, section: system, method: ExtrinsicSuccess, data: [{"weight":{"refTime":372323681,"proofSize":0},"class":"Normal","paysFee":"Yes"}]
Lock released
{ free: 0.0129368, reserved: 0, frozen: 0 }
disconnecting
2024-02-16 19:44:15        API/INIT: RPC methods not decorated: transaction_unstable_submitAndWatch, transaction_unstable_unwatch
2024-02-16 19:44:15        API/INIT: Not decorating runtime apis without matching versions: TransactionPaymentApi/4 (1 known), Metadata/2 (1 known)
{ free: 0.0129368, reserved: 0, frozen: 0 }
Waiting for the rmb responses to be received before closing the connection
Waiting for the rmb responses to be received before closing the connection
Waiting for the rmb responses to be received before closing the connection
Waiting for the rmb responses to be received before closing the connection
Waiting for the rmb responses to be received before closing the connection
...

The main point behind WebSockets is to establish a persistent, two-way communication channel between a client and a server. This contrasts with traditional HTTP requests
Establishing a WebSocket connection involves a handshake process,  and recreating clients frequently adds unnecessary overhead to both your client and the server, and generally, not necessarily in your case, if the server maintains any information associated with a specific WS connection (e.g. session data), disconnecting and reconnecting forces you to reestablish that state again. And, definitely could be subject to rate limits
I suggest that you move the logic outside of the loop, and the client internally when it tries to invoke a call on the chain, it will reconnect if, for whatever reason the connection is closed.  That being said, will still look into the issue to provide a way out.

This is meant to be a minimal example of an issue experienced by one of our users. Originally they were holding a connection open indefinitely. Later they switched to an approach like shown after being advised by our team that it was better to disconnect and reconnect after each request.
I believe the loop time is actually 60 seconds in the user's app. But I don't think rate limiting is at play here, because I can restart node immediately after a keyboard interrupt and it will reconnect. Also note that if I reach into QueryClient.connections, I have better luck reconnecting than when calling the abstraction.
The issue is that it seems our library can under some circumstances get into a state where it can never reconnect to a given TF Chain endpoint without rebooting the interpreter or doing some intervention under the hood.

Work Complete
The client was trying to reconnect in case the network was not reachable for 10 minutes. Now also, added a new option (keepReconnecting) for the client to reconnect after 10 minutes and when the network is back, the client should operate normally. (it's available on v2.3.0-rc2)

Also note that if I reach into QueryClient.connections, I have better luck reconnecting than when calling the abstraction.

This issue was on v2.2.0, but it's solved on alpha releases of v2.3.0, so it should be working on v2.3.0-alpha10 or later releases.

I also tried on v2.3.0-alpha10. It runs into a bit different issue after a couple of loops; this time waiting on replies to RMB messages, but I never sent any RMB messages (the final message repeats until I issue a keyboard interrupt):

The grid client opens an RMB connection on start and keeps sending ping messages to ensure that the connection is not broken. It waits till the pong message is received and it will close the connection and the client will exit gracefully.

Verified, Devnet branch.
Connection and disconnection seem fine, even on a slow network.

@scottyeager If you still have any issues, please comment.

Thanks. I'll ask the upstream user to test and report back if there's any further issue.


[BUG]

To help you resolve your issue faster please make sure you have done the following:

Searched existing issues (even closed ones) for your same problem.
Make sure you have installed the required dependencies listed on the readme.

name: Bug report
about: Create a report to help us improve
title: ''
2022-11-19-1.log.gz
labels: bug
assignees: ''

Some things that really help get your issue resolved faster are:
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

<!-- Replace this text --!>

<!-- Replace this text --!>

Expected behavior
A clear and concise description of what you expected to happen.
Environment
A concise description of your environment: Omen Craft version,
Minecraft version, Fabric API, operating system, etc.
Additional context
Add any other context about the problem here.
Thanks!
P.S. If it doesn't look like you read the above then your issue will likely be closed without further explanation.

Unable to reproduce the problem specified in the logs with recommended RAM.
However, this does not mean that this is acceptable to close.
Will look into further optimizations and other launcher solutions.
The Curseforge launcher seems to currently provide a lot of issues that we're seeing, including the corruption of profiles on downloads.
Will update this issue when further information is available.

This should be fixed with the recent updates, and recent removals of certain mods.


Machine Disruption Gate

Tell us about your request
We already have a way to terminate the instance after X amount of time. It would be great to have a way of doing the same at a specified time as well. For example, say I want to terminate a node(s) at 2:00 AM UTC to save running costs.
Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
We are looking to have the ability to scale down nodes at certain times, with ASGs it is easy using the scheduled actions but since Karpenter is managed outside of an ASG (which is a good thing), we can't automatically scale them down to save costs.
Are you currently working around this issue?
I may end up writing a lambda function to do the same but it would be great to have this feature inbuilt

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Solved with https://github.com/kubernetes-sigs/karpenter/pull/849

@njtran how can this be achieved now? Specifically looking to block nodes from by disrupted due to expiration or drift during business hours. Disruption due to emptiness is desired anytime however.

This should be included in the next release. It sounds like https://github.com/kubernetes-sigs/karpenter/pull/936 is what you're interested in tracking

We are looking to have the ability to scale down nodes at certain times, with ASGs it is easy using the scheduled actions but since Karpenter is managed outside of an ASG (which is a good thing), we can't automatically scale them down to save costs.

I'm a bit confused so how this could be achieved with latest version of Karpenter?
Looking at doc I don't see any way to scale down NodePool completely during off hours which is original request about.

I don't think you can achieve that with this latest version of Karpenter.  As a workaround we've had to patch the nodepool to change the cpu limit to 0 to prevent new Karpenter nodes from scaling up and then use a function to delete the existing nodes that Karpenter provisioned before we patched the cpu limit.  It would be great if Karpenter handled this for you or provided a way to scale down based on a parameter or schedule.

I don't see any way to scale down NodePool completely during off hours which is original request about.

You could try having a cron job that applies the nodepool when you need scale up and removes it when you need scale down?  If you have clear windows of schedules when you want the scaling to start and when to remove all the nodes that should be achievable.
Deleting the nodepool deletes all subsequent nodeclaims && nodes and effectively does what you need.
Another more involved consideration we have chatted about following a pattern similar to the deployment-> pod pattern.
You could provision static instances in a nodepool, or you can set it to auto. Then you simply would have a cron job set that count to 0 during off hours and "auto" during business hours.
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: general-purpose
spec:
  nodes: 0 | "count"  or "auto"

There are some complications to this model that would need to be designed further though in regards to picking the instances during scale up, or even choosing which instances to scale down in a static model.

Removing and reapplying the nodepool is not an option for us as our nodepools get deployed via a pipeline to a controlled environment so we would have to re-run the pipeline every time we want to scale up to reapply the nodepool.  In some environments, something like this would require a change request.
My thinking on this is there should be a flag in Karpenter to have it scale down (cordon, drain, delete) nodes previously provisioned and not provision any new nodes like it does when the cpu limit in the nodepool is set to 0.  Behavior similar to an ASG where I can just set my min/max/desired to 0 and it scales everything down.  The nodes: 0 "count" or "auto" is an interesting concept, although still trying to wrap my head around how this would actually work.

Am I misunderstanding the ask? Sounds like you can block disruption completely with NodePool.Disruption.Budgets
https://karpenter.sh/docs/concepts/disruption/#disruption-budgets. If you don't think this is properly configurable through disruption budgets, please cut another issue, rather than commenting on a closed issue so that we can track this better.
Specifically on the ask of "scaling down a specific number of nodes with a period of time", Karpenter will scale up and scale down nodes according to your workloads. If you want to scale down your nodes, you'll need to first scale down your workloads to 0, at which Karpenter will consolidate your instances.

+1 To opening a new issue to explain your usecase. Seems these users want a new feature similar to the lambda function to scale down the nodegroups to 0.
The original ask for machine disruption gate has been solved already so any new feature requests should go on a new issue.  There are many ways in k8s to scale down the nodes either delete them all via k delete with a cron job  paired with a disruption budget or have a cron job scale down all the deployments then karpenter will naturally delete all of the nodes.
Regardless @AnhQKatalon  or @ronberna  please create a new issue rather than discussing on a closed issue :)

I went ahead and opened a new issue here


Re-scoring without re-running solver

Is there a way to run a new scorer on an existing task from its logs?

Yes, you can use the inspect score command: https://ukgovernmentbeis.github.io/inspect_ai/scorers.html#sec-scorer-workflow


extension with py_limited_api=True not linked with PYTHON3.DLL

I tried to write a simple CPython extension module that just prints "hello world" in order to try out the py_limited_api=True option of setuptools Extension class.
The code can be found here: https://github.com/anthrotype/hello-world-cpython-extension
When I build on macOS or Linux, the generated extension module has abi3 suffix and can be loaded on different CPython versions (e.g. 3.5 and 3.6).
On Windows however, the module (which doesn't get abi3 suffix, but is simply called hello_world.pyd when the py_limited_api=True option is set) cannot be imported by different CPython 3.x minor versions.
Dependency Walker says that the .pyd file is linked with PYTHON36.DLL, whereas I would have expected it to be linked with the stable API version of that which is called PYTHON3.DLL.
I came across this issue while debugging another related issue with bdist_wheel --py-limited-api that raises AssertionError on Windows because abi3 tag isn't supported on that platform:
https://github.com/hynek/argon2_cffi/pull/32
cc @agronholm @dholt @zooba @pfmoore @dstufft @jaraco etc.

You could probably pass the #define as an argument to Extension() also.


Proxied URL paths are wrong using 'path-based addressing'

Reported by @yosefd:
For example, when sending the request http://anodejs.cloudapp.net/pull.sys/history?$inst=X, if the request will be proxies, the actual URL the app will see if /pull.sys/history (instead of just /history).

Fixed by 13ff4d9e02df8a9dd4b15394a7f2d9484aec7d68


CSV export via REST API

Closes: #2569
This is not ready to merge at this time, as the flip-side of CSV import will obviously be broken by this changeset. Most likely this will be the target branch for #3715 as a follow-on PR before this can be merged down to next.
What's Changed

Implement NautobotCSVRenderer for DRF and wire it up to the generic REST API list and retrieve views.

This takes the queryset or object instance from the view, plus the associated serializer class, and renders it to CSV instead of JSON or HTML.
I didn't end up adding a dependency on django-rest-framework-csv as I found enough opinionated differences between that library and our specific requirements to where it was simpler to implement our own from scratch with that library as inspiration.
Most related objects are serialized as their natural keys
GenericForeignKeys are serialized as content-type + ~PK~ natural key.
M2M relations and tags are serialized as their natural-key-slugs (so that we don't have to deal with trying to represent a list of lists in a CSV column)
Custom field values are serialized as individual columns

Export URLs now take the form /api/app/model/?format=csv instead of /app/model/?export; I've updated the legacy export_button template tag to handle this accordingly.
Remove csv_headers and to_csv from all models

This does totally break the existing CSV import implementation since the CSVForm classes typically relied on csv_headers to define their fields. That will be addressed by ripping these forms out in #3715.

Remove CSV export test from generic View test case and add @skip decorator to some related tests that will also need to be rethought in #3715.
Add basic CSV export test to generic API test case

Revise a couple of serializer implementations to address issues I noticed while running this test.

Remove queryset_to_csv from generic legacy views as well as from NautobotUIViewSet

Example CSV
nautobot_locations.csv
TODO

[x] Explanation of Change(s)
[x] Added change log fragment(s) (for more information see the documentation)
[x] Attached Screenshots, Payload Example
[x] Unit, Integration Tests
[x] Documentation Updates (when adding/changing features)
[x] Example Plugin Updates (when adding/changing features)
[x] Outline Remaining Work, Constraints from Design
[x] Maybe change the GenericForeignKey representation to content-type + natural-key-slug? This would require some extra DB lookups though I think.
[ ] Add support for exporting computed field or relationship values?
[x] Test handling of JSON fields (User.user_config, ConfigContextSchema.schema, JSON custom fields) as there are probably some bugs here
[ ] Do some performance profiling - it "feels" noticeably slower to render the CSV compared to the speed of the JSON rendering.

Updated csv:
locations.csv
Note the addition of a natural_key_slug column, as well as the use of natural-key-slugs for all foreign key fields (status, parent, location_type, tenant) and for tags

One issue with the latest implementation is that since we're no longer overriding the list and retrieve API endpoints, we don't currently have a way to specify the CSV filename, and so by default it gets a random name assigned by the browser like WcUkQR3Y.csv. This is a bit ugly, it would be good to find a fix for this.


Social Media Updates?

This isn't an issue, so it can be closed as soon as you see this.
I just wasn't sure how else to message you about if there was a social media account to receive updates about Jurassic, or I just need to pop my head over here every once in a while.

Sorry, that's a negative, I'm not a big believer in social media :-)  You might want to consider "watching" the repository if you want change notifications.
https://help.github.com/articles/watching-repositories/


xil print -f on a bool attribute of an attrset was flipped compared to Nix

Needs more investigation because oh gods.

I appear to have encountered it breaking.

Expectation:
$  nix run github:Qyriad/Xil -- eval -f github:Qyriad/Xil#default.meta
Returning installable github:Qyriad/Xil#default.meta
{
    name = "xil-0.0.1";
    mainProgram = "xil";
    broken = false;
    unfree = false;
    position = "/nix/store/y4gfc3bcrg4dkxvwdpgpab95zfgxwk34-source/package.nix:26";
    unsupported = false;
    insecure = false;
    outputsToInstall = [
        "out"
    ];
    available = true;
}

Example:
$  nix run github:Qyriad/Xil -- eval -f github:Qyriad/Xil#default.meta
error: installable '/nix/store/0vyi8f8l8cya10dmgfrj0df2iqxlhiyi-source' does not correspond to a Nix language value
Try 'nix --help' for more information.


Improve development speed - modularise lucide imports

For those who ran into the same problem as myself, consider speeding up development speeds by modularising the lucide imports via the next config:
// next.config.js
//...
modularizeImports: {
    "lucide-react": {
      transform: "lucide-react/dist/esm/icons/{{kebabCase member}}",
    },
  },
//...

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


Google.Cloud.Diagnostics.AspNetCore IServiceCollection Extension methods are not idiomatic.

Nearly every example of an Add extension method to IServiceCollection that takes arguments takes them by taking a setup Action and sending it some sort of options object.
Examples include AddMvc, AddAntiForgery, AddAuthorization, AddLocalization and many others.

This was brought to my attention by my conversation with @SurferJeffAtGoogle on the Google Cloud Visual Studio extension issue #575

Fixed, will be out in the next release.


Updated build output

This is a proposed output and a spike on some APIs. For the sake of not having to re-edit the PR description, I'll post updates on the output below.
Links
This PR is the result of quite a long process of revising the build output started around April 18th. Unfortunately, the documentation for those pieces is internal, but towards the end, I hope to release some formalized/finalized version.
Primary documents:

Reverse timeline of build output a chronological ordering of events regarding the build output. I started this doc on April 24 which as of today is 36 working days accounting for hackweek (5 days), my 10 year anniversary (5 days), and weekends (18 days). I've made 19 entries or a little under an entry every two days that I've worked on this project. Of all the documents I've created, this has been the most useful.
Build output spec (in progress) and related output spike which were used to generate the initial output we were settled on implementing.
CNB Build output META - COIL a table-of-contents of sorts for the larger project.

Miscellaneous supporting documents:

Problems Values Stakeholders Possibilities Evaluation - Logging.
literature review.
Why don't animations work in build outputs? animations can be simulated by using codes to delete and re-write characters over again. This works with the CLI but not via git push heroku, and the doc details an exploration into the details of why.
CNB build output implementer problems.
Ruby CNB build output for getting started guide 2023-04-18.
Historical: 2020/10/09 RFC: Heroku CNB Logging Style.
Hackweek team docs.
Node.js CNB Output Thoughts - Josh Lewis.
build output notes random assorted thoughts.
CNB build output actions a list of actionable activities for anyone who wants to participate in the exploration.
CLI Output Examples for Other SF Products.
2023-05-15 Output spike (Ruby build) replaced by output spike.
CNB build output - User Problem collection.
Ruby Classic build output for getting started guide 2023-04-18.

Work item: GUS-W-13115766

2023-06-28
Screenshot:

Raw output logs with no color:
$ docker rmi my-image --force  &&
pack build my-image --buildpack target/buildpack/debug/heroku_ruby --path buildpacks/ruby/tests/fixtures/default_ruby
Error: No such image: my-image
22: Pulling from heroku/builder
Digest: sha256:6f1ce423a17b35fec1a7863b3d100edec221470e2900680f6ead4c991f49bffd
Status: Image is up to date for heroku/builder:22
22-cnb: Pulling from heroku/heroku
Digest: sha256:4344cb4c208070615e278ebcb89fc5e47b3df2ea65492e92a8a29028e34e71d5
Status: Image is up to date for heroku/heroku:22-cnb
===> ANALYZING
Image with name "my-image" not found
===> DETECTING
heroku/ruby 2.0.0
===> RESTORING
===> BUILDING

# Heroku Ruby Buildpack

- Ruby version `3.1.3` from `default`
  - Installing [----------------] (15.718s)
- Bundler version `2.4.5` from `default`
- Bundle install
  - Running `BUNDLE_BIN="/layers/heroku_ruby/gems/bin" BUNDLE_CLEAN="1" BUNDLE_DEPLOYMENT="1" BUNDLE_GEMFILE="/workspace/Gemfile" BUNDLE_PATH="/layers/heroku_ruby/gems" BUNDLE_WITHOUT="development:test" bundle install`

      Fetching gem metadata from https://rubygems.org/..
      Fetching rake 13.0.6
      Installing rake 13.0.6
      Using bundler 2.4.5
      Fetching rack 2.2.3
      Fetching webrick 1.7.0
      Installing webrick 1.7.0
      Installing rack 2.2.3
      Bundle complete! 3 Gemfile dependencies, 4 gems now installed.
      Gems in the groups 'development' and 'test' were not installed.
      Bundled gems are installed into `/layers/heroku_ruby/gems`

  - Done (9.433s)
- Setting default processes(es)
  - Detecting gems
  - Running bundle list  [-] (0.143s)
  - Detected rack app (`rack` gem and `config.ru` at root of application)
- Rake assets install
  - Cannot run rake tasks (no Rakefile)
  ! Help: Add `Rakefile` to your project to enable
- Done (finished in 26.654s)
===> EXPORTING
Adding layer 'heroku/ruby:bundler'
Adding layer 'heroku/ruby:env_defaults'
Adding layer 'heroku/ruby:gems'
Adding layer 'heroku/ruby:ruby'
Adding layer 'buildpacksio/lifecycle:launch.sbom'
Adding 1/1 app layer(s)
Adding layer 'buildpacksio/lifecycle:launcher'
Adding layer 'buildpacksio/lifecycle:config'
Adding layer 'buildpacksio/lifecycle:process-types'
Adding label 'io.buildpacks.lifecycle.metadata'
Adding label 'io.buildpacks.build.metadata'
Adding label 'io.buildpacks.project.metadata'
Setting default process type 'web'
Saving my-image...
*** Images (670b4a5562dd):
      my-image
Reusing cache layer 'heroku/ruby:bundler'
Reusing cache layer 'heroku/ruby:gems'
Reusing cache layer 'heroku/ruby:ruby'
Successfully built image my-image

i guess i was looking for a design that mapped more to specific UX language/terminology.

One of the hardest things in computer science. I'm open to suggestions. I wanted to start with a broad suite of tools and get more specific over time. The say_with_details is one example there where I found I kept having to build_output::fmt::details again and again, and it made sense to have a helper API. Some of the argument names are slightly suggestive like build_output::section() takes a topic argument to suggest a noun rather than a verb.
I'm happy to brainstorm/sketch either naming or ideas in person or async. I had considered something like encoding a set of known/approved verbs i.e. installing/creating/downloading etc. to standardize on some of the languages and also give us a very consistent visual output, however, at this stage didn't want to be overly restrictive


Unbreak -Werror on 32-bit platforms

size_t requires %z, not %l modifier. See error logs: armv7, i386.
Wayland backend also used %lu instead of %ld but there should be no difference given size_t is unsigned (unlike ssize_t).

Sorry for minor noise due to (re)formatting commit message. I've started from headless regression and worked until build succeeded.

Thanks!

%zu is the correct format specifier for size_t. %zd is for ssize_t.


Error is thrown when sender is of type CommandSender or ConsoleCommandSender and a player tries to type the command

When I create a new command with the sender being of type CommandSender or ConsoleCommandSender (bukkit) I can use the command just fine from console but when a player tries to type the command in chat an error is thrown.
Error: https://paste.helpch.at/amejepahuw.cs
Code: https://paste.helpch.at/xaludoqexu.rb
I am also using triumph-cmd 2.0.0-Snapshot.
Edit: Forgot to mention I've tried reloading gradle, refreshing dependencies and also invalidating cache in intellij.

OK. This might not actually be related with the radius type. The error now shows for a command that has the sender set as the player as well. https://paste.helpch.at/zekayudame.cs https://paste.helpch.at/ibuzavumuk.rb
Also there is no tab completion for sub commands at all.

I've tried to replicate this on the latest snapshot (paper 1.19.2 this time) in hopes that I might be able to find a fix as well, but I could not get it to break again. I'm guessing either this was fixed or was a problem with my set-up.


Bug: OpenAPI docs parse pydantic Field()

Description
Referencing a discussion on Discord: https://discord.com/channels/919193495116337154/1093516724864811038
It seems that the pydantic Field() in the model isn't parsed and generating title/description fields in the openapi.json.
Running on docker python:3.11-alpine
URL to code causing the issue
No response
MCVE
from starlite import Starlite, post, Controller
from pydantic import BaseModel, Field
class SomeRequestData(BaseModel):
    hostname: str = Field(title="The hostname", description="Some description")
    interface: str = Field(title="Interface", description="Interface to use")
class SomeController(Controller):
    path = "/somepath"
    @post(
        path="/test", summary="testing", tags=["Test"], description="Test description"
    )
    async def request_example(self, data: SomeRequestData) -> str:
        return "test"
app = Starlite([SomeController])

Steps to reproduce
No response
Screenshots
Current (as in 2.0.0a4):

Expected (as in 1.51.9):

Logs
No response
Litestar Version
litestar==2.0.0a4
Platform

[ ] Linux
[X] Mac
[ ] Windows
[X] Other (Please specify in the description above)

I looked into this a bit since we happened to notice it today as well.
It looks like it applies to both request bodies and responses.
Looking at the source it appears litestart._signature.field.SignatureField doesn't support descriptions. There's an extra attribute but that appears to be used for creating examples.

It looks like it applies to both request bodies and responses.

Correct.
I went down the rabbit hole and tried to figure out why this happens. Looks like construct_open_api_with_schema_class isn't called anymore from app.py:update_openapi_schema when I'm comparing it to 1.51.10.
Simply adding this doesn't work because the OpenAPI class isnt based on pydantic BaseModel anymore but the litestar BaseSchemaObject.
The function construct_open_api_with_schema_class relies on the BaseModel.copy(deep=True) which doesn't exist on BaseSchemaObject.