[TDD] Write a unit test for a command line interface?

The idea is to play with such a test, i.e. try to spawn the featurebook process with some params and assert what's sent to the standard output. For inspiration:
var spawn = require('child_process').spawn,
  concat = require('concat-stream'),
  path = require('path');

describe('featurebook-cli', function () {

  var executable;

  beforeEach(function () {
    executable = path.join(__dirname, '..', 'bin', 'featurebook')
  });

  it('should output available commands', function (done) {
    var featurebook = spawn(executable, ['--help']);
    // TODO Handle stdout and assert what was printed
  });

});

This is not an issue. Follow TDD and add any tests while fixing a bug or implementing a new features.


[BUG] seemingly trying to use \ on linux instead of / when executing something in /tmp

Describe the bug
It seems that when trying to execute any language that needs to be compiled first (Python works because it doesn't need to compile from my knowledge) it is trying to access the compiled file like this /tmp(temp file number).(compiled file ending) which results in an EACCES Permission denied.
Software Version
OS: Archcraft x86_64,
Plugin Version: 1.11.1
Obsidian Version: 1.5.12-1 Edit: downloaded from the arch extra repo
To Reproduce
Steps to reproduce the behavior:

create a codeblock for any compiling language like rust or java (in my example I used java)
specify run-(chosen language)
write simple hello world the way it works with compiler normally
press run
see Error while executing /usr/bin/java -ea /tmp\temp_1714979553374.java: Error: EACCES: permission denied, open '/tmp\temp_1714979553374.java'

Expected behavior
It should output hello world just like it does in python.
Screenshots

Additional context
if I'm just stupid and set it up wrong please inform me of it. Because I do not quite understand if this is a bug or if I did something wrong.
Sorry for any grammatically wrong sentences, English isn't my first language

I am also encountering this issue.

same happening in c-programming, is there any temporary workaround?

make this change in main.js

to

then it works for me

I am also encountering this issue.

Thank you @He-Zu 🙏

@He-Zu You made my day! Thank you 🙏

@He-Zu Thank you this worked.

Haha I didn't notice this issue until now. I submitted a PR that should fix the same problem against issue #347

Fixed with new release version 1.12.0


fix(turborepo): Passing a relative path to --cwd when using --skip-infer.

Ran into this while testing changes. In general we should figure out better abstractions for relative and absolute paths in Rust.

@mehulkar more details here, we overlooked this one from this original fix: https://github.com/vercel/turbo/pull/3079/files

@mehulkar  yeah basically we need to pass absolute paths to Go and we're not currently doing that when we have the --skip-infer flag

Curious, why this additional normalization isn't also in the shim.rs, only in cli/run handling?

It is, but in this case with --skip-infer we bypass the shim entirely. In the future I would prefer a better abstraction where we have a type called say, AbsolutePath that when constructed canonicalizes the path automatically, but that is a larger task (maybe a good first Rust issue if anybody's interested!)


UX Improvement of "Active scams" panel

Scams list will be much attractive to be sorted by lines with status category, active lines group on top as default.
Optionally, having sorted and unsorted switch by clicking the column title, and other titles also.

I may have time do to this tomorrow if you don't @MrLuit

Just uploaded the alpha of v2, which will have new sorting options. The new version should make this much easier since all content is served dynamically.

e389ffab5922109736a223c41671f03e30bd2564 allows you to click on the column title in order to sort it that way. There are still some improvements to make to the sorting, but it works fairly good.


Cannot access 'h' before initialization by Table Compact view

Describe the bug
When creating a table as chart type with a column displayed as an heatmap, clicking the 'compact view' button triggers an Unexpected error: Cannot access 'h' before initialization.
To Reproduce Steps to reproduce the behavior:

Create a table
Change a measure column's style to heat map
Click on compact view above the table
See error

Expected behavior
I'm not sure what the compact view is supposed to do, but I don't expect to encounter an error.
Screenshots or video

Environment (please complete the following information):

Visualize environment and version: PROD v4.7.4
Browser and version: Microsoft Edge v128.0.2739.67

@mwannier30 this issue is now resolved on TEST and will be on PROD with the next release.
Test chart with heatmap and compact view https://test.visualize.admin.ch/en/v/YuPhRu0hIKQS?dataSource=Prod


Allow TextLocation to be created

There is currently no way of creating a TextLocation from a row, column.   Even if that seems to have
been the desire from a previous PR:
https://github.com/simonbs/Runestone/pull/138
This allows me to create TextLocations, which in turn let me gets offsets, which in turn allow me to get screen coordinates from a given position.

@migueldeicaza Makes sense to me. I'm happy to merge this once the SwiftLint warning is addressed. I attempted fixing it but it seems that I don't have permission to push to your branch.

Thank you Simon.
I think I fixed the issue;  I am not sure why this time it did not let you push to my branch.   Apologies for that.


Funktion SetExclReclEntries in Codeunit 5626 cannot be used for SaaS

Please change / delete the Scope OnPrem for this function, so that it can be used in extensions with Scope Cloud.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 52844.


RuntimeError numpy

Hello,
When running the "sepsis_cohort.py", I got:
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
even though I installed the same versions of the packages in requirements.txt. Do you have any idea what the error was about?
Thank you.

Try to update your numpy by conda update numpy  OR  pip install numpy --upgrade. The code here should work with latest version of numpy.


Allow to display of a "fallback" component

This component is super usefull when fetching data from remote server.
Since such an operation could fail, it would be great to allow the display of a "fallback" component that does not seems to load infinitly, but instead inform the user of the error.
I think it could look like this:
import loader from 'hoc-react-loader'

const Component = ({ users }) =>
Component {JSON.stringify(users)}

const Fallback = ({ error }) =>
{`Retrieval of users failed with error ${error}`}

export default loader(Component, { wait: ['users'], error: ['error'], fallback: Fallback })

And error could also be specify as a function.
Thoughts?

Hi !
This is something you can already do to the child component :
const Fallback = ({ error }) =>
{`Retrieval of users failed with error ${error}`}

const Component = ({ users, error }) => (
  error ?
    <Fallback error={error} /> :

Component {JSON.stringify(users)}

)

export default loader(Component, { wait : props => props.users || props.error })

Or with two loaders if you want to hide Fallback from Component  :
const Component = ({ users }) =>
Component {JSON.stringify(users)}

const Fallback = ({ error }) =>
{`Retrieval of users failed with error ${error}`}

export default loader(
  loader(Component, { wait: ['users'], LoadingIndicator: Fallback }),
  { wait: props => props.users || props.error },
)

That being said I like your idea with that in mind :

error should be same as wait as it can handle an array or a function
we should have a default fallback

For the default fallback Component, what about a little cross with errors on tooltip to be UI friendly ?

Hi !
I don't really like the idea of modifying my child component or to wrap it with a something else that this HOC.
Adding another loader is definitely an option but since it's a very common need, I think it's worth adding this to the loader itself.
I like your idea of cross image as a default fallback ! We should try to find a cross image that remind the default loader.
I'll give it a try and open a PR as soon as possible.

We then agree :)
I'm looking for your PR.

I unassigned you @ptitFicus so anybody else can feel free to write this.
If you want to work on this again, you are welcomed :)


Revert "Disable SMP."

This reverts commit 9284726b72ad09300ac5cd3412170180bfc810ca.

What's the motivation for re-enabling SMP writing?

@anurag-k4 SMP writing was disabled due to interference with bluez, but now that we have disabled bluez, this interference will no longer occur.  I do still have a question on this for @jkstrick-k4 as far as I  assume it is better to re-enable this, now that bluez is gone, just so that having it disabled doesn't cause issues with something else?

Have we discovered that re-enabling SMP writing cause issues elsewhere?

@anurag-k4 I don't believe we have seen any functional issues with SMP writing re-enabled.  @jkstrick-k4 to confirm.

SMP is the protocol used for authentication.  We need it in order to do passkey authentication.  We disabled it before because BlueZ was handling SMP / Passkey auth and noble was interfering in the handshaking and causing it to fail.  Now that BlueZ is not being used, we need noble to handle SMP.


Is this package still being maintained?

270 open issues at the moment of writing, 58 open pull requests, (almost) all of them get zero response whatsoever. Last release is over two years (!) ago.
@shentao nothing personal against you (great work so far on this library!) but shouldn't you be looking for other people who still can/want to maintain this project?
Let me know if you need any help.

Hey! That's true, it is not actively developed. There's been a Vue 3 compatible release a while ago thanks to @mattelen.
I could in fact look for some help maintaining it, but sadly most people don't stick around. And my low involvement probably isn't helping. Fixing issues, reviewing PRs is far from exciting. Especially when you see hundreds of them – it can be overwhelming.
As for the component API, I don't think it needs any new major features, except for a11y improvements. There's a v3 branch that you can take a look at where I experimented with a rewrite a long while ago, but hit a block with a11y. There's a branch with those changes too under a11y-improvements.
If you (or someone reading this) are interested in helping out - let me know.

Hi @daviddelusenet. I'm still around and enjoy when I can working on this. I've been focused on maintaining the current v3 alpha version, but I'm quite keen to help get something to v3 stable

@mattelen Tomorrow marks the 1 year anniversary of the 3.0.0-alpha.1 release. Is there any chance you will tag a new release.. a beta or release candidate or final 3.0?
Many thanks!

Hi all. You'll be pleased to hear that this package/project is still being actively maintained, and we are working towards multiple releases. You can see a project update here: https://github.com/shentao/vue-multiselect/discussions/1589


Language server cannot correctly report diagnostics for sources containing multibyte characters

Bug description
If a source contains multi-byte characters, Prisma Language Server cannot report diagnostics with correct position.
e.g.
// 📅📅📅📅📅
enum Day {
  Monday
  Tuesday
  Wednesday
  Thursday,
  Friday
  Saturday
  Sunday
}

It must be reported that a problem is in the line Thursday, that is not an enum value definition.
But the problem is reported in a position of  Friday.
While you put a charater 📅 more, the reported position also shift.
How to reproduce

Write prisma schema
Make it invalid
Put multi-byte character before the invalid line.

Expected behavior
The problem is reported in correct position.
Prisma information
// 📅📅📅📅📅
enum Day {
  Monday
  Tuesday
  Wednesday
  Thursday,
  Friday
  Saturday
  Sunday
}

Environment & setup

OS: Arch Linux
Editor: Neovim
Editor version: v0.10.0-dev-344906a

Same issue:
https://github.com/prisma/language-tools/issues/1308

Hey @kyoh86, a PR fixing issues with multibyte characters was part of our 5.16.0 release, can you please confirm if that version resolves this issue for you?
Thank you in advance! 🙏

@Druue Wow! It's fixed! Thanks so much!

Cool, I'll be closing this as complete then :) ✨


cefine: 2.23 -> 2.24

Hm, I can't find cefine in our package set anymore and I'm not sure why. nix build .#cefine complains about a non-existent cefine and nix flake show indeed does not show it anymore :thinking:


Antivirus detecting it as a Trojan

So I downloaded the zip file from releases and chrome showed a message saying it was dangerous, I allowed it anyway because I saw that other people had the same problem but after bypassing chrome's filter, windows security said it took action on the file due to being malicious and it classifies it as a Trojan. Is this normal? Should I just allow it anyway in the antivirus? Is it safe to use this program? Why would the antivirus remove it and why would chrome also say it's dangerous?

As long as you download from here you're safe. Do a Search this topic has been answered several times.

yeah I downloaded it from there but do you know why would it say it's a virus or something?

yeah I downloaded it from there but do you know why would it say it's a virus or something?

Do a Search Here, this topic has been answered several times.

https://github.com/quasar/Quasar/issues/952

Ok, so it's just a false reading due to the program having a lot of power basically, right?

I keep allowing but eveytime I try to downoad it it finds a different type of malware so I keep allowing, downloading, allowing, downloading, etc.

You can turn off Windows Defender and after you add Quasar(folder you have it in) to your exclusion list within Defender turn it back on.

Ok, so it's just a false reading due to the program having a lot of power basically, right?

Correct. It's a false positive.


Unhandled Exception: IsarError: Unsupported processor architecture "linux_arm64". Please open an issue on GitHub to request it.

Hello.
I want to use this package in a flutter application on Raspberrypi (linux arm64).
But it seems this package does not support arm64:
Unhandled Exception: IsarError: Unsupported processor architecture "linux_arm64". Please open an issue on GitHub to request it.

I did it by cloning isar to Raspberry-pi and building it for arm64.


Application is unresponsive.

After fixing line 16 of the conway.py file the application window pops up.  The window sits idle and when viewing the program through task manager says "Not responding". Idk what to fix but sad to see it not working.

The same thing happened for me, I did what #2 did and replaced time.sleep(0.01) with plt.pause(0.1) on line 43 and now it's working for me.


Disable invites for 1:1 private DMs/direct chats by default OR ask for 2nd user's consent before actually inviting

Suggestion
Please read https://github.com/vector-im/element-web/issues/17314 for context.
I would like for all clients/servers to disallow inviting a 3rd user into a private 1:1 chat by default.
If a user wants advanced functionality by inviting bots or personal assistants, that should involve an extra step or two, not the other way around, as the workaround suggested in the linked issue does.
The most straightforward method of creating and using a 1:1 chat, without tweaking anything, should cater to the average non-tech-savvy user, someone who would have no idea of the consequences of being part of a 1:1 chat where both users are admins and can invite all and sundry to become part of a potentially private conversation.
This could be a very targeted, narrow component of #1255.
Alternative
I would like for all clients/servers to ask the 2nd user for consent before sending out an invite to any 3rd user to a private 1:1 chat. This will ensure that no single user can abuse their admin privilege to allow others to gatecrash a private conversation.

As per https://github.com/matrix-org/synapse/issues/10000#issuecomment-841852293, I'm closing this. Please keep the conversation limited to element-web until a conclusion has been reached.

The issue really does not belong only in Element Web, its about the application of DMs across the protocols, not about the path that Element specifically takes.

Okay, I don't think we need three issues to track this bug though. We can keep this one open instead though.

Please don't make an issue on matrix-org/synapse expecting the synapse team to cede to your request, prioritisation exists. While this may be an important issue for you, to me it looks like this requires some heavy-handed changes to the spec to disallow such invitations, though right now this is not requested or wanted behaviour due to account migrations, where someone might invite and op a new account to a DM, and have their old account leave, Element themselves (Element Home) uses this approach.
Until Decentralized Accounts exist (https://github.com/matrix-org/matrix-doc/pull/2787), I don't see this latter part changing, and maybe it'll be possible to fold this behaviour into Canonical DMs (https://github.com/matrix-org/matrix-doc/pull/2199), where it can be part of the whole "DM" mode of communication.

You guys are the maintainers with experience on which repo the issue belongs in, so closing the other 2 issues is fine by me.

expecting the synapse team to immediately cede to your request

There was no expectation of that, the only expectation I had was that someone would think "yeah, it seems like a serious problem, lets prioritise this issue". If you decide this should go through the standard MSC process, that is fine.

where someone might invite and op a new account to a DM, and have their old account leave, Element themselves (Element Home) uses this approach.

This is also advanced functionality, only needed by tech experts or power users at the maximum, and I'm all for such facilities existing, but not by default. That way lies madness. A great example is Firefox. You can tweak about:config to your heart's extent to get your desired behaviour out of it, but the browser comes with sane defaults and doesn't expose users to gory details or expert level behaviour until they explicitly opt into it.

This is also advanced functionality, only needed by tech experts or power users at the maximum

No it isn't
Element Home (https://element.io/blog/element-home/) wraps it up as part of a really simple flow,
but if your rooms are set up in the way you describe then they will be entirely lose in the migration

I'm not saying average users shouldn't be able to migrate to Element Home.
What I mean is, you, as a coder, can implement this however you like, but the functionality doesn't need to be exposed to the average user.
Most of the issue is about visibility of advanced options.

Given federation/decentralisation it pretty much is limited to being implemented as inviting the user identity you are migrating to and leaving from the old identity, given this proposal disables that ability, it'll break the migration of DMs

Okay, now I get it. Yeah, Canonical/Immutable DMs should already have been implemented before Element Home migration was created. Then it would have taken a different route.

I guess the best way forward would be to enable "consensual invitations" when in order to generate an invite all co-admins have to agree on doing it. Just denying/forfeiting the right to invite strikes away too many good use cases.

Yeah, what if your friend passed away and you didn't want to lose the history for sentimental reasons yet now they can never consent to your action

Bit weird to be held hostage by a chat history, no?
Anyway, a solution has magically appeared: https://matrix.org/blog/2021/05/20/google-summer-of-code-2021#jaiwanth-exporting-conversations-from-element.
Not only should conversations be exportable, they should be importable into Element as well. (And maybe other clients eventually.)

they should be importable into Element as well.

That is not planned for GSOC though, iirc.
This also doesn't solve the migration problem... To make this work you'd need to completely rewrite the script and you'd also need an MSC for a common export/import format...

That is not planned for GSOC though, iirc.

That was my own suggestion. I'm aware it's not part of GSOC.

you'd also need an MSC for a common export/import format...

That's exactly what I'm suggesting. First-class citizen.

Okay, I was ruminating on this problem for a while. Here is a proposal:
Spaces(TM). The new graphene. What if every "chat" in the chat list was implemented as a Space with a directory structure? Then it could contain multiple Rooms which cater to specific things, allowing for more granularity in multiple ways. This structure may or may not be exposed to the user.
Option 1 - Space with directory structure exposed to user:

1:1 Chat with UserX:

DM Room (Main, immutable/canonical) : No Invites/Bots/Assistants of any kind.

"Inviting" a 3rd user automatically creates a new Group Chat (this could be explained by a dialogue box?).

Bot Room (Optional/addable) : You can send messages here to interact with Bots, and they can't see other Rooms.

Alternatively, all messages a Bot is supposed to see should automatically be added to this Room instead of the DM Room.
Mirrors of the message in both Rooms (implemented as Replies, maybe?). Tapping on the Reply part in the DM Room takes you to the corresponding message in the Bot Room, and vice versa.

Assistant Room (Optional/addable) : Same deal as Bot Room. (I don't know what they are and how they differ from Bots.)
Media/File Room (Automatically added when needed) : This would only contain media/file messages.

Mirrors in both Rooms. Same concept as above.

Groups (Automatically added when needed) : An expandable item which exposes a list of all groups you share with UserX.
Spaces (Automatically added when needed) : Same as Groups.

Group Chat with UserX + UserY: everything corresponds to 1:1 chat, but with some difference.

Chat Room (Main) : No Bots/Assistants of any kind. Invites are allowed (but can be disabled?).

When being created, maybe the client should ask whether you want to be the only Admin (behaviour users will be used to from other apps) or every added member should also be an Admin.

Option 2: Space with directory structure hidden from user:

1:1 Chat with UserX:

DM Room: Same as before.
Bot Room: Hidden from UI. Maybe there can be an option to unhide it (for debugging purposes?).
Same with other Rooms. Hidden from UI, but functionality remains the same.

Group Chat with UserX + UserY:

Chat Room: Same as before.
Bot Room: Hidden from UI, etc.

Not only will this directory structure help in keeping things separate, it will also make implementing Export/Import functionality easier. Everything will already be neatly bundled into separate Rooms.
Further, once Export/Import is implemented, that could then become the default way of migrating users on Element Home.

No feedback on this?

I created #2428 some time ago to tackle the same problem but with a different solution. You can still invite more people/bots etc. but they can by default not see the entire history.

@PeerD Thank you, but that solution breaks Element Home migration functionality: https://github.com/vector-im/element-web/issues/17314#issuecomment-842951585

Isn't the correct solution to this to use a social mechanism? Basically, if your DM peer invites an additional bot to the discussion, you are free to leave the room.
In this case the bot may be able to access historical messages from the room. This does not fundamentally change by making it impossible to invite a bot to the room: a participant of a room can retrieve the messages anyway and pass them to whomever regardless of Matrix permissions. In addition, the participant can have additional programs (bots) using the same account.
Depending on your client configuration, a bot from a separate account would be unable to decrypt messages the client has said, unless the client verifies the bot—this though is not the default configuration of Element.
Having those Matrix server permission limitations would actually cause practical problems outlines in other messages in this issue.
As a personal anecdote I have invited backup accounts (running on other homeservers) to DMs to allow me access should my primary HS have issues.
Should I need to have to ask a permission from someone else to do this? In my opinion, no. It is completely in my own hands whom I give my communication or communication I have access to, similarly as it is your in your control to decide whom you give your communication. By trusting your communication with me you are by extension trusting what I may be able to do with such communication afterwards, which includes passing it to secondary accounts, to bots, print it out and send to a newspaper; simply after the message has sent by the peer, it is out of the hands of the originator what is done with the message, and the only recourse is to stop communicating further.
(The ability to limit bot communication visibility is in my opinion unrelated to DMs and can be useful in rooms of any size, DM or not.)

@eras I get your point, that what a user can theoretically do with the chat history won't be prevented by this change.
However, my social circle isn't made up of leet hackers (or 1337 haxx0rs, as they say), and I feel quite confident in saying that would be the case for the vast majority of people. I'm assuming Matrix is intended to be used by everyone, and not just the technologically inclined?
Most of the people I peddle the app to are average users who don't have the time or inclination to delve into the intricacies of this app or most others.  I am worried about people who aren't tech-savvy accidentally polluting their (and my) chat histories by inviting one or more accounts to our 1:1 chat. This is why I'm asking for a chat where only 2 accounts can exist, a true 1:1 chat, or an Immutable DM, as per existing Matrix jargon. 2nd user's consent is the next best option.
By the way, even for Group DMs, the history should be visible only from the point an account was invited.
I thought this basic principle was universal in software design: you set the defaults to best cater to the average user. Any user who needs advanced functionality can then be provided the option to change the configuration to suit their needs.

P.S.: This problem is further exacerbated by the fact that the UI and messaging regarding DMs vs Rooms is unclear, as I mention in https://github.com/vector-im/element-android/issues/3409.

Not having DM in 2021 is kinda strange 🤔


bug/diagnose: web app getting *big.Int: tx parse error on integer strings

Problem

Query failed with rpc erro: code = Unknown desc = math/big: cannot unmarshal "[number]" into a *big.Int: tx parse error [cosmos/cosmos-sdk@v0.45.12/x/auth/tx/decoder.go:47] With gas wanted: '0' and gas used: '13332': unknown request

More Context
Aug 15, 2023

Relates to #1601

Note from @k-yang

I did some more digging. Turns out it's not a proto encoding issue, but rather a Golang standard library issue.
Our Golang code parses the string Amount field as a big.Int, and looking at the big.Int code:

// The base argument must be 0 or a value from 2 through MaxBase. If the base
// is 0, the string prefix determines the actual conversion base. A prefix of
// "0b" or "0B" selects base 2; a "0", "0o", or "0O" prefix selects
// base 8, and a "0x" or "0X" prefix selects base 16. Otherwise the selected
// base is 10.

Ref: https://cs.opensource.google/go/go/+/master:src/math/big/intconv.go;l=175-179?q=intconv&ss=go%2Fgo:src%2F

A prefixed zero causes the standard library to parse the string as base8 instead of base10, which is why we got weird LP token numbers. Stripping out the prefixed zero, we get the right answer because it falls back to base10 parsing.

Summary
It's a client-side fix. Int strings for protobuf should be "minimalistic"


How to design Validators to Handle Deserialization of JObjects

I have a model that looks like:
public class Model
{
   public string Name;
   public JObject Properties;
}

public class MyType
{
  public int Number;
  public int Id;
}

I want to first see if Properties can be deserialized into a specific type MyType, and then run a validator on the MyType object. I am having trouble designing the validation classes, because I want to have a step that tries to deserialize Properties before running the next validation step. What would be a recommended design?

I wouldn't bother using FV to do the first step, it's really not it's intended use. I'd attempt the deserialisation separately and if there are no exceptions then pass the deserialised MyType instance to FV for validation.

Are you saying I should have some intermediate representation of the model that doesn't have an JObject?
Or am I missing some way to deserialize in the ModelValidator and chain MyTypeValidator?
I tried the following, but the rule didn't seem happy, and my guess is because the input to RuleFor() is not actually returning a property.
this
.RuleFor(_ => _.Value.ToObject<MyType>())
.SetValidator(new MyTypeValidator())

I saw:

exception : System.InvalidOperationException: Nested validators can only be used with Member Expressions.

I mean, literally don't use FluentValidation at all. Deserialize the instance externally (not inside a RuleFor) and then pass it into your validator

Thanks.

@JeremySkinner I know you said you don't recommend this and there are some code smells, but we were kind of constrained by our system's validation pipeline and this worked.
Note: The ChildValidatorAdaptor wasn't typed, so we didn't implement the type Validate functions.
    /// <summary>
    /// This AbstractValidator creates a new validation context after converting the instance (aka object being validated) from TIn to TOut
    /// </summary>
    /// <typeparam name="TIn">The type you want to convert from.</typeparam>
    /// <typeparam name="TOut">The type you want to convert to.</typeparam>
    public abstract class AbstractValidationContextConverterValidator<TIn, TOut> : AbstractValidator<TOut>, IValidator<TIn>
    {
        readonly Func<TIn, TOut> transform;

        protected AbstractValidationContextConverterValidator(Func<TIn, TOut> transform)
        {
            this.transform = transform;
        }

        ValidationResult IValidator.Validate(ValidationContext context)
        {
            if (context.InstanceToValidate is TIn)
            {
                return base.Validate(new ValidationContext<TOut>(this.transform((TIn)context.InstanceToValidate), context.PropertyChain, context.Selector));
            }

            return base.Validate(new ValidationContext<TOut>((TOut)context.InstanceToValidate, context.PropertyChain, context.Selector));
        }

        public ValidationResult Validate(TIn instance)
        {
            throw new NotImplementedException();
        }

        public Task<ValidationResult> ValidateAsync(TIn instance)
        {
            throw new NotImplementedException();
        }
    }

Thanks for sharing your solution.


An old testing number for Quebec is sometimes fetched

Quebec appears to have changed the format of their testing dataset as this is also affecting the converted official testing dataset on Covid19Canada.

Fixed in Covid19CanadaData.


Optional signing for pull/push and baseProfileName

My use case:

Collect seccomp profiles using SPO
Put these profiles as json files in Gitlab project
In Gitlab CI/CD pipeline push profiles as oci artifcats to Gitlab registry
Specify result oci profiles in SeccompProfile

The Gitlab itself is self-hosted in air-gapped environment.
The problem is in step 3, where spoc tries to sign it in non-interactive mode and also in air-gapped environment (even if https_proxy configured), so it fails with an error.
It would be nice to add documentation on how to use it in an air-gapped environment, or make signing optional.

I am not sure if skipping the signing is a good idea. I think you need to allow https://oauth2.sigstore.dev domain. Maybe making the OIDC provider configurable.


RuntimeError: working outside of application context

When using the mailer to send an e-mail from a background worker (that is, outside of the Flask application context), it crashes and burns.

Due to the requirement "one Mail instance and multiple Flask apps all configured through the Mail instance's init_app", I don't think what I had in mind is possible. The Mail object then always needs the current_app to figure out which app (aka mail configuration) it should use. If it is instantiated through Mail(app), it already works without requiring the current_app to be set. You can close the issue as cannot fix as far as I am concerned.

After six years, But yeah i hope this might hint for other developers.
Thread(
target=copy_current_app_context(send_async_email),
args=(current_app._get_current_object(), msg),
).start()
We need to use get_current_object().
https://github.com/pgjones/quart/issues/56

You must be inside a context to access current_app. Either you're in a request or a CLI command, in which case this is already true, or you push one manually with app.app_context():. This is a general pattern in Flask and extensions.


[Bug] Issue reading attributes

When I try to add the domain light, I get the following error in the log
OS: UnRaid
Installation: Docker

Log output:
text  error  warn  system  array  login

file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1495
        const supportedColorModes = entity.initialState.attributes.supported_color_modes ?? [];
                                                        ^

TypeError: Cannot read properties of undefined (reading 'attributes')
    at new LightDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1495:57)
    at light (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2649:24)
    at createDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2629:10)
    at Bridge.createDevices (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2722:26)
    at async Bridge.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2714:9)
    at async BridgeService.create (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2811:9)
    at async file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:698:24

Node.js v20.18.0
[ 2024-10-28T07:32:00.700Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#eb committed and unlocked 1 resource
[ 2024-10-28T07:32:00.702Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_kind_sueden_deckenlicht>#e8 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_kind_sueden_deckenlicht.bridgedDeviceBasicInformation.state
[ 2024-10-28T07:32:00.703Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_kind_sueden_deckenlicht>#e8 committed and unlocked 5 resources
[ 2024-10-28T07:32:00.704Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_kind_sueden_deckenlicht ready endpoint#: 12 type: OnOffLight (0x100) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T07:32:00.705Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht.identify.state
[ 2024-10-28T07:32:00.706Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht.groups.state
[ 2024-10-28T07:32:00.707Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht.onOff.state
[ 2024-10-28T07:32:00.709Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht.descriptor.state
[ 2024-10-28T07:32:00.710Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#ff locked f8cb377aca7f4249b617635de3ce42b1.descriptor.state
[ 2024-10-28T07:32:00.710Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#100 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.711Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#ff committed and unlocked 1 resource
[ 2024-10-28T07:32:00.711Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#100 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.711Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updateDescriptor>#101 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.712Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updateDescriptor>#101 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.713Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht.bridgedDeviceBasicInformation.state
[ 2024-10-28T07:32:00.714Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht>#fd committed and unlocked 5 resources
[ 2024-10-28T07:32:00.715Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_deckenlicht ready endpoint#: 13 type: OnOffLight (0x100) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T07:32:00.716Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand.identify.state
[ 2024-10-28T07:32:00.718Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand.groups.state
[ 2024-10-28T07:32:00.719Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand.onOff.state
[ 2024-10-28T07:32:00.721Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand.descriptor.state
[ 2024-10-28T07:32:00.722Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#114 locked f8cb377aca7f4249b617635de3ce42b1.descriptor.state
[ 2024-10-28T07:32:00.722Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#115 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.723Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#114 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.723Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#115 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.724Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand.bridgedDeviceBasicInformation.state
[ 2024-10-28T07:32:00.725Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand>#111 committed and unlocked 5 resources
[ 2024-10-28T07:32:00.726Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_dusche_wand ready endpoint#: 14 type: OnOffLight (0x100) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T07:32:00.727Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.identify.state
[ 2024-10-28T07:32:00.729Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.groups.state
[ 2024-10-28T07:32:00.731Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.onOff.state
[ 2024-10-28T07:32:00.733Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.levelControl.state
[ 2024-10-28T07:32:00.736Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.descriptor.state
[ 2024-10-28T07:32:00.737Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#128 locked f8cb377aca7f4249b617635de3ce42b1.descriptor.state
[ 2024-10-28T07:32:00.738Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#129 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.738Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#128 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.738Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#129 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.741Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots.bridgedDeviceBasicInformation.state
[ 2024-10-28T07:32:00.743Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots>#125 committed and unlocked 6 resources
[ 2024-10-28T07:32:00.744Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f8cb377aca7f4249b617635de3ce42b1.aggregator.light_ld_og_bad_deckenspots ready endpoint#: 15 type: DimmableLight (0x101) behaviors: ✔identify ✔groups ✔onOff ✔levelControl ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T07:32:00.745Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand.identify.state
[ 2024-10-28T07:32:00.748Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand.groups.state
[ 2024-10-28T07:32:00.750Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand.onOff.state
[ 2024-10-28T07:32:00.752Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand.descriptor.state
[ 2024-10-28T07:32:00.753Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updateDescriptor>#13e waiting on reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#13d
[ 2024-10-28T07:32:00.753Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#13c locked f8cb377aca7f4249b617635de3ce42b1.descriptor.state
[ 2024-10-28T07:32:00.754Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#13d locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.754Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.descriptor.#updatePartsList>#13c committed and unlocked 1 resource
[ 2024-10-28T07:32:00.754Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updatePartsList>#13d committed and unlocked 1 resource
[ 2024-10-28T07:32:00.755Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updateDescriptor>#13e locked f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.state
[ 2024-10-28T07:32:00.757Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a locked f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand.bridgedDeviceBasicInformation.state
[ 2024-10-28T07:32:00.758Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction reactor<f8cb377aca7f4249b617635de3ce42b1.aggregator.descriptor.#updateDescriptor>#13e committed and unlocked 1 resource
[ 2024-10-28T07:32:00.759Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction initialize<f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand>#13a committed and unlocked 5 resources
[ 2024-10-28T07:32:00.760Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f8cb377aca7f4249b617635de3ce42b1.aggregator.light_l_og_bad_wand ready endpoint#: 16 type: OnOffLight (0x100) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T07:32:00.762Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5353 localAddress: <IP_ADDRESS>:5353
[ 2024-10-28T07:32:00.768Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5353 localAddress: :::5353
[ 2024-10-28T07:32:00.769Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5353 localAddress: <IP_ADDRESS>:5353
[ 2024-10-28T07:32:00.772Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5353 localAddress: :::5353
[ 2024-10-28T07:32:00.780Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction start-network#16f locked f8cb377aca7f4249b617635de3ce42b1.productDescription.state
[ 2024-10-28T07:32:00.780Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction start-network#16f committed and unlocked 1 resource
[ 2024-10-28T07:32:00.785Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5540 localAddress: :::5540
[ 2024-10-28T07:32:00.786Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction set<f8cb377aca7f4249b617635de3ce42b1>#172 locked f8cb377aca7f4249b617635de3ce42b1.network.state
[ 2024-10-28T07:32:00.786Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction set<f8cb377aca7f4249b617635de3ce42b1>#172 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.787Z ] [ DEBUG ] [ matter.js / UdpChannelNode               ]: Socket created and bound remoteAddress: undefined:5540 localAddress: <IP_ADDRESS>:5540
[ 2024-10-28T07:32:00.787Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction set<f8cb377aca7f4249b617635de3ce42b1>#173 locked f8cb377aca7f4249b617635de3ce42b1.network.state
[ 2024-10-28T07:32:00.787Z ] [ DEBUG ] [ matter.js / Transaction                  ]: Transaction set<f8cb377aca7f4249b617635de3ce42b1>#173 committed and unlocked 1 resource
[ 2024-10-28T07:32:00.790Z ] [ ERROR ] [ matter.js / Logger                       ]: Unhandled error detected: Cannot read properties of undefined (reading 'attributes')
  at new LightDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1495:57)
  at light (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2649:24)
  at createDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2629:10)
  at Bridge.createDevices (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2722:26)
  at async Bridge.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2714:9)
  at async BridgeService.create (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2811:9)
  at async file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:698:24
[ 2024-10-28T07:32:04.154Z ] [ INFO  ] [ Storage                                  ]: Storage location: /data
[ 2024-10-28T07:32:04.336Z ] [ INFO  ] [ WebApi                                   ]: HTTP server (API & Web App) listening on port 8482

Bridge Configuration:
{
  "name": "R330",
  "port": 5540,
  "filter": {
    "include": [{ "type": “domain”, "value": “light” }],
    "exclude": []
  }
}

Same error in my HA log
`s6-rc: info: service legacy-services successfully started
[ 2024-10-28T09:52:02.924Z ] [ INFO  ] [ Storage                                  ]: Storage location: /config/data
[ 2024-10-28T09:52:03.024Z ] [ INFO  ] [ WebApi                                   ]: HTTP server (API & Web App) listening on port 8482
[ 2024-10-28T09:52:39.582Z ] [ INFO  ] [ matter.js / ServerStore                  ]: Opened f4f5219514b54efaadd1270396d2c671 storage at /config/data/f4f5219514b54efaadd1270396d2c671
[ 2024-10-28T09:52:39.983Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f4f5219514b54efaadd1270396d2c671 ready endpoint#: 0 type: RootNode (0x16) behaviors: 💤parts ✔index ✔basicInformation ✔accessControl ✔groupKeyManagement ✔generalCommissioning ✔administratorCommissioning ✔operationalCredentials ✔generalDiagnostics ✔commissioning ✔network 💤productDescription 💤sessions ✔descriptor
[ 2024-10-28T09:52:39.989Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f4f5219514b54efaadd1270396d2c671.aggregator ready endpoint#: 1 type: Aggregator (0xe) behaviors: 💤parts ✔index ✔descriptor
[ 2024-10-28T09:52:40.007Z ] [ INFO  ] [ matter.js / Node                         ]: f4f5219514b54efaadd1270396d2c671 going online
[ 2024-10-28T09:52:40.134Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f4f5219514b54efaadd1270396d2c671.aggregator.binary_sensor_updater ready endpoint#: 2 type: ContactSensor (0x15) behaviors: ✔identify ✔booleanState ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T09:52:40.176Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f4f5219514b54efaadd1270396d2c671.aggregator.switch_harmony_mytv ready endpoint#: 3 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T09:52:40.215Z ] [ INFO  ] [ matter.js / Endpoint                     ]: f4f5219514b54efaadd1270396d2c671.aggregator.binary_sensor_hue_motion_sensor_motion_1 ready endpoint#: 4 type: OccupancySensor (0x107) behaviors: ✔identify ✔occupancySensing ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T09:52:40.240Z ] [ ERROR ] [ matter.js / Logger                       ]: Unhandled error detected: Cannot read properties of undefined (reading 'attributes')
at new BinarySensorDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1874:49)
at binary_sensor (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2653:32)
at createDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2629:10)
at Bridge.createDevices (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2722:26)
at async Bridge.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2714:9)
at async BridgeService.create (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2811:9)
at async file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:698:24
file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1874
const deviceClass = entity.initialState.attributes.device_class;
^
TypeError: Cannot read properties of undefined (reading 'attributes')
at new BinarySensorDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1874:49)
at binary_sensor (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2653:32)
at createDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2629:10)
at Bridge.createDevices (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2722:26)
at async Bridge.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2714:9)
at async BridgeService.create (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2811:9)
at async file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:698:24
Node.js v18.20.4
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped`

Same problem but for state instead of attributes.
Both are caused by an incomplete app state somehow.
copied from #8
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
Log level is set to INFO
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
[ 2024-10-28T15:51:08.364Z ] [ INFO  ] [ Storage                                  ]: Storage location: /config/data
[ 2024-10-28T15:51:08.487Z ] [ INFO  ] [ matter.js / ServerStore                  ]: Opened 68db54ce64364d68b428181947feb773 storage at /config/data/68db54ce64364d68b428181947feb773
[ 2024-10-28T15:51:09.196Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773 ready endpoint#: 0 type: RootNode (0x16) behaviors: 💤parts ✔index ✔basicInformation ✔accessControl ✔groupKeyManagement ✔generalCommissioning ✔administratorCommissioning ✔operationalCredentials ✔generalDiagnostics ✔commissioning ✔network 💤productDescription 💤sessions ✔descriptor
[ 2024-10-28T15:51:09.208Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator ready endpoint#: 1 type: Aggregator (0xe) behaviors: 💤parts ✔index ✔descriptor
[ 2024-10-28T15:51:09.228Z ] [ INFO  ] [ matter.js / Node                         ]: 68db54ce64364d68b428181947feb773 going online
[ 2024-10-28T15:51:09.493Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0003a3501f ready endpoint#: 2 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.517Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0002ed908c_switch ready endpoint#: 3 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.541Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0002fb5476_switch ready endpoint#: 4 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.561Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x60a423fffedb3e64_left ready endpoint#: 5 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.584Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_wc_2 ready endpoint#: 6 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.604Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_wc_1 ready endpoint#: 7 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.631Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_wc_3 ready endpoint#: 8 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.652Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pk_1 ready endpoint#: 9 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.673Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pk_2 ready endpoint#: 10 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.693Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn2_3 ready endpoint#: 11 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.721Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn2_2 ready endpoint#: 12 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.742Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn2_1 ready endpoint#: 13 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.763Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0002ed908c_power_outage_memory ready endpoint#: 14 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.785Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0003a3501f_power_outage_memory ready endpoint#: 15 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.807Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_0x00158d0002fb5476_power_outage_memory ready endpoint#: 16 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.838Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn1_1 ready endpoint#: 17 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.859Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn1_2 ready endpoint#: 18 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.880Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_pn1_3 ready endpoint#: 19 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.901Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_bep_1 ready endpoint#: 20 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.920Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_bep_2 ready endpoint#: 21 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.948Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_bep_3 ready endpoint#: 22 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.967Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_cua_1 ready endpoint#: 23 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:09.986Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_cua_2 ready endpoint#: 24 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:10.008Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_baodong ready endpoint#: 25 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
[ 2024-10-28T15:51:10.029Z ] [ INFO  ] [ matter.js / Endpoint                     ]: 68db54ce64364d68b428181947feb773.aggregator.switch_zigbee2mqtt_bridge_permit_join ready endpoint#: 26 type: OnOffPlugInUnit (0x10a) behaviors: ✔identify ✔groups ✔onOff ✔bridgedDeviceBasicInformation ✔descriptor
home-assistant-matter-hub start

start the application

Options:
  --help                         Show help                             [boolean]
  --log-level
          [string] [choices: "debug", "info", "warn", "error"] [default: "info"]
  --disable-log-colors                                [boolean] [default: false]
  --storage-location             Path to a directory where the application shoul
                                 d store its data. Defaults to $HOME/.home-assis
                                 tant-matter-hub                        [string]
  --web-port                     Port used by the web application
                                                        [number] [default: 8482]
  --home-assistant-url           The HTTP-URL of your Home Assistant URL
                                                             [string] [required]
  --home-assistant-access-token  A long-lived access token for your Home Assista
                                 nt Instance                 [string] [required]

TypeError: Cannot read properties of undefined (reading 'state')
    at _OnOffServer.createState (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1090:24)
    at new SwitchDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:1561:32)
    at switch (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2665:25)
    at createDevice (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2644:10)
    at Bridge.createDevices (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2737:26)
    at async Bridge.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2729:9)
    at async BridgeService.start (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:2804:11)
    at async handler (file:///usr/local/lib/node_modules/home-assistant-matter-hub/dist/backend/cli.js:3307:5)
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped`


Add aliases for $ and $$ for Kotlin

Hello,
Kotlin doesn't support $ and $$ without ` `, so how about to add aliases, like S and SS or something else?

For your kotlin project you can use code like that
fun s(locator: String): SelenideElement {
    return Selenide.`$`(locator)
}

fun ss(locator: String): ElementsCollection {
    return Selenide.`$$`(locator)
}

…which looks ugly
I would also support aliases, e.g. S/SS or s/ss or something else.
Viele Grüße
Alexei Vinogradov
On 19. November 2018 at 13:15:38, nbdnnm<EMAIL_ADDRESS>wrote:
The problem
Briefly describe the issue you are experiencing (or the feature you want to
see added to Selenide).
Tell us what you were trying to do and what happened instead.
Details
If necessary, describe the problem you have been experiencing in more
detail.
Tell us about your environment

Selenide Version:
Chrome\Firefox\IE Version:
Browser Driver Version:
Selenium Version:
OS Version:

Code To Reproduce Issue [ Good To Have ]
Please remember that with sample code it's easier to reproduce the bug.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/selenide/selenide/issues/865, or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQ4YAwlCZ_sVevkuRhFlE8LIMHVCFsKks5uwqDogaJpZM4Yo_RP
.

Hi folks, actually I use Selenide in my Kotlin project.
I call mentioned aliases like this:
$(fieldLocator)   / $x(fieldLocator)
$$(fieldLocator)   / $$x(fieldLocator)

wouldn't be better to follow naming from SelenideElement which is find for $?

Not quite. $() doesn't actually do any search yet. Find is misleading then.
Viele Grüße
Alexei Vinogradov
On 20. November 2018 at 14:30:51, Jacek<EMAIL_ADDRESS>wrote:

wouldn't be better to follow naming from SelenideElement which is find
for $?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/selenide/selenide/issues/865#issuecomment-440273973,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQ4YOpsT_TmlukWyn4WVygON5T76sJTks5uxAQLgaJpZM4Yo_RP
.

Interface says it is the same
/**
   * ATTENTION! This method doesn't start any search yet!
   * Same as {@link #find(String)}
   * @see com.codeborne.selenide.commands.Find
   */
  SelenideElement $(By selector);

/**
   * ATTENTION! This method doesn't start any search yet!
   * Same as {@link #find(String)}
   * @see com.codeborne.selenide.commands.Find
   */
  SelenideElement find(By selector);

/**
   * Locates the first element matching given CSS selector
   * ATTENTION! This method doesn't start any search yet!
   * @param cssSelector any CSS selector like "input[name='first_name']" or "#messages .new_message"
   * @return SelenideElement
   */
  public static SelenideElement $(String cssSelector) {
    return getSelenideDriver().find(cssSelector);
  }

find is original method, $ is only an alias for it, so I would add find and findAll into Selenide class.

I know:) it is not perfect, because findElement() in Selenium start search,
so many assume find() in Selenide start search too, but it doesn't. Legacy
name :)
Viele Grüße
Alexei Vinogradov
On 20. November 2018 at 14:57:00, Jacek<EMAIL_ADDRESS>wrote:

/**   * Locates the first element matching given CSS selector   * ATTENTION! This method doesn't start any search yet!   * @param cssSelector any CSS selector like "input[name='first_name']" or "#messages .new_message"   * @return SelenideElement   */
public static SelenideElement $(String cssSelector) {
return getSelenideDriver().find(cssSelector);
}
find is original method, $ is only an alias for it, so I would add find
and findAll into Selenide class.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/selenide/selenide/issues/865#issuecomment-440281854,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQ4YI-gOpq5USmeE7ZXaDk6Wdh-M-2Oks5uxAosgaJpZM4Yo_RP
.

I don't get why this is a problem. Selenide has proxy elements, why do you care that find/$ does not find immediately?
Selenide solve that problem of immediate searching, which is good.
From what I see, this ticket is for adding better support for Kotlin.
find()/findAll() in Selenide Class will provide that support, without introducing brand new alias as it exists already in SelenideElement
If we would add s/ss then we end up with find/findAll/$/$$/s/ss in SelenideElement and s/ss/$/$$ in Selenide which is not consistent.
does it make sense?

it is not a problem. I just don't like "find" to be part Selenide DSL if it doesn't search. It is already partly (in SelenideElement) due to historical reasons. I more like introducing s/ss (or whatever new alias) and deprecating find/findAll.

As described before, if you want to use your own aliases just implement on your side.
Ref: https://github.com/selenide/selenide/issues/865#issuecomment-439894042

From point of view of Selenide user, I would not want to know about lazy evaluation or other patterns used inside of Selenide, just well-working and readable functions :)

my view:

add find, findX, findAll, findAllX methods in Selenide class (going further I would deprecate x methods as each xpath starts with / so finding if this is xpath could be done on SelenideDriver level)
deprecate getElement* methods as they don't follow naming convention from SelenideDriver or SelenideElement

@jkromski We are still arguing there :)

@asolntsev, probably it would be consistent to have the same methods in SelenideDriver...

another thing regarding consistency...
we have $x, but we don't have elementx...
just elementx sounds awkward o_O...
maybe we should consider to make $(String) smart enough to distinguish css from xpath selectors... Actually it's not hard to do this. This would be pretty handy in usage, and we will have less weird method names like $$x :)

maybe we should consider to make $(String) smart enough to distinguish css from xpath selectors... Actually it's not hard to do this. This would be pretty handy in usage, and we will have less weird method names like $$x :)

agree. it isn't hard to implement

have just noticed one more consistency thing...
if we have $ and element in Selenide., and we will have them in SelenideDriver#, then it will be consistent to have them both in SelenideElement#*... Yeah, it will be awkward a bit because we already have SelenideElement#find :(, so I am not sure... Ideally would be good to not have find... But... Yet we can deprecate it:) Maybe I am too nerdy, of course:)

@yashaka I personally don't find method $x really usable.
I think element(By.xpath("...")) is good enough, and don't see really much sense in inventing some better alternative for it. Sure, elementx doesn't make sense at all.
@BorisOsipov @yashaka Yes, the idea to make $(String) smart enough to support both CSS selectors and XPath was in air several years ago. But folks said that Thucydides framework already had such a feature, and it didn't always work well. They didn't recommend to do it.
Probably we can do it better, but it would be good to investigate what problems Thucydides had.

Ideally would be good to not have find... But... Yet we can deprecate it:)

I personally like name find. I don't see any problems with the fact that it doesn't search immediately - it's just lazy loading.
About having element method in SelenideElement - it seems to be a bad naming.
Look:

element(".error").shouldNot(exist) - sounds good
element("table.one").element("tr.two").should(exist) - does not.

Probably name child would be reasonable?

element("table.one").child("tr.two").should(exist)?

child is bad, because we actually can do something like:
element("table.one").child(byXpath("..")).should(exist), or "./followingSibling:input[...]"...
For my taste, this:
element("table.one").element("tr.two").should(exist)
is ok:)
just a sequential locating of elements...
regarding find and "lazy loading" - lazyness is ok for "tech programming language", but if we think about selenide as "user oriented tool", then I would hide such technical things and reveal only "user-oriented behavioural" API...
That's why I like more Selenide.element than Selenide.$ or Selenide.find.
Yet, being a nerd:), for me it's more important to be consistent than "user-oriented". This means that probably between:

Selenide.element, SelenideElement#find
Selenide.find, Selenide#find
Selenide.element, SelenideElement#element

I would choose 2 over 1 if I can't choose 3 :)


Added Azure.MariaDB.GeoRedundantBackup

PR Summary
Fixes #1848
Added Added Azure.MariaDB.GeoRedundantBackup rule.

[x] PR has a meaningful title
[x] Summarized changes
[x] Change is not breaking
[x] This PR is ready to merge and is not Work in Progress
Rule changes

[x] Unit tests created/ updated
[x] Rule documentation created/ updated
[x] Link to a filed issue
[x] Change log has been updated with change under unreleased section

Other code changes

[ ] Unit tests created/ updated
[ ] Link to a filed issue
[ ] Change log has been updated with change under unreleased section

@BernieWhite
Adjusted 😃


Importable funcs for invoking Image classification scripts

This PR will add support to invoke training + export scripts directly from python
Tests

[x] image classification train

[x] Actual Importable function
[x] Remove function dependency on click

from sparseml.pytorch.image_classification.train import main
import os

image_classification_args = {
    "train_batch_size": 1,
    "test_batch_size": 1,
    "dataset": "imagenette",
    "dataset_path": "/home/rahul/datasets/imagenette",
    "arch_key": "resnet50",
    "local_rank": -1,
    "checkpoint_path": None,
    "init_lr": 1e-9,
    "recipe_path": "zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenette/pruned-conservative?recipe_type=original",
    "eval_mode": False,
    "optim": "SGD",
    "optim_args": {
        "momentum": 0.9,
        "nesterov": True,
        "weight_decay": 0.0001,
    },
    "logs_dir": os.path.join("pytorch_vision_train", "tensorboard-logs"),
    "save_best_after": 1,
    "save_epochs": (5, 10),
    "use_mixed_precision": False,
    "pretrained": True,
    "pretrained_dataset": None,
    "model_kwargs": {},
    "dataset_kwargs": {},
    "model_tag": None,
    "save_dir": "pytorch_vision",
    "device": "cuda",
    "loader_num_workers": 4,
    "loader_pin_memory": True,
    "image_size": 224,
    "ffcv": False,
    "recipe_args": None,
    "max_train_steps": -1,
    "max_eval_steps": -1,
    "one_shot": False,
}

main.callback(**image_classification_args)

As of now this downloads the dataset but errors out with the following:
already downloaded imagenette ImagenetteSize.s160
already downloaded imagenette ImagenetteSize.s160
Model id is set to resnet50_imagenette__02
2022-07-08 09:56:19 __main__     INFO     created model with key resnet50: ResNet(
  (input): _Input(
    (conv): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (act): ReLU(inplace=True)
    (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
  )

.
.
.

)
2022-07-08 09:56:21 __main__     INFO     running on device cuda
2022-07-08 09:56:21 __main__     INFO     running on device cuda
downloading...: 100%|███████████████████████| 4.11k/4.11k [00:00<00:00, 823kB/s]
Test epoch -1/-1: 100%|██████████████████████| 500/500 [00:03<00:00, 138.84it/s]
2022-07-08 09:56:30 __main__     INFO
Initial validation results: ModuleRunResults(__loss__=2.377507209777832, top1acc=9.399999618530273, top5acc=46.599998474121094)
2022-07-08 09:56:30 __main__     INFO
Initial validation results: ModuleRunResults(__loss__=2.377507209777832, top1acc=9.399999618530273, top5acc=46.599998474121094)
2022-07-08 09:56:30 __main__     INFO     Starting training from epoch 0
2022-07-08 09:56:30 __main__     INFO     Starting training from epoch 0
Train epoch 0/10:  58%|███████████▌        | 7489/12894 [04:14<02:58, 30.33it/s]

[x] image classification export_onnx

from sparseml.pytorch.image_classification.export import main

export_args = {
    "dataset": "imagenette",
    "dataset_path": "/home/rahul/datasets/imagenette",
    "checkpoint_path": "/home/rahul/projects/sparseml/test-checkpoint/resnet50_imagenette__01/framework/model-one-shot.pth",
    "arch_key": 'resnet50',
    "num_samples": -1,
    "onnx_opset": 11,
    "use_zipfile_serialization_if_available": True,
    "pretrained": True,
    "pretrained_dataset": None,
    "model_kwargs": {},
    "dataset_kwargs": {},
    "model_tag": None,
    "save_dir": "pytorch_vision",
    "image_size": 224,
    "recipe": None,
    "convert_qat": True,
    "num_classes": None,
}

main.callback(**export_args)

Output:
ssh://rahul@<IP_ADDRESS>:22/home/rahul/virtual_environments/sparseml3.8/bin/python -u /XXXX/projects/sparseml/local-ic-export.py
Model id is set to resnet50_imagenette__01
already downloaded imagenette ImagenetteSize.s160
2022-07-12 12:11:44 __main__     INFO     exporting pytorch in /XXXX/projects/sparseml/pytorch_vision/resnet50_imagenette__01
2022-07-12 12:11:44 __main__     INFO     exporting pytorch in /XXXX/projects/sparseml/pytorch_vision/resnet50_imagenette__01
Exporting samples:   0%|                                  | 0/1 [00:00<?, ?it/s]2022-07-12 12:11:44 __main__     INFO     exporting onnx in /XXXXX/projects/sparseml/pytorch_vision/resnet50_imagenette__01
2022-07-12 12:11:44 __main__     INFO     exporting onnx in /XXXXX/projects/sparseml/pytorch_vision/resnet50_imagenette__01
Exporting samples: 100%|██████████████████████████| 1/1 [00:02<00:00,  2.01s/it]

Process finished with exit code 0

Note: breaking out the following tasks into a PR of there own!
TODO:

[x] ~Transformers train~
[x] ~Transformers export~

@rahul-tuli will click still read CLI args if there are any? i.e. if CLI args were used to call autosparse, will click end up reading those in? Checking because this was the case in the yolov5 repo and a workaround was needed.


test: give snapshot diff test 100% test coverage

need to change test logic here, feels like i'm testing the mock more than anything else.
Should be able to spy on how the mock gets called and assert on that instead


[Bug]: new autotune error running simple gla chunked

Describe the bug
Hi,
Sorry to bother you, I recently updated FLA on an 8xH100 machine and it now gives new errors during autotuning with fla.ops.simple_gla.chunk that were not present previously. It must be the result of a fairly recent change, though unfortunately I don't know exactly which commit was the one that worked previously. fla.ops.gla.fused_chunk continues to work fine for me, but fla.ops.gla.chunk gives me the same kind of autotune index error on a different machine (8x4090).
It appears to be some autotune setting issue, maybe relating to there being keys supplied but no related args...
This is the error I'm seeing:
    attn_output = fla_chunk_simple_gla(query_states, key_states, value_states, decay_states_log.view(bsz, self.num_heads, q_len))[0]
  File "/workspace/smerky/GoldFinch-paper/models/qwen2.py", line 39, in fla_chunk_simple_gla
    o, final_state = SimpleGLAFunction.apply(q, k, v, g, scale, initial_state, output_final_state)
  File "/usr/local/lib/python3.10/dist-packages/torch/autograd/function.py", line 574, in apply
    return super().apply(*args, **kwargs)  # type: ignore[misc]
  File "/usr/local/lib/python3.10/dist-packages/fla/utils.py", line 12, in wrapper
    return fn(ctx,
  File "/usr/local/lib/python3.10/dist-packages/torch/amp/autocast_mode.py", line 455, in decorate_fwd
    return fwd(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/fla/ops/simple_gla/chunk.py", line 334, in forward
    h, final_state = chunk_fwd_h_fn(k=k,v=v,g=g,gk=None,gv=None,BT=BT,h0=initial_state,output_final_state=output_final_state,states_in_fp32=False)
  File "/usr/local/lib/python3.10/dist-packages/fla/ops/common/chunk_h.py", line 214, in chunk_fwd_h_fn
    chunk_fwd_kernel_h[grid](
  File "/usr/local/lib/python3.10/dist-packages/triton/runtime/jit.py", line 345, in <lambda>
    return lambda *args, **kwargs: self.run(grid=grid, warmup=False, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/triton/runtime/autotuner.py", line 146, in run
    key = [_args[i] for i in self.key_idx]
  File "/usr/local/lib/python3.10/dist-packages/triton/runtime/autotuner.py", line 146, in <listcomp>
    key = [_args[i] for i in self.key_idx]
IndexError: list index out of range

Steps to reproduce the bug
I am using the following calling code:
from fla.ops.simple_gla.chunk import chunk_simple_gla, SimpleGLAFunction

def fla_chunk_simple_gla(
    q: torch.Tensor,
    k: torch.Tensor,
    v: torch.Tensor,
    g: torch.Tensor,  # log decay
) -> Tuple[torch.Tensor, torch.Tensor]:
    assert q.dim() == k.dim() == v.dim() == 4, "q, k, v must have 4 dimensions (b, h, l, d)"
    assert q.dtype == k.dtype == v.dtype, "q, k, v must have the same dtype"
    scale = k.shape[-1] ** -0.5
    g = g.float()
    initial_state = None
    output_final_state = False
        o, final_state = SimpleGLAFunction.apply(q, k, v, g, scale, initial_state, output_final_state)
    return o, final_state

Expected behavior
no error :)
Environment info

torch: 2.4.1
triton: 3.0.0
8xH100

Hi, which commit are you using?

We've recently fixed a bug that raised this error. The most recent one should be good

Thanks, I'll update and see! There is probably still a regression from earlier bug https://github.com/sustcsonglin/flash-linear-attention/issues/58 where H100 will die on num_warps=8 but I will let you know once I try it!

Works great! Sorry for the false alarm. So far no problem on H100 - I'll reopen an issue if any of the kernels fail on that. Thanks!!!


Video on using CircuitVerse with Docker

A video showing developers how to setup CircuitVerse with Docker has been made. The link to it is now in ReadMe.md

Coverage decreased (-0.06%) to 82.507% when pulling 78f2f66413f670c331ca0faecbba23130c58d05f on NumberC:dockervideo into 2c01dad8e0b59646b9625313a0da5801dde1e221 on CircuitVerse:master.

Moved to https://github.com/CircuitVerse/CircuitVerse/pull/752


无网络

Microsoft PowerToys version
0.69.0
Installation method
Microsoft Store
Running as admin
None
Area(s) with issue?
PowerToys Run
Steps to reproduce
输入之后用网页搜索  显示无网络
✔ Expected Behavior
No response
❌ Actual Behavior
No response
Other Software
No response

Not able to repro this, going to close. Let us know if you see this again!


Add Fast Decoding  Support For Relative Dot Product

Add Fast Decoding  Support For And Only For Relative Dot Product by enabling caching mechanism.
This pr have been tested on "En-Zh" case and got the same results as expected.

Check CLA again.

thanks a lot @aeloyq !

There's a typo in

tensor2tensor/models/transformer.py line-276

if self._hparams.self_attention_type not in ["dot_product", "dot_product_relative1"]:
should be modified to:
if self._hparams.self_attention_type not in ["dot_product", "dot_product_relative"]:

Thanks - yes @lukaszkaiser pointed that out, we fixed it on our end.


home page text changes

Purpose
home page text changes

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


Fix CI bitrots.

Several issues are fixed:

IPython can inject ~PS1-style prefixes depending on the IPython
version and Python version in-play. Avoid having to worry about this
with a dedicated test communication channel separate from stdio.
The PyPy 7.3.12 release includes HPy in the stdlib (including its
dist-info) which highlights a bug in Virtualenv when iterating venv
distributions; so we stick to iterating distributions found in the
site-packages directories.
The setup-python action no longer supports Python 2.7; so we switch to
pyenv for that.
A test involving jaraco-collections==3.5.1 is broken by the recent
pydantic 2.x release; so we bound low.

I encountered a local failure in the test's pex_root prefix test while working #2160.

I'm going to land this to get CI green, land #2164 and continue on Python 3.12 support which #2164 affects.


Add JSON serialization for timecard

Not sure if this is something you'd be willing to accept, but here it is.

just not sure if i want to_dict or to_json

I chose to dict as it doesn't actually print out json by default, it just allows a user to do this in their code for example timecard_json = json.dumps([clock.to_dict() for clock in timecard], indent=2)


iOS share intent comes twice

"react-native": "0.62.2",
"react-native-receive-sharing-intent": "1.0.4",
only on iOS i'am facing with this issue.
Not all the time but frequently share intent comes twice.
You can see my usage below:
ReceiveSharingIntent.getReceivedFiles((files) => {
      ......
      ReceiveSharingIntent.clearReceivedFiles();
    },
    (error) => {
      console.log(error);
    });

I am seeing this too.

I've noticed this happens when the app is launched from the share (app not open in the background).
Has anyone found a solution?

I've noticed this happens when the app is launched from the share (app not open in the background).
Has anyone found a solution?

Is anyone find this solutions? It's happen when app is not open in the background.


[WIP] accessibility guide updates

This PR is a work in progress. So far the following changes have been included:

restructured the outline — the new structure makes it easier for us to add our own PF guidelines and techniques, while still including a concise checklist to guidelines that we follow (which are mostly WCAG, but can include other guidelines that are documented that we want to adopt)
changed the checklist from a bulleted list to a table
updated links from WCAG 2.0 resources to WCAG 2.1 resources
added styles for table, and modified the heading level 2 styles for more separation between content sections.

Closes issue #205

Deploy preview for pf-next ready!
Built with commit 7df221614b8f3d872ceb4cf4a91a28f7ecf07284
https://deploy-preview-314--pf-next.netlify.com

@jgiardino is this a WIP?

I would like to add more contents to it, and I'd like @stacymcauliffe's review of the updated structure. I'm not opposed, though, to merging these updates once approved, and opening another PR for the additional contents.


Error removing template module (module isn't specified in a package.json file)

Describe the bug
Using a template cause an error trying to remove the module:
error This module isn't specified in a package.json file.
Did you try recovering your dependencies?

npm: 6.13.2
yarn: 1.21.0

Environment

  Binaries:
    Node: 10.15.3 - /usr/local/bin/node
    Yarn: 1.21.0 - /usr/local/bin/yarn
    npm: 6.13.2 - /usr/local/bin/npm
  npmPackages:
    react: Not Found
    react-dom: Not Found
    react-scripts: Not Found
  npmGlobalPackages:
    create-react-app: 3.3.0

Steps to reproduce

npx create-react-app my-app --template router

Expected behavior

It should work exactly as the default cra-template.
Actual behavior

yarn remove v1.21.0
[1/2] 🗑  Removing module cra-template-router...
error This module isn't specified in a package.json file.
info Visit https://yarnpkg.com/en/docs/cli/remove for documentation about this command.
`yarnpkg add<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>failed

Reproducible demo

npx create-react-app my-app --template router

Here is the cra-template-router repo.

A .gitignore file in the root directory caused the package.json file inside the template folder to be ignored, then the error occurs when trying to remove the dependencies.


Handle updates for sidecar exporters

Kube 1.7 supports StatefulSet updates
https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets

This issue was moved to kubedb/project#46


bug in parsing

The YAML 1.2.2 spec states:
"Within a block collection, key/value pairs can start immediately following the dash, colon or question mark."
This implies that "a: b: c: d: - 1" is a valid YAML document. js-yaml however issues an error message.

That sentence is just a clarification of the context around it.
You've taken it on its own to be an assertion/property of YAML, but it doesn't make sense outside the context at
https://yaml.org/spec/1.2.2/#example-mapping-between-sequences
The point of the sentence is to say that (from the examples that follow the statement) you can do this:
? - Detroit Tigers
  - Chicago cubs
: - 2001-07-23

instead of this:
?
  - Detroit Tigers
  - Chicago cubs
:
  - 2001-07-23

and this:
- item    : Super Hoop
  quantity: 1

instead of this:
-
  item    : Super Hoop
  quantity: 1

For the record, a: b: c: d: - 1 is invalid YAML and this is not a "bug i n parsing".
YAML doesn't support compact block mappings
key: key: value   # wrong

even though it does support compact block sequences:
- - - value
# same as
-
  -
    - value

and also compact block mapping in sequence:
- - key1: value1
    key2: value2
# same as
-
  -
    key1: value1
    key2: value2

Thanks for the clarifications. In my honest opinion, the spec could have been a bit more precise and express syntax in a more conventional, formal way. Alas, we shall have to live with it.


Problem debuging ionide

Hi,
I've done this before and it worked, but with the latest master after running all build steps described in the contributing.md file and start code, Ionide fails to start fsautocomplete:
[IONIDE-FSAC] Failed to start language services. spawn C:\Git\ionide-vscode-fsharp\release/bin/fsautocomplete.exe ENOENT
My release folder doesn't have any bin or bin_netcore folder, and in fact I can't find fsautocomplete.exe anywhere inside my repo root. Am I missing a build step?

build.cmd Build should copy FSAC (and other deps) into right place.

Humm, turns out the Default target doesn't actually run the Build target, so just doing build doesn't actually build. Fake output:
Shortened DependencyGraph for Target Default:
<== Default
   <== RunScript
      <== Clean

The running order is:
  - Clean
  - RunScript
  - Default

If have to run build Build instead. Fake output:
Shortened DependencyGraph for Target Build:
<== Build
   <== CopySchemas
      <== CopyGrammar
         <== CopyForge
            <== CopyFSACNetcore
               <== CopyFSAC
                  <== RunScript
                     <== Clean
                     <=? YarnInstall
                     <=? DotNetRestore

The running order is:
  - Clean
  - YarnInstall
  - DotNetRestore
  - RunScript
  - CopyFSAC
  - CopyFSACNetcore
  - CopyForge
  - CopyGrammar
  - CopySchemas
  - Build

But even that is not enough, because CopyFSAC is trying to copy from paket-files/github.com/fsharp/FsAutoComplete/bin/release and there is no bin folder inside paket-files/github.com/fsharp/FsAutoComplete

If it doesn't copy the files then the problem can be that you have the project too deep on file system because the paket runs build scripts on the dependencies in the paket-files folder and it fails some MaxLengthPathException or something. for this reason I can't have ionide in folder C:\projects\private\ionide-vscode-fsharp but I have to have it in C:\projects\private\ionide

go to paket-files/github.com/fsharp/FsAutoComplete and run build.cmd LocalRelease to see the real error

Ok, the real error returned by build.cmd LocalRelease inside paket-files/github.com/fsharp/FsAutoComplete is the following:
MSBUILD : error MSB1040: ToolsVersion is not valid. The tools version "14.0" is unrecognized. Available tools versions are "15.0", "2.0", "3.5", "4.0".
Switch: 14.0
Running build failed.
Error:
Building ./FsAutoComplete.sln failed with exitcode 1.

This issue happens for me as well when building FsAutoComplete on its own from source. FsAutoComplete builds correctly in Visual Studio (15.6.4), but not when using the standalone build tools (MSBuild version 15.6.82).

Sent a PR for FSAutocomplete - https://github.com/fsharp/FsAutoComplete/pull/287
@Krzysztof-Cieslak, can you merge that and then update Ionide to consume it?

This should be easier on current master


Fix numbering in README index

Docs fix only, this just fixes the numbering in the README

Thank you for your contribution @wyardley , this tidies up the readme numbering nicely.


Handling cases when cursor is not at the end of line

Is your feature request related to a problem? Please describe.
When working on https://github.com/RRethy/nvim-treesitter-endwise/pull/35, I struggled a lot when dealing with cases when the cursor is not at the very end of the line.
Pseudocode examples:
function f(<cursor>)

leads to
function f(
    <cursor>
end)

or for example
if f(<cursor>)

leads to
if f(
    <cursor>
)

I guess this behavior applies to multiple languages, not only julia. For example, try the following test for lua:
test "lua, function", <<~END
-function foo(█)
+function foo(
+  )
END

Maybe I'm missing something, but writing this in TS queries seems quite difficult — I have to always capture the last ")", which leads to many corner cases and queries become large.
Describe the solution you'd like
I have only written some queries and I don't know anything about internals of this plugin. What is the preferred way to deal with that?
What if the following heuristic was used: Whenever on the current line there still is a non-whitespace character after the cursor, do not add an "end"? Is there any case where this would be undesirable?
Thanks!

For what it's worth, there is no perfect solution for this since we don't get a full syntax tree, we have to interpret a broken syntax tree, these are tradeoffs I made a long time ago and honestly aren't going to change.

We have the heuristic that if the text that follows the cursor is alphanumeric, then put it on the line of the cursor, if it's non-alphanumeric then put it on the line of the end. It's especially useful to handling functions defined as arguments.

Yes, I have noticed. It works great in cases like
function f(a, <cursor>b)

but not when it is in front of "," or ")".
Sow how about adding these some punctuation mark characters to the regexp here https://github.com/RRethy/nvim-treesitter-endwise/blob/master/lua/nvim-treesitter/endwise.lua#L81?


Crash when join server

https://mclo.gs/cJ8naah

bump

same here https://mclo.gs/TCnHS9P

Duplicate of #36


No client_aatool folder made for aatool to look at

I am running fabric 1.18.2 with the client aatool in the mods folder, I launch Minecraft, I run /aatool true but no client_aatool folder is made for aatool to get the advancements from.
I have tested it with 1.18.1 and 1.18, both same issues

Did you join a server? The mod only works on servers since aatool works fine without the mod for singleplayer

Yes, this is when I join a server

Same. Just tried doing the same in 1.18.2 and it didn't created the client_aatool directory.

Weird, now it is working

Weird, now it is working

What have you done different?

Weird, now it is working

What have you done different?

I don't know, I just forgot about it for a few days, then I tried it again and it worked, try run Minecraft on the server that you want, say for an hour or so and try /aatool true again

Just solved my problem too. I needed to run Minecraft as an admin in Windows. That's why he coundn't create the folder :D

Oh good to know