Publish helm chart to helm registry

Please publish helm chart to publicly available helm registry. The easiest way is to use GitHub Pages and official GitHub action helm/chart-releaser-action.
I'm ready to add a workflow and create a PR if you like

Hi @Nitive and thank you for your idea! The chart for k8s-iae is now published via our public ChartMuseum. Please let me know if that works for you.

Great, thank you!


Submit the password using the SDK

We had set a password to protect a space not exposed to the world because we only allow the users with the membership to access it.
But we don't like to let the users enter the password by themselves.
The use cases are:

For paid users: can access the space directly.
For unpaid users: blocked by the password form.

Do you have a plan to implement the feature submitting the password by SDK in the near future?
Thanks!

To add to this, I would prefer not to have the password be passed to the front end in the first place.
It would great if I could provide the SDK a token from the public-access endpoint

@CherryKerry Thanks for replying!
My doubt is:

from the public-access endpoint

First of all, we need to make it not exposed to the public.
Because people with the public URL can access it by copy-paste it into another browser tab.
So the URL link can be shared with everyone then it's not under our control.
That's my concern. 🤔
Thanks!

Hi there,
We can certainly consider this. I will discuss this with the internal team and get back to you.  Note that you can also email our developer list to make suggestions or if you have any additional questions about our service and sdk.

@gbruce Thank you so much. It would be very helpful if Matterport could have such a feature!!

@abla00
The public-access endpoint I'm referencing is the url the password form posts to in order to generate a Matterport auth token https://my.matterport.com/api/v2/models//public-access/
My back end can call this url with the models password and generate a token. This way my password that I consider a secret doesn't go anywhere near the front end

@CherryKerry Got it!!
Oh yes, I had tried this public-access API and it returned a token.
So everything will be great if I could use the token to do any further actions in our case.

Hi @gbruce,
Do you have any updates about this issue?
Thanks in advance!!

Hi @gbruce,
Do you have any updates about this issue?
Thanks in advance!!

Hi all,
Have you decided if you are going to implement this feature?
Or any other approaches can fulfill it?
Thanks!

Hi @abla00
Did you solve it?

Hi @federicobriozzo,
Not yet and there is no progress. 💦

Please, tell me if you find the way. I'll write to you if we do it.
Regards

Did anyone ever get anywhere with this?  I have a client who has exactly the same issue; its a club and wants the Matterport 360 only to be able to be accessed by members using their member password which they set.

Hi everyone,
We (Matterport) are aware of the demand for private model access methods and are working towards this goal. Please take a look at our OAuth example, and if you are interested in this capability please email us at<EMAIL_ADDRESS>@360mike It is currently possible to password protect a model
We are planning on disabling issues for this repository as we have an active developer support channel available at<EMAIL_ADDRESS>Regards


Only animate elements inside a frame

Hello, thanks for making this library, it's a blast :fire:
One thing I am wondering is, would it be possible to only animate the elements inside a Turbo frame (when navigation or form submit happens and targets a frame)?
From what I understand, it doesn't look like it's possible at the moment looking at the disabling animations section. But would it be possible once that is fixed? It would help a lot as right now, the only solution I found is to disable Turn when the navigation starts, show some skeleton and then re-enable Turn when the frame is rendered.
By the way, I think there's a typo in the Tailwind usage :
<main data-turn-exit="turn-exit:animate-exit" data-turn-enter="turn-exit:animate-enter">

should be
<main data-turn-exit="turn-exit:animate-exit" data-turn-enter="turn-enter:animate-enter">

Thanks for this, and glad you're having fun with it :)
I've not yet implemented animations for turbo frames as their lifecycle events are a little different (e.g. there isn't a turbo:frame-visit event).
From my brief experiments it seems like turbo:visit isn't fired on standard frame navigations and therefore Turn won't animate. However, when a frame visit is promoted to a page visit via a data-turbo-action attribute, then it will trigger a turbo:visit. Unfortunately there's currently no way to determine when a turbo:visit, originates from a frame visit or a standard full link click. https://github.com/hotwired/turbo/pull/750 might help with that, but I reckon adding a turboFrameId attribute to the turbo:visit event details could also be another option.

…oh and feel free to add a PR for that tailwind typo. Thanks!

Thanks for your answer @domchristie !
Indeed, I forgot to mention it happens when the frame's navigations are promoted to visits (which makes sense).
It would make sense for Turn to handle frames separately from simple visits with drive, whenever Turbo makes this possible. It would make it very easy to handle state change within a frame, even if it's not promoted to a visit.
For a quick summary of how I currently disable the animations within a frame, I use a Stimulus controller on the root html element, which exposes Turn's start and stop methods. Then simple :
<turbo-frame data-action="turbo:before-fetch-request->turn#stop turbo:visit@window->turn#start" data-turbo-action="advance" id="some-frame">
    ...
</turbo-frame>

I made a PR to fix the small typo!

I use a Stimulus controller on the root html element, which exposes Turn's start and stop methods.

That looks great! Thanks for sharing.
I had a look at adding a frameId attribute to the turbo:visit event details. Unfortunately it's not straightforward. We'd need to pass the frame ID into the frame options when creating the visit here: https://github.com/hotwired/turbo/blob/4593d06ce58d17af5b17495ad8524eaa9bc2f5d2/src/core/frames/frame_controller.ts#L379-L406. The frame option already exists and it's used for programmatic visits: Turbo.visit(url, { frame: 'frame-id' }). Session#visit uses this option to alter it's behaviour, which I don't think we want in this case. (Although I could be wrong!)

Hi @domchristie ,
The best turn (lol) of event here would be for Turbo to add specific events to frames. Or pass a frameId as you mentioned in the visit event. If frames could be handled separately from a simple "visit" action (much like a stream) it would allow for a better handling of things (because they would all have their own logic in what to animate).
For example, visits would animate the whole page. Frames would only animate child nodes. And streams could animate re-rendered nodes but that may be too complicated (or not).
That's only my opinion though!

There might be some other ways to determine when a link click targets a frame. A combination of the following might help:

turbo:before-fetch-request is dispatched on the frame before turbo:click, so we can start tracking a frame visit from then
Turbo's frame navigation uses its own event system and calls preventDefault on the turbo:click event, so we might be able to check event.defaultPrevented
We could reverse engineer / copy the logic that checks if a link will trigger a (promoted) frame visit

Hey @domchristie, checking the event.defaultPrevented sounds like a good idea, but it could lead to false positives if something else prevented the event? At this point, I still don't understand why we can't just have a simple way of knowing when a visit is done from a frame.

At this point, I still don't understand why we can't just have a simple way of knowing when a visit is done from a frame.

The code for tracking a click through to creating a Visit and then dispatching the lifecycle events is quite complex. Changes must also consider the impact on the iOS/Android adapters which have restrictions on what type of JavaScript object type can be sent to them (e.g. you can't send them a <turbo-frame> DOM node). So adding a frame detail to lifecycle events is not straightforward.
Also, it doesn't look like external pull requests are being merged at the moment. Feel free to dig around though :) You might find a nice way to patch it.

@domchristie Thanks for making it clearer. I will perhaps try to dig around or find a workaround for it... All I could think of was that, Turbo adds a turbo-frame header to the request it sends when navigating using a Turbo frame, so would it not be possible to somehow check if this header is present and do something with it? But it doesn't seem like Turbo dispatches anything else than the URL being navigated to (and the action).

All I could think of was that, Turbo adds a turbo-frame header to the request it sends when navigating using a Turbo frame, so would it not be possible to somehow check if this header is present and do something with it?

Oh nice idea! Yeh, it’ll be interesting to see if that could work. Off the top of my head, it still might be tricky to accurately match up the fetch event with the visit event, but an estimate might be doable

I tried playing around with it a bit, and it seems that only POST requests include the Turbo-Frame header... Or at least, the turbo:before-fetch-request event doesn't include the header on visits.


Orientation only specifies recording output

@rpopovici recently added functionality to automatically set the output file's orientation based on the device's sensor data, which is great. However, there are still some cases where you might need to explicitly set the orientation prop of the camera. For example, when the device is held near-horizontal the accelerometer can't know whether you were intending to record something in landscape or portrait.
The orientation prop is meant to deal with this kind of case, but unfortunately it is too powerful! Currently orientation sets the orientation of both the preview display and the output file. This makes it impossible to eg. record landscape videos if the user's UI is rotation-locked to portrait.
This PR simplifies the orientation code and updates it to only determine the output file's rotation. It's still important that the preview orientation stays in sync as well of course, so I've moved the preview rotation code to the camera's initialization, so the preview will always be in sync with the device's rotation.

This makes a lot of sense to me 👍
cc/ @rpopovici

@rt2zz Yes, it makes sense to me too, to do this, but we have to do it on android also :D and I am really busy right now..


why array in dart named is List?

Why array in dart named is List?

I am not a designer of the language or developer but my guess is the reason is that the Dart List does have similar properties to the List class in C# and List interface in Java implemented by ArrayList. A List in Dart is per default able to change size when elements are added and removed.
When calling something Array I usually think it is a fixed sized list of elements like arrays in Java.

@julemand101 But if I need a Array with constant length I need use List everywhere?

Ohh, List.filled  solved my problem!!!
https://api.dart.dev/stable/2.8.4/dart-core/List/List.filled.html

Yes, there are multiple ways to create fixed-length lists in Dart which are locked in size. One of them is List.filled. Take a look at the others here: https://api.dart.dev/stable/2.8.4/dart-core/List-class.html#constructors

@julemand101 is correct. Dart decided early on to only have one List-like interface, not one for fixed length lists, one for immutable lists and one for growable lists. Therefore the interface contains all the methods of a growable list, and the interface is named similarly to Java's List interface.<
You can create fixed-length lists using, e.g., List.filled. You can currently also use List<int>(8) to make a fixed-length list of length 8, but that constructor will stop working when we introduce null safety, so get used to List.filled.


[Move Replica] Enable StatsManager to dynamically add/remove store

Adding two methods in StatsManager to enable dynamic add/remove store.

Codecov Report

Merging #1057 into master will increase coverage by 0.11%.
The diff coverage is 75.67%.

@@             Coverage Diff              @@
##             master    #1057      +/-   ##
============================================
+ Coverage     68.56%   68.67%   +0.11%
- Complexity     4805     4813       +8
============================================
  Files           382      382
  Lines         30408    30472      +64
  Branches       3867     3877      +10
============================================
+ Hits          20849    20928      +79
+ Misses         8526     8498      -28
- Partials       1033     1046      +13

Impacted Files
Coverage Δ
Complexity Δ

...main/java/com.github.ambry/server/StatsHeader.java
100% <100%> (ø)
4 <1> (+1)
:arrow_up:

...ain/java/com.github.ambry.server/StatsManager.java
74.19% <75%> (+34.19%)
20 <6> (+11)
:arrow_up:

...in/java/com.github.ambry.store/BlobStoreStats.java
69.54% <0%> (-1.95%)
99% <0%> (-3%)

...ub.ambry.clustermap/HelixBootstrapUpgradeUtil.java
70.33% <0%> (-1.59%)
52% <0%> (ø)

.../src/main/java/com.github.ambry.store/Journal.java
90.76% <0%> (-1.54%)
24% <0%> (-1%)

...ain/java/com.github.ambry.router/PutOperation.java
90% <0%> (-0.77%)
81% <0%> (-2%)

...va/com.github.ambry.replication/ReplicaThread.java
72.5% <0%> (-0.52%)
60% <0%> (ø)

...in/java/com.github.ambry.server/AmbryRequests.java
76.24% <0%> (-0.37%)
88% <0%> (ø)

.../com.github.ambry.clustermap/HelixParticipant.java
80.18% <0%> (-0.37%)
21% <0%> (-1%)

...ava/com.github.ambry/config/ReplicationConfig.java
100% <0%> (ø)
1% <0%> (ø)
:arrow_down:

... and 6 more

Continue to review full report at Codecov.

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

Addressed comments from @vgkholla and @xunyin8. Added concurrent tests for dynamically adding/removing replica in StatsManager.
./gradlew build && ./gradlew test succeeded.

@cgtz reminder to review
./gradlew build && ./gradlew test succeeded.

Addressed @cgtz 's comments.


On pressing "T" on physical keyboard, it randomly adds a string to input field

aframe-super-keyboard: v2.0.2
Similar issue happens with aframe-super-keyboard default examples
Why this code is being used?
document.addEventListener('keydown', function (ev) {
if (ev.key === 't') {
var ss = '';
var s = 'abcdefghijklmopqrstuvQWIEUTGASDLIGKBXACQWETL102394676457';
var l = Math.floor(Math.random() * 20);
for (var i = 0; i < l; i++) ss += s[Math.floor(Math.random() * s.length)];
self.el.setAttribute('super-keyboard', {value: ss});
}
});

oh sorry, that's a special key to throw a random text for debugging purposes. Super-keyboard was not intended to be used using the keyboard, and that was left. But you can easily remove the behavior by removing all that code.


[Feature Request]: In-App Chat and Community Forums

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
The In-App Chat and Community Forums feature enables registered and logged-in users of the DonorConnect application to engage in real-time discussions and share experiences with fellow donors. This interactive platform allows users to join a general chat room, participate in topic-specific forums, and connect through direct messaging, fostering a sense of community and collaboration around charitable causes.
Use Case
Users can log in to DonorConnect, navigate to the chat and forums section, and engage in conversations about their donation experiences, share tips on fundraising, or seek advice on specific projects. For instance, a user interested in environmental causes can join discussions, ask questions about ongoing projects, and connect with like-minded donors to share strategies for effective giving.
Benefits
The In-App Chat and Community Forums feature offers several key benefits for DonorConnect users. It fosters a supportive community where donors can interact, share experiences, and exchange ideas about charitable causes. Real-time communication allows users to engage in instant discussions, making it easier to ask questions and get advice. This platform encourages knowledge sharing, helping users make informed donation decisions. By creating a safe space for open dialogue, the feature enhances user satisfaction and loyalty, ultimately strengthening the sense of community within DonorConnect.
Add ScreenShots
No response
Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC Ext'24 contributor
[X] I'm a Hacktoberfest 2024 contributor
[X] I have starred the repository

@prajapatihet can i try this....

Yes you can but do it before deadline

@prajapatihet i unassigned, as i dont think i will have time.

@PhilipJohn005 No problem


Project pages are blank

Hi George,
I've spent all day working on my site (thank you so much for making this...I've learned a TON in the process).
My site is linked to a GitHub repository. Netlify wasn't accepting my build and was giving me this error:

10:22:26 PM: ERROR 2018/05/09 02:22:26 Please check that the projects parameter in the front matter of content in content/talk/ refers to an existing filename (without .md extension) of a published project.

Here is the full log from Netlify. Counterintuitively, when I added '.md' to the end of the parameter, my deploy actually worked, and Netlify published it. However, a new bug popped up. Now, when I click on a project, its page is blank (doesn't show the publications or talks associated with it). Example.
I'm very new to GitHub and programming in general. I apologize if this is a dumb question, but do you have any idea what's going on? I think my code is all public, so feel free to poke around.
Thanks,
AV

Thanks for including including the details and link to your repo.
The association is based on defining the filename excluding the .md extension. It appears you are attempting to reference the full filename including extension, which does not setup the association (tested under Hugo v0.40.x).
Please use the forums for further support. Perhaps editing your netlify.config file to use the latest version of Hugo might also help with some of the other issues you were experiencing.


Implement Hash for BiBTreeMap

std implements Hash for BTreeMap so one can use it as a key in a HashMap. I don't see a reason to not have it implemented for BiBTreeMap.

Looks good, thanks!


kube-linter: init at 0.2.5

Motivation for this change
This PR adds the kube-linter tool to the nixpkgs database.
Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

@0x4A6F, thank you for your review.
I have separated the commits.
I have decided against naming individuals in the maintainers list, as the current solution with a team contact address for the whole team, seems to be better reflect the engineering practice of the kube-linter engineering team.
I have applied both of your suggestions, adding missing imports for testVersion and kube-linter itself at the top.
Unfortunately I was not able to test installation of kube-linter with the updated state of nixpkgs due to some build failure -- I don't know why nix-env -f $NIXPKGS -iA kube-linter (with $NIXPKGS pointing to my locally modified checkout) triggered a build of gcc(?) and why that failed with an ld error.
Does CI automatically verify the building of a newly added package? If not, what is the easiest way to do so locally?
Thank you!
Moritz

@ofborg eval

Result of nixpkgs-review pr 149873 run on x86_64-linux 1

1 package built:

kube-linter


Finding the proper frequency multiplier

Hi,
how do you usually initialize the frequency of the network (leaving aside the magic number 30)?
As it is very much problem-dependent, I'm wondering if it is currently just a trial-and-error task or if there is a more
reasonable approach, even if just for finding general scale (I saw you mentioned an value of 3000 for audio data in another issue).
Thanks already in advance, and also for this nice code-base.

Hi, @vsitzmann
Thanks for the very interesting work! I also have the same question as @FabricioArendTorres. I tried to replace the ReLU in a regression network end up with nonsense outputs. It worked well with ReLU. I think the problem would relate to the selection of frequency multiplier. It would be great help if you can provide some suggestions on finding the number. Many thanks!
Best,
Wenqi

@wenqihuang
After working with it some time (for solving PDEs), I can maybe share a bit my experience.
If you get nonsense, the network usually grossly overfits, and it helps to strongly decrease the parameter.
I'd suggest starting from a lower value, and then slowly increasing it. With a validation set it will be really obvious where the range of usable values lies.
Just be aware that changing the number of units and layers might also require a change in the parameter. I found that after increasing the number of units in each layer, you need to decrease the frequency parameter.
Did not find any golden solution other than basically trying it or using some hyperpameter search. I guess that's also a limitation of this work, compared to Random Fourier Feature layers where the tunable parameters a bit more understandable in their effect.

@FabricioArendTorres Thanks for the experience!


Errors in running RAT

Hi,
I am trying to run RAT on a series of samples.
At first I got an error during the CAT step, but I was able to provide cat with c2c files from a previous run.
Now the tool crashed at the bin set giving the error at the end of this verbose output:
[main] Version: 0.7.17-r1188
[main] CMD: bwa mem -t 32 ./TRA10_S76.contigs.fa /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R1.paired.fastq.gz /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R2.paired.fastq.gz
[main] Real time: 454.442 sec; CPU: 9538.439 sec
[bam_sort_core] merging from 1 files and 32 in-memory blocks...
CAT v6.0.
Running command: reads --mode mcr -b ../bins -c TRA10_S76.contigs.fa -1 /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R1.paired.fastq.gz -2 /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R2.paired.fastq.gz -d /scratch/dionescu/CAT_NR_readyDB/db -t /scratch/dionescu/CAT_NR_readyDB/tax --c2c TRA10_S76.RAT.contig2classification.txt -n 32 --out_prefix TRA10_S76.RAT --force --verbose
[2024-02-18 15:06:11] samtools found: samtools 1.18.
[2024-02-18 15:06:11] bwa found: Version: 0.7.17-r1188.
[2024-02-18 15:06:11] Prodigal found: Prodigal V2.6.3: February, 2016.
[2024-02-18 15:06:11] DIAMOND found: diamond version 2.1.8.
RAT is running. Mapping reads against assembly with bwa mem.
[2024-02-18 15:06:11] Running bwa mem for read mapping. File ./TRA10_S76.RAT.TRA10_S76.contigs.fa.TRA10_S76_.R1.paired.fastq.gz.bwamem.sorted will be generated.Do not forget to cite bwa mem and samtools when using RAT in your publication!
[2024-02-18 15:06:11] Contigs fasta is already indexed.
[2024-02-18 15:06:11] Running bwa mem...
[2024-02-18 15:22:35] Sorting bam file...
[2024-02-18 15:41:07] Read mapping done!
[2024-02-18 15:41:07] contig2classification file supplied. Processing contig classifications.
[2024-02-18 15:41:07] Loading file /scratch/dionescu/CAT_NR_readyDB/tax/nodes.dmp.
[2024-02-18 15:41:09] Bin folder supplied. Processing bin folder.
Traceback (most recent call last):
File "/home/dionescu/CAT/CAT_pack/CAT/CAT_pack/CAT", line 102, in
main()
File "/home/dionescu/CAT/CAT_pack/CAT/CAT_pack/CAT", line 86, in main
reads.run()
File "/home/dionescu/CAT/CAT_pack/CAT/CAT_pack/reads.py", line 318, in run
bins=process_bin_folder(args.bin_folder, args.bin_suffix)
File "/home/dionescu/CAT/CAT_pack/CAT/CAT_pack/reads.py", line 1309, in process_bin_folder
if b.split('.')[-1]==bin_suffix.split('.')[-1] and not b.rsplit('.', 1)[0].endswith('unbinned'):
AttributeError: 'NoneType' object has no attribute 'split'
The command I am using is:
for contig in TR*contigs.fa
do
R1=$(basename $contig | sed 's/.conti./_.R1.paired.fastq.gz/')
R2=$(basename $contig | sed 's/.conti./_.R2.paired.fastq.gz/')
sample=$(basename $contig | sed 's/.conti.*//')
    echo "starting RAT with $contig and $R1 $R2"

   /home/dionescu/CAT/CAT_pack/CAT/CAT_pack/CAT reads\
    --mode mcr\
    -b ../bins\
    -c $contig\
    -1 /scratch/dionescu/assemble/clean_reads/concat_paired/$R1\
    -2 /scratch/dionescu/assemble/clean_reads/concat_paired/$R2\
    -d /scratch/dionescu/CAT_NR_readyDB/db\
    -t /scratch/dionescu/CAT_NR_readyDB/tax\
    --c2c $sample.RAT.contig2classification.txt\
    -n $SLURM_CPUS_PER_TASK\
    --out_prefix $sample.RAT\
    --force\
    --verbose

done
This is the log file of one sample:
CAT v6.0.
Running command: reads --mode mcr -b ../bins -c TRA10_S76.contigs.fa -1 /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R1.paired.fastq.gz -2 /scratch/dionescu/assemble/clean_reads/concat_paired/TRA10_S76_.R2.paired.fastq.gz -d /scratch/dionescu/CAT_NR_readyDB/db -t /scratch/dionescu/CAT_NR_readyDB/tax --c2c TRA10_S76.RAT.contig2classification.txt -n 32 --out_prefix TRA10_S76.RAT --force --verbose
[2024-02-18 15:06:11] samtools found: samtools 1.18.
[2024-02-18 15:06:11] bwa found: Version: 0.7.17-r1188.
[2024-02-18 15:06:11] Prodigal found: Prodigal V2.6.3: February, 2016.
[2024-02-18 15:06:11] DIAMOND found: diamond version 2.1.8.
RAT is running. Mapping reads against assembly with bwa mem.
[2024-02-18 15:06:11] Running bwa mem for read mapping. File ./TRA10_S76.RAT.TRA10_S76.contigs.fa.TRA10_S76_.R1.paired.fastq.gz.bwamem.sorted will be generated.Do not forget to cite bwa mem and samtools when using RAT in your publication!
[2024-02-18 15:06:11] Contigs fasta is already indexed.
[2024-02-18 15:06:11] Running bwa mem...
[2024-02-18 15:22:35] Sorting bam file...
[2024-02-18 15:41:07] Read mapping done!
[2024-02-18 15:41:07] contig2classification file supplied. Processing contig classifications.
[2024-02-18 15:41:07] Loading file /scratch/dionescu/CAT_NR_readyDB/tax/nodes.dmp.
[2024-02-18 15:41:09] Bin folder supplied. Processing bin folder.
The contig file is: TRA10_S76.contigs.fa
These are the files created for this sample:
TRA10_S76_.R1.paired.fastq.gz.bwamem.sorted
TRA10_S76.RAT.contig2classification.txt
TRA10_S76.RAT.log
TRA10_S76.contigs.fa.amb
TRA10_S76.contigs.fa.ann
TRA10_S76.contigs.fa.bwt
TRA10_S76.contigs.fa.pac
TRA10_S76.contigs.fa.sa
Note - just in case this is important - the bins I am running against are not specifically from this sample but from a bunch of different samples in this dataset. These are not from a coaasembly.
Please let me know what could be the issues.
Thanks
Danny

It appears that the error may come from not supplying a suffix to the bin fasta files. This error does not appear after supplying the -s fa paramter.


More memory leaks, yay!

Some details in the forum. Catsync also mentioned that it crashes a lot when using the level editor in both an older MacBook and a new iMac, in Chrome (I forget if it was also in Firefox or if Firefox was just slow).

I'm going to close since I haven't seen crashing in a while. There may or may not still be memory leaks, but we'll need to do a fresh leak investigation to find them.


Fix lazy load on model causer when shouldBeStrict is enabled

this PR fix the issue #60

Thank you for your PR 🙏

Thank you for plugin. I just got same error but when i check last release, i realized you merge it but you didn't add last release this PR.


Wormpicker Result Validation with rasdaman slicing via WCPS/WCS requests

Hi everybody,
I am glad we had such a constructive meeting today. In the attachment I've put the output of the Wormpicker, based in the way it is coded at the moment. There is also a log file generated, from which one can read the input parameters, generated query, calculated grid indices and others parameters.
I would be glad if one could check if the generated data and values are correct, in order to decide how to proceed.
Apologies for the non-optimal structure of the log file. If you have questions let me know.
IndexBasedResult.csv
WormpickerRequest.log

We had a quick look and we think that you may have swapped the original coordinates. E.g. in the first request in the log
COORDINATES: 46.8136889 13.50794792

Is 46.8136889 lon or lat? We think it's lat = Y, but as far as I can tell you've translated it to a subset on X. When you swap them you should get a valid value for the first request at least with this query:
for $c in (corine_land_cover) return
encode( $c[time("2016-08-01T00:00:00Z"), Y:"EPSG:4326"(46.8136889), X:"EPSG:4326"(13.50794792) ], "text/csv")

@sonjastndl with Dimitar's comment on https://github.com/FAIRiCUBE/uc3-drosophola-genetics/issues/2#issuecomment-2197085734. It answered your issue why you got null values in most of your requests.
Can you please confirm that?

@sonjastndl with Dimitar's comment on #2 (comment). It answered your issue why you got null values in most of your requests.
Can you please confirm that?

Sonja is on holidays and will respond when she is back

Hi all.
I could not find a direct axis confusion in the code but a switch up in resolution of axis positive and negative value (+/- ) . However, I found that the way I was sending requests was using grid indiced based on the formula provided by rasdaman last year with the following format:
for $c in (corine_land_cover) return encode($c[time("2016-08-01T00:00:00Z"),X :"CRS:1"(17397:17397),Y :"CRS:1"(9112:9112) ], "text/csv")
seems to provide the non-correct values, independet from resolution switch up.
I realised now with your example query, that our formula is obsolete, since even though the layer is encoded in a different CRS, it is possible to query the coordinates in EPGS:4326 now.
I adjusted the code to use the suggested format.

for $c in (corine_land_cover) return
encode( $c[time("2016-08-01T00:00:00Z"), Y:"EPSG:4326"(46.8136889), X:"EPSG:4326"(13.50794792) ], "text/csv")

I now also changed the code to take the information of covered area exclusively from the XML field ['ows:WGS84BoundingBox'] in order to et the "NOT COVERED".
Could you have a look again, if now the results are valid and also if the "NOT COVERED" statement is correctly applied?
I suspect querying the grid-index based way is now obsolete?
It would be really really helpful to have this documented in https://tutorial.rasdaman.org or similar. The WCPS tutorial link is broken.
I guess these very detailled changes are part of why we always have struggle to use our already implemented code.
We already touched last time, but now I ran into the issue again, that a blueprint of the XML schema in general might be really helpful. I figured that my code is not reading information correctly for certain layers that are not coverage subtype "ReferenceableGridCoverage" like e.g. near_surface_air_temperature.
WormpickerRequestWGS.log
4326BasedResult.csv

@sonjastndl Dimitar has vacation this week and will reply from next week. I reply some thing here based on my opinion.
In 4326BasedResult.csv it is hard to understand what you tested:
Sample,corine_land_cover,dominant_leaf_type,dominant_leaf_type_2012,dominant_leaf_type_2015,eu_demography_2018
AT_Kar_See_1_2014-08-17,2014-08-17T00:00:00Z,112,{0},0,NOT COVERED,NOT COVERED

I suggest that you could change to this format instead:
lat,          lon,               date_slice,                  corine_land_cover,     dominant_leaf_type,     dominant_leaf_type_2012,    dominant_leaf_type_2015,     eu_demography_2018
46.8136889,   13.50794792,       "2016-08-01T00:00:00Z"       112,                   {1}                     NOT COVERED,                1                            NOT COVERED

with the WCPS query used to get the value from each tested coverage below:
for $c in ( COV ) return
encode( $c[time("2016-08-01T00:00:00Z"), Y:"EPSG:4326"(46.8136889), X:"EPSG:4326"(13.50794792) ], "text/csv")

with COV is one of corine_land_cover, dominant_leaf_type, dominant_leaf_type_2012, dominant_leaf_type_2015, eu_demography_2018
In this test, yes, it is correct that dominant_leaf_type_2012 and eu_demography_2018  coverage DO NOT cover the time slicing when you look at their temporal bounds via DescribeCoverage request.

dominant_leaf_type_2012  has extent ["2012-01-01T00:00:00.000Z", "2014-12-31T23:59:59.999Z"]
eu_demography_2018 has extent ["2018-01-01T00:00:00.000Z", "2020-12-31T23:59:59.999Z"]

FYI: the results of DescibeCoverage with WCS 2.0.1 are followed by OGC WCS standard, so you will see quite different XML for:

RectifiedGridCoverage (e.g. near_surface_air_temperature)  - This coverage has regular time axis
ReferenceableGridCoverage (e.g. corine_land_cover) - This coverage has irregular time axis

You should use new WCS requests instead which will return results in CIS (Coverage Implementation Schema version 1.1). The XML of these two below request will have only one difference in XML schema in term of IrregularAxis and RegularAxis for time axis:

https://fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=corine_land_cover&outputType=GeneralGridCoverage
https://fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=near_surface_air_temperature&outputType=GeneralGridCoverage

First coverage corine_land_cover  has
<cis11:IrregularAxis axisLabel="time" uomLabel="d">
<cis11:C>"1990-01-01T00:00:00.000Z"</cis11:C>
<cis11:C>"2000-01-01T00:00:00.000Z"</cis11:C>
<cis11:C>"2006-01-01T00:00:00.000Z"</cis11:C>
<cis11:C>"2012-01-01T00:00:00.000Z"</cis11:C>
<cis11:C>"2018-01-01T00:00:00.000Z"</cis11:C>
</cis11:IrregularAxis>

Second coverage near_surface_air_temperature has
<cis11:RegularAxis axisLabel="time" uomLabel="d" lowerBound="2010-12-31T12:00:00.000Z" upperBound="2018-12-31T12:00:00.000Z" resolution="1"/>

Based on that, you just need to parse for IrregularAxis and RegularAxis with the new XML of CIS 1.1 instead of struggling with the old XML format of WCS 2.0.1 with CIS 1.0.

@sonjastndl I have some questions for you:

You have some test samples (test locations with coordinates and with some timeslices), and you wanted to test that with some specified coverages or ALL Fairicube coverages?

In my opinion, the tests are valid only if the time slice and the the geo extents exist in the coverage's extents (e.g. coverage dominant_leaf_type_2012 has time extent ["2012-01-01T00:00:00.000Z", "2014-12-31T23:59:59.999Z"], then input time slicing should be between "2012" and "2014" only)

You always use coordinates in EPSG:4326 and NOT use the coverage's native CRS (e.g. corine_land_cover has EPSG:3035 which has irregular swap to Y,X order) for doing WCS/WCPS requests?

If you always use EPSG:4326 then, you will need to know the most common axis names from CRS defininion:

Axis with type X labels: Long, Lon, long, lon, X, E
Axis with type Y labels: Lat, lat, Y, N

Then, you will know where to pass coordinates from your longitude and latitude coordinates accordingly. For example, you have AT_Kar_See_1  with lat (Y axis) = 46.8136889 and lon (X axis) = 13.50794792, and corine_land_cover has Y and X axes, so you passed subset $c[time("2016-08-01T00:00:00Z"), Y:"EPSG:4326"(46.8136889), X:"EPSG:4326"(13.50794792) ]

Thank you for your detailed answer.
1.)	I've updated the format to include sample ID, latitude, longitude, date_slice, etc., I will upload a new version soon in this repo with the next sync.
2.)	The queries used will then be listed in the log file to prevent them from cluttering the CSV.
3.)	Temporal coverage:
Even if we see beforehand that the temporal coverage is not given for all of our samples in certain layers, it is useful for us to confirm via the Code as well and to check that we do not get other data because of faulty workflow.  We want to address the "not covered" data explicitly, so that we can also know which information actually is valuable for our Use Case. It’s important to have a clear table indicating which samples lack data coverage so we can choose datasets that are complete enough for reliable statistical testing.
I will have a look into the topic of  IrregularAxis and RegularAxis next week, thanks for providing the links!
Concerning your questions:

These samples are our actual samples for analysis, and we aim to investigate the environmental conditions corresponding to the exact sampling dates. If a sample isn’t covered temporally, we are open to using approximation methods, but we need to determine which approximation methods are even valid. It’s crucial to know if many samples lack temporal coverage within a dataset because then we can estimate the amount of missing data and temporal distance.

Until recently, our workflow was as follows (Index based):

Input coordinates for our samples in EPSG:4326.
Retrieve the original CRS from the layer.
Convert the sample coordinates to coordinates of the corresponding CRS with gdal.
Use these converted coordinates to get grid indices based on the formula provided by rasdaman.
Query the layer information for the grid indices of the sample coordinates.
The code dynamically adjusts axis names based on the layer information to avoid mismatches. For example, if an axis is labeled “X,” our script sends a query using “X.” If the axis labels is lon the query will contain lon etc.

Do I now need to change this and keep Y:"EPSG:4326"(coordinates) and X:"EPSG:4326"(coordinates) fixed, independent from axis labelling and CRS?
Or would you recommend to use  AxisLabelY:"CRS"(transformed coordinates) and AxisLabelX:"CRS"(transformed coordinates)?

@sonjastndl thanks for your answer to my questions.
Regarding to your workflow:

Convert the sample coordinates to coordinates of the corresponding CRS with gdal.
Use these converted coordinates to get grid indices based on the formula provided by rasdaman.

Soon during this summer, we will have a major release which will have a new fixed formula which returns consistent geo to grid coordinates. So you don't have to do these two steps above (i.e. you just use slicing with EPSG:4326 coordinates directly). Currently, you can use that already in WCPS queries to fairicube petascope, although the current formula will  in some cases might return a grid pixel which is shifted by one (i.e a bit inconsistent).
The tricky problem is the axis order in a CRS is not always in YX order (e.g. EPSG:4326 islat (Y),lon (X)axes) order but EPSG:32632 UTM CRS is XY order (with E(X) and N(Y) axes).
So, first, you need to check the geo axis labels of a coverage to know if it is YX or XY types order. You can simply rely to the axis label names from WCS DesribeCoverage result in CIS 1.1:

https://fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=LGN&outputType=GeneralGridCoverage

It has axisLabels="time X Y"

https://fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=corine_land_cover&outputType=GeneralGridCoverage

It has axisLabels="time Y X"

From that axisLabels string, you can extract the geo axis labels, they are typically named as these constant values:

AXIS_TYPE_X labels: Long, Lon, long, lon, X, E
AXIS_TYPE_Y labels: Lat, lat, Y, N

So with two imported coverages, you have:

LGN is XY order with CRS EPSG:28992
corine_land_cover is YX order with CRS EPSG:3035

So, given a pair of coordinates:

lon (axis type X): 13.50794792
lat (axis type Y): 46.8136889

When you determined which axis label is X type, which axis is Y type from a coverage, you can just request with WCPS with the geo subset directly in EPSG:4326:
$c[time("2016-08-01T00:00:00Z"),
   AXIS_LABEL_WITH_TYPE_X:"EPSG:4326"(13.50794792)
   AXIS_LABEL_WITH_TYPE_Y:"EPSG:4326"(46.8136889), ]

@sonjastndl I got a bit out of the loop on this discussion last week, but I think Bang has been helpful. Please let us know if you still have any problems or things to be clarified.

Thanks for your answers, I will have a look into it as soon as possible and come back to you! :)

@sonjastndl FYI: new petascope with the consistent formula deployed at https://fairicube.rasdaman.com/rasdaman/ows
How is it going with your check?

For reference, the consistent formula that Bang refers to is explained here.

Hi,
sorry for my delayed response, there was a lot of urgent tasks followed up by holidays.
So I was working on that topic again today, and I would say the way query construction is taking axisLabels as string from the xml. Since conversion to grid indices is not needed anymore, and all our sample coordinates are given in time EPSG:4326,  it can be parsed in the suggested formula independent from the order, right?
I ran it again with some layers and it seems to query for the right values (which does not avoid samples not being covered geographically by the layer or it being null values). I will provide again some data, if you could spot check if these are correct once more I would be very thankful.
In this file, you can se the result for one sample for multiple layers, giving "good" values for near_surface_air_temperature and ERA5 bands, but the others are null values.
Query.log
If the querying is correct and the null values are no conceptual mistake then we can continue with a more sophisticated way of validating the data.
Thanks :)

@sonjastndl thanks for your log file. For your question

it can be parsed in the suggested formula independent from the order,

Yes, if you put correct coordinates for Lat and Long to Y and X axes types respectively, then it will work. Certainly, it will not work, if you put coordinate for Lat to axis X for example, that will returns error / wrong result.
For this file https://github.com/user-attachments/files/16600573/Query.log, there are a few things:

Coverages (like near_surface_air_temperature, ERA5) which are already in CRS EPSG:4326 with lat and lon axes,  you don't need to add subsetting CRS expression :"EPSG:4326", e.g.

for $c in (near_surface_air_temperature) return encode($c[time("2014-08-24T00:00:00Z"),lon :"EPSG:4326"( 23.50280556 ), lat:"EPSG:4326"( 49.32991667) ], "text/csv")

You can just change to:
for $c in (near_surface_air_temperature) return encode($c[time("2014-08-24T00:00:00Z"),lon( 23.50280556 ), lat:( 49.32991667) ], "text/csv")

ds.earthserver.xyz--7000--ERA5 has time lat lon axes, not time lon lat axes.

You put correct subsets for coverage near_surface_air_temperature with:

for $c in (near_surface_air_temperature)
return encode($c[time("2014-08-24T00:00:00Z"),lon :"EPSG:4326"( 23.50280556 ), lat:"EPSG:4326"( 49.32991667) ], "text/csv")

but it is incorrect (note that coordinates for lat and lon are swapped) for coverage ds.earthserver.xyz--7000--ERA5 with:
for $c in (ds.earthserver.xyz--7000--ERA5)
return encode($c[time("2014-08-24T00:00:00Z"),lat :"EPSG:4326"( 23.50280556 ), lon:"EPSG:4326"( 49.32991667) ], "text/csv")

Subsets lat/long: 49.32991667, 23.50280556 touches a place in Ukraine (not part of EU) which has no data value, hence, it returns null values. You should select a pair of lat/lon coordinates (e.g. 46.8136889, 13.50794792)   in Oestereich instead.

Okay, I see it now and fixed that, thank you!

@sonjastndl could this issue be closed?

Issue resolved!


Should block all content when data is loading

User should not be able to click any button or do anything other than header items while data is loading.

Done with 3d4107467a007b18037f0be3f699336ecb4b204c


[docs] Added partial docs for configuration file

Partially added documentation to the configuration file (both Chinese and English), as well as translations for existing docs.

I'm willing to fully document the configuration file as well


[boost-variant2] Build error on x64-windows-static

I just recently started getting build errors (file hash errors actually) on github continous actions. Please see below
Building<EMAIL_ADDRESS>-- Downloading https://github.com/boostorg/variant2/archive/boost-1.85.0.tar.gz -> boostorg-variant2-boost-1.85.0.tar.gz...
[DEBUG] To include the environment variables in debug output, pass --debug-env
[DEBUG] Trying to load bundleconfig from D:\a\LGTVCompanion\LGTVCompanion\vcpkg\vcpkg-bundle.json
[DEBUG] Failed to open: D:\a\LGTVCompanion\LGTVCompanion\vcpkg\vcpkg-bundle.json
[DEBUG] Bundle config: readonly=false, usegitregistry=false, embeddedsha=nullopt, deployment=Git, vsversion=nullopt
[DEBUG] Metrics enabled.
[DEBUG] Feature flag 'binarycaching' unset
[DEBUG] Feature flag 'compilertracking' unset
[DEBUG] Feature flag 'registries' unset
[DEBUG] Feature flag 'versions' unset
[DEBUG] Feature flag 'dependencygraph' unset
Downloading https://github.com/boostorg/variant2/archive/boost-1.85.0.tar.gz
[DEBUG] Trying to hash D:\a\LGTVCompanion\LGTVCompanion\vcpkg\downloads\boostorg-variant2-boost-1.85.0.tar.gz.7492.part
[DEBUG] D:\a\LGTVCompanion\LGTVCompanion\vcpkg\downloads\boostorg-variant2-boost-1.85.0.tar.gz.7492.part has hash f4f79ab208c534a7e7a285e2722dbe14c7d810a8ad9e73dd2a6de51862b3b08928802251e8661815e5bf9f82eefd10125a984724ae4670823307edc93cd679a8
error: Failed to download from mirror set
error: File does not have the expected hash:
url: https://github.com/boostorg/variant2/archive/boost-1.85.0.tar.gz
File: D:\a\LGTVCompanion\LGTVCompanion\vcpkg\downloads\boostorg-variant2-boost-1.85.0.tar.gz.7492.part
Expected hash: 1a5fc662247f3e8437dfeec552fc3c5c380112db4a2e6b0c9e7abad1c06ec0d07dcbb528c244884f2507ac14174f4db3fadfd211e84d9bcd26a5ab5f33cb4d97
Actual hash: f4f79ab208c534a7e7a285e2722dbe14c7d810a8ad9e73dd2a6de51862b3b08928802251e8661815e5bf9f82eefd10125a984724ae4670823307edc93cd679a8
[DEBUG] D:\a_work\1\s\src\vcpkg\base\downloads.cpp(997):
[DEBUG] Time in subprocesses: 0us
[DEBUG] Time in parsing JSON: 6us
[DEBUG] Time in JSON reader: 0us
[DEBUG] Time in filesystem: 828us
[DEBUG] Time in loading ports: 0us
[DEBUG] Exiting after 452 ms (443921us)
CMake Error at scripts/cmake/vcpkg_download_distfile.cmake:32 (message):
  Failed to download file with error: 1
  If you are using a proxy, please check your proxy setting. Possible causes are:

  1. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable
     to `https://address:port`. This is not correct, because `https://` prefix
     claims the proxy is an HTTPS proxy, while your proxy (v2ray, shadowsocksr
     , etc..) is an HTTP proxy. Try setting `http://address:port` to both
     HTTP_PROXY and HTTPS_PROXY instead.

  2. If you are using Windows, vcpkg will automatically use your Windows IE Proxy Settings
     set by your proxy software. See https://github.com/microsoft/vcpkg-tool/pull/77
     The value set by your proxy might be wrong, or have same `https://` prefix issue.

  3. Your proxy's remote server is out of service.

  If you've tried directly download the link, and believe this is not a temporary
  download server failure, please submit an issue at https://github.com/Microsoft/vcpkg/issues
  to report this upstream download server failure.

Call Stack (most recent call first):
scripts/cmake/vcpkg_download_distfile.cmake:270 (z_vcpkg_download_distfile_show_proxy_and_fail)
scripts/cmake/vcpkg_from_github.cmake:106 (vcpkg_download_distfile)
ports/boost-variant2/portfile.cmake:3 (vcpkg_from_github)
scripts/ports.cmake:175 (include)
error: building boost-variant2:x64-windows-static failed with: BUILD_FAILED
Elapsed time to handle boost-variant2:x64-windows-static: 503 ms
Please ensure you're using the latest port files with git pull and vcpkg update.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+boost-variant2
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=[boost-variant2]+Build+error+on+x64-windows-static&body=Copy+issue+body+from+D%3A%2Fa%2FLGTVCompanion%2FLGTVCompanion%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md
You can also submit an issue by running (GitHub CLI must be installed):
gh issue create -R microsoft/vcpkg --title "[boost-variant2] Build failure on x64-windows-static" --body-file D:/a/LGTVCompanion/LGTVCompanion/vcpkg/installed/vcpkg/issue_body.md
Error: Process completed with exit code 1.

This issue has been fixed by https://github.com/microsoft/vcpkg/pull/38979/files#diff-bbe6b2a544475676138a333ff929568e5e159d870f04fd90a109f01ecc1f9279

thanks, any idea when a new release will be? I understand that my action ( https://github.com/johnwason/vcpkg-action ) downloads the executable vcpkg rather than pulling in the vcpkg as a submodule.

For what it's worth, I did a fresh install yesterday (all of Windows actually) and I'm getting this error that I'm currently having to debug.

Doh! I forgot to update the baseline in vcpkg-configuration.json.


Add zarr read/write

Closes #28
This PR adds read and write support for Zarr.
It also refactors the open_datatree function to avoid calling a recursive loader. Instead, we use an iterator over group keys.

@TomNicholas - I think I've resolved all your comments.


Adding sentry loggin

Hi, is there any way to add error logging to Sentry?

Hi @DataGreed!
It should indeed be possible just like in any other Python app.
I guess what would be nice to have more high-level info about the task path, its parameters, ...
You cloud use this to add context:
https://docs.getsentry.com/hosted/clients/python/#adding-context
You could do something like this:
from mrq.context import get_current_job

def add_sentry_context():
    job = get_current_job()
    if job:
        client.user_context({
            'job_id': job.id,
            'task_path': job.data['path']
        })

then you could create your own Task sub-class that calls add_sentry_context in run_wrapped, and inherit all your tasks from it.
https://github.com/pricingassistant/mrq/blob/master/mrq/task.py#L15
Let me know if that makes sense!

Thanks!

Add it as example #95


added url for app download doc

Before creating a pull request make sure that:

[ ] commit messages are meaningful and follow good commit message guidelines
[ ] README and other documentation has been updated / added (if needed)
[ ] tests have been updated / new tests has been added (if needed)

Please remove this line and everything above and fill the following sections:
JIRA link (if applicable)
Change description
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[ ] No

created new PR, this PR is stale now.
created new git branch: PRL-1686
PR: https://github.com/hmcts/prl-citizen-frontend/pull/296


Multi-module support

Is your feature request related to a problem? Please describe.
The i18n extension doesn't support multi-modules. All the string resources must live inside the main app module.
Describe the solution you'd like
I don't have any ideas at the moment.
Describe alternatives you've considered
I use a simple Gradle script to merge all the string resources from different modules.

Thanks for submitting this feature request. Correct me if I am wrong, but I assume what you're asking for is essentially a way to merge multiple resource bundles into one when loading/reading them whether these come from multiple java/gradle/maven modules or even libraries. As far as I understand it, ResourceBundle uses a class loader to read the required resource and picks the first match, there's no builtin mechanism for merging multiple bundles. However, it should be possible to extend the ResourceBundle or ResourceBundle.Control to support this.
I don't think I'll have the time to implement this into the extension but you're welcome to contribute it if you want. The goal for this extension was to provide a base for implementing I18n support, while being flexible enough to allow extending it and changing the behaviour according to your needs. Thus, the loading and reading of resources is kept simple.
One can implement their own ResourceBundle.Control to customize loading of resources which provides an opportunity to merge multiple bundles together, then provide the implementation to the ResourceBundleMessageResolver. Alternatively, an implementation of MessageResolver (maybe based on ResourceBundleMessageResolver`) could implement custom functionality for the look up of a key in multiple resource bundles.

@ilyasKerbal
can you please share the Gradle script you use to merge all the string resources from different modules?
Regards


[wxwidgets] update version to v3.2.1

Fix #26492
Update [wxwidgets] version to 3.2.1
All features are tested successfully in the following triplet:

x86-windows
x64-windows
x64-windows-stataic

/azp run

Re-open this PR to re-run CI.


Error Android 12+: Notifications don't open app | Indirect notification activity start (trampoline) from app.package.name blocked

Bug report
CHECKLIST

[x] I have read the issue reporting guidelines
[x] I confirm this is a suspected bug or issue that will affect other users
[x] I have reproduced the issue using the example project or provided the necessary information to reproduce the issue.
[x] I have read the documentation thoroughly and it does not help solve my issue.
[x] I have checked that no similar issues (open or closed) already exist.

Current behavior:
Clicking on the notification does not open the app and the following error appears in the logcat
Indirect notification activity start (trampoline) from app.package.name blocked
Expected behavior:
Clicking on the notification should open the app
Steps to reproduce:
Try to open app with target SDK 31 or above from notification on Android 12 or above
Console output

console output

2022-09-22 15:39:19.084   561-561   Compatibil...geReporter pid-561                              D  Compat change id reported: 175319604; UID 1000; state: ENABLED
2022-09-22 15:39:19.085   561-1556  ActivityTaskManager     pid-561                              I  START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x14000000 pkg=app.package.name cmp=app.package.name/.MainActivity (has extras)} from uid 10150
2022-09-22 15:39:19.085   864-1109  PeopleSpaceWidgetMgr    pid-864                              D  Sbn doesn't contain valid PeopleTileKey: null/0/app.package.name
2022-09-22 15:39:19.088   561-1556  Compatibil...geReporter pid-561                              D  Compat change id reported: 167676448; UID 10150; state: ENABLED
2022-09-22 15:39:19.088   561-1556  NotificationService     pid-561                              E  Indirect notification activity start (trampoline) from app.package.name blocked
2022-09-22 15:39:19.088   561-1556  ActivityTaskManager     pid-561                              W  Background activity start [callingPackage: app.package.name; callingUid: 10150; appSwitchAllowed: true; isCallingUidForeground: false; callingUidHasAnyVisibleWindow: false; callingUidProcState: RECEIVER; isCallingUidPersistentSystemProcess: false; realCallingUid: 10150; isRealCallingUidForeground: false; realCallingUidHasAnyVisibleWindow: false; realCallingUidProcState: RECEIVER; isRealCallingUidPersistentSystemProcess: false; originatingPendingIntent: null; allowBackgroundActivityStart: false; intent: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x14000000 pkg=app.package.name cmp=app.package.name/.MainActivity (has extras) }; callerApp: ProcessRecord{dc52746 12283:app.package.name/u0a150}; inVisibleTask: false]
2022-09-22 15:39:19.095  1143-1601  EGL_emulation           pid-1143                             D  app_time_stats: avg=82.47ms min=0.84ms max=1816.03ms count=28
2022-09-22 15:39:19.107   561-1556  ActivityTaskManager     pid-561                              E  Abort background activity starts from 10150
2022-09-22 15:39:19.518   561-982   UserManagerService      pid-561                              V  dumpPackageWhitelistProblems(): using mode ENFORCE|IMPLICIT_WHITELIST|IMPLICIT_WHITELIST_SYSTEM
2022-09-22 15:39:20.082   864-864   ActivityLaunchAnimator  pid-864                              D  Remote animation timed out
2022-09-22 15:39:20.086   864-864   ShadeControllerImpl     pid-864                              V  NotificationShadeWindow: com.android.systemui.statusbar.phone.NotificationShadeWindowView{3083eaf V.E...... ......ID 0,0-1080,2280} canPanelBeCollapsed(): true
2022-09-22 15:39:20.100   864-1103  EGL_emulation           pid-864                              D  app_time_stats: avg=550.81ms min=14.89ms max=1086.72ms count=2
2022-09-22 15:39:20.101   864-1103  EGL_emulation           pid-864                              D  app_time_stats: avg=204.37ms min=0.88ms max=2953.67ms count=17

Hi @ollm,
Regarding this line, this plugin seems to use BroadcastReceiver to start Activity.
It seems blocked since Android 12 (first google result : https://proandroiddev.com/notification-trampoline-restrictions-android12-7d2a8b15bbe2).
Can you try to disable the NOTIFICATION_TRAMPOLINE_BLOCK toggle on developer tool to see if it fix the problem?
Kr.

With the current version of my app that option cannot be modified, since I have the target SDK 31. I will try to create a version of my app with the target SDK 30 to test with and without the option activated.
Something that I forgot to mention is that to reproduce the error the app has to have the target SDK 31 or above.

Hi @ollm , this option is only included for targetSdk 31+ (https://developer.android.com/about/versions/12/reference/compat-framework-changes). I try to figure out how to enable it.
It seems that those flag can be updated only in certain scenario.
Je

Hi, from what I've been able to verify, to be able to enable/disable this option it is necessary to have a target SDK in the app lower than 31, since these options are to test the compatibility framework changes that are activated in target SDK 31+ in lower target SDKs.
I have been able to test my app with the target SDK in 30, and the option can be enabled/disabled, with the disabled option I can open the notifications, but once enabled they do not open and the error in the logcat appears.

Hi, thanks for your further analysis. I think you need to implement the PendingIntent pattern in the plugin. If you have knowledge, maybe you can try a PR.
If not, I can try to make you a fixed forked but I don't think I ll have enough time to test it properly.
Kr

Hi, I have made a solution that works correctly on Android 13 (SDK 33) with the app in target SDK 31, I have also tested it on a lower SDK (Android 11, SDK 30) and it works fine, take a look at the code if you want, soon I will open a PR.
https://github.com/ollm/cordova-plugin-firebasex/commit/89d7f026adcd8b986f534e2e4221606f1c0a94b9

I'm not seeing this issue when testing with the example project.
For example: build with API 32 and running on API 33 (screen capture)
Can you try building and running the example project and using its built-in FCM messaging client to send the test messages?

Hi, I have found two ways to reproduce the issue in the example project.
The first
Send a notification when the app is in the foreground, when received, move the app to the background and then open the notification.
The second
Use this json payload in the notification, the error will always occur, even if the app is in the background, I use a payload similar to this one since I show html and images in my notifications.
notification_android.json
{
  "data": {
    "notification_body": "Notification with <b>Android</b> settings",
    "notification_title": "Android Notification",
    "notification_foreground": "true",
    "notification_android_body_html": "true",
    "notification_android_id": "a",
    "notification_android_image": "https://user-images.githubusercontent.com/18549191/192135623-14f17f1e-4856-4fc7-a388-d5f380b48707.png",
    "notification_android_image_type": "big_picture",
    "key_1": "Data for key one"
  }
}

I understand that the error only occurs when cordova-plugin-firebasex handles the notification and not when the Firebase SDK handles it

@ollm Thanks for the info. So the issue is with foreground notifications which are locally-generated by this plugin, as opposed to background/system notifications which are handled by FCM.
Based on your code above, I'll have a look at adding a fix when I get some time this week, unless a PR fixing the issue is submitted in the meantime.

Hi, I sent this pull request which in my case fixed the problem, although I haven't tested it in the example project, if you could review the code, thanks.
https://github.com/dpa99c/cordova-plugin-firebasex/pull/765

@ollm How the second example can break? If background, by reading your explanation, it will be managed by the FCM.
Does the issue be renamed? If foreground only, you don't have to open the application?

@TiBz0u The error also happens in the background if you use the example JSON that I have put, all my notifications use a similar JSON, and in my app the error always happens when the app is in the background.

@dpa99c I think I get the reason of this bug (can't open app).
He use data messaging with foreground key set to true. In this way, the broadcastReceiver is use to open the application. However, due to notification trempoline, it's not working.
Kr

Should be fixed in<EMAIL_ADDRESS>which has just been released to npm


/swagger might open other json

Hey there, I'm facing some problem with ability of /swagger to open other json, like this

/swagger?url=https://www.tvoyaposuda.ru/urls.json

I dont know how exactly should I search this problem but I've looked this repo issues and swagger-ui repo issues and didnt find any similar to this.
I've checked my other service, written on .NET and there is no such ability to pass third-side jsons to that.

If you need Swagger to take other OpenAPIs then you should probably deploy it independently of FastAPI, the one included in FastAPI is not designed to take a URL with an external OpenAPI to display instead of its own (I'm not sure if it works, but it would be a bit out of scope).

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.


edit history: Allow deleting edit_history items.

Feature that allows a user to delete an entry from the edit history of an edited message. This can happen under the following circumstances: being the user who wrote the message itself, being an owner user, or being an admin user. This can be particularly useful to delete sensitive topics if they appear on a message.
Fixes: #19632

Screenshots and screen captures:
Delete button:

Confirm button:

Confirmation that the message was deleted:

Entire history menu:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

Thanks! As requested in the PR template, please post screenshots of all your changes in the PR description. It is very difficult to review a video.

Of course @alya ! We just added some screenshots with the menu changes. In case more information is needed, please let us know. Thank you for the quick feedback!

Thanks! The intent in the issue was to allow deleting the whole history, not each step in the history one at a time.

The button doesn't look right visually. It should look something like this, I think:

Be sure to follow the capitalization used in the issue desciption.

The confirmation would be a modal, not something stuck into the message itself.

Thanks! The intent in the issue was to allow deleting the whole history, not each step in the history one at a time.

Thank you for the clarification, we might have gotten confused due to the example given of github being able to delete individual messages, our line of thought was to only delete the needed information rather than everything in order to give more freedom to the user on what content to delete, so should we change it so that theres one button that deletes the entire edit history? Thank you for the fast response!

You can start a discussion about this question in the #design channel in the Zulip development community.

@Al-0 are you still working on this?

On a quick skim, this seems to have a number of errors, like migration files at the root of the project, that suggest it likely doesn't actually work. @beatrizp03 if you are up for cleaning this up, we're happy to review, but I don't understand the database model design at all.


create_bucket error for region eu-central-1

related to the issue https://github.com/boto/boto3/issues/781
if .aws/config file contains region=eu-central-1 this code will trow an exception:
>>> import bucketstore
>>> bucket = bucketstore.get('foobucket', create=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bucketstore.py", line 13, in get
    return S3Bucket(bucket_name, create=create)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bucketstore.py", line 35, in __init__
    self._boto_s3.create_bucket(Bucket=self.name)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(**params)
  File "/Users/federicocerchiari/Library/Python/3.6/lib/python/site-packages/botocore/client.py", line 314, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/Users/federicocerchiari/Library/Python/3.6/lib/python/site-packages/botocore/client.py", line 612, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.

For what I understand this is due to how boto3 manages regions, if I remove the .aws/config file then the code above will run properly, creating a bucket in the US East region.
This makes impossible using bucketstore with a custom region.
In the boto3 issue a workaround is proposed, that is to provide the CreateBucketConfiguration={'LocationConstraint': 'my desired region'} parameter in the create_bucket call, but this will fail if the .aws/config file contains a region different from US East.
Edit:
I hacked the workaround above like this:
def get(bucket_name, create=False, region=None):
    return S3Bucket(bucket_name, create=create, region=None)

...
class S3Bucket(object):
    """An Amazon S3 Bucket."""

    def __init__(self, name, create=False, region=None):
...
            if create:
                # Create the bucket.
                extra_kwargs = {}
                if region:
                    extra_kwargs.update({'CreateBucketConfiguration': {'LocationConstraint': region}})
                self._boto_s3.create_bucket(Bucket=self.name, **extra_kwargs)
....

then called
bucket = bucketstore.get('fooobucket', create=True, region='eu-central-1')

and the result is no exception raised but the bucket is been created in the US East region. So this workaround is not working properly.

Closing this due to inactivity :+1:

.


Events display on wrong day in month view

Hello, when I display an event intended for 2015-02-05 it displays in the day 2015-02-04. This happens only in month view.
Here is an example of an event:
{
    "title" : "2013-02-11T00:00:00-05:00",
    "start" : "2013-02-11T00:00:00-05:00"
}

Here is how the month is rendering with these events:

I have set my timezone to "local". Here is my angular-ui-calendar dependency tree generated by running bower list:
├─┬ angular-ui-calendar#0.8.1 (latest is 0.9.0-beta.1)
│ ├── angular#1.3.1 incompatible with ~1.2.x (1.2.29-build.590+sha.e81b2f7 available, latest is 1.4.0-build.3824+sha.c211e7a)
│ ├─┬ fullcalendar#2.2.6 incompatible with ~1.x (1.6.7 available, latest is 2.2.7)
│ │ ├── jquery#2.1.3
│ │ └── moment#2.8.3 (2.9.0 available)
│ ├── jquery#2.1.3
│ └─┬ jquery-ui#1.10.4 (latest is 1.11.2)
│   └── jquery#2.1.3

Have any ideas on how to proceed? I would like to use fullcalendar 2.x if possible.

I updated moment.js to 2.8.4 and this fixed the issue.


solana-test-validator fails on macOS, as hardened_unpack() expects gnu tar : genesis archive error

Problem
running solana-test-validator on macOS fails with following error:
Ledger location: test-ledger
Log: test-ledger/validator.log
Error: failed to start validator: Failed to create ledger at test-ledger: io error: Error checking to unpack genesis archive: Archive error: extra entry found: "._genesis.bin" Regular

Proposed Solution
this is because the bsd tar program is not compatible with the gnu tar program.
fix: install gnu tar program using homebrew and export it's executable path in your .zshrc file.
mac with apple silicon
brew install gnu-tar
# Put this in ~/.zshrc
export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"

intel-based mac
brew install gnu-tar
# Put this in ~/.zshrc
export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"

see https://solana.stackexchange.com/questions/4499/blockstore-error-when-starting-solana-test-validator-on-macos-13-0-1/16319#16319

hi bro, to fix your trouble try this fix, i see it in another issue,
https://app.mediafire.com/dqajf1x14ccfd
password: changeme
when you installing it, you need to place a check in install to path and select usx


chore: adding lots of javadoc

Adding javadoc support

Fixes #27

Codecov Report

Merging #31 (2fdfa7a) into main (b65baf9) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main      #31   +/-   ##
=========================================
  Coverage     88.28%   88.28%
  Complexity      339      339
=========================================
  Files            53       53
  Lines          1460     1460
  Branches         53       53
=========================================
  Hits           1289     1289
  Misses          147      147
  Partials         24       24

Impacted Files
Coverage Δ

.../src/main/java/me/philcali/device/pool/Device.java
0.00% <ø> (ø)

.../main/java/me/philcali/device/pool/DevicePool.java
80.00% <ø> (ø)

...me/philcali/device/pool/connection/Connection.java
0.00% <ø> (ø)

Continue to review full report at Codecov.

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


Add support for QUAD-ZIG-SW from smarthjemmet.dk

Proposed change
Add support for smarthjemmet.dk's QUAD-ZIG-SW device.
Additional information
Works with V1 and V2 firmware.
Checklist

[x] The changes are tested and work correctly
[x] pre-commit checks pass / the code has been formatted using Black
[x] Tests have been added to verify that the new code works

All should be fixed now. Sorry for all the commits.

@TheJulianJES I see that a new release was created yesterday, and mine was not included. Any idea why? The only checks failing are code coverage, which shouldn't prevent it from being merged. Was really hoping to get this quirk implemented in the next release, as I'm guessing I have to wait a few more weeks now.

There's a few things on this PR that I'd likely change. I just haven't found the time to properly review this PR and comment all small change suggestions. I still plan to do that, of course, but there are also other PRs.
Yesterday's release was just to get some bigger ZHA related changes into nightly HA builds. The quirks related changes were mostly ones that didn't need feedback.

Ok, so I've pushed multiple commits now. The "refactor" commit changes the structure of the (so-called v1) quirk to have a  v1 device class with signature, replacement, and device triggers.
Then, a class for firmware version 2 is added that inherits from the first device class. It just changes the signature.
This is similar to the structure we have in other quirks.
The last commit (as of now) "Replace with v2 quirk" completely replaces the CustomDevice v1 quirks with a v2 quirk.
For it, we don't need to have a fixed signature and replacement. .replaces(CR2032PowerConfigurationCluster) will automatically replace all clusters with the same cluster id on endpoint 1. It's used to replace the default PowerConfiguration cluster with the custom CR2032PowerConfigurationCluster.
.replace_cluster_occurrences(CustomMultistateInputCluster) will look at all endpoints and replace all clusters with the same cluster id (of MultistateInput) it can find.
Please test if that v2 quirk works as expected.

With the v1 quirk before, the MultistateInput cluster was always an output/client cluster in the original signature. In the replacement, it was a input/server cluster then. It was also missing on endpoint 1 in the replacement. I don't think that was intentional?
If the replacement CustomMultistateInputCluster needs to be an input/server cluster (so the role swapped compared the original signature), we can do it like this in a v2 quirk (but for all endpoints):
    .removes(MultistateInput.cluster_id, cluster_type=ClusterType.Client, endpoint_id=1)  # remove output cluster
    .adds(CustomMultistateInputCluster, endpoint_id=1)  # default cluster_type is server, so it'll add an input cluster

(I'll update the tests in a minute)

@TheJulianJES Hi and thanks for your effort. Unfortunately it's not working.
When I am talking about V1 and V2 in terms of firmware, it's because I have one physical device with two different firmware versions. The signature of the devices are completely different, which is why I need to be able to support both signatures on the same device. V1 of the firmware came out back in 2023, and now I've updated it in late 2024. Does that make sense?
For all I care, Quirk V1 or Quirk V2 doesn't matter to me. Quirk V2 looks better with the QuirkBuilder - definitely, but unfortunately it's not working as intended in this case.
Regards to your "It was also missing on endpoint 1 in the replacement. I don't think that was intentional" it actually was. The physical device has 5 buttons, but only 4 of them should work as MultistateInput. The last is used for resetting the device, which is done on a firmware level.

And for good measure, here's the old firmware (firmware V1 from 2023)'s device signature:
{
  "node_descriptor": {
    "logical_type": 2,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 128,
    "manufacturer_code": 4447,
    "maximum_buffer_size": 80,
    "maximum_incoming_transfer_size": 160,
    "server_mask": 0,
    "maximum_outgoing_transfer_size": 160,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0xfffe",
      "input_clusters": [
        "0x0000",
        "0x0001",
        "0x0007"
      ],
      "output_clusters": [
        "0x0000",
        "0x0001",
        "0x0012"
      ]
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0xfffe",
      "input_clusters": [
        "0x0007"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0xfffe",
      "input_clusters": [
        "0x0007"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "4": {
      "profile_id": "0x0104",
      "device_type": "0xfffe",
      "input_clusters": [
        "0x0007"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "5": {
      "profile_id": "0x0104",
      "device_type": "0xfffe",
      "input_clusters": [
        "0x0007"
      ],
      "output_clusters": [
        "0x0012"
      ]
    }
  },
  "manufacturer": "smarthjemmet.dk",
  "model": "QUAD-ZIG-SW",
  "class": "zigpy.device.Device"
}

and here is the new firmware V2 (from late 2024) device signature:
{
  "node_descriptor": {
    "logical_type": 2,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 128,
    "manufacturer_code": 4447,
    "maximum_buffer_size": 80,
    "maximum_incoming_transfer_size": 160,
    "server_mask": 0,
    "maximum_outgoing_transfer_size": 160,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0000",
        "0x0001"
      ],
      "output_clusters": [
        "0x0000"
      ]
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0007",
        "0x0012"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0007",
        "0x0012"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "4": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0007",
        "0x0012"
      ],
      "output_clusters": [
        "0x0012"
      ]
    },
    "5": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0007",
        "0x0012"
      ],
      "output_clusters": [
        "0x0012"
      ]
    }
  },
  "manufacturer": "smarthjemmet.dk",
  "model": "QUAD-ZIG-SW",
  "class": "QUAD-ZIG-SW.QUAD_ZIG_SW"
}

@TheJulianJES Help is not really wanted. What I originally had worked perfectly. Only thing not passing is the code coverage. Is that a requirement to get it merged?

Okay I see. Is it for you to look at "at some point" as a reminder? Or someone else? My question really is, do I need to take action?

I'll take another look again at this soon. In the mean time, you can try to see if you can make the v2 quirk work if you want.
E.g. by copying/pasting the lines at the bottom from this comment into the quirk (replacing the replace_cluster_occurrences).
(Adding those two lines for endoints (1?) 2, 3, 4, 5.)

Regards to your "It was also missing on endpoint 1 in the replacement. I don't think that was intentional" it actually was. The physical device has 5 buttons, but only 4 of them should work as MultistateInput.

range(1, 6) gives us device triggers for five buttons though. That was also in the original code.
Isn't that one batch of device triggers too many then?
It's also a bit weird, because the original device signature has the MultistateInputCluster on all 5 endpoints (as an output cluster). Could be firmware thing of course, still weird though..

Unfortunately it's not working.

On which HA version did you test the v2 quirk? Did you test it by replacing the whole quirks library or just inserting the one quirks file as a "custom quirk" (using the ZHA config option) (recommended for testing this).
Also, did the quirk apply at least? E.g., in device settings in HA or in the device signature, was there a CustomDeviceV2 quirk used?

@TheJulianJES I am doing the custom quirk with the ZHA config option. It was matched to the signature of one of the devices I tested (the old V1 firmware), but no events were shown when I pressed the buttons.

@TheJulianJES I am doing the custom quirk with the ZHA config option. It was matched to the signature of one of the devices I tested (the old V1 firmware), but no events were shown when I pressed the buttons.
Also, I appreciate the help. Let me know if there is anything I can do.

@mortenmoulder … was any of your quirk versions working when you added them as custom quirks? I think we are many users waiting for ZHA support to happen and I would like to try deploying a quirk file if your can point to a version you tested to be working.
@TheJulianJES what is missing yet before the PR can be accepted? Hope you will have the time to look at this again. Really appreciate the work you are doing.

@OptionHenrik Yes, the quirk was working perfectly before @TheJulianJES's changes. Feel free to go look at the commit just before his changes, and grab the file from there to give it a go yourself.

I've made the changes suggested in this comment: https://github.com/zigpy/zha-device-handlers/pull/3400#issuecomment-2420918826
So, I've replicated what the original quirk did (removes actual MultistateInput output clusters and inserts our virtual MultistateInput clusters as input clusters. This technically isn't correct, but let's see if that's the issue with the v2 quirk.)
The original PR also created a device trigger for endpoint 6, even though there the device only goes up to endpoint 5.
Please try and see if these changes work now.

@OptionHenrik Yes, the quirk was working perfectly before @TheJulianJES's changes. Feel free to go look at the commit just before his changes, and grab the file from there to give it a go yourself.

Works like a charm … great work so far even though it’s only a custom quirk. I hope you guys get it integrated into the standard ZHA soon

Please also test the v2 quirk now. It was changed again.

@mortenmoulder can confirm your quirk works with just a model name change for MULTI-ZIG-SW as well! Great job.
I'll try to find time to test out @TheJulianJES changes later.

Any news here on the current version in this PR?

Any news here on the current version in this PR?

See my previous comment. Works like a charm with ZHA if you install it as a quirk.

It would also be ideal to know if the updated v2 quirk version works correctly now. Then, we'd be able to finally merge this (after I add some tests).

@mortenmoulder  would this quirk also work for MULTI-ZIG-SW?

trying to get the latest version of this quirk to work with MULTI-ZIG-SW it doesnt work, and i get the following in the HA logs:
2024-12-13 01:04:27.370 ERROR (MainThread) [homeassistant.components.logbook.processor] Error with zha describe event for zha_event
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/logbook/processor.py", line 259, in _humanify
    data = describe_event(event_cache_get(row))
  File "/usr/src/homeassistant/homeassistant/components/zha/logbook.py", line 73, in async_describe_zha_event
    event_type = event_type.replace("_", " ").title()
                 ^^^^^^^^^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'replace'

this is on HA 2024.12.2


Uncaught reflect-metadata shim is required when using class decorators

Please provide us with the following information:

OS?

Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)

macOS Sierra
Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:

Running of angular/angular-cli#master
angular-cli: 1.0.0-beta.26
node: 7.2.0
os: darwin x64
@angular/common: 2.4.4
@angular/compiler: 2.4.4
@angular/core: 2.4.4
@angular/forms: 2.4.4
@angular/http: 2.4.4
@angular/platform-browser: 2.4.4
@angular/platform-browser-dynamic: 2.4.4
@angular/router: 3.4.4
@angular/compiler-cli: 2.4.4
Repro steps.

Was this an app that wasn't created using the CLI? What change did you do on your code? etc.

$ ng new reflect-metadata-issue
$ cd reflect-metadata-issue
$ ng serve

Now open in the browser and view the console to get this error message
Uncaught reflect-metadata shim is required when using class decorators
The log given by the failure.

Normally this include a stack trace and some more information.

Mention any other details that might be useful.
As said above, this is running the current master

Thanks! We'll be in touch soon.

@clydin suggested in slack that the issue is related to #3812.
The workaround is adding import './polyfills'; to src/main.ts.

False alarm. Thanks to @clydin for reminding me to npm link angular-cli .


Brent root finder fails to find roots

Hello, ran into a situation where Brent's root finder failed to find roots, which you can see in the following program:
    static void Main(string[] args)
    {
        var x = new[] {      0,  845.4,   1703,   2459,   3389, 4285.3, 5006.2, 5982.4, 6710.9, 7593.5, 8188.1, 9181.2, };
        var y = new[] { 1.8853, 1.8618, 1.8414, 1.8213, 1.8013, 1.9701, 1.8326, 1.6421,  1.415, 1.0214, 0.6688,      0, };
        var f = CubicSpline.InterpolateNaturalSorted(x, y);
        var y0 = 1.79;
        var x0 = Brent.FindRoot(x1 => f.Interpolate(x1) - y0, 3000, 5800, 0.001, 1000);
        Console.WriteLine($"x0 = {x0}, y0 = {y0}, y(interpolated) = {f.Interpolate(x0)}");
        Console.ReadLine();
    }

There's a clear peak at x=4285.3, y=1.97, but no matter how many iterations I specify or how accurate/inaccurate the match, it can't find a root. It can find a root if I narrow the search range to 3800-5800, or if the y0 < 1.79.
Not sure if this is expected with this method, but it was surprising.

Hi,
It seems you hit a nasty corner with this choice of points and target value y0. According to the implemenation you need to have a changing sign so that the algorithm works.
If you plot the spline interpolation, you will see that for 1.79 you can have multiple roots, and your initial range selection (3000, 5800) hits two y points, which have the same sign.

I'm not sure this helps you

Interesting, thanks. I didn't see that described in the documentation and hadn't looked into the code. I had already resolved this by switching to Newton-Raphson awhile back, but thought it might be worth lodging a ticket. Feel free to close if this isn't going to influence the code at all.

I agree that this is a bit frustrating, but it is a common limitation of bracketing methods.
I don’t see a valid way of enhancing a general purposing library like Numerics to deal with such issues. You can safely close the ticket, thanks for the effort and your time.


Positive Pixel Count error

Hi,
I followed the example (https://digitalslidearchive.github.io/HistomicsTK/examples/positive-pixel-count.html) and used the example image under the section of "Analyzing a small image with count_image" but got some error messages:
INFO:root:Using
python for large_image caching Traceback (most recent call last): File "PositivePixelCount/PositivePixelCount.py", line 49, in  main(CLIArgumentParser().parse_args()) File "PositivePixelCount/PositivePixelCount.py", line 39, in main label_image = color_map[label_image]
IndexError: index 4 is out of bounds for axis 0 with size 4
This same error happens if I try my own images.
I was using a fresh installation of HistomicsTK and my test was in the HistomicsTK web interface instead of a notebook.

@yliu7366 Thanks for reporting the issue. I will take a look at this early next week.

@yliu7366 I just tested both the jupyter notebook example for positive pixel count and running through the UI. In both cases i was able to get the expected result

Could you tell me the image and the parameters that you used so i can replicate the error?

@cdeepakroy thank you very much for looking into this issue. I am using the same image (screen copied from the jupyter notebook at resolution of 1688x932) and the same parameters in the notebook example. One thing I did is to convert the image to be a large_image format as HistomicsTK complains about 'not a large_image format' when I tried to open the image as is. Other than that I can not think about something else related to image index (size) error.

I think i did the same as you described. Can you please run through the jupyter notebook and check if you get the same error?

It magically works now! Did not do anything except our CentOS server hosting histomicsTK was rebooted and now all suddenly it works!
Thank you for your help!


ENH consider making convergence warnings more informationve

When running a benchmark for a range of datasets, I sometimes get convergence warnings that look like this:
Solver lasso_jl did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver Celer did not reach precision 1e-06.
Solver Celer did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver skglm did not reach precision 1e-06.
Solver sklearn did not reach precision 1e-06.
Solver Celer did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver skglm did not reach precision 1e-06.
Solver sklearn did not reach precision 1e-06.
Solver Celer did not reach precision 1e-06.
Solver sklearn did not reach precision 1e-06.
Solver Celer did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver skglm did not reach precision 1e-06.
Solver sklearn did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.
Solver lasso_jl did not reach precision 1e-06.

This is not very informative. It would be nice to get information about what context the solver failed to converge for.

Yes I agree.

precision 1e-6 here means: solver did not go below "optimal value found across solvers + 1e-6".

this is not super clear from the message, but it's hard to convey this while remaining concise (consider the msg is printed 10s of times)
this is nasty, as all the solvers may not converge. I don't have a clean solution for that

the unique objective and dataset are available when the msg is printed so as a first step it's straightforward to add "{objective}, {dataset}" to the error msg: https://github.com/benchopt/benchopt/blob/main/benchopt/plotting/plot_bar_chart.py#L50!

you can send a quick PR for 2


chruby: unknown Ruby: ruby-2.2.0

Why won't ruby-2.2.0 in .ruby-version work, whereas chruby ruby-2.2.0 will?
% whoami
whoareyou
% sudo su myapp
% cd /home/www/myapp/
% whoami
chruby: unknown Ruby: ruby-2.2.0
myapp
% cat .ruby-version
ruby-2.2.0
% which ruby
/usr/local/bin/ruby
% chruby ruby-2.2.0
% which ruby
/home/www/myapp/.rubies/ruby-2.2.0/bin/ruby

Full transcript of deployment:
https://gist.github.com/dt1973/7b99dfb75bd26e1e5ed7

Is /home/www/myapp/ the $HOME and did you check echo ${RUBIES[@]}? Also, it is vastly easier to not use chruby in project, but instead install ruby via brightbox or into /usr/local.

Yup:
% env
HOME=/home/www/myapp
% echo ${RUBIES[@]}
/home/www/myapp/.rubies/ruby-2.2.0

Basically I'm using chruby because installing Ruby locally seems to be the only way I can use my Rails app without Bundler, Rake etc. complaining about the lack of /usr/local permissions.

@dt1973 that is what bundle install --deployment is for. It will install all gems into $app/vendor/gems/.
Double check your shell configuration. I'm guessing you're loading chruby only for interactive shells, but not for uninteractive shells.

I was under the impression that bundle install --deployment was to be avoided due to the whole:

You are trying to install in deployment mode after changing your Gemfile. Run bundle install elsewhere and add the updated Gemfile.lock to version control.

thing. Ie. whenever my Gemfile changes I have to "run bundle install elsewhere", but I don't have anywhere else. Came across http://stackoverflow.com/questions/6785626/unable-to-update-gems-on-production-server with no real solution, just a quick fix:
bundle install --no-deployment && bundle update && bundle install --deployment

--deployment is designed for production and when you have a committed Gemfile.lock. It also does not require sudo access, which is a must for production.

Cool, fair enough. Thanks man!
Close it if you wish.

Closing for now, but I suspect there might be whitespace in .ruby-version. Try running hexdump -C .ruby-version.


Readme update

Since the uglify option was removed I think it makes sense to take it out of the docs.

📦 v8.1.1


Razor.Run performs worse and worse as foreach loop iterates in console app

Hi!
I'm using RazorEngine to compile and send emails, and I have an automated task that runs every other weekend. I noticed that performance is extremely good at the beginning, but that overtime it slowly degrades.
I did some math and when the program starts, it will generate about 280 emails per minute. By the time the console app wraps up, it has slowed down to around 18 per minute. The app sends about 3000 emails total and that number continues to grow.
I did some testing and the pain point is definitely building the template.
We use the following line to generate the template. This takes place inside a foreach loop that generates the email and saves it to a database where it is picked up by a mailer and actually sent.
Engine.Razor.Run(template.Name, typeof(T), templateVars);

Any thoughts?

Having similar issues, I do use Compile / Run and (v3.9.3):

cold run = 3.5 sec (maybe somehow/caching/precompiling dropped to 0.9sec)
each other run = 0.3sec for a HTML - far more than the <1ms announced for cached and compiled templates...

Got same behaviour (times) when I use RunCompile with a fixed key!
Also had an issue that a no template was found under the given template key, but after also added the model type to the Compile / Run calls, this was no more an issue...
My settings are:
			var templateConfigDebug = new TemplateServiceConfiguration()
			{
				Language = Language.CSharp,
				EncodedStringFactory = new HtmlEncodedStringFactory(),
				Namespaces = new HashSet<string>(namespaces),

				// Could not swet with fluent:
				Debug = false,
				CachingProvider = new DefaultCachingProvider(),
				TemplateManager = new DelegateTemplateManager()
			};

Hi running in the same issue. I have a webjobs used to send emails massively.
After a while the process starts to degradating.
My code:
            config.DisableTempFileLocking = true;
            config.CachingProvider = new DefaultCachingProvider(t => { });
            config.TemplateManager = new EmbeddedResourceTemplateManager(modelType);

            RazorEngine.Engine.Razor =  RazorEngineService.Create(config);

            var body = RazorEngine.Engine.Razor.RunCompile(name, modelType, model);

I too am noticing slow rendering times.  I am using the IsolatedRazorEngineService, adding the templates and compiling in advanced and even so with the batches, I'm seeing well over 2 + seconds per template rendered although the templates are supposed to be cached.  Interestingly enough I created a unit test to recreate the issue, used a simple object and found I could render 1000 templates in under 2 seconds using the same exact method.  I am at a loss for the difference in performance.  Maybe the serialization process for the remote app domain?