Sysimage support

Hi, I recently started using juliaup and it's great. I've not yet used a sysimage (with or without your tool, and it certainly doesn't rule it out) but plan to for e.g.:
https://github.com/JuliaLang/JuliaSyntax.jl#using-juliasyntax-as-the-default-parser
I could specify it each time in the CLI, or make an alias I guess in Linux (similar available in Windows?), but I could foresee you might want make sysimages around, and maybe your tool could handle that?
https://stackoverflow.com/questions/20530996/aliases-in-windows-command-prompt
If this seems like feature creep, then feel free to close. It's great to have N julias installed, and maybe not too useful to have M sysimages, and likely not all NxM combinations apply (or are they fixed to just one julia version, or at least upwards compatible?).
To start with something simple, just allowing one sysimage (per channel) would be ok.
My hope is that we could have certain go to sysimages, e.g. for data science (with DataFrames.jl etc.), biology, etc. They do not have to be official, but I can see you being wary of providing download support for unofficial ones (security risk?). JuliaPro is dead, and I think noting similar with official support. But for now, I'm not proposing a download feature, just to link a sysimage you have or made locally to juliaup.

Would be nice to have this built-in, but until then @PallHaraldsson you might find the POC in https://github.com/MichaelHatherly/SystemImageLoader.jl useful which aims to support using custom sysimages relatively easy to do without needing changes here.

My hope is that we could have certain go to sysimages, e.g. for data science (with DataFrames.jl etc.), biology, etc.

https://github.com/MichaelHatherly/CuratedSystemImages.jl uses the above mentioned SystemImageLoader to provide pre-built sysimages similar to what you're looking for with "go to" sysimages. (It's very alpha at the moment :smile:)

The package is great, quickly installed sysimage(s), still one problem (can't use them)!
This worked with these or double quotes (but not without any, so should maybe be documented there (and here), that needed:
$ juliaup default '1.9.0-DEV.1078/CuratedSystemImages/CairoMakie'
Configured the default Julia version to be '1.9.0-DEV.1078/CuratedSystemImages/CairoMakie'.

but then:
$ julia
Error: julia init process did not run successfully:
Error: The Julia launcher failed to determine the command for the `1.9.0-DEV.1078` channel.

Caused by:
    Invalid channel specified

when I figure this out (user problem?), maybe this issue is redundant and should be closed. I would like both your package to get big exposure, likely at julialang.org (and discourse) and/or here in juliaup. I'm not sure juliaup needs any code changes, but maybe onlydoc changes pointing to this package. At least as a start, maybe integrate later, did you mean to juliaup or to julia?

Actually trying now with 1.7.3 (was I wrong about quotes needed? and it actually cause a problem?):
$ juliaup default 1.7.3/CuratedSystemImages/DataFrames

but then
$ julia

hangs (or very slow startup, just first time?), at least doesn't seem like a problem on juliaup side.

It's likely that the version number validation failed in https://github.com/MichaelHatherly/system-image-loader/blob/main/src/main.rs#L48-L54 for that dev version.

or very slow startup, just first time?

I've noticed that when starting with a startup.jl with additional packages that don't match versions in the custom image. See if startup-file=no helps.
(Let's move further issues you find into those repos' issue trackers rather than having them here.)

Ok, but one more here, since might be relevent for juliaup.
$ juliaup default 1.8.0-rc3/CuratedSystemImages/DataFrames
Configured the default Julia version to be '1.8.0-rc3/CuratedSystemImages/DataFrames'.
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ julia
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ julia
Bus error (core dumped)
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ julia
Bus error (core dumped)
ubuntu@ubuntu:~$ time julia
Bus error (core dumped)

real	0m0.002s
user	0m0.000s
sys	0m0.001s
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ juliaup status
Bus error (core dumped)

That first julia was slow, but had finished by the time I looked again at the terminal (but next ones with bus error immediately). likely the sysimage broke things, wouldn't have expected the shell prompt, nor juliaup breaking too.

1.8.0-rc3 is probably the issue there, those images are specifically built for 1.7.3 at present and loading images from different versions can cause that kind of issues. This https://github.com/MichaelHatherly/CuratedSystemImages.jl/blob/main/Project.toml#L11 probably needs to be a very strict compat bound rather than a lower bound.

I think this is probably out of scope for here. I do want to add channel specific configuration at some point, and that would allow users to specify for example specific command line arguments that are always used for a given channel, and I think that would take care of this here?


Forum funding contribute page has no integrated addresses

At the moment there is only a address and payment-ID option when contributing to a funding request.
Since integrated addresses are over all better and more human error resisted we should use the also here or?

The FFS wallets are under the core team responsibilities. So even if I agree to your suggestion, I'll pass it over to @luigi1111

This issue is old and was discussed and closed on gitlab.


cc26x2r1_launchxl build passed, but can't flash

build
west build -p auto -b cc26x2r1_launchxl  samples/hello_world/

output
-- west build: build configuration:
       source directory: /home/linux/zephyrproject/zephyr/samples/hello_world
       build directory: /home/linux/zephyrproject/zephyr/build (created)
       BOARD: cc26x2r1_launchxl (origin: command line)
-- west build: generating a build system
Zephyr version: 2.1.0
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.7.3", minimum required is "3.4")
-- Selected BOARD cc26x2r1_launchxl
-- Found west: /home/linux/.local/bin/west (found suitable version "0.6.3", minimum required is "0.6.0")
-- Loading /home/linux/zephyrproject/zephyr/boards/arm/cc26x2r1_launchxl/cc26x2r1_launchxl.dts as base
Devicetree configuration written to /home/linux/zephyrproject/zephyr/build/zephyr/include/generated/generated_dts_board.conf
Parsing Kconfig tree in /home/linux/zephyrproject/zephyr/Kconfig
Loaded configuration '/home/linux/zephyrproject/zephyr/boards/arm/cc26x2r1_launchxl/cc26x2r1_launchxl_defconfig'
Merged configuration '/home/linux/zephyrproject/zephyr/samples/hello_world/prj.conf'
Configuration saved to '/home/linux/zephyrproject/zephyr/build/zephyr/.config'
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/linux/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
-- Cache files will be written to: /home/linux/.cache/zephyr
-- Configuring done
-- Generating done
-- Build files have been written to: /home/linux/zephyrproject/zephyr/build
-- west build: building application
[3/115] Preparing syscall dependency handling

[110/115] Linking C executable zephyr/zephyr_prebuilt.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:        9288 B     360360 B      2.58%
      FLASH_CCFG:          88 B         88 B    100.00%
            SRAM:        3816 B        80 KB      4.66%
        IDT_LIST:          40 B         2 KB      1.95%
[115/115] Linking C executable zephyr/zephyr.elf

flash
west flash

output
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: /home/linux/zephyrproject/zephyr/build/zephyr/zephyr.hex
Open On-Chip Debugger 0.10.0+dev-01231-g3d7db5535-dirty (2019-11-20-13:42)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter_nsrst_delay: 100

Info : XDS110: connected
Info : XDS110: firmware version = <IP_ADDRESS>
Info : XDS110: hardware version = 0x0023
Info : XDS110: connected to target via JTAG
Info : XDS110: TCK set to 2500 kHz
Info : clock speed 2500 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: cc26x2.jrc: IR capture error; saw 0x02 not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Listening on port 3333 for gdb connections
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* cc26x2.cpu         cortex_m   little cc26x2.cpu         tap-disabled

Info : TAP cc26x2.jrc does not have IDCODE
Info : JTAG tap: auto0.tap tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Error: cc26x2.jrc: IR capture error; saw 0x02 not 0x01
Warn : Bypassing JTAG setup events due to errors
Error: Target not examined yet
Error: auto_probe failed
auto erase enabled
Info : XDS110: disconnected
ERROR: command exited with status 1: /home/linux/zephyr-sdk/sysroots/x86_64-pokysdk-linux/usr/bin/openocd -s /home/linux/zephyr-sdk/sysroots/x86_64-pokysdk-linux/usr/share/openocd/scripts -f /home/linux/zephyrproject/zephyr/boards/arm/cc26x2r1_launchxl/support/openocd.cfg -c init -c targets -c 'reset halt' -c 'flash write_image erase /home/linux/zephyrproject/zephyr/build/zephyr/zephyr.hex' -c 'reset halt' -c 'verify_image /home/linux/zephyrproject/zephyr/build/zephyr/zephyr.hex' -c 'reset run' -c shutdown

@happymili Could you double-check you have jumpers on TDO and TDI on the board, which are necessary for JTAG connections?

@vanti I can use TI UniFlash to download hex file, and I can also use IAR & CCS to debug the development board. So, I think the hardware connection is OK.
Thanks for your reply.

@happymili Sorry for the delay, just got back from vacation. Which version of OpenOCD are you using? Are you using the one from Zephyr SDK 0.10.3 (https://docs.zephyrproject.org/latest/getting_started/installation_linux.html)?
I tried to reproduce your issue using this setup:

commit d385d86f7412f16ea8ed7027a51cd45b4f3cf9ef
Zephyr SDK 0.10.3
CC2652R1 LaunchPad with a sticker on the back that says "HW Rev B, FW: SDK2.40, 1847"

Using the command you used to build, I was successful in loading to my cc2652R1 board with "west flash" (the error messages are a known issue - the code runs fine afterwards):
$ west flash
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: /home/local/zephyrproject-work/zephyr/build/zephyr/zephyr.hex
Open On-Chip Debugger 0.10.0+dev-00992-g3333261df-dirty (2019-08-16-00:14)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter speed: 2500 kHz
srst_only separate srst_gates_jtag srst_open_drain connect_deassert_srst
adapter_nsrst_delay: 100
Info : XDS110: connected
Info : XDS110: firmware version = <IP_ADDRESS>
Info : XDS110: hardware version = 0x0023
Info : XDS110: connected to target via JTAG
Info : XDS110: TCK set to 2500 kHz
Info : clock speed 2500 kHz
Info : JTAG tap: cc26x2.jrc tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Info : JTAG tap: cc26x2.cpu enabled
Info : cc26x2.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* cc26x2.cpu         cortex_m   little cc26x2.cpu         unknown
Info : JTAG tap: cc26x2.jrc tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Info : JTAG tap: cc26x2.cpu enabled
Error: Debug regions are unpowered, an unexpected reset might have happened
Error: JTAG-DP STICKY ERROR
Error: Could not find MEM-AP to control the core
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x1000118e msp: 0x11001ff0
auto erase enabled
wrote 360448 bytes from file /home/local/zephyrproject-work/zephyr/build/zephyr/zephyr.hex in 6.666206s (52.804 KiB/s)
Info : JTAG tap: cc26x2.jrc tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Info : JTAG tap: cc26x2.cpu enabled
Error: Debug regions are unpowered, an unexpected reset might have happened
Error: JTAG-DP STICKY ERROR
Error: Could not find MEM-AP to control the core
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x1000118e msp: 0x11001ff0
verified 360448 bytes in 4.754256s (74.039 KiB/s)
Info : JTAG tap: cc26x2.jrc tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Info : JTAG tap: cc26x2.cpu enabled
Error: Debug regions are unpowered, an unexpected reset might have happened
Error: JTAG-DP STICKY ERROR
Error: Could not find MEM-AP to control the core
shutdown command invoked
Info : XDS110: disconnected

@happymili , I am seeing the same issue as you.
Seeing this with both the Zephyr fork of openocd as well as the TI OPENOCD Package.
On zephyr revision d24e5e520c.
We have very similar versions of the Emulator pack firmware on the XDS110.
➜  zephyr git:(master) west flash
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: /Users/seanlyons/dev/zephyrproject/zephyr/build/zephyr/zephyr.hex
Open On-Chip Debugger 0.10.0+dev-00936-g0a13ca1a8 (2020-01-14-21:43)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter_nsrst_delay: 100

Info : XDS110: connected
Info : XDS110: firmware version = <IP_ADDRESS>
Info : XDS110: hardware version = 0x0023
Info : XDS110: connected to target via JTAG
Info : XDS110: TCK set to 2500 kHz
Info : clock speed 2500 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: cc26x2.jrc: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Listening on port 3333 for gdb connections
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* cc26x2.cpu         cortex_m   little cc26x2.cpu         tap-disabled

Info : TAP cc26x2.jrc does not have IDCODE
Info : JTAG tap: auto0.tap tap/device found: 0x3bb4102f (mfg: 0x017 (Texas Instruments), part: 0xbb41, ver: 0x3)
Error: cc26x2.jrc: IR capture error; saw 0x02 not 0x01
Warn : Bypassing JTAG setup events due to errors
Error: Target not examined yet
Error: auto_probe failed
auto erase enabled
Info : XDS110: disconnected

This post seems to confirm the suspicion that it is related to the emupack f/w differences from TI.
Until openocd is updated to support this new f/w, is there a way to modify the CLI args that west uses when invoking openocd?


[BUG]helm upgrade fluid failed with the master branch

What is your environment(Kubernetes version, Fluid version, etc.)
customresourcedefinitions.apiextensions.k8s.io "dataprocesses.data.fluid.io" is forbidden: User "system:serviceaccount:fluid-system:fluid-crds-upgrade" cannot patch resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scope

Describe the bug
What you expect to happen:
How to reproduce it
Additional Information

Fixed by #3501


fix the signature of FileCheckerCached.init()

flake8-cached does not work with latest release from flake8 (5.x.x)
The signature of flake8.checker.FileChecker has been changed. https://flake8.pycqa.org/en/stable/internal/checker.html#flake8.checker.FileChecker

Looks good @tkurokawa !

a new version is released.


Json validation

This PR is not to be merged and only to see if we need to do anything else in https://github.com/hibernate/hibernate-validator/pull/938 on top of which it is based. The last commit has next changes:

Added a "mocked" version of JsonMetadataProvider which returns a couple of constraints for properties like name or email.
Added JsonProperty and JsonConstrainableType which extend from the property API that we have. Note that I've hardcoded the list of possible properties into JsonConstrainableType but in real case I think we wouldn't need that at all and we would just programmatically define some constraints (probably) without any validation if the property is present or not ...
And there's this simple test to check how it would work:

@Test
public void testValidatePropertyWithRedefinedDefaultGroupOnMainEntity() {
    Validator validator = getValidator();
    JsonObject jsonObject = Json.createObjectBuilder()
            .add( "firstName", "name" )
            .add( "lastName", "" )
            .add( "age", BigDecimal.valueOf( 20 ) )
            .add( "email", "not-an-email-string" )
            .build();
    Set<ConstraintViolation<JsonObject>> constraintViolations = validator.validate( jsonObject );
    assertThat( constraintViolations ).containsOnlyViolations(
            violationOf( Email.class ).withProperty( "email" ),
            violationOf( NotBlank.class ).withProperty( "lastName" )
    );
}

I've copied this from the comment https://github.com/hibernate/hibernate-validator/pull/938#issuecomment-378922431

What I'm not very clear about is how you would define the metadata for nested properties. You either need a way to define the path of the property or you would use some sort of cascading mechanism and you would need an API to set the type of a nested object so that it properly cascades.

@gsmet I was thinking about something like next:
ConstraintMapping newMapping = config.createConstraintMapping();
newMapping
        .type( "FirstJsonType" )
        .property( "prop1" ).constraint( new NotNullDef() ).constraint( new SizeDef().max( 100 ) )
        .type( "SecondJsonType" )
        .property( "prop2" ).constraint( new EmailDef() )
        .property( "prop3" ) .valid("FirstJsonType");

config.addMapping( newMapping );
Validator validator = config.buildValidatorFactory().getValidator();

defining the "types" as unique string names, and in case of cascading - passing a type-string as an argument.
I've discarded the idea as it wouldn't fit the default API. But if we could add another validate() something like 'validateJson(..) the idea above might be an option.

and in case of cascading - passing a type-string as an argument.

How would you do that? I can see how you pass the initial type to the initial validate() call. But I'm unclear how you would pass the information for cascading in the case of nested objects?
Note that we might want a totally different API for JSON e.g. having a specific ValidatorFactory and/or a specific Validator but it would be nice if we could be able to reuse all the existing validation machinery.

I was thinking to pass it while defining constraints:
 .property( "prop3" ) .valid( "FirstJsonType" );

which would mean that we want to cascade the validation on property prop3 which is of "type" FirstJsonType. It won't do the "run-time" detection but be just a static metadata definition.

Ah yes, that would work. Wondering if we should make the type a class to support inheritance in the rules.
Another option would be to define a property path, something like property('foo').asObject().property('bar'), and HV would interpret this in terms of cascading.
It's probably less complicated than the valid() version for the user but it would be impractical when the user wants to reuse part of a config, so your option is probably better.
As for the architecture, I think I would make it a totally separate module with a JsonValidatorFactory and a JsonValidator. I think it would be safer and cleaner. Just a bit worried about how much duplication we would have.

That way you get the best of both worlds.

Yes the only drawback is that you would need to define the whole schema. But indeed, I think the engine will need the types if we don't want to make significant changes to it.

(Sorry, clicked the wrong button...)
Just wanted to mention that you would only need to define the part of the schema that is actually validated, which may make a big difference in some cases.

I played a bit more with this and here's what I've ended up with so far:
JsonConstraintMapping mapping = /*get the mapping*/;
mapping.type( User.class )
        // uses string as a type by default
        .property( "name" )
            .constraint( new NotNullDef() ).constraint( new LengthDef().min( 3 ) )
        // if it's not a string we need to pass a type with the name for it
        .property( "age", Integer.class )
            .constraint( new MinDef().value( 18 ) )
        // in case of complex type (inner json) we can pass a type and use valid() on it
        .property( "address", Address.class )
            .valid();
// and define constraint for the child json as for another type
mapping.type( Address.class )
        .property( "street" )
            .constraint( new NotBlankDef() )
        .property( "building_number", Long.class )
            .constraint( new NotNullDef() ).constraint( new MinDef().value( 1 ) );

We would need to pass a type of each property when defining constraints for it as otherwise we won't be able to create a correct JsonProperty i.e. we cannot predict the type of it on our own and we cannot wait until a json is already passed for validation.
It would also mean that we would need to check for any type mismatches during validation.
I have all this metadata definition part ready and started to look into how to integrate it with the rest of the engine, and that's where there are some problems. Through all the engine code we have bean and it's type bound toughener for example in
public class ValidationContext<T> {
    /**
     * The root bean of the validation.
     */
    private final T rootBean;

    /**
     * The root bean class of the validation.
     */
    private final Class<T> rootBeanClass;

    /**
     * The metadata of the root bean.
     */
    private final BeanMetaData<T> rootBeanMetaData;
}

which might work if we pass JsonObject everywhere for json validation, but it would be nice if we could have the metadata for Address but the rootBean = jsonObject. I'll need to double check if this causes any problems, because it was too late when I've stumbled on it initially 😃
But what bugs me more is that we cannot simple reuse ValidatorImpl as is. For example we cannot make calls like:
beanMetaDataManager.getBeanMetaData( value.getClass() )

as the value would always be json in our case but we need to get the type assigned to that particular property instead.
And it looks like that we might need to do a lot of changes in the ValidatorImpl so that we decrease the duplication.

And it looks like that we might need to do a lot of changes in the ValidatorImpl so that we decrease the duplication.

Yeah, from the beginning, I thought a JsonValidator would be needed. I think it makes sense to have it separate rather than polluting an already too big ValidatorImpl with additional methods.
Not sure about the amount of duplication we would have though.
That being said, ValidatorImpl is a big piece of code, splitting it in smaller digestable chunks would be a good perk :).
About ValidationContext, do you remember https://hibernate.atlassian.net/browse/HV-1526 ? Maybe it's time to have different ValidationContexts? Not sure if it makes sense, just thought about this issue when reading you.
Sorry a lot of handwaving :). HTH though.

// uses string as a type by default

By the way, minor nitpicking but we discussed it with my colleague Yoann and we both think having a default type is a bad idea. Let's make the user use a consistent API and define the type explicitly.
Yoann is also a bit sceptical about the use of classes to reference the types. I was the one suggesting it initially as I thought it would be easier to fit in the API but if we have a separate JSONValidator class and it does not break anything (typically I wouldn't want us to change the engine for that and I'm a bit worried about the @Valid case), maybe it would be better to use strings: the main argument of Yoann is that it might then be possible to generate the schema from JSON annotations.

So let's start with the easy question: "how crazy the changes can be around ValueContext and ValidationContext?".
There are no crazy ideas. IMO, there are only a few guidelines we have to follow: avoid creating new objects in the hot paths and keep the code readable. Apart from that, feel free to do whatever changes you see fit as 6.1 is a major version.
I'm not very happy with ValidationContext at the moment, for various reasons so I suppose we will make quite a lot of changes to it in the future.
I concur with you that a specific ValidationContext for root property holder validation would be in order.
Now the rest

the comment in the mapping example you pasted are outdated, String is not the default anymore. Moreover I think I would drop the .class from the mapping name and simply call it address for instance.
about the creation of the mapping, I'm wondering if we really need to create separate one for Map and JSON or it could be generic enough to have the free form mappings totally agnostic. TBH, I'm not sure it's doable but I think I would try this first.

In such case the extractor need to create org.hibernate.validator.internal.properties.Property for us.

For me the property value extractor was a way to extract the value from a PropertyHolder. So basically, you would have a path of property value extractors as you have a path of value extractor for container elements at the moment.
What I envisioned (without experimenting with it or playing with the code, so consider this with care):

when you validate a PropertyHolder, it would be the root object and you would apply the MetaConstraint to it, the MetaConstraint being referenced by nested locations similar to what we do with container elements.
when you validate a PropertyHolder as a property of a standard bean, the MetaConstraint location would mix classical FieldConstraintLocation with PropertyHolderPropertyConstraintLocation (not very happy about the name but you get the idea).

In any case, you would know which mapping to apply to build the MetaConstraints at bootstrap (when I mean bootstrap I mean when you build the metadata, which of course is done at runtime when validating the first bean of a given type) because you would either have the root mapping name as the parameter of the validatePropertyHolder() call or as an attribute of the @ValidPropertyHolder annotation.
So all in all, I would leverage most of the existing infrastructure. Not sure it works but it would be worth a try IMHO.

In terms of referencing types in the programmatic config API, that's what I had in mind for that:
mapping.type( new JsonType ( "com.example.User" )
        .property( "name", String.class )
        ...

The current form (mapping.type( User.class )) would be a short-cut for mapping.type( new BeanType ( User.class ).

@gunnarmorling I see that @gsmet answered almost everything. This PR is a bit outdated now. I do have other patches in this direction of free-form validation. Right now we wanted to get the preparation work done first:

build an abstraction over reflection in the engine
make some changes to Validation and Value Contexts (IIRC some changes are already merged in)

As for the "type" we ended up agreeing on using String as a mapping name. But I think that your idea with new JsonType ( "com.example.User" ) might be useful for some internals, so thanks for it! :)

Closing in favor of https://github.com/hibernate/hibernate-validator/pull/989 .


feat(driver) allow get the user details from existing access_token

@thetutlage please verify with my case (relate to #29 )

Coverage decreased (-3.6%) to 51.475% when pulling 316c7822f597eb8b73a4a7ee13c81d5989088e26 on duyluonglc:develop into d6def5404f1a70ecbecc600df1ab54520366e553 on adonisjs:develop.

There is already another PR with comprehensive feedback opened https://github.com/adonisjs/adonis-ally/pull/50.
Closing this in favor of that one


TagHelperOutput extension methods for class value manipulation

It feels like the class attribute is a bit unique in a sense that it is the most used attribute and it can have multiple values. However there is no way to simply add a value or remove one when you process a tag helper.
I wrote the AddClass and RemoveClass methods to do it in a simple way. Let me know what you think about this and if you are happy with it I will write the unit tests and do any amends (probably AddClasses/RemoveClasses with params string[] ?)

@Elfocrash thanks for the PR! Just had a few questions for you.
@DamianEdwards / @NTaylorMullen / @rynowak - thoughts on this API addition? Seems useful to me.

I like this. I'm not sure if we'd want to do something more, but this is a good start and worth taking.

@rynowak Glad to hear. Should I add the AddRange RemoveRange methods too? Let me know and i will go ahead making any amends and writing some unit tests.

@Eilon @dougbu Code changed as per @NTaylorMullen to propertly get the class attribute to string (https://github.com/aspnet/live.asp.net/blob/d8d0958aabea324f48e4ffc50b5a38899ff4018b/src/live.asp.net/TagHelpers/ScriptInliningTagHelper.cs#L38-L64)
Also used out var to check if the class exists in the first place and get the value.
Please let me know what you think. Thanks.

@dougbu  It is indeed work in progress. I removed the tests as i will have to rewrite them and add more.
About the HtmlEncode, i went with the ClassAttributeHtmlContent approach you mentioned because i want to keep the signature cleaner.  Or did you propose something else that i missed?

 Or did you propose something else that i missed?

That's what I was proposing and I agree it's not beautiful. However, we can't ship code that works incorrectly or inconsistently.
The core issue is that if RemoveClass(string) missed a case because the value contained an already-encoded portion, it won't remove a matching token. That's quite bad. The main good news is that if you fix RemoveClass(string) (making it RemoveClass(string, HtmlEncoder), you get AddClass(string, HtmlEncoder) almost for free.
I filed aspnet/Razor#1680 about making HTML encoding less of an issue in the future.

What would be the best way to get the current HtmlEncoder down to the method?

What would be the best way to get the current HtmlEncoder down to the method?

In a .cshtml file, use the HtmlEncoder property.
In a tag helper, the ideal would be to have users bind an asp-encoder property to the HtmlEncoder property. That's not a good story unfortunately. So, we tend to fall back to getting the HtmlEncoder from DI in the tag helper constructor. Cleaner but not quite right.
But, none of this is really a concern for TagHelperOutput extension methods. You've built something that will work correctly if the passed HtmlEncoder is up-to-date.

So my only choice would be to get it via DI right?

So my only choice would be to get it via DI right?

If you're writing a tag helper at the moment, yes.

So in terms of the extensions, if i add HtmlEncoder in the AddClass and RemoveClass signatures down to the ExtractClassValue and replace htmlContent.WriteTo(stringWriter, NullHtmlEncoder.Default); with htmlContent.WriteTo(stringWriter, htmlEncoder); I'm fine?

@Elfocrash yes, your understanding sounds 💯% correct.

So for any comparison I'm using encodedClassValue (which is encoded with the current htmlEncoder) but in the end I'm setting the attribute value as new HtmlString($"{currentClassValue} {classValue}")?

Yes, the HtmlString wrapper indicates nothing in its content should be encoded again. The comparisons work because you're comparing two encoded values.

Gotcha. Changes are up.

Self-assigning.
@Eilon do we need an issue somewhere tracking this? This PR addresses a subset of aspnet/Razor#1679.

Did the changes. However i have a concern with the way RemoveClass is working.
If i have this in my markup <test class="foo	bar foobar">Test</test>
and in my taghelper i have RemoveClass("bar", _encoder) the result in the webpage will be foo bar with a normal space as I'm joining with a " " in the end. Shouldn't it maintain the original html encoded space?

Shouldn't it maintain the original html encoded space?

Redoing the original spacing is overkill, especially considering the complexity required here already. HTML and CSS treat all HTML spaces identically in this context. It's also a slippery slope into further complexity e.g. restoring   and other combinations of spaces between tokens.

I'm wishing upon a falling star about this "Just tests" message

I'm wishing upon a falling star for this "Just tests" message

The HtmlTestEncoder should help in a lot of cases 😃 And, at least some of the tests you removed will work fine with that and some HtmlEncode[[...]] wrappers on the expected values. 🤞

I will be comparing the HtmlStrings though right? The tests i removed were comparing strings but i don't think i can just cast .ToString() and hope for the best right?

@Elfocrash much better to use HtmlContentUtilities.HtmlContentToString() since not all IHtmlContent implementations override ToString().

@dougbu on this one new HtmlString($"{currentClassValue} {encodedClassValue}") shouldn't we encode currentClassValue as well?
I noticed in the tests that if I do AddClass("btn", _encoder) then the result is HtmlEncode[[btn]] but if I do AddClass("btn", _encoder) and then AddClass("btn-primary", _encoder) then the result is btn HtmlEncode[[btn-primary]] which doesn't sound correct right?
Also if my current class is btn btn-primary and i do a  RemoveClass("btn-primary", _encoder) will also fail because it tries to remove HtmlEncode[[btn-primary]] from btn btn-primary.

Sounds like the code has a bug. Shouldn't be possible for HtmlEncode[[btn]] to become btn before the second AddClass(...) call for example.

But we don't encode the current class values when we are adding or removing a class. Do we have to encode the current individual classes aswell?

Do we have to encode the current individual classes as well?

The new HtmlString($"{currentClassValue} {encodedClassValue}") expression should guarantee everything in the attribute's Value is already encoded. I suspect the problems are here and here. As seen in Razor, a string or arbitrary non-IHtmlContent needs to be encoded.
What confused me was your comment that value.AddClass("btn", _encoder); resulted in "HtmlEncode[[btn]]" while value.AddClass("btn", _encoder); value.AddClass("btn-primary", _encoder); resulted in "btn HtmlEncode[[btn-primary]]". The initial state for the second AddClass(...) should be an HtmlString containing "HtmlEncode[[btn]]". So, how did "btn" get decoded?

It happens because after btn was added and retrieved by the ExtractClassValue method it will go through case string valueAsString.  This will then be used in new HtmlString($"{currentClassValue} {encodedClassValue}") in which point currentClassValue is just btn instead of HtmlEncode[[btn]]
Should i encode the valueAsString thought the html encoder at this point? It also happen in the default case

it will go through case string valueAsString

That shouldn't happen. The attribute's Value should be an HtmlString at that point. Something else may be wrong.

Should i encode the valueAsString thought the html encoder at this point? It also happen in the default case

Yes, those lines are incorrect.

Same goes for tagHelperOutput.Attributes.Add("class", classValue); when if (!tagHelperOutput.Attributes.TryGetAttribute("class", out TagHelperAttribute classAttribute))
is true right? Shouldn't it be tagHelperOutput.Attributes.Add("class", new HtmlString(encodedClassValue));?

Also if your current class which is set in the markup is btn btn-primary and you try to remove btn-primary with RemoveClass you will fail because the ExtractClassValue will return HtmlEncode[[btn btn-primary]]. What is the recommended approach?

tagHelperOutput.Attributes.Add("class", classValue); and tagHelperOutput.Attributes.Add("class", new HtmlString(encodedClassValue)); are semantically identical. But, reserve encoding for the cases where it's needed. That is, do not create encodedClassValue until it's mandatory but use it everywhere once it exists.
Don't get too attached to the HtmlTestEncoder. No real encoder wraps the original text. And, if the user enters characters the HtmlEncoder would encode directly in the .cshtml file, they'll confuse the system and potentially send problematic characters to the browser.

The encoding fix and tests are in.

@dougbu Requested changes and new tests are up


Java code for rank of matrix Closes #3380

Closes #3380

Please, comment !assign in #3380 to assign the issue to you.

!assign

Hey @suryanshsoni120, !assign command is only for good first issue !!!
Please choose another issue.
Thanks for your interest in contributing to this project.


DC/OS deployment issue:  There weren't at least 1 running task spawned within a timeout of 1800 seconds (Docker service was not available immediately after the Docker service was started)

Symptom:
  Windows agent node was not setup propoerly.
  Agent node setup failure detected in the scale-up scenario, the DC/OS agents count doesn’t
  match the Azure VMs count (transient error). Even though this was hit during the CI scale-up test,
  the same issue could happen to the regular deployment

Log information
/AzureData/DCOSWindowsAgentSetup.log
error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.36/networks/create: open
//./pipe/docker_engine:
The system cannot find the file specified. In the default daemon configuration on Windows,
the docker client must be run elevated to connect. This error may also indicate that the docker
daemon is not running.

Possible cause:
Race condition from multiple Docker stop/start operations called in back-back sequence.

From the error log, the error comes from the IIS task cannot be launched properly in windows agent node. By looking at the DC/OS cluster log, DCOS tries to launch the task from private agent node.
Then from DCOS master UI, it’s because the Windows agent public node does not show in DCOS UI.
Log into Windows agent public node, it’s because “nat” driver is not created properly on Windows public agent node. In another word, the Windows public agent node pre-provisioning actually fails. Details at http://dcos-win.westus.cloudapp.azure.com/dcos-testing/546/windows_agents/<IP_ADDRESS>/
From the docker deamon log, http://dcos-win.westus.cloudapp.azure.com/dcos-testing/546/windows_agents/<IP_ADDRESS>/dockerd.log, I haven’t been able to figure out what’s wrong. Any idea?
Status:
Open

Look like a recent job run (https://mesos-jenkins.westus.cloudapp.azure.com/job/dcos-testing/546/console) has this issue as well.
Re-opened this issue for further tracking.

From: Li Li
. The Windows agent setup did the below currently,
//start dockerd by default by system
//stop dockerd
Disable-DockerDefaultNATNetwork
// start dockerd  take ~2 mins
// stop dockerd
Update-Docker
//start dockerd -> take ~2 mins
// create a custom NAT --- fail at the race condition where dockerd has not been started yet.
New-DockerNATNetwork
Once dockerd is started, stopping dockerd is async. So the next dockerd start will hit the below error until the old dockerd instance fully stopped. Unfortunately, it takes Windows docker about 2 mins to stop the existing dockerd instance sometimes.
Error starting daemon: pid file found, ensure docker is not running or delete C:\ProgramData\docker\docker.pid
Since we have multiple start/stop dockerd in our current Windows agent deployment script, that’s why we hit this race condition from time to time. Some improvements that we can add,
Combine pre-config dockerd service, like DisableDefaultNATNetwork, update docker versions, etc.
Figure out if there is a way by default stop docker service.
Ping Dockerd to make sure it is ready before creating a custom NAT.

This issue was addressed by the changes in https://github.com/dcos/dcos-windows/pull/57


[BUG] Ticket closes and manual unmutes don't work when the specified privatebin is down

Describe the bug
When the privatebin is unavailable, tickets are unable to be closed, and manual unmutes are not possible (mute channel doesn't get deleted)
To Reproduce
Steps to reproduce the behavior:

Bring down the specified privatebin/enter an invalid URL for privatebin
Try to open a ticket and then /close it, or manually unmute a muted member
Command fails (defers indefinitely)

Expected behavior
For this error to be handled cleanly (display an error), or the chat logs be uploaded to an alternate bin, or added in the mute log/ticket log embed itself.

Need to test and see if this issue still affects the ticket system after the latest rewrite.

Plans to overhaul this system entirely so this issue is no longer needed.


fix(cli): bump node-emoji to ^2.1.3

Bump node-emoji dependency resolution to ^2.1.3 to fix broken CJS builds. Thanks to @JoshuaKGoldberg
Closing issues
Fixes #5279
Self Check before Merge
Please check all items below before review.

[x] Corresponding issues are created/updated or not needed
[x] Docs are updated/provided or not needed
[x] Examples are updated/provided or not needed
[x] TypeScript definitions are updated/provided or not needed
[x] Tests are updated/provided or not needed
[x] Changesets are provided or not needed

https://github.com/refinedev/refine/issues/5279#issuecomment-1819879069


could not parse helm response with error: Unable to parse.

With the test of
var Promise = require("bluebird");

let helmBinary = '/usr/local/bin/helm';

if (process.platform === "win32") {
    helmBinary = 'helm';
}

const Helm = require("node-helm").Helm;
var helm = Promise.promisifyAll(new Helm({helmCommand: helmBinary}));

async function main()
{
    let options = {}; //No options available currently
    let releases = await helm.listAsync(options);

    console.log(releases)
}

main();

-bash-4.2# helm version
Client: &version.Version{SemVer:"v2.13.0", GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}

Hi,
Yes I used some generic parsing there it doesn't always works...
You can ignore the error


Added missing value for model-driven app on component type

@Power-Maverick Thanks for the doc change.
However, the entity reference docs are tool generated from the service metadata. We cannot manually alter the page as any change will be overridden the next time the page is re-generated. I suspect the missing value will show up automatically in a future doc update.

Also, note that gthe entity reference for online users is already updated with this value: https://docs.microsoft.com/en-us/powerapps/developer/data-platform/reference/entities/solutioncomponent#componenttype-choicesoptions

@phecke thanks and yes it makes sense. @KumarVivek The value was missing there as well. Along with submitting PR here I had submitted PR for that repo as well which got updated so thanks. I was trying to keep both of them in sync. 🙂


Upgrade failed

Discussed in https://github.com/zwave-js/zwave-js-ui/discussions/3949

Originally posted by kenavn October 15, 2024
Hi! I upgraded my docker image running on a ARM based computer as i usually do when Home Assistant requires so.  The running version is 9.23.0.
The UI shows"Unexpected non-whitespace character after JSON at position 4 (line 1 column 5)" in large fonts. Zwave devices does not appear in HASS (integration is down). When checking the logs from the container it says;
exec /usr/bin/node: exec format error repeating.
I have tried pulling older versions with no luck.. What can have happened?
My volume has the following contents;
backups  f71f771b.jsonl           f71f771b.values.jsonl  nodes.json   sessions       snippets
config   f71f771b.metadata.jsonl  logs                   scenes.json  settings.json  users.json
the .jsonl was a bit unexpected..

Ps: other containers running on the same host are behaving as they should. I've also checked the zwave stick (Aotec series 5) which behaves normally.

@kenavn it could be for some reason you pulled an image with wrong arch?

This is the inspection of the relevant image. It says ARM64. Is there anything I can provide to bring more clarity to the case?

[

{
    "Id": "sha256:3881abce91255b9bbaef5f35d1a7f968319b7f02cce72c1981abd4cb56c1cfbd",
    "RepoTags": [
        "zwavejs/zwave-js-ui:9.23",
        "zwavejs/zwave-js-ui:latest"
    ],
    "RepoDigests": [
        "zwavejs/zwave-js-ui@sha256:f21a32e2edd11ac5301a4cb5f68b08ee46a18b262c30f6e6b3e56be45a4cdad7"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2024-10-14T16:03:53.663317794Z",
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "8091/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db",
            "TAG_NAME=",
            "NODE_ENV=production"
        ],
        "Cmd": [
            "node",
            "server/bin/www"
        ],
        "ArgsEscaped": true,
        "Image": "",
        "Volumes": null,
        "WorkingDir": "/usr/src/app",
        "Entrypoint": null,
        "OnBuild": null,
        "Labels": {
            "maintainer": "robertsLando",
            "org.opencontainers.image.authors": "Daniel Lando<EMAIL_ADDRESS>            "org.opencontainers.image.created": "2024-10-14T15:59:26.865Z",
            "org.opencontainers.image.description": "Full featured Z-Wave Control Panel UI and MQTT gateway. Built using Nodejs, and Vue/Vuetify",
            "org.opencontainers.image.documentation": "https://zwave-js.github.io/zwave-js-ui",
            "org.opencontainers.image.licenses": "MIT",
            "org.opencontainers.image.revision": "f9c9a48cdd6add00d52924f5c9c369cc57ed5a99",
            "org.opencontainers.image.source": "https://github.com/zwave-js/zwave-js-ui",
            "org.opencontainers.image.title": "zwave-js-ui",
            "org.opencontainers.image.url": "https://github.com/zwave-js/zwave-js-ui",
            "org.opencontainers.image.vendor": "zwave-js",
            "org.opencontainers.image.version": "9.23.0"
        }
    },
    "Architecture": "arm64",
    "Os": "linux",
    "Size": 290412356,
    "GraphDriver": {
        "Data": null,
        "Name": "vfs"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:5f4d9fc4d98de91820d2a9c81e501c8cc6429bc8758b43fcb2cd50f4cab9a324",
            "sha256:605b51b18d6e8b7baab66ca93dd6b6dd44cdc533bc71114d45cdb305c2656bb9",
            "sha256:b6116133018159d7abe9345db420b6355c55950b82ac917e72934fbc6c80bde1",
            "sha256:23ebc1a89bc44646822b7042b44940b4714504385ac4bfe1627bfe650e83e97d"
        ]
    },
    "Metadata": {
        "LastTagTime": "0001-01-01T00:00:00Z"
    }
}

]

uname -m
aarch64

uname -m
aarch64

I've now tried getting this to work with a lot of releases back to 9.16. That one works. This atleast verifies that the images for arm64/aarch64 does not work after that point. Strange that I am the only one experiencing it?
Anyway; the problem is not solved. I simply cannot get Home Assistant back on track without downgrading it, as it requires a newer release of zwave-js-ui. I will have a look at building an image temporarily myself in the meantime.

Just did a fresh install on a rockpi arm64 I have:
rock@rockpi4b:~/zwave-js-ui$ arch
aarch64
rock@rockpi4b:~/zwave-js-ui$ docker compose up
[+] Running 1/0
 ✔ Container zwave-js-ui  Created                                                               0.0s
Attaching to zwave-js-ui
zwave-js-ui  | 2024-10-16 07:01:47.030 INFO APP: Version: 9.23.0.f9c9a48
zwave-js-ui  | 2024-10-16 07:01:47.066 INFO APP: Application path:/usr/src/app
zwave-js-ui  |   ______  __          __                      _  _____     _    _ _____
zwave-js-ui  |  |___  /  \ \        / /                     | |/ ____|   | |  | |_   _|
zwave-js-ui  |     / /____\ \  /\  / /_ ___   _____         | | (___     | |  | | | |
zwave-js-ui  |    / /______\ \/  \/ / _' \ \ / / _ \    _   | |\___ \    | |  | | | |
zwave-js-ui  |   / /__      \  /\  / (_| |\ V /  __/   | |__| |____) |   | |__| |_| |_
zwave-js-ui  |  /_____|      \/  \/ \__,_| \_/ \___|    \____/|_____/     \____/|_____|
zwave-js-ui  |
zwave-js-ui  | 2024-10-16 07:01:47.103 WARN STORE: settings.json not found
zwave-js-ui  | 2024-10-16 07:01:47.125 WARN STORE: scenes.json not found
zwave-js-ui  | 2024-10-16 07:01:47.179 INFO APP: Listening on port 8091 protocol HTTP
zwave-js-ui  | 2024-10-16 07:01:47.201 WARN BACKUP: Store backup is disabled
zwave-js-ui  | 2024-10-16 07:01:47.204 WARN BACKUP: Nvm backup is disabled
zwave-js-ui  | 2024-10-16 07:01:47.209 WARN Z-WAVE: Z-Wave driver not inited, no port configured

Using https://github.com/zwave-js/zwave-js-ui/blob/master/docker/docker-compose.yml

Wow, that is strange. I have extracted a binary (node) from two containers with different versions of zwavejs ui, and run some analysis on the files. Results below. It seems like the last one is corrupt. I've tried re-downloading images as well. I will try it on another ARM system, in case it is corruption on the mini PC. That might ofcourse be. Thank for helping out.
DOCKER IMAGE 9.16.4 (394bd028037c1a4a909660e4874197461ece0871)

[
    {
        "Id": "de7bc010b17bbf30878f5842deb3d48bac3b99b127c6aea4dd2f1205fbb7789d",
        "Created": "2024-10-18T16:31:27.846951794Z",
        "Path": "node",
        "Args": [
            "server/bin/www"
        ],
        "State": {
            "Status": "created",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "0001-01-01T00:00:00Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:da5c595fa697a40fa60714375ed41b83acfd3ff5cd1c5aa388bf10f2825e65c9",
        "ResolvConfPath": "",
        "HostnamePath": "",
        "HostsPath": "",
        "LogPath": "",
        "Name": "/temp_container",
        "RestartCount": 0,
        "Driver": "vfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                62,
                143
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": [],
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": null,
            "Name": "vfs"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "de7bc010b17b",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "8091/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db",
                "TAG_NAME=",
                "NODE_ENV=production"
            ],
            "Cmd": [
                "node",
                "server/bin/www"
            ],
            "Image": "zwavejs/zwave-js-ui:9.16",
            "Volumes": null,
            "WorkingDir": "/usr/src/app",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "robertsLando",
                "org.opencontainers.image.authors": "Daniel Lando<EMAIL_ADDRESS>                "org.opencontainers.image.created": "2024-07-30T08:14:57.260Z",
                "org.opencontainers.image.description": "Full featured Z-Wave Control Panel UI and MQTT gateway. Built using Nodejs, and Vue/Vuetify",
                "org.opencontainers.image.documentation": "https://zwave-js.github.io/zwave-js-ui",
                "org.opencontainers.image.licenses": "MIT",
                "org.opencontainers.image.revision": "394bd028037c1a4a909660e4874197461ece0871",
                "org.opencontainers.image.source": "https://github.com/zwave-js/zwave-js-ui",
                "org.opencontainers.image.title": "zwave-js-ui",
                "org.opencontainers.image.url": "https://github.com/zwave-js/zwave-js-ui",
                "org.opencontainers.image.vendor": "zwave-js",
                "org.opencontainers.image.version": "9.16.4"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "",
            "SandboxKey": "",
            "Ports": {},
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "",
                    "DriverOpts": null,
                    "NetworkID": "",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": null
                }
            }
        }
    }
]

> docker cp temp_container:/usr/bin/node ~/.
> readelf -h node

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Position-Independent Executable file)
  Machine:                           AArch64
  Version:                           0x1
  Entry point address:               0x6991ac
  Start of program headers:          64 (bytes into file)
  Start of section headers:          38630752 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         27
  Section header string table index: 26

> ldd node
        linux-vdso.so.1 (0x0000007fb1f68000)
        libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007faf9f0000)
        libbrotlidec.so.1 => /lib/aarch64-linux-gnu/libbrotlidec.so.1 (0x0000007faf9d0000)
        libbrotlienc.so.1 => /lib/aarch64-linux-gnu/libbrotlienc.so.1 (0x0000007faf930000)
        libcares.so.2 => not found
        libnghttp2.so.14 => /lib/aarch64-linux-gnu/libnghttp2.so.14 (0x0000007faf8f0000)
        libcrypto.so.3 => /lib/aarch64-linux-gnu/libcrypto.so.3 (0x0000007faf500000)
        libssl.so.3 => /lib/aarch64-linux-gnu/libssl.so.3 (0x0000007faf450000)
        libicui18n.so.73 => not found
        libicuuc.so.73 => not found
        libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007faf220000)
        libc.musl-aarch64.so.1 => not found
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007faf070000)
        /lib/ld-musl-aarch64.so.1 => /lib/ld-linux-aarch64.so.1 (0x0000007fb1f2f000)
        libbrotlicommon.so.1 => /lib/aarch64-linux-gnu/libbrotlicommon.so.1 (0x0000007faf030000)
        libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007faef90000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007faef60000)

> objdump -s --section .comment node

node:     file format elf64-littleaarch64

Contents of section .comment:
 0000 4743433a 2028416c 70696e65 2031322e  GCC: (Alpine 12.
 0010 322e315f 67697432 30323230 3932342d  2.1_git20220924-
 0020 72313029 2031322e 322e3120 32303232  r10) 12.2.1 2022
 0030 30393234 00                          0924.

> sha1sum node
91dd4f7ee7f615205fc59361fa9e7f26a7c90b85  node

> ls -l node
-rwxr-xr-x 1 kenneth kenneth 38632480 Apr  3  2024 node

DOCKER IMAGE 9.23.0 (f9c9a48cdd6add00d52924f5c9c369cc57ed5a99)

[
    {
        "Id": "5b331d7d47faad9c365d9454cc21fdab36421ae2c0aab7bb897568296cae2f61",
        "Created": "2024-10-18T16:39:45.616635272Z",
        "Path": "node",
        "Args": [
            "server/bin/www"
        ],
        "State": {
            "Status": "created",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "0001-01-01T00:00:00Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:3881abce91255b9bbaef5f35d1a7f968319b7f02cce72c1981abd4cb56c1cfbd",
        "ResolvConfPath": "",
        "HostnamePath": "",
        "HostsPath": "",
        "LogPath": "",
        "Name": "/temp_container",
        "RestartCount": 0,
        "Driver": "vfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                62,
                143
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": [],
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": null,
            "Name": "vfs"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "5b331d7d47fa",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "8091/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db",
                "TAG_NAME=",
                "NODE_ENV=production"
            ],
            "Cmd": [
                "node",
                "server/bin/www"
            ],
            "Image": "zwavejs/zwave-js-ui:latest",
            "Volumes": null,
            "WorkingDir": "/usr/src/app",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "robertsLando",
                "org.opencontainers.image.authors": "Daniel Lando<EMAIL_ADDRESS>                "org.opencontainers.image.created": "2024-10-14T15:59:26.865Z",
                "org.opencontainers.image.description": "Full featured Z-Wave Control Panel UI and MQTT gateway. Built using Nodejs, and Vue/Vuetify",
                "org.opencontainers.image.documentation": "https://zwave-js.github.io/zwave-js-ui",
                "org.opencontainers.image.licenses": "MIT",
                "org.opencontainers.image.revision": "f9c9a48cdd6add00d52924f5c9c369cc57ed5a99",
                "org.opencontainers.image.source": "https://github.com/zwave-js/zwave-js-ui",
                "org.opencontainers.image.title": "zwave-js-ui",
                "org.opencontainers.image.url": "https://github.com/zwave-js/zwave-js-ui",
                "org.opencontainers.image.vendor": "zwave-js",
                "org.opencontainers.image.version": "9.23.0"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "",
            "SandboxKey": "",
            "Ports": {},
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "",
                    "DriverOpts": null,
                    "NetworkID": "",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": null
                }
            }
        }
    }
]

> docker cp temp_container:/usr/bin/node ~/.
> readelf -h node
readelf: Error: node: Failed to read file's magic number

> ldd node
        not a dynamic executable

> objdump -s --section .comment node
objdump: section '.comment' mentioned in a -j option, but not found in any input file

> sha1sum node
da39a3ee5e6b4b0d3255bfef95601890afd80709  node

> ls -l node
-rwxr-xr-x 1 kenneth kenneth 0 Apr  3  2024 node

I spun up a similar ARM device and tried the latest image there. This proves that it's the system that is corrupt, possibly related to image layers. Strange, as there are 5 other images running fine. Sorry for the mess, and thanks again.
Unable to find image 'zwavejs/zwave-js-ui:latest' locally
latest: Pulling from zwavejs/zwave-js-ui
579b34f0a95b: Pull complete
956e78ba2360: Pull complete
6a1f85327c00: Pull complete
bf4c4dd92e25: Pull complete
Digest: sha256:ed648be6b058c6aa74abca1868c3ac48cb82b06b22ef0ef4f7ba66dd9d331bfc
Status: Downloaded newer image for zwavejs/zwave-js-ui:latest
2024-10-18 19:54:27.349 INFO STORE: Version: <IP_ADDRESS>31846
2024-10-18 19:54:27.367 INFO STORE: Application path:/usr/src/app

|___  /  \ \        / /                     | |/ |   | |  | | |
/ /\ \  /\  / /_ ___   _____         | | (___     | |  | | | |
/ /\ /  / / ' \ \ / / _ \    _   | |_ \    | |  | | | |
/ /      \  /\  / (| |\ V /  /   | || |) |   | |__| || |
/|      /  / _,| _/ _|    _/|/     _/|___|
2024-10-18 19:54:27.380 WARN STORE: settings.json not found
2024-10-18 19:54:27.384 WARN STORE: scenes.json not found
2024-10-18 19:54:27.385 WARN STORE: nodes.json not found
2024-10-18 19:54:27.388 WARN STORE: users.json not found
2024-10-18 19:54:27.399 INFO STORE: Listening on port 8091 protocol HTTP
2024-10-18 19:54:27.500 WARN STORE: Store backup is disabled
2024-10-18 19:54:27.501 WARN STORE: Nvm backup is disabled
2024-10-18 19:54:27.504 WARN STORE: Z-Wave driver not inited, no port configured
^C2024-10-18 19:54:45.655 WARN STORE: Shutdown detected: closing clients...
2024-10-18 19:54:45.661 INFO STORE: Closing Gateway...
2024-10-18 19:54:45.663 INFO STORE: Client closed

@kenavn thanks for the feedback! Glad you found the reason behind this issue :)


refactor: combine command run and create's flags

Signed-off-by: Allen Sun<EMAIL_ADDRESS>1.Describe what this PR did
We know that command run and create have lots of common flags. And we do not wish to repeat ourselves. So I combine these flags into one copy.
2.Does this pull request fix one issue?
None
3.Describe how you did it
None
4.Describe how to verify it
None
5.Special notes for reviews
/cc @Ace-Tang @Letty5411

Codecov Report

Merging #678 into master will increase coverage by 0.05%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #678      +/-   ##
==========================================
+ Coverage   10.01%   10.06%   +0.05%
==========================================
  Files          92       93       +1
  Lines        5354     5327      -27
==========================================
  Hits          536      536
+ Misses       4768     4741      -27
  Partials       50       50

Impacted Files
Coverage Δ

cli/run.go
0% <0%> (ø)
:arrow_up:

cli/create.go
0% <0%> (ø)
:arrow_up:

cli/common_flags.go
0% <0%> (ø)

Continue to review full report at Codecov.

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

LGTM.

Although all tests have passed, the cli doc generation fails. Keep digging and set this DO-NOT-MERGE label.

It works now. I am removing the label DO-NOT-MERGE. And all test cases pass, doc generation work fine. Then LGTM, merging...


feat: support http+pb to thrift generic

What type of PR is this?
feat
What this PR does / why we need it (English/Chinese):
en: feat: support http+pb to thrift generic
zh: feat: 支持http+pb到thrift的泛化调用
Which issue(s) this PR fixes:
none

 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.


komorebi integration can cause infinitely spawning komorebic.exe instances

I'm honestly not sure if this is a yasb, komorebi, or both problem but I have decided to put this issue here for the time being. Let me know if I should move it or if I can provide any additional information.
Under certain conditions yasb being connected to komorebi can cause an error that will produce new komorebic.exe instances to spawn until a new window is focused by komorebi or yasb is terminated. These komorebic.exe instances will persist until yasb is terminated or each task is ended. This seems to be more common when dealing with windows that have had their window decorations removed but is not limited to such windows.
The easiest most consistent steps to reproduce on my system have been as followed:

Run komorebi
Run yasb with the komorebi widget enabled
Open Notepad.exe on an empty workspace
Close Notepad.exe (Don't focus any windows after closing)

Result:

I have tried a decent amount of komorebi revisions* to attempt to narrow down this problem but most if not all have given similar results. I have also tried the Nov 19th, Dec 4th, and Dec 5th revisions of yasb as well. This error occurring after closing a window and stopping when a new window is focused by komorebi is the only real consistent factor I have found sadly.
*
Windows 11 22000.348
*Yasb - ae15d7bff8baeb09522dff20be70de6b86d9572a
*komorebi - 9fd4dbf
*komorebi error (continues to repeat with each new komorebic.exe being spawned)
*the (os error 10061) mentioned in my previous issue seemed to also cause this behavior.
ERROR komorebi::process_command: could not get window title

*yasb log
Starting Yasb
Successfully loaded config file and stylesheet
Unknown property cursor
Created bar 0 on monitor \\.\DISPLAY1
Unknown property cursor
Created bar 1 on monitor \\.\DISPLAY2
Activating listener KomorebiEventListener
Activating listener SystemEventListener
SetWinEventHook Successful. Emitting focused window and waiting for events.
Waiting for Komorebi to subscribe to named pipe yasb
Unknown property cursor
Unknown property cursor
Unknown property cursor
Unknown property cursor
Komorebi connected to named pipe: yasb

The komorebi event listener that yasb uses has a background QTimer function which queries komorebi's state every 2 seconds whilst the event listener waits for new window manager events. This shouldn't be an issue, but may have something to do with it.
The only other instance where komorebi's state is manually queried via subprocess is here. The state is retrieved only once immediately after Komorebi has connected to the named pipe. Of course, if komorebi happened to be repeatedly disconnecting and reconnecting to the named pipe, this may result in an execessive amount of state query requests to komorebic.exe.
If this is the case, you would see the following log messages in repeated succesion within yasb.log:

'Komorebi has disconnected from the named pipe yasb'
'Waiting for Komorebi to subscribe to named pipe yasb'
'Komorebi connected to named pipe: yasb'

@LGUG2Z may also have some insight as to why this is happening. I will continue to investigate this in the meantime.

After talking with @LGUG2Z it seems this might be an issue with the state command waiting eternally for a response message from komorebi. If komorebi fails to retrieve the state and send it back, the komorebic state process will deadlock.
Since the state command is executed via pythons subprocess module, when you quit yasb you are also terminating all of the active komorebic state processes.
As a fix, I can specify a max timeout duration for the state commands when executed via subprocess, and then handle the timeout gracefully. This likely would avoid the build-up of komorebic processes.
You may also want to raise an issue on the komorebi repo for tracking/discussing this issue further, as  a timeout should probably be implemented on komorebi's end too.

I've also updated komorebi to always send something in response to a state request, even if it is just an error description. This should avoid komorebic ever hanging on failed state requests: https://github.com/LGUG2Z/komorebi/commit/5e3f1cbb4435bafeff786727a535b59a893aea8c

The change(s) seem to be working well so far with both recent revisions. Still seeing a pretty rare (os error 10061) but the instances no longer pile up with either error, it also seems to process the command along side the error now as well.
Haven't had the time to thoroughly put them through their paces yet but I'll make sure to report back if the behavior reappears. Thanks again for the quick response on both sides.
yasb log
Starting Yasb
Successfully loaded config file and stylesheet
Unknown property cursor
Created bar 0 on monitor \\.\DISPLAY1
Unknown property cursor
Created bar 1 on monitor \\.\DISPLAY2
Activating listener KomorebiEventListener
Activating listener SystemEventListener
SetWinEventHook Successful. Emitting focused window and waiting for events.
Waiting for Komorebi to subscribe to named pipe yasb
Unknown property cursor
Unknown property cursor
Unknown property cursor
Unknown property cursor
Komorebi connected to named pipe: yasb
Unknown property cursor

komorebi log
2021-12-07T02:33:38.246306Z  INFO read_commands:process_command{State}: komorebi::process_command: processed
2021-12-07T02:33:38.246789Z ERROR komorebi::process_command: could not get window title
2021-12-07T02:33:40.256362Z  INFO read_commands:process_command{State}: komorebi::process_command: processed
2021-12-07T02:33:40.256820Z ERROR komorebi::process_command: could not get window title
2021-12-07T02:33:42.250499Z  INFO read_commands:process_command{State}: komorebi::process_command: processed
2021-12-07T02:33:42.250958Z ERROR komorebi::process_command: could not get window title
2021-12-07T02:33:44.244481Z  INFO read_commands:process_command{State}: komorebi::process_command: processed
2021-12-07T02:33:44.244944Z ERROR komorebi::process_command: could not get window title

komorebi log (super rare)
2021-12-07T02:32:00.200344Z  INFO read_commands:process_command{State}: komorebi::process_command: processed
2021-12-07T02:32:02.205350Z ERROR komorebi::process_command: No connection could be made because the target machine actively refused it. (os error 10061)
2021-12-07T02:32:04.199965Z  INFO read_commands:process_command{State}: komorebi::process_command: processed

Marking as closed since the described behaviour in the initial post appears to be resolved.


Patch replace ota version with checksum

Implements #220
Note that, if OTA fails, we don't need to restart anymore just for resetting the expected MD5 because now there WILL be another SetMD5() when the server retries the update.
Updated bash script:
#!/bin/bash

DEVICE=homie/<device>
BROKER="-h <broker>"
FW_BIN=/path/to/firmware.bin

FW_MD5=$(md5sum -b $FW_BIN | cut -d" " -f1)

FW_B64=${FW_BIN/.bin/.b64}
base64 -w0 $FW_BIN > $FW_B64

mosquitto_pub $BROKER -t "$DEVICE/\$implementation/ota/checksum" -m $FW_MD5
mosquitto_pub $BROKER -t "$DEVICE/\$implementation/ota/firmware" -f $FW_B64

I added a second commit to be slightly more consistent with icons and OTA message grammar.

😅 Hooray! Lint passed straight away.

Good job! And congrats for the lint, you're becoming a master 😄


Step11

Hey,
I've updated across all the branches up to Springboot 3.1.x and did the lightest touch upgrade.
Feel free to propose any new changes against the new branch and we can review, for example if there are some preferred patterns over the original implementation when it was written.
Will close this off for now


Add new scopes for POM generation

This PR extends the POM generation functionality with the newish Gradle scopes introduced in the latest versions. The change allows to better map Gradle to Maven scopes and is related to issue #156.

@armiol PTAL.


Presentation of Plain Cree declination/conjugation classes (i.e. NA[D]-[1-5], VTA-[1-5])

Instead of the linguistic codes such as NA-1, NA-2, VTA-1, VTA-2, etc., we could present example/model verbs and nouns to indicate how the noun or verb is inflected.
Ideally, one would use such example verbs which are used in instruction - on the university level, we could base these on Arok's paradigms.
These could implemented by selecting examples for each (which could e.g. be gleaned from Arok's model paradigms). For instance, using Arok's older inflectional/conjugational classes, these could be:
VII-v: mihkwâw
VII-n: miywasin
VAI-v: nipâw
VAI-n: pimisin
VTI-1: nâtam
VTI-2: kîsihtâw
VTI-3: mîciw
VTA-1: wîcihêw
VTA-2: nitonawêw
VTA-3: kîskiswêw
VTA-4: nakatêw
VTA-5: ?
Crucially, we could just as well use any other exemplary verbs, but for now we have to select some set that we ourselves consider meaningful.
As for presentation, instead of showing a lexical entry as is currently the case:

askihtakwâw (Verb: VII-v)

... one would instead firstly show the following:

askihtakwâw (Verb: mihkwâw)

... or:

askihtakwâw (Verb: like mihkwâw)

askihtakwâw (like mihkwâw)

... and hovering over tâpiskôc would give VII-v/n of whatever inflectional subclass the lexical entry would belong to.
The nêhiyawêwin alternative to 3/4 above would be to use tâpiskôc, so:
4b. askihtakwâw (tâpiskôc: mihkwâw)

@eddieantonio just a reminder while I'm browsing issues. This is easily achievable, now that our Wordform model class has a full-lc field which records exactly the declination class.

Important N.B. to whomever implements this - The plain English example words should be found in the file crk.altlabel.tsv.
Ideally, this would be configurable so that the user can decide with of the representations of the inflectional classes they see. And this selection might be tied with some other or meta choices, such as a linguistic (VTA-1) or non-linguistic mode (like: wîcihêw).

@Madoshakalaka @kobexamoh I've updated https://github.com/UAlbertaALTLab/cree-intelligent-dictionary/blob/master/CreeDictionary/res/crk.altlabel.tsv to conform with the latest AEW inflectional subtype classification.
This means that the representation of the inflectional subtype should now be doable. We could present the plain English relabeling in conjunction with the dictionary entry heads, e.g. like: nipâw for VAI-1, or also show that with the general word class, e.g. Verb, like: nipâw for VAI-1.

While this is the original issue on the topic and provides a good overview of the options, it is also somewhat outdated due to later development decisions and our better understanding of the matter, and is better and more comprehensively explained in #445.


Workshop Slides

Started working on this here: https://sswcom.sharepoint.com/:p:/r/sites/SSWTraining_Public/_layouts/15/Doc.aspx?sourcedoc={FE921242-20AC-438A-B278-5D036C1355FC}&file=CleanArchitectureSuperpowers.pptx&action=edit&mobileredirect=true

Done


Inconsistency fixed when updating appsettings.

Fix for issue #25550
The bullet (below) mentions that |Microsoft.Hosting.Lifetime| should be removed from the appsettings, but the diff example underneath shows erroneously that "Microsoft":"Warning" should be removed too
"Microsoft.Hosting.Lifetime": "Information" was removed from both appsettings.json and appsettings.Development.json:
- "Microsoft": "Warning", <---- This was removed
- "Microsoft.Hosting.Lifetime": "Information"
+ "Microsoft.AspNetCore": "Warning"

The only change necessary going from .net 5 to 6 is the replacement of "Microsoft.Hosting.Lifetime" with "Microsoft.AspNetCore"
We found that when removing  "Microsoft":"Warning" , our logs were more noisy. Perhaps it would be better to keep it there in appsettings.json?

This section describes the difference between the 5.0 and 6.0 templates. If we don't remove the "Microsoft":"Warning" line, it's an inaccurate description of said changes.

@baseTwo  let me know if you're interested fixing via mention that "Microsoft": "Warning" was replaced with "Microsoft.AspNetCore": "Warning".

@Rick-Anderson sure I'll fix mid next week. Out of office until then


Cant add lib

The name in the library.properties file can not contain spaces.

Please give us more information. What OS are you operating from? What Arduino IDE version?
The Arduino library spec allows for spaces. Almost all our libraries have spaces in the name field inside the libraries.properties file. Here's just one example and no one else is reporting issues. That's not to say you aren't having issues, it just means I'm perplexed :/

Closing due to inactivity, reopen if you believe this was done in error


Integration of CMU Sphinx

Integration of CMU Sphinx, so that the users that have option to select either Google STT or Sphinx STT. Integrating CMU Sphinx will give us the advantage that Melissa will be able to run offline.

Assigned to @tanay1337 and @shivammg.

@shivamMg I am having troubles compiling MITLM for Pocketsphinx. I have succeeded in installing Sphinxbase and Pocketsphinx. Any suggestions? Do you think Julius might be a better alternative?

I have started to work on this part-time. The best guide to install Pocket Sphinx can be found here: https://wolfpaulus.com/journal/embedded/raspberrypi2-sr/

Resolved here: https://github.com/Melissa-AI/Melissa-Core/commit/4f8b5d52c2972f2510c65225820c38087a42832e


Added support for windows using 'spotilocal'

Added support for windows using the 'spotilocal' package.
Note: this package does not allow next/prev, only play/pause.
Added simple way to test if certain operations are supported, and made the UI react to these.

Hi @OrionNebula ,
Thanks for your support to this project, it is much appreciated.
I like the feature to show actions based on specific platform support.
I'd change just one thing before accepting this Pull Request,  the OS specific logic should be in a dedicated file (instead of being inside spotifyDefault.js which is supposed to be a fallback implementation for unsupported platforms).
Could you please move Windows-specific implementation to a file named spotifyWindows.js (and reference it from SpotifyManager.js) and restore the original spotifyDefault.js?

Hi @OrionNebula ,
Thanks again for your support, I'm going to merge your pull-request.


clair: 4.1.0 -> 4.1.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/clair/versions.
meta.description for clair is: "Vulnerability Static Analysis for Containers"
meta.homepage for clair is: "https://github.com/quay/clair"
meta.changelog for clair is: "https://github.com/quay/clair/blob/v4.1.1/CHANGELOG.md"
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

/nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1/bin/clair passed the binary check.

/nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1/bin/clairctl passed the binary check.

/nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1/bin/.clair-wrapped passed the binary check.

3 of 3 passed binary check by having a zero exit code.

2 of 3 passed binary check by having the new version present in output.

found 4.1.1 with grep in /nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1

found 4.1.1 in filename of file in /nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1

directory tree listing: https://gist.github.com/b20e83f1b81cca1487b0d37a2eb2bf1f

du listing: https://gist.github.com/f9534300b0d2782e1cff26642ac7d28c

Rebuild report (if merged into master) (click to expand)

3589 total rebuild path(s)

1408 package rebuild(s)

1408 x86_64-linux rebuild(s)
1189 i686-linux rebuild(s)
123 x86_64-darwin rebuild(s)
869 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
MIDIVisualizer
appdaemon
arion
aws-sam-cli
awsebcli
azure-cli
azure-storage-azcopy
bpftools
brise
buildah
buildbot
buildbot-full
buildbot-ui
bumblebee
cargo-flamegraph
cargo-make
charliecloud
clair
containerd
cri-o
crosvm
cryptodev
dd-agent
displaylink
docker
docker-compose
docker-edge
docker-gc
docker_20_10
duktape
edbrowse
errbot
fcitx-engines.rime
fcitx5-rime
fdroidserver
ffmpeg-full
fn-cli
freefall
geekbench
gerbera
giara
gnome.gnome-applets
gpio-utils
grype
gwe
handbrake
hercules-ci-agent
home-assistant
ibus-engines.rime
ignite

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A clair https://github.com/r-ryantm/nixpkgs/archive/8119a8f51225fec500c81f473d1d18f3b3c497e5.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1
ls -la /nix/store/p7v4rl8sjpz0rqvsyhjqrczfl2i1ifwq-clair-4.1.1/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings
cc @marsam @kalbasit for testing.

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

1 package built:

clair


fix array iteration in coredump location

Scope & Purpose
properly iterate the array instead of only taking the indices.

[x] :hankey: Bugfix
Backports:

[x] 3.11
[x] 3.10

Unrelated failures which are addressed with https://github.com/arangodb/arangodb/pull/20265.


Updating Vendor

resolves #620 as libcompose PR https://github.com/docker/libcompose/pull/476
got merged.

LGTM


Measure activity Id

Importing the activity instance in journal dialog is not possible as it cant find activity "org.olpcfrance.Measure".
metadata:
https://github.com/llaske/sugarizer/blob/9630e2a2cbab435a65e2239bdac25b13a897a630/activities/Measure.activity/js/activity.js#L864
activity.info
https://github.com/llaske/sugarizer/blob/9630e2a2cbab435a65e2239bdac25b13a897a630/activities/Measure.activity/activity/activity.info#L4
activities.json
https://github.com/llaske/sugarizer/blob/9630e2a2cbab435a65e2239bdac25b13a897a630/activities.json#L58

Could you explain the problem?
I can export an instance on my disk the reimport it.

Basically what i'm trying, is to show ".txt" log from measure activity in Journal Dialog .
So i used this filter :
var filters = [ { mimetype: "text/plain"}, ];

But when journalchooser.js try to get the activity which exports "text/plain" type ,for styling and icon of that item.

var activity = activities[entry.metadata.activity]

The metadata.activity  "org.olpcfrance.Measure"  is not present in  activities array.

Okay got it. It's not a bug. When the Chart activity will be implemented we will associate CSV files to Chart activity so we could directly open CSV from the Journal. But you're right it will probably require some change in Measure activity too.


TestExecutorTestSuite/TestDockerNetworkingFull is flaky

https://app.circleci.com/pipelines/github/filecoin-project/bacalhau/3203/workflows/9b156f5c-6992-4694-92f6-ba5d13f3c094/jobs/33052
Maybe the network is being attempted before Squid has finished parsing its configuration?

Could be linked to #1729


Bug to be fix, interview list not updated when application is updated

For example, after running edit 1 c/Lala interview list will still have interview with Google.
Before

After

Same bug if you run clear. I can quickly fix this one.


Usage in Other Experiments?

@dpryan79,
Is there any way this tool might be useful for assays outside of bisulfite sequencing?

Not unless they result in similarly converted bases.


Unable to close Windows365 window

When I open the Windows365 VDI interface, all works well, but I can't close the windows - pressing "x" does nothing, and there are no other ways to close the window or quit the app. The menu bar is not available (despite the "Show menu bar" mode is chosen).
Can you make closing work by clicking on the "x" window button? Thanks!

Hi! I don't use Windows365, and since I cannot reproduce the issue, I would not be able to fix it. Closing the issue.


feat: delete claims when actors or providers are stopped

Feature or Problem

Claims need to be deleted in the following cases:

stop an actor and instances is empty
scale an actor to 0
stop provider

related pr: https://github.com/wasmCloud/wasmCloud/pull/510
Related Issues

Release Information

Consumer Impact

Testing

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin
[ ] x86_64-windows

Tested on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin
[ ] x86_64-windows

Unit Test(s)

Acceptance or Integration

Manual Verification

This PR should be reverted, unfortunately I missed the review window.
Claims should stick around even if an actor or provider stops because there can always be another host in the same lattice that is running the same actor or provider that still depends on those claims.
Cc @rvolosatovs

This PR should be reverted, unfortunately I missed the review window.
Claims should stick around even if an actor or provider stops because there can always be another host in the same lattice that is running the same actor or provider that still depends on those claims.
Cc @rvolosatovs

Could you open a revert PR?

@brooksmtownsend Sorry for overlooking this, so when do we need to remove claims from nats?
Or rather, claims are only increasing, not decreasing.

Or put the claims information into a heartbeat broadcast? Each host caches claims information based on other hosts' heartbeats.

Hey @Iceber! No worries at all, this was great thinking in context of the rest of the codebase, it just happens to cause undetermined behavior in advanced cases.
For now, claims are only increasing, and I left a little comment in #534 to address this. Claims cache is relatively small so I'm not too worried about it growing too large, but wouldn't mind adding functionality in wash drain to remove the claims cache.

@Iceber we don't need to explicitly manage the lifetime of entries in the lattice data bucket, including claims, at least for now.
Outdated claims will be replaced when an updated actor/provider is started, so we don't need to worry about data integrity. As for storage usage, claims entries are an insignificant number of bytes, and the number of claims scales with the number of unique actors/providers started in the lattice, which is likely to be low.
Eventually, the lattice data bucket would grow to a point where cleanup is justified. But I'm not aware of a lattice which has ever gotten to this point. It's also possible for operators to pre-provision the bucket/underlying stream before the host starts with a max size and eviction policy. The default policy for NATS streams is to evict oldest entries first.
So for now I don't think the wasmCloud host ever needs to delete claims entries from the bucket :)

@brooksmtownsend @connorsmith256 Thanks a lot for your replies!
I have one last question, Sorry if I ask silly doubts at times
When a host is shut down, this may leave behind some claims that were only used on that host or an actor may be deleted and never created again. These can lead to a lot of meaningless claims when getting claims, isn't this something to consider?
I haven't used wasmcloud in production yet, so I'm not sure if this scenario makes sense!

I think that makes sense @Iceber and makes me think even more that it would be worth it to add a claims/linkdefs purge inside of wash drain. https://github.com/wasmCloud/wash/issues/719


Simple, Complete, Working Tutorial Request

Thank you for taking the time to create this crate and for your other work on async programming, Rust, and C++. Unfortunately, I could not get any of this to work. Because of the complexities involved, it would be very helpful to have a "Hello, World" style tutorial and project that just works - clone, build, and run. Perhaps, this problem (Rust, C++, and async) is too complex, and such a tutorial is not possible. Nevertheless, I can see a lot of great work has been done here, but I am going to have to abandon my efforts to get the most basic example working. I do understand all of this is an advanced and complex topic, but still even for the most advanced topics there must be some kind of simple example that shows all of the plumbing works and upon which more complex examples can be programmed.

Thank you for bringing this up. We definitely need to have some good examples.


Support for External-DNS

@mysticaltech
Do you happen to know if and how it could add support for external DNS from https://github.com/kubernetes-sigs/external-dns ?
This can help automating the DNS part for the custom domains set, and hence improve the SSL part from cert manager via DNS01 resolved (instead of HTTP01).
https://github.com/ixoncloud/cert-manager-webhook-cloudns

@mysticaltech
Sure that is understandable. I was just looking for a way to easy link the base domain and rancher domain directly to my DNS provider.
In case we want to spin up a new cluster, it's easier because you don't know in advance which IP Hetzner is giving you for the LB so you can't pre-configure your DNS to point A record to the IP.
Having this in place at the time of deploying, automatically, would make it a bit easier.
I already found some terraform module for my DNS provider, so I'm looking into this route.
Then I can add just another TF module, handle config in there and call it at some point during the process when the LB is generated so it links the A record with my DNS provider (ClouDNS)

@codeagencybe Awesome; if you can make this work in a configurable way, I would be happy to review a PR if that's a route you would like to take. Or share your extra module in the examples folder if you are willing to make it open source.

@codeagencybe Also moving this one to discussions, as that's where I prefer to have enhancement proposals that are not super urgent.


Null safety migration of flutter_tools

Finish migrating flutter_tools. Mostly just migrating tests.

FYI @christopherfujino

@liamappelbe this will be very difficult to review. Could you break this up into smaller PRs?

@christopherfujino ok: #110706 #110707 #110708 #110709 #110710 #110711 #110712 #110713


How to get host device uuid?

Hello,
I have a project with scanning bluetooth. I want to get host device uuid to store in database and when orther find this uuid, I will get infomation this. But I don't know where to get it. I tried to use device_info to get that uuid but I can't find it when scanning. Please help me!
Thank you.

I used flutter_nearby_connections to solve my problem, thank you!


[Docs] Add string encoding decision record

We ran this by a variety of people in the wider software development community, and support for this was unanimous.

LGTM, rebase and merge when ready.


Update manager.go

[ ] All tests passed. If this feature is not already covered by the tests, I added new tests.
[ ] All static analysis checks passed.
[ ] This pull request is on the dev branch.
[ ] I used gofmt for formatting the code before submitting the pull request.

What is Frogbot?

What is Frogbot?