defining how DID can be used as user's indetifier

There are use-cases that would like to use IETF SD-JWT VC draft over W3C VCDM draft, while using DID as user's/subject's identifier. Currently, SD-JWT VC mandates cnf claim to be present. It would be very helpful to define how a DID can be used with a cnf claim. (as keeping cnf claim as mandatory is probably better for the interoperability)

Yes, we had that discussion recently. It will be something as follows:
"cnf":{
  "did":{ "id": "did:example:1234" }
}

Where should cnf.did be defined?

My intuition is that sd-jwt-vc is not an appropriate place to define and register a new DID based JWT Confirmation Method. I'm not sure where it should be done but not here.
Meanwhile cnf.kid seems sufficient for the case.

cnf.kid instead of cnf.did? why would we need to defined cnf.did if we think cnf.kid is sufficient?

I guess that was kinda what I was implying/suggesting. That cnf.kid is sufficient so cnf.did doesn't need to be defined.
The interpretation of the kid value is application specific (per RFC7800) and can convey the same info as Oliver's example:
      "cnf":{
         "kid": "did:example:1234"
       }

I fully agree that it is not in scope of SD-JWT VC to define the did cnf method. However, I think this would be the cleaner approach. I would expect clients using this cnf method to register a did cnf method. kid does not really help with interoperability.

kid does not really help with interoperability.
Why? either relative of absolute DID URL, it is being used as a kid value already.

kid does not really help with interoperability.

Why? either relative of absolute DID URL, it is being used as a kid value already.

There is nothing wrong with this but I would assume that most implementations won't test if kid is a DID URL. To make it explicit people could just use a dedicated DID cnf method.

@Sakurann is there anything where you believe we should update the SD-JWT VC specification?

is there anything where you believe we should update the SD-JWT VC specification?

one sentence saying that "when key is passed by reference (assuming Briand would not want to explicitly mention DIDs in the spec), cnf.kid should be used" would be helpful, so that people reading the specification know that SD-JWT VC can be used with DIDs too.

I took a try at the following proposed new text to replace cnf here that attempts to be inclusive of opinions expressed in this issue and also addresses issue #196 :

cnf

OPTIONAL. Contains the confirmation method identifying the proof of possession key as defined in [RFC7800]. This claim MUST be present when cryptographic Key Binding is to be supported. It is RECOMMENDED that this contains a JWK as defined in Section 3.2 of [RFC7800]. When the key is to be conveyed by reference (e.g., via a key thumbprint or DID [W3C.DID]), other JWT confirmation methods MAY be used, such as a key identifier defined in Section 3.4 of [RFC7800].   For proof of cryptographic Key Binding, the Key Binding JWT in the presentation of the SD-JWT MUST be signed by the key identified in this claim.

+1 to the proposed text - thank you, Brian!

I'd be ok with this change although we need to adjust the language a bit.
Option 1:

We should restrict this (kid as cnf) to being a DID URL instead of allowing kid being a DID. This is because a DID URL refers to one specific key whereas a DID is associated with multiple keys. I don't want to encourage implementations where the verifier has to try to verify the signature with potentially multiple keys unsuccessfully until they found one that matches. The proposed language would result in that if we don't limit it to DID URLs.

Option 2:

We should adapt the language as follows: For proof of cryptographic Key Binding, the Key Binding JWT in the presentation of the SD-JWT MUST be signed by a key identified or referenced by this claim. A DID is not a key and needs resolution.

I would prefer Option 1 and recommend that if having a DID as a being included in the cnf value is required, defining a dedicated cnf method for that would be needed which is a much cleaner approach. Note that I think that using DID URL for the kid value in the signed KB-JWT/Issuer-signed JWT is totally fine. I don't think we need to put this recommendation into the spec.
There is a reason why there is a dedicated x5c cnf method instead of putting the base64url-DER-encoded certificate in the cnf claim.

I agree with Oliver.
Kid is described as application specific and having a dedicated cnf.did method gives it a more universal touch that may be beneficial for interoperability.

I think the most beneficial thing for interoperability would be always and only using cnf.jwk for key binding. But that's a digression...
This document is not going to define a dedicated cnf.did method.
The sentence, "When the key is to be conveyed by reference (e.g., via a key thumbprint or DID [W3C.DID]), other JWT confirmation methods MAY be used, such as a key identifier defined in Section 3.4 of [RFC7800]." in the proposed text above is a just MAY to say that a cnf.kid or to-be-defined cnf.did could be used to conveyed the key binding key by reference.   I'd honestly rather not have it that sentence at all (note that using cnf.kid or to-be-defined cnf.did isn't prohibited now it's just not mentioned) but it was my attempt to accommodate the ask by @Sakurann.  Saying DID URL rather than just DID in that sentence would be okay for me too. But I don't think much more in this area would be appropriate here.

It depends how we define "proof of possession key" in context of a DID document, where multiple keys can be used to proof the identity. In case of natural persons when they prefer to use dids, it's more likely they use did:key or did:jwk. But since SD-JWT-VCs can also be issued to a legal person that can be using did:web, did:ethr it is able to register multiple keys.
Key rotation in this scenario are a good security feature because they allow me to update my crypto material without issuing me new credentials that are directly bound to it. On the other hand I am unable to insert security mechanism like hashlinks since I want to point not directly to one specific public key, but to one having specific rights.
To implement this, we can use the Representation of a URL for a Proof-of-Possession Key:

     {
      "iss": "https://server.example.com",
      "sub": "17760704",
      "aud": "https://client.example.org",
      "exp":<PHONE_NUMBER>,
      "cnf":{
        "jku": "did:exmaple.com",
        "kid": "key123"
       }
     }

JKU has to be an URI, DID is one. We do not need to add the fragment since all elements inside a did document are addressed with it.

It depends how we define "proof of possession key" in context of a DID document, where multiple keys can be used to proof the identity. In case of natural persons when they prefer to use dids, it's more likely they use did:key or did:jwk. But since SD-JWT-VCs can also be issued to a legal person that can be using did:web, did:ethr it is able to register multiple keys.
Key rotation in this scenario are a good security feature because they allow me to update my crypto material without issuing me new credentials that are directly bound to it. On the other hand I am unable to insert security mechanism like hashlinks since I want to point not directly to one specific public key, but to one having specific rights.

Yes, this makes sense. However, cnf.did might be more appropriate to encode this information.

It depends how we define "proof of possession key" in context of a DID document, where multiple keys can be used to proof the identity. In case of natural persons when they prefer to use dids, it's more likely they use did:key or did:jwk. But since SD-JWT-VCs can also be issued to a legal person that can be using did:web, did:ethr it is able to register multiple keys.
Key rotation in this scenario are a good security feature because they allow me to update my crypto material without issuing me new credentials that are directly bound to it. On the other hand I am unable to insert security mechanism like hashlinks since I want to point not directly to one specific public key, but to one having specific rights.

Yes, this makes sense. However, cnf.did might be more appropriate to encode this information.

Yeah, since we can not reuse this approach from the spec since it has a defined response.
"cnf":{
  "jku": "did:exmaple.com",
  "kid": "key123"
}

Wouldn't it be the best way to extend the RFC for CNF to include the did resolution as an option? Of course this is more work, but then we can reference to a standard

It depends how we define "proof of possession key" in context of a DID document, where multiple keys can be used to proof the identity. In case of natural persons when they prefer to use dids, it's more likely they use did:key or did:jwk. But since SD-JWT-VCs can also be issued to a legal person that can be using did:web, did:ethr it is able to register multiple keys.
Key rotation in this scenario are a good security feature because they allow me to update my crypto material without issuing me new credentials that are directly bound to it. On the other hand I am unable to insert security mechanism like hashlinks since I want to point not directly to one specific public key, but to one having specific rights.

Yes, this makes sense. However, cnf.did might be more appropriate to encode this information.

Yeah, since we can not reuse this approach from the spec since it has a defined response.
"cnf":{
  "jku": "did:exmaple.com",
  "kid": "key123"
}

Wouldn't it be the best way to extend the RFC for CNF to include the did resolution as an option? Of course this is more work, but then we can reference to a standard

jku can not be used in my opinion.
RFC7800 says:

This is done using the "jku" member.  Its  value is a URI [RFC3986] that refers to a resource for a set of JSON-encoded public keys represented as a JWK Set [JWK], one of which is the proof-of-possession key.

I do not think that this matches to (most) DID documents.

kid does not really help with interoperability.

Why? either relative of absolute DID URL, it is being used as a kid value already.

We should have further restrictions on the DID URL. a kid containing a DID URL that is a DID would resolve to multiple keys potentially, which would cause ambiguity.
I made a mistake previously when I said using a DID URL would solve the problem since a DID is also a DID URL:

did-url = did path-abempty [ "?" query ] [ "#" fragment ]

whereas path-abempty can be literally completely empty which allows a DID to be a DID URL which makes sense because it is the location of the DID Document.
We would need to say that kid must be a DID URL that when dereferenced results in a single key (ideally JWK).

I think the text Brian suggested originally is sufficient: https://github.com/oauth-wg/oauth-sd-jwt-vc/issues/205#issuecomment-1947438330
(at least initially) please keep the option to use cnf.kid, as limiting the use of DIDs only with cnf.did could be a significant blocker for some implementations to implement sd-jwt vc. especially if sd-jwt vc will not define cnf.did (and I won't even attempt to try convince Brian to do so).
I also think it is probably better to say DID URL as opposed to just DID.

I think the text Brian suggested originally is sufficient: #205 (comment)
(at least initially) please keep the option to use cnf.kid, as limiting the use of DIDs only with cnf.did could be a significant blocker for some implementations to implement sd-jwt vc. especially if sd-jwt vc will not define cnf.did (and I won't even attempt to try convince Brian to do so).
I also think it is probably better to say DID URL as opposed to just DID.

Why is it a blocker if they use cnf.did instead of cnf.kid?

After some discussions, we believe the best approach is to define a dedicated cnf method for DIDs through a very small spec.

As having implemented DID holder binding for SD-JWT VCs while this discussion has been ongoing, we've decided to add the didUrl (pointing to the specific key that has been verified before issuance) in the kid value of the cnf claim.
So it will look something like:
{
   "cnf": {
       "kid": "did:example:123#key-id"
   }
}

Not sure if relevant for this discussion, but to show some implementers feedback on something that we have working today.
Happy to change our implementation on what comes out of this discussion.

As having implemented DID holder binding for SD-JWT VCs while this discussion has been ongoing, we've decided to add the didUrl (pointing to the specific key that has been verified before issuance) in the kid value of the cnf claim.
So it will look something like:
{
   "cnf": {
       "kid": "did:example:123#key-id"
   }
}

Not sure if relevant for this discussion, but to show some implementers feedback on something that we have working today.
Happy to change our implementation on what comes out of this discussion.

While I cannot prevent anybody from using this, I would find it much cleaner to use a dedicated DID claim for this for interoperability reasons. It should be fairly easy to write a DID cnf IETF draft:
{
   "cnf": {
       "did": { "did_url": "did:example:123#key-id" }
   }
}

As i mentioned in my post, we're happy to change our implementation on what comes out of this discussion.
But until then re-using existing fields is a lot easier to integrate. kid been used for did key identifiers for multiple years already

We discussed this on our editors' call and agreed that this method should be defined in a separate spec.

I don't really have a strong opinion on whether "kid" or "jku" a new DID-based "cnf" method should be used.
In any case however, it would still make sense to have language such as what has been proposed by @bc-pi in https://github.com/oauth-wg/oauth-sd-jwt-vc/issues/205#issuecomment-1947438330, considering existing implementations and use cases. Also, an example using a DID as a user's identifier would be useful.

As previously discussed, a DID based confirmation method should be defined in a separate spec. I'd encourage interested parties to pursue that.

@peacekeeper @bc-pi would it help to add to the spec that sd-jwt-vc will support all listed JWT Confirmation Methods.
So the way to go would be to write the spec for DID for confirmation method, add it to the list (procedure listed there) and then it can be used here.
Since key binding has no reference to a specific confirmation method, it should have no impact.

I originally opened this issue, and I agree with closing it. I think a lot has evolved since I opened this issue and I am not supportive of sd-jwt vc spec mentioning DIDs. If people still want DIDs, cnf.did should be defined (i have been saying it for few years), which would allow DIDs to be used because sd-jwt vc defines the usage of a cnf claim.


Dockle exit code

Hello, I have a problem. I need to have exit code not equal to zero if dockle has WARN or FATAL output. I read about option -c  and I used it. But, if I use if else operator, if's always true but should have false. Could u explain how is it possible ?

I tried different status codes but they have doing nothing.

I find a solution for bash.
First step I execute dockle ./dockle -f json --exit-code 1 and then I use &? bash operator.   if [ \$? -eq 1  ]; then exit 1; fi
It works for me

if [[ $(command) ]] statement just checks no character on stdout.
Dockle output result to stdout without an output argument.


[BUG]:  inst_dealloc() Function Execution Is Slow

Problem description
Hello, I have a feedback about a performance issue.
The function static void inst_dealloc(PyObject *self) in the nb_type.cpp file is experiencing performance problems.
In some application scenarios, the inst_dealloc() function accounts for over 70% of the performance flame graph.
Within the inst_dealloc() function, the operations internals.keep_alive.erase(it) and inst_c2p.erase(it) are taking a considerable amount of time.
Both keep_alive and inst_c2p are using robin_hash. The erase function of robin_hash has a complexity of O(n) in the worst case, which is related to the load factor of the hash table (load factor = number of elements / capacity). The lower the load factor and the larger the capacity, the slower the erase operation becomes.
The reason is that after deleting an element, the erase() function returns to the next element, which is searched from the current position until a non-empty position is found or the end of the table is reached.
Reproducible example code
No response

It is expected that removing an entry from a hash table takes a small amount of time, potentially more so in a hash table with robin hood hashing. The point you make about the load factor does not look correct to me since the hash table will automatically expand once the load factor becomes too high.
What I cannot tell from this description is whether you simply expected this function to be faster by a constant amount, or if you were able to create some kind of worst-case behavior that triggers a particularly slow performance case. Nanobind uses a pointer hash "finisher" from the MurmurHash project that should normally exclude this possibility. If you have found a legitimate issue, then what this report needs is a minimal reproducer. There is no way that I can help without one.
I will close this issue for now but will reopen it if you are able to produce such a reproducer.

Reproducible example code
c++file:
#include <nanobind/nanobind.h>
#include <nanobind/stl/shared_ptr.h>

#include <memory>
#include <chrono>
#include <time.h>

namespace nb = nanobind;
using namespace nb::literals;

struct test_struct {
    int a = 0;
};
typedef std::shared_ptr<test_struct> test_struct_ptr;

nb::handle fun_expend_hash_table, fun_clear_hash_table, fun_test1, fun_test2;

void set_test_fun(nb::handle h1, nb::handle h2,nb::handle h3,nb::handle h4) noexcept {
    fun_expend_hash_table = h1;
    fun_clear_hash_table = h2;
    fun_test1 = h3;
    fun_test2 = h4;
    return ;
}
void test_hash_op()  {
    const int LOOP_CNT_MAX = 10000;
    for(int i=0; i < LOOP_CNT_MAX; ++i){
        test_struct_ptr p(new test_struct() );
        fun_test1( p );
    }
}
void test_expend_hash_table()  {
    const int LOOP_CNT_MAX = 0x8000 / 2 + 1;  // expend to 32k
    for(int i=0; i < LOOP_CNT_MAX; ++i){
        test_struct_ptr p(new test_struct() );
        fun_expend_hash_table( p );
    }
}
void test_run2()  {
    printf("finish\n");
}
void test_run(int run_flame_test_s)  {
    using Duration = std::chrono::duration<double, std::nano>;
    using time_point_double = std::chrono::time_point<std::chrono::high_resolution_clock, Duration>;

    //normal op
    time_point_double time1 = std::chrono::high_resolution_clock::now();
    test_hash_op();
    time_point_double time2 = std::chrono::high_resolution_clock::now();

    //expend_hash_table to big
    test_expend_hash_table() ;
    fun_clear_hash_table();

    //here will be slowed
    time_point_double time3 = std::chrono::high_resolution_clock::now();
    test_hash_op();
    time_point_double time4 = std::chrono::high_resolution_clock::now();

    double time_cost1 = (time2 - time1).count();
    double time_cost2 = (time4 - time3).count();
    printf("time_cost1=%f time_cost2=%f  mult=%f\n", time_cost1,time_cost2, time_cost2/time_cost1);

    //loop x seconds for flame graph,  Use a profiling tool to profile and generate a flame graph.
    if(run_flame_test_s > 0){
        printf("begin for run_flame_test\n");
        time_t loop_time_len_s = (time_t)run_flame_test_s;
        time_t time_begin = time(nullptr);
        do{
            for(int i=0; i< 1000; ++i){
                test_struct_ptr p(new test_struct() );
                fun_test1(p);
                fun_test2(1);
            }
        }while( (time(nullptr) - time_begin) < loop_time_len_s );
    }

    printf("finish\n");
    return ;
}

NB_MODULE(test_hash, m) {
    nb::class_<test_struct>(m, "test_struct")
        .def_ro("a", &test_struct::a);

    m.def("set_test_fun", set_test_fun, "set_test_fun");
    m.def("test_run", test_run, "test_run");
}

python file: test_instdealloc.py
import test_hash as t
import sys

hold_obj = []

def expend_hash(p): # used in test_expend_hash_table
    hold_obj.append(p)

def clear_hash():
    hold_obj.clear()

def test_fun1(p):
    pass

def test_fun2(n:int):
    pass

run_flame_test_s = 0
if len(sys.argv) > 1:
    run_flame_test_s = int(sys.argv[1])

t.set_test_fun(expend_hash, clear_hash, test_fun1, test_fun2)
t.test_run(run_flame_test_s)

run result:
running the command "python3 test_instdealloc.py 0" multiple times.  the output as follows:
time_cost1=4197632.000000 time_cost2=1061792256.000000  mult=252.950296
time_cost1=3419904.000000 time_cost2=1072608768.000000  mult=313.637099
time_cost1=3160064.000000 time_cost2=1766464000.000000  mult=558.996273
time_cost1=4704512.000000 time_cost2=1334190080.000000  mult=283.597976
time_cost1=4020480.000000 time_cost2=1275046400.000000  mult=317.137854
time_cost1=3365120.000000 time_cost2=1523500288.000000  mult=452.732826
time_cost1=3752192.000000 time_cost2=1046175744.000000  mult=278.817220
running the command "python3 test_instdealloc.py 120", Use a profiling tool to profile and generate a flame graph.
the graph as flow:

@wjakob, I've provided a reproducible example code for the issue. Could you please review and consider reopening it.
Reproducible example code
c++file:
#include <nanobind/nanobind.h>
#include <nanobind/stl/shared_ptr.h>

#include <memory>
#include <chrono>
#include <time.h>

namespace nb = nanobind;
using namespace nb::literals;

struct test_struct {
    int a = 0;
};
typedef std::shared_ptr<test_struct> test_struct_ptr;

nb::handle fun_expend_hash_table, fun_clear_hash_table, fun_test1, fun_test2;

void set_test_fun(nb::handle h1, nb::handle h2,nb::handle h3,nb::handle h4) noexcept {
    fun_expend_hash_table = h1;
    fun_clear_hash_table = h2;
    fun_test1 = h3;
    fun_test2 = h4;
    return ;
}
void test_hash_op()  {
    const int LOOP_CNT_MAX = 10000;
    for(int i=0; i < LOOP_CNT_MAX; ++i){
        test_struct_ptr p(new test_struct() );
        fun_test1( p );
    }
}
void test_expend_hash_table()  {
    const int LOOP_CNT_MAX = 0x8000 / 2 + 1;  // expend to 32k
    for(int i=0; i < LOOP_CNT_MAX; ++i){
        test_struct_ptr p(new test_struct() );
        fun_expend_hash_table( p );
    }
}
void test_run(int run_flame_test_s)  {
    using Duration = std::chrono::duration<double, std::nano>;
    using time_point_double = std::chrono::time_point<std::chrono::high_resolution_clock, Duration>;

    //normal op
    time_point_double time1 = std::chrono::high_resolution_clock::now();
    test_hash_op();
    time_point_double time2 = std::chrono::high_resolution_clock::now();

    //expend_hash_table to big
    test_expend_hash_table() ;
    fun_clear_hash_table();

    //here will be slowed
    time_point_double time3 = std::chrono::high_resolution_clock::now();
    test_hash_op();
    time_point_double time4 = std::chrono::high_resolution_clock::now();

    double time_cost1 = (time2 - time1).count();
    double time_cost2 = (time4 - time3).count();
    printf("time_cost1=%f time_cost2=%f  mult=%f\n", time_cost1,time_cost2, time_cost2/time_cost1);

    //loop x seconds for flame graph,  Use a profiling tool to profile and generate a flame graph.
    if(run_flame_test_s > 0){
        printf("begin for run_flame_test\n");
        time_t loop_time_len_s = (time_t)run_flame_test_s;
        time_t time_begin = time(nullptr);
        do{
            for(int i=0; i< 1000; ++i){
                test_struct_ptr p(new test_struct() );
                fun_test1(p);
                fun_test2(1);
            }
        }while( (time(nullptr) - time_begin) < loop_time_len_s );
    }

    printf("finish\n");
    return ;
}

NB_MODULE(test_hash, m) {
    nb::class_<test_struct>(m, "test_struct")
        .def_ro("a", &test_struct::a);

    m.def("set_test_fun", set_test_fun, "set_test_fun");
    m.def("test_run", test_run, "test_run");
}

python file: test_instdealloc.py
import test_hash as t
import sys

hold_obj = []

def expend_hash(p): # used in test_expend_hash_table
    hold_obj.append(p)

def clear_hash():
    hold_obj.clear()

def test_fun1(p):
    pass

def test_fun2(n:int):
    pass

run_flame_test_s = 0
if len(sys.argv) > 1:
    run_flame_test_s = int(sys.argv[1])

t.set_test_fun(expend_hash, clear_hash, test_fun1, test_fun2)
t.test_run(run_flame_test_s)

run result:
running the command "python3 test_instdealloc.py 0" multiple times.  the output as follows:
time_cost1=4197632.000000 time_cost2=1061792256.000000  mult=252.950296
time_cost1=3419904.000000 time_cost2=1072608768.000000  mult=313.637099
time_cost1=3160064.000000 time_cost2=1766464000.000000  mult=558.996273
time_cost1=4704512.000000 time_cost2=1334190080.000000  mult=283.597976
time_cost1=4020480.000000 time_cost2=1275046400.000000  mult=317.137854
time_cost1=3365120.000000 time_cost2=1523500288.000000  mult=452.732826
time_cost1=3752192.000000 time_cost2=1046175744.000000  mult=278.817220
running the command "python3 test_instdealloc.py 120",
after output "begin for run_flame_test", then use a profiling tool to profile and generate a flame graph.
the graph as flow:

Thank you for finding this issue -- it should now be fixed.


App Suggestion: MoeList

App Name
MoeList
Category
Entretainment
Description
Unofficial MAL (MyAnimeList) client. With this app you can easily track, rate, organize and discover new Anime & Manga.
Links
Source: https://github.com/axiel7/MoeList
Play Store: https://play.google.com/store/apps/details?id=com.axiel7.moelist

Hi, thanks for your suggestion, how does this compare to AnYme?

@albertomosconi I think it does not have much comparison, because anYme is an mal account manager and an anime player, while MoeList is mostly an MAL account manager. However, on the part of the MAL account manager, anYme can manage the anime part, while MoeList can manage the anime part and the manga part of the MAL account, and it does so in a simple and efficient way, which is perfect for those who seek only to manage their MAL account, furthermore MoeList is at the beginning of development and this means that it can still improve a lot.

I see, I think I will add them both, thank you for your feedback 😁


Duplicate and not working controls for RFR3 devices

Hello.
Since the last update, 3.5.1, my RFR3 devices are not working anymore. Every device has a duplicate control that is not working (like in the attached image).

I think the problem is related to the issue #1136 that was resolved with this update. For my RFR3, the API uses http://IP:8081/zeroconf/switch (not switches).
Another thing that I noticed is that all of my RFR3 devices are detected as MINI DIY (this is before the update) and that may count, except for one of them which is BASICRF_R3 (can't tell why) (see second image). This one is working and it was not affected by the update.

If logs are necessary, please guide me to find them. Although I enabled Debug logging, I don't know where to find the integration logs.
Thank you.

Looks like i have the same issue with basic r3 wifi switch in diy mode.

my debug log
{
  "home_assistant": {
    "installation_type": "Home Assistant Supervised",
    "version": "2022.12.4",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.7",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Moscow",
    "os_name": "Linux",
    "os_version": "5.10.0-10-amd64",
    "supervisor": "2023.03.3",
    "host_os": "Debian GNU/Linux 11 (bullseye)",
    "docker_version": "20.10.21",
    "chassis": "desktop",
    "run_as_root": true
  },
  "custom_components": {
    "sonoff": {
      "version": "3.5.0",
      "requirements": [
        "pycryptodome>=3.6.6"
      ]
    },
  },
  "integration_manifest": {
    "domain": "sonoff",
    "name": "Sonoff",
    "config_flow": true,
    "documentation": "https://github.com/AlexxIT/SonoffLAN",
    "issue_tracker": "https://github.com/AlexxIT/SonoffLAN/issues",
    "codeowners": [
      "@AlexxIT"
    ],
    "dependencies": [
      "http",
      "zeroconf"
    ],
    "requirements": [
      "pycryptodome>=3.6.6"
    ],
    "version": "3.5.0",
    "iot_class": "local_push",
    "is_built_in": false
  },
  "data": {
    "version": "6935784",
    "cloud_auth": false,
    "config": {
      "devices": {
        "100136e348": {
          "name": "Sonoff BR3_348"
        },
        "100136dc18": {
          "name": "Sonoff BR3_c18"
        }
      }
    },
    "options": {
      "mode": "local",
      "debug": false
    },
    "errors": [],
    "device": {
      "uiid": 1,
      "params": {
        "switch": "on",
        "startup": "off",
        "pulse": "off",
        "sledOnline": "on",
        "fwVersion": "3.6.0",
        "pulseWidth": 500,
        "rssi": -58
      },
      "model": "MINI DIY",
      "online": null,
      "local": true,
      "localtype": "diy_plug",
      "host": "<IP_ADDRESS>:8081",
      "deviceid": "100136dc18"
    }
  }
}

Fixed

Update to master. Everything works. Sonoff Basic R3 wifi relay.
Thank you

Can someone guide me on how to test the fix, please? Updating the integration in HACS to 3.5.1 leads to the same issue. Thanks.

Update to master. Everything works. Sonoff Basic R3 wifi relay. Thank you

I confirm that the bug has been fixed in the master branch

Can someone guide me on how to test the fix, please? Updating the integration in HACS to 3.5.1 leads to the same issue. Thanks.

You need to click on sonofflan in hacs, then click three dots in right top corner and  reinstall beta master version.

https://github.com/AlexxIT/SonoffLAN/releases/tag/v3.5.2

would be faced the same issue  on sonoff s31
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2023.7.3",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.11.4",
"docker": true,
"arch": "aarch64",
"timezone": "Asia/Taipei",
"os_name": "Linux",
"os_version": "6.1.34",
"supervisor": "2023.07.1",
"host_os": "Home Assistant OS 10.3",
"docker_version": "23.0.6",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {
"notify_line": {
"version": "2022.7.1",
"requirements": []
},
"zhimi": {
"version": "1.0.1",
"requirements": [
"miservice>=2.0.1"
]
},
"line_notify": {
"version": "1.0.1",
"requirements": []
},
"dohome": {
"version": "0.2.0",
"requirements": []
},
"sonoff": {
"version": "3.5.2",
"requirements": [
"pycryptodome>=3.6.6"
]
},
"yeelight_pro": {
"version": "0.0.1",
"requirements": []
},
"webrtc": {
"version": "v3.2.1",
"requirements": []
},
"xiaomi_miio_cooker": {
"version": "2<IP_ADDRESS>",
"requirements": [
"construct==2.10.56",
"python-miio>=0.5.12"
]
},
"hello_miai": {
"version": "1.0.0",
"requirements": []
},
"yeelight_bt": {
"version": "1.3.0",
"requirements": [
"bleak>=0.18.0",
"bleak-retry-connector>=2.1.3"
]
},
"xiaomi_miot": {
"version": "0.7.10",
"requirements": [
"construct==2.10.56",
"python-miio>=0.5.6",
"micloud>=0.3"
]
},
"frigate": {
"version": "4.0.0",
"requirements": [
"pytz==2022.7"
]
},
"xiaomi_gateway3": {
"version": "3.3.2",
"requirements": [
"zigpy>=0.44.1"
]
},
"nodered": {
"version": "2.1.0",
"requirements": []
},
"hacs": {
"version": "1.32.1",
"requirements": [
"aiogithubapi>=22.10.1"
]
},
"tapo_control": {
"version": "5.1.0",
"requirements": [
"pytapo==3.1.12"
]
},
"aqara_gateway": {
"version": "0.0.14",
"requirements": [
"paho-mqtt>=1.5.0"
]
},
"xiaomi_cloud_map_extractor": {
"version": "v2.2.0",
"requirements": [
"pillow",
"pybase64",
"python-miio",
"requests",
"pycryptodome"
]
},
"xiaomi_miio_fan": {
"version": "2<IP_ADDRESS>",
"requirements": [
"construct==2.10.56",
"python-miio>=0.5.12"
]
},
"var": {
"version": "0.15.0",
"requirements": []
},
"xiaomi_miio_raw": {
"version": "2<IP_ADDRESS>",
"requirements": [
"construct==2.10.56",
"python-miio>=0.5.12"
]
}
},
"integration_manifest": {
"domain": "sonoff",
"name": "Sonoff",
"config_flow": true,
"documentation": "https://github.com/AlexxIT/SonoffLAN",
"issue_tracker": "/api/sonoff/705781f7-d8b2-46a7-82f9-08a7f4e46ffe",
"codeowners": [
"@AlexxIT"
],
"dependencies": [
"http",
"zeroconf"
],
"requirements": [
"pycryptodome>=3.6.6"
],
"version": "3.5.2",
"iot_class": "local_push",
"is_built_in": false
},
"data": {
"version": "2ad1cd7",
"cloud_auth": false,
"config": {
"username": "",
"password": "",
"force_update": [
"temperature",
"humidity",
"power",
"switch",
"remote"
],
"scan_interval": "00:00:10",
"debug": false
},
"options": {
"mode": "auto",
"debug": true
},
"errors": [],
"device": {
"uiid": 32,
"params": {
"bindInfos": "",
"version": 8,
"only_device": {
"ota": "success"
},
"sledOnline": "on",
"ssid": "",
"bssid": "",
"fwVersion": "3.6.0",
"staMac": "",
"rssi": -28,
"init": 1,
"alarmType": "pcv",
"alarmVValue": [
-1,
-1
],
"alarmCValue": [
-1,
-1
],
"alarmPValue": [
-1,
-1
],
"switch": "on",
"startup": "on",
"pulse": "off",
"pulseWidth": 500,
"power": "10.37",
"voltage": "111.16",
"current": "0.17",
"oneKwh": "stop",
"uiActive": 60,
"timeZone": 8,
"hundredDaysKwh": "get",
"demNextFetchTime":<PHONE_NUMBER>000,
"rstReason": 0,
"exccause": 0,
"epc1": 0,
"epc2": 0,
"epc3": 0,
"excvaddr": 0,
"depc": 0
},
"model": "S31TPB(US)",
"online": true,
"local": true,
"localtype": "enhanced_plug",
"host": "<IP_ADDRESS>:8081",
"deviceid": "10016f32ee"
}
}
}


feat(input): drag and drop

This needs some more planning
maybe use this? http://www.quirksmode.org/js/dragdrop.html

from @baranan
One example for a task with drag&drop is an IAT in which participants drag the target stimulus to its category. However, perhaps that task is usually implemented with simple clicking on the categories, rather than dragging.
Another example is a task in which in each trial the user moves an image (e.g., snakes and puppies) to a manikin that represents him/her.
It seems fine to me to use an enableDrag attribute in media or stimuli. And a mouse event for drop with two handles for the stimuli sounds useful.
Most uses I have seen so far for drag and drop in studies is for ranking items (order by importance). But that might be better implemented as a question type in piQuest.


adde support for v2 api Settings

added v2 settings support and tests

Thank you for your contributions!
Overall it looks like a good start on the settings API. There's a few small issues around formatting and consistency which we can clean up. I'll make a few notes, if you'd like to work on those yourself otherwise I can merge and make the changes myself.

I've been adding to this commit  this week. Looking through more and testing I've made a few changes to have it align better with the rest of this project and am also deciding on some details about the 'settings object' create behavior to make it line up properly with the API while also being usable.


Conflict with userforms 4.0

Hi,
I try Editableuserforms with Userforms 4.0 but it's not working
is there any update for this module.
Thanks,

also have conflict with userforms 3.1 & 3.0


Hell lighting needs to be re-started periodically

Might be a memory leak, might be specific too sorting algorithm patterns.

If this is still an issue after the new board abstraction (and possible new board) we can revisit it.


Add a new test case for the recursive case.

I'm just wetting my feet here to test the waters.
I'll get started with more heavy duty PRs in the future.

Thanks!


Support PLONK

PLONK is a new zk-snarks algorithm, which is based on Sonic. It can realize SRS (no longer need to generate CRS for each circuit separately), and it is very practical compared to Sonic. Can we modify gnark to support PLONK? I want to make some contributions to the project, so I have the following issues:

PLONK's circuit construction method is not based on R1CS. Will we make a big modification on the existing code ?
If the modifications are not significant, how will they be modified? Which parts of the code should be modified? Now gnark uses ConstraintSystem to define the Groth16 circuit, whether it is necessary to construct a new class or based on the existing ConstraintSystem.

Hello,
@ThomasPiellard is currently working on making the frontend compatible with both Groth16 and PLONK arithmetizations.
Once that is done (PR likely coming in 2-3 weeks), we will see how to proceed for next steps, happy to ping you here if you want to participate.

Hello,
@ThomasPiellard is currently working on making the frontend compatible with both Groth16 and PLONK arithmetizations.
Once that is done (PR likely coming in 2-3 weeks), we will see how to proceed for next steps, happy to ping you here if you want to participate.

@SherLzp if you are interested to contribute to PLONK in particular, one thing you could implement independently of the frontend/ is the Kate commitments part.
We have that on our backlog in about a month from now, but if you're willing to contribute a first version to the repo that could help gnark support PLONK sooner.

@SherLzp if you are interested to contribute to PLONK in particular, one thing you could implement independently of the frontend/ is the Kate commitments part.
We have that on our backlog in about a month from now, but if you're willing to contribute a first version to the repo that could help gnark support PLONK sooner.

@gbotrel  Thanks for reply! I will try my best.

@gbotrel  Thanks for reply! I will try my best.

@SherLzp hi :) did you have time to work on that the past weeks?

@gbotrel  Sorry for that,  I'm recently working on a paper. I expected it to start in early March.


"dart help test" should be equivalent to "dart test --help"

Running dart help test just gives the following today:
Run tests for a project.

Usage: dart test [arguments]

Run "dart help" to see global options.

Which is not very useful at all, compared with dart test --help:
Runs tests in this package.

Usage: pub run test [files or directories...]

-h, --help                            Show this usage information.
    --version                         Show the package:test version.

Selecting Tests:
-n, --name                            A substring of the name of the test to run.
                                      Regular expression syntax is supported.
                                      If passed multiple times, tests must match all substrings.
-N, --plain-name                      A plain-text substring of the name of the test to run.
                                      If passed multiple times, tests must match all substrings.
-t, --tags                            Run only tests with all of the specified tags.
                                      Supports boolean selector syntax.
-x, --exclude-tags                    Don't run tests with any of the specified tags.
                                      Supports boolean selector syntax.
    --[no-]run-skipped                Run skipped tests instead of skipping them.

Running Tests:
-p, --platform                        The platform(s) on which to run the tests.
                                      [vm (default), chrome, firefox, node]
-P, --preset                          The configuration preset(s) to use.
-j, --concurrency=<threads>           The number of concurrent test suites run.
                                      (defaults to "6")
    --total-shards                    The total number of invocations of the test runner being run.
    --shard-index                     The index of this test runner invocation (of --total-shards).
    --pub-serve=<port>                The port of a pub serve instance serving "test/".
    --timeout                         The default test timeout. For example: 15s, 2x, none
                                      (defaults to "30s")
    --pause-after-load                Pause for debugging before any tests execute.
                                      Implies --concurrency=1, --debug, and --timeout=none.
                                      Currently only supported for browser tests.
    --debug                           Run the VM and Chrome tests in debug mode.
    --coverage=<directory>            Gather coverage and output it to the specified directory.
                                      Implies --debug.
    --[no-]chain-stack-traces         Use chained stack traces to provide greater exception details
                                      especially for asynchronous code. It may be useful to disable
                                      to provide improved test performance but at the cost of
                                      debuggability.
    --no-retry                        Don't rerun tests that have retry set.
    --use-data-isolate-strategy       Use `data:` uri isolates when spawning VM tests instead of the
                                      default strategy. This may be faster when you only ever run a
                                      single test suite at a time.
    --test-randomize-ordering-seed    Use the specified seed to randomize the execution order of test cases.
                                      Must be a 32bit unsigned integer or "random".
                                      If "random", pick a random seed to use.
                                      If not passed, do not randomize test case execution order.

Output:
-r, --reporter                        Set how to print test results.

          [compact] (default)         A single line, updated continuously.
          [expanded]                  A separate line for each update.
          [json]                      A machine-readable format (see https://dart.dev/go/test-docs/json_reporter.md).

    --file-reporter                   Enable an additional reporter writing test results to a file.
                                      Should be in the form <reporter>:<filepath>, Example: "json:reports/tests.json"
    --verbose-trace                   Emit stack traces with core library frames.
    --js-trace                        Emit raw JavaScript stack traces for browser tests.
    --[no-]color                      Use terminal colors.
                                      (auto-detected by default)

I would expect the help command to be identical to dart test --help.

I'm working on the dart test page right now and noticed a few more things:

The output says pub run test (not dart test)
There's no reasonable help unless you're in a directory with a pubspec.yaml file:

dart test --help doesn't give you much help.
dart test --version doesn't give you the version.

dart test --version gives the package:test version, not the SDK version (as dart help says it should). Perhaps it could give both? Or we could add a new flag for the package:test version?


Support c5n instances

@theatrus Thanks for the quick merge!
Do you plan to do a release soon? (we have been running our custom build for a while so we have no problem doing it if necessary, but the main reason for it was nodeport support which has now been merged)


removed 2x nginx added 1x traefik

Gauging interest - it's possible to use 1 container (could have used nginx as well but traefik may be useful for ssl down the line). Let me know what you think :)
http://localhost:8080 for traefik dashboard
http://bobarr.localhost for bobarr webui
http://transmission.localhost for transmission webui
http://jackett.localhost for jackett webui

This also helps users with ARM devices (rPi 4 arm32v7 in my case, idk about others) by removing the incompatible nginx image.
One thing to modify in my case was to change image from bitnami/redis to arm32v7/redis here:
https://github.com/iam4x/bobarr/pull/80/files#diff-060ec519a4aedabbb1216288e1e2c7c9R54
related to #41

Hi, thank you very much for the contribution 🙌
I did not know traefik, it looks it suits much better than nginx for bobarr use case.
I'm going to checkout and try your branch later today.

@ohkeenan why did you change the healthcheck to a custom node script?

@ohkeenan why did you change the healthcheck to a custom node script?

When I pulled the images, the alpine-12 docker images didn't come with curl preinstalled so they were failing/unhealthy. Changed to node healthcheck instead of adding curl because it already had node installed and I believe it's a more secure way of health checks. See here: since we're not adding an additional package the total container size will be smaller and since we're checking the HTTP response we can tell if the service is actually healthy. Sometimes curl will report healthy because it can curl a page but in your previous curl checks, it's receiving a 302 redirect but still reporting healthy so the api could actually be down.

Okey,  I get your point and this article made me learn something new thank you 👍
But for simplicy I'll close this PR and keep the discussion and track traefik and wireguard into #83 where we are already discussing :)


Storage reporting fails when running VCF Cloud Foundation Health reporting

Code of Conduct

[X] I have read and agree to the project's Code of Conduct.
[X] Vote on this issue by adding a 👍 reaction to the original issue initial description to help the maintainers prioritize.
[X] Do not leave "+1" or other comments that do not add relevant information or questions.
[X] If you are interested in working on this issue or have submitted a pull request, please leave a comment.

VMware Cloud Foundation
4.5.1
Environment Details
VCF 4.5.1
vCenter 7.0.3 Update l
Aria Operations 8.12.0
Multi-site, 2 x SDDC Manager, 2 x Workload Domains per sit - 4 x vCenter.
Description
When the send-data-to-vrops.py script is run no storagecapacityhealth-status.json is created.
No obvious errors in connectivity.
Only errors reported in the script are when the script reports it cannot find the file.
Logon using the local "vcf" account does report as successful.
Expected Behavior
storagecapacityhealth-status.json created and the VCF Storage Health Dashboards populated.
Actual Behavior
No file created, dashboards empty
Steps to Reproduce
Run the send-data-to-vrops.py script
Screenshots
No response
References
No response

x-ref: https://github.com/vmware/powershell-module-for-vmware-cloud-foundation-reporting/issues/153

@robbuxton
Could you get me the send-data-to-vrops.log file from the log folder created when the python script runs. It is located at  /opt/vmware/hrm/logs/send-data_ and email it to me at<EMAIL_ADDRESS>

Hi,
This contains two logs.
The -HLZ one is the second SDDC Manager added.
For that I copied the env.json, encrypt-passwords.py and send-data-to-vrops as -hlz files, created new encrypted files and run that as a separate cron job.
For HLZ the vcf login is failing, but the first SDDC added was doing that earlier as well. I think it got resolved after a vcf password change.
I think that might be a password complexity issue - I'm going to test that theory today by getting the HLZ vcf password reset with special characters that are no different than Auckland.
We have two sites:
HLZ - Hamilton - SDDC - csvaprmgt1206, vCenter csvaprmgt1208 and csvaprmgt1246
AKL - Auckland - SDDC - csvaprmgt1205, vCenter csvaprmgt1207 and csvaprmgt1245
Rob.
From: bhumitra nagar @.>
Sent: Thursday, July 6, 2023 3:22 AM
To: vmware-samples/validated-solutions-for-cloud-foundation @.>
Cc: Rob Buxton @.>; Mention @.>
Subject: Re: [vmware-samples/validated-solutions-for-cloud-foundation] Storage reporting fails when running VCF Cloud Foundation Health reporting (Issue #59)
You don't often get email from @.*** Learn why this is importanthttps://aka.ms/LearnAboutSenderIdentification
@robbuxtonhttps://github.com/robbuxton
Could you get me the send-data-to-vrops.log file from the log folder created when the python script runs. It is located at /opt/vmware/hrm/logs/send-data_ and email it to me at<EMAIL_ADDRESS>

Reply to this email directly, view it on GitHubhttps://github.com/vmware-samples/validated-solutions-for-cloud-foundation/issues/59#issuecomment-1621985800, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BA6DQOYCDG6A2FJ3VTDZNVTXOWBAPANCNFSM6AAAAAAZZBENTY.
You are receiving this because you were mentioned.Message ID: @.***>

I am working with @robbuxton to address these issues. So far these are outside HRM code and related to powerCLI. Will update here when I have more information.

If the password contains a $ it may be that it's not escaping correctly when passing the password to PowerShell.
For example:
$vmPass = "MyPa$$word" would fail.
$vmPass = 'MyPa$$word' should not fail.
May require a change in the Python module - will allow @bhumitra to review.

I was concerned with password complexity before so did change the HLZ based vcf password to restrict it to the same special characters as the working AKL one.
But, the HLZ one does have a "$$".
I'll look at generating a new password that has similar complexity to AKL and without the double $.
From: Ryan Johnson @.>
Sent: Tuesday, July 18, 2023 6:49 AM
To: vmware-samples/validated-solutions-for-cloud-foundation @.>
Cc: Rob Buxton @.>; Mention @.>
Subject: Re: [vmware-samples/validated-solutions-for-cloud-foundation] [HRM] Storage reporting fails when running send-data-to-vrops.py (Issue #59)
If the password contains a $ it may be that it's not escaping correctly when passing the password to PowerShell.
For example:
$vmPass = "MyPa$$word" would fail.
$vmPass = 'MyPa$$word' should not fail.
May require a change in the Python module - will allow @bhumitrahttps://github.com/bhumitra to review.

Reply to this email directly, view it on GitHubhttps://github.com/vmware-samples/validated-solutions-for-cloud-foundation/issues/59#issuecomment-1638687889, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BA6DQO5CXQBVKCWMM4TKCG3XQWCIBANCNFSM6AAAAAAZZBENTY.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Reset the password so that complexity matched what we have in AKL which works when the script is run.
But, the HLZ script still failing.
At ne point it failed and had part of the password in the log, so was obviously tripping up somewhere.
Still not really sure why AKL works and HLZ doesn't.
From: Ryan Johnson @.>
Sent: Tuesday, July 18, 2023 6:49 AM
To: vmware-samples/validated-solutions-for-cloud-foundation @.>
Cc: Rob Buxton @.>; Mention @.>
Subject: Re: [vmware-samples/validated-solutions-for-cloud-foundation] [HRM] Storage reporting fails when running send-data-to-vrops.py (Issue #59)
If the password contains a $ it may be that it's not escaping correctly when passing the password to PowerShell.
For example:
$vmPass = "MyPa$$word" would fail.
$vmPass = 'MyPa$$word' should not fail.
May require a change in the Python module - will allow @bhumitrahttps://github.com/bhumitra to review.

Reply to this email directly, view it on GitHubhttps://github.com/vmware-samples/validated-solutions-for-cloud-foundation/issues/59#issuecomment-1638687889, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BA6DQO5CXQBVKCWMM4TKCG3XQWCIBANCNFSM6AAAAAAZZBENTY.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>


Add getPublicDSN function

This would make it easier to create Raven dialog, by just adding something like
@unless(empty($sentryID))
<script src="https://cdn.ravenjs.com/3.3.0/raven.min.js"></script>
<script>
    Raven.showReportDialog({
        eventId: '{{ $sentryID }}',
        dsn: '{{ Sentry::getPublicDSN() }}'
    });
</script>
@endunless

This is already done in the examples, or did you mean the package should append this to error views automatically?

What I meant was to have a function that will convert the private DSN that is already available in config/.env to a public one, so you don't have to provide both (or write your own converting function), since hardcoding urls in views is considered a bad design.

Ah I understand, totally looked over that ;) I like the idea!

In the meantime you can add a public dsn to the config/sentry.php file.
<?php
return array(
-   'dsn' => '',
+   'dsn' => env('SENTRY_DSN', ''),
+   'public_dsn' => env('SENTRY_PUBLIC_DSN', ''),

    // capture release as git sha
    // 'release' => trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')),

    // Capture bindings on SQL queries
    'breadcrumbs.sql_bindings' => true,

    // Capture default user context
    'user_context' => true,
);

And use it like:
@unless(empty($sentryID))
<script src="https://cdn.ravenjs.com/3.3.0/raven.min.js"></script>
<script>
    Raven.showReportDialog({
        eventId: '{{ $sentryID }}',
-       dsn: '{{ Sentry::getPublicDSN() }}'
+       dsn: '{{ config('sentry.public_dsn') }}'
    });
</script>
@endunless

Although something like this is probably how you are doing it already.

Sorry for the lack of response, I have created an issue for this in getsentry/sentry-php#593 because I still think this is a great idea.
Will track the implementation there and close this issue since it's not Laravel specific.
Thanks for the great idea!


Rename Message struct to IbftMessage

Description
In order to update libp2p dependencies in Edge, we need to rename the Message struct in messages.proto (which carries the ibft messages like RoundChange, Prepare, etc.), because, libp2p and its pubsub implementation introduced a message.proto which has the struct with the same name in it, so we get a panic over a same name panic:
20
panic: proto: file "messages/proto/messages.proto" has a name conflict over Message
	previously from: "github.com/libp2p/go-libp2p/p2p/transport/webrtc/pb"
	currently from:  "github.com/0xPolygon/go-ibft/messages/proto"

This PR renames the Message struct to IbftMessage, so that we avoid this panic when updating the libp2p dependency.
Changes include

[ ] Bugfix (non-breaking change that solves an issue)
[ ] Hotfix (change that solves an urgent issue, and requires immediate attention)
[ ] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

[x] I have assigned this PR to myself
[x] I have added at least 1 reviewer
[ ] I have added the relevant labels
[x] I have added sufficient documentation in code

As a nitpick, I'd rather call it ConsensusMessage, but it is alright this way as well.
Btw, do we need to rename messages.proto file as well?
P.s. not sure why SonarCloud is complaining, I reviewed the PR from a phone...

No need to rename messages.proto file. And for the SonarCloud, not sure why it is failing. Even lint got activated for the non affected code.


Refactor Detail related code

Remove background field from DetailFragment and code surrounding it. Also other random refactors.
review commit-by-commit
cross-requested with https://github.com/dimagi/commcare-odk/pull/967

@phillipm Good to merge but not sure if you still want to make a change based on Clayton's comment?

@amstone326 @ctsims Added a small regression for skipping over "background" tags found in a detail's field. Should be good to go now


nixos/nebula: start after network is online

Motivation for this change
Nebula should start after the network is online so that it can lookup DNS records.
level=error msg="Static host address could not be parsed" error="lookup example.com: no such host"

Nebula should also be starting after the network is online anyway, as it's an overlay network - it depends on other networks.
Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

Does it crash or retry if dns is not available? Usually it's an anti-pattern to depend on the online target: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
It would be better if nebula could be set up to cope with temporary network failures, which is to be expected especially in mobile setups. There is no guarantee that there DNS will work when the network online target is reached.

Does it crash or retry if dns is not available? Usually it's an anti-pattern to depend on the online target: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
It would be better if nebula could be set up to cope with temporary network failures, which is to be expected especially in mobile setups. There is no guarantee that there DNS will work when the network online target is reached.

I agree, it should be able to cope with network failures.
Looks like there is actually an issue for this, slackhq/nebula#486, and a patch, slackhq/nebula#548.
After the points you've made, I think that this PR is not a solution and a fix should be implemented upstream, so I'm going to close this myself.

I agree, it should be able to cope with network failures.
Looks like there is actually an issue for this, slackhq/nebula#486, and a patch, slackhq/nebula#548.
After the points you've made, I think that this PR is not a solution and a fix should be implemented upstream, so I'm going to close this myself.


strconv.Atoi: parsing "-1234567890123": value out of range

Describe the bug
Chat ID is producing error on ARM7L platform.
On x86 the function strconv.Atoi is working fine, but on a ARM platform with armv7l (Odroid XU4) the command pingme fails.
To Reproduce
Steps to reproduce the behavior:
$ pingme telegram --token "124:abcd" --title "Message title" --msg "My message" --channel="-1234567890123"
Expected behavior
The expected behavior is that the chat id is used to ping a telegram channel.
Desktop (please complete the following information):

OS: Ubuntu 18.04.5 LTS
Version: PingMe version 0.2.0

Additional context
The conversion of the string to an integer is working fine on a x86 desktop PC.
It seems that the 32 bit ARM Platform can not handle such big numbers, while a 64 bit architecture can handle it.
Source: service/telegram/telegram.go
chn := strings.Split(telegramOpts.Channel, ",")                         for _, v := range chn {                                 if len(v) <= 0 {                                         return helpers.ErrChannel                                 }                                 k, errStr := strconv.Atoi(v)                                 if errStr != nil {                                         return errStr                                 }                                 telegramSvc.AddReceivers(int64(k))                         }
[ Zeile 81/102 (79%)]

This issue seems to be related to this: https://github.com/influxdata/telegraf/issues/1258
And the previous issue seems to solved by this: https://github.com/influxdata/telegraf/pull/1266
I implemented the recommended fix: see attached patch
I recompiled the code and tested it successfully. I will create a pull request.
0001-fix-string-convert.patch.zip

Thank you @brenkem for looking into this issue and opening a PR.


Add support for ffigen 10.x

Describe the bug
frb's ffigen version validation requires ffigen <=9. ffigen 10.0.0 has been released https://pub.dev/packages/ffigen/changelog#1000 and should be supported
Codegen logs with RUST_LOG=debug environment variable
N/A

To Reproduce
No response
Expected behavior
No response
Generated binding code
No response
OS
No response
Version of flutter_rust_bridge_codegen
No response
Flutter info
No response
Version of clang++
No response
Version of ffigen
No response
Additional context
No response

Totally agree!

As is mentioned in the PR, it will be merged when the next Flutter stable is released

(PR is merged)


"TOUCH_PANNER_DISABLED : false" doesn't work since 0.10.3

setting:
new window.WebVRPolyfill({
TOUCH_PANNER_DISABLED : false,
});
have no effect since 0.10.3, no panning when touching the screen.

TOUCH_PANNER_DISABLED was removed in 0.10.0 -- it can be implemented with something like: https://github.com/immersive-web/webvr-polyfill/blob/v0.9.41/src/touch-panner.js

It probably should be added to the release notes

Yeah, I must've forgot to add it -- it's the same reason the mouse and keyboard controls were removed -- outside of the scope of supporting WebVR and difficult to anticipate all potential input mechanisms outside of VR. I'll add it to the notes, thanks for pointing it out!

There's nothing in the polyfill for that, no -- but in the future there could be different 'CardboardVRDisplays' in user land that are powered by a touch panner, or mouse and keyboard for example

Added to 0.10.0 release notes -- closing this issue, but would be open to adding links to the README of other implementations of things like TouchPannerVRDisplay, KeyboardMouseVRDisplay, etc.

Hi @jsantell I need to enable vertical move of touchpanner in the CardboardVRDisplay. Do you thing creating a TouchPannerVRDisplay is good idea or just modifiying the old TouchPanner of CardboardVRDisplay to enable phi updates from the touch is enought? If so, what do you think shoud be enough to add because I tried to add the phi in the getOrientation of touchpanner but the result does not respect desired angles


refactor: remove eccvm functionality to update the op queue and ensure ultra ops are populated via API

Resolves https://github.com/AztecProtocol/barretenberg/issues/897.
Add API functionality so we don't populate the ultra_ops manually in the circuit builder and ensure ECCVM cannot update the op_queue and is always constructed from existing op_queue.
Opens https://github.com/AztecProtocol/barretenberg/issues/899 as ultimately we might want to have the ultra_ops and raw_ops only accessible and modifiable by funcitons.

Benchmark results
Metrics with a significant change:

l2_block_public_tx_process_time_in_ms (8): 5,921 (+27%)
l2_block_public_tx_process_time_in_ms (32): 21,600 (+18%)
note_trial_decrypting_time_in_ms (8): 107 (+901%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit 507c374b and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
5,700
18,884
36,452

l1_rollup_calldata_gas
66,528
239,480
470,132

l1_rollup_execution_gas
673,991
980,301
1,388,906

l2_block_processing_time_in_ms
1,214 (+2%)
4,541 (+1%)
9,024 (+1%)

note_successful_decrypting_time_in_ms
197 (-3%)
539 (-1%)
1,002 (+2%)

note_trial_decrypting_time_in_ms
:warning: 107 (+901%)
59.9 (-2%)
36.6 (-69%)

l2_block_building_time_in_ms
13,686 (+14%)
51,758 (+9%)
101,023 (+5%)

l2_block_rollup_simulation_time_in_ms
7,736 (+6%)
30,096 (+3%)
58,772 (-1%)

l2_block_public_tx_process_time_in_ms
:warning: 5,921 (+27%)
:warning: 21,600 (+18%)
42,132 (+15%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,640 (-2%)
27,626 (+4%)

note_history_successful_decrypting_time_in_ms
1,248 (+1%)
2,419 (+1%)

note_history_trial_decrypting_time_in_ms
108 (+33%)
144 (-1%)

node_database_size_in_bytes
18,735,184
35,532,880

pxe_database_size_in_bytes
29,923
59,478

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
253
44,736
28,001

private-kernel-ordering
198 (+2%)
52,625
14,627

base-rollup
660 (+1%)
177,932
997

root-rollup
69.0 (+1%)
4,320
825

private-kernel-inner
321
73,715
28,001

public-kernel-app-logic
177 (+8%)
34,920
27,972

public-kernel-tail
87.7 (+7%)
34,507
27,972

merge-rollup
8.80 (-5%)
2,840
997

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
2 leaves
8 leaves
16 leaves
32 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves

batch_insert_into_append_only_tree_16_depth_ms
9.87 (+1%)
12.0 (+17%)
14.4 (-14%)
16.5 (-1%)
22.8 (+3%)
38.9 (+10%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.9
17.5
23.0
31.6
47.0
79.0
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.573 (+1%)
0.668 (+17%)
0.614 (-14%)
0.510 (-1%)
0.478 (+3%)
0.486 (+10%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
N/A
N/A
N/A
46.2 (-1%)
74.6 (-1%)
242 (+5%)
443 (-1%)
906 (+4%)
1,809 (+5%)

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
N/A
N/A
N/A
96.0
159
543
1,055
2,079
4,127

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.474 (-1%)
0.461 (-1%)
0.442 (+5%)
0.415 (-1%)
0.432 (+4%)
0.434 (+5%)

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
N/A
N/A
N/A
54.0 (+1%)
108 (-4%)
345 (+1%)
659
1,315 (+1%)
2,628 (+1%)

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
N/A
N/A
N/A
104
207
691
1,363
2,707
5,395

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.481 (+1%)
0.485 (-3%)
0.462 (+1%)
0.453
0.456
0.455

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
61.2
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
109
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
0.535
N/A
N/A
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contracts are deployed in the tx.

Metric
0 deployed contracts

tx_size_in_bytes
19,179

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes

tx_pxe_processing_time_ms
2,715 (+1%)
1,386

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
5.47 (-3%)
610 (+7%)


Revert "core: don't auth on empty password (#126)"

This reverts commit 6a085d7f8ea2e4092c3dae2042893489a504ff7c.
This should be handled by the distros pam configuration. There are actual use cases for an empty password.
Fixes #138

as long as you fix hyprlock crashing.

Ahh did not realise that was a problem. Will look into it.

This is the crash that happens on fedora 39:
#0  0x00007ffff7591521 in __strnlen_evex () from target:/lib64/libc.so.6
#1  0x00007ffff74c42c9 in strndup () from target:/lib64/libc.so.6
#2  0x00007fffe7e2e335 in do_pam_conversation () from target:/usr/lib64/security/pam_sss.so
#3  0x00007fffe7e2e587 in prompt_password () from target:/usr/lib64/security/pam_sss.so
#4  0x00007fffe7e36688 in pam_sss () from target:/usr/lib64/security/pam_sss.so
#5  0x00007ffff7fa54d3 in _pam_dispatch () from target:/lib64/libpam.so.0
#6  0x00007ffff7fa5d18 in pam_authenticate () from target:/lib64/libpam.so.0
#7  0x000000000042fea8 in operator() (__closure=0x7fffe73ffaa0, auth=...) at /home/testuser/Fedora-Hyprland/hyprlock/src/core/Password.cpp:48
#8  0x00000000004300e2 in operator() (__closure=0xe427b8) at /home/testuser/Fedora-Hyprland/hyprlock/src/core/Password.cpp:66
#9  0x00000000004307be in std::__invoke_impl<void, CPassword::verify(const std::string&)::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/13/bits/invoke.h:61
#10 0x0000000000430781 in std::__invoke<CPassword::verify(const std::string&)::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/13/bits/invoke.h:96
#11 0x000000000043072e in std::thread::_Invoker<std::tuple<CPassword::verify(const std::string&)::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0xe427b8) at /usr/include/c++/13/bits/std_thread.h:292
#12 0x0000000000430702 in std::thread::_Invoker<std::tuple<CPassword::verify(const std::string&)::<lambda()> > >::operator()(void) (this=0xe427b8) at /usr/include/c++/13/bits/std_thread.h:299
#13 0x00000000004306e6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<CPassword::verify(const std::string&)::<lambda()> > > >::_M_run(void) (this=0xe427b0) at /usr/include/c++/13/bits/std_thread.h:244
#14 0x00007ffff76e31e3 in execute_native_thread_routine () from target:/lib64/libstdc++.so.6
#15 0x00007ffff74ac897 in start_thread () from target:/lib64/libc.so.6
#16 0x00007ffff753380c in clone3 () from target:/lib64/libc.so.6

my guess is strdup is wonky when string is empty. try using calloc(1, 1) instead for empty strings.

That should do it. The problem was that reply->resp gets freed after each call to conv. Also now returns an array of pam_response's as expected by pam.
Logs were funny
[LOG] conv reply 0x7f9418002ad0
[LOG] conv reply->resp 0x7f9418058700
[LOG] conv reply->resp[0]
[LOG] conv called
[LOG] conv reply 0x7f9418002ad0
[LOG] conv reply->resp 0x7265737574736574


Remove react as dependency (Use as peer/dev)

Having react as a dependency potentially causes two copies of react when using this dependency

oof, not sure how those made it in–thanks for the PR!

@Secretmapper just published 1.2.1 with this change. thanks again!

Cheers!


Version: 0.9.8 allow-clear bootstrap theme problem

Hi,
I want to know if i'm doing somenthing wrong, but when i use allow-clear using bootstrap-theme the remove icon goes to the next line.
i prepared this plnk to show the error: http://plnkr.co/edit/P2ylwfEIXFX8gPxt282c?p=preview

@Panchitoboy This issue will be fixed by PR #667 in version 0.9.9.

Thank you @JeromeLam


Docker container is running out of space in local deployment

Trying to upload a 21.5 GB file to a HiGlass container running locally:
wget -O $DOWNLOADS/$NAME $URL
--2017-02-16 16:47:58--  https://s3.amazonaws.com/pkerp/public/Rao2014-GM12878-MboI-allreps-filtered.1kb.multires.cool
Resolving s3.amazonaws.com (s3.amazonaws.com)... <IP_ADDRESS>
Connecting to s3.amazonaws.com (s3.amazonaws.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length:<PHONE_NUMBER>7 (21G) [binary/octet-stream]
Saving to: ‘/tmp/downloads/Rao2014-GM12878-MboI-allreps-filtered.1kb.multires.cool’

/tmp/downloads/Rao2014-GM12878-MboI-allreps-filter  38%[==========================================>                                                                     ]   8.35G  2.17MB/s   in 47m 34ss

Cannot write to ‘/tmp/downloads/Rao2014-GM12878-MboI-allreps-filtered.1kb.multires.cool’ (No space left on device).

The host system has > 150 GB disk space available but the container seems to be limited to 20 GB:
> docker exec -i higlass-container bash
df -h
Filesystem      Size  Used Avail Use% Mounted on
none             19G   19G     0 100% /
tmpfs          1000M     0 1000M   0% /dev
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
/dev/sda1        19G   19G     0 100% /data
shm              64M  8.0K   64M   1% /dev/shm
tmpfs          1000M     0 1000M   0% /sys/firmware

Can you give me the sequence of commands to reproduce this? is it disk space?

This is weird:
higlass-docker$ docker exec container-2017-02-16_17-36-05-with-redis df -h /data
Filesystem      Size  Used Avail Use% Mounted on
osxfs           233G   86G  147G  38% /data

higlass-docker$ docker exec container-2017-02-16_17-36-05-with-redis df -h
Filesystem      Size  Used Avail Use% Mounted on
none             60G  8.0G   49G  15% /
tmpfs          1000M     0 1000M   0% /dev
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
osxfs           233G   86G  147G  38% /tmp
/dev/sda2        60G  8.0G   49G  15% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs          1000M     0 1000M   0% /sys/firmware

/data and /tmp are conflated?
/etc/hosts?

look at dm.basesize... but this is specified when starting the daemon, not per container.

oh... In nils's deployment, /tmp isn't special: it's just using the finite host space. So this is really a documentation fix: If you're starting from an image, you need to mount volumes... but VOLUME declarations don't do that for us?

higlass-docker$ df -h /tmp/higlass-docker/volume-2017-02-16_17-36-05-with-redis/hg-{data,tmp}
Filesystem      Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk1     233Gi   86Gi  146Gi    37% 22592420 38388826   37%   /
/dev/disk1     233Gi   86Gi  146Gi    37% 22592420 38388826   37%   /

higlass-docker$ docker exec container-2017-02-16_17-36-05-with-redis bash -c 'df -h /tmp /data'
Filesystem      Size  Used Avail Use% Mounted on
osxfs           233G   86G  147G  37% /tmp
osxfs           233G   86G  147G  37% /data

discrepancies must just have been the OS doing work in the time between running the two commands


Add the user auth_token in the viz.json of password protected visualizations

Fixes #2411

@juanignaciosl CR please

Frontend tests were OK :+1: (details)


work on entities and enchantments

brings n/m/entity to 100%!

you removed wip but it's still a draft

these conflict with #604
net/minecraft/component/type/ItemEnchantmentsComponent.mapping
net/minecraft/enchantment/Enchantment.mapping
net/minecraft/enchantment/EnchantmentLevelEntry.mapping
net/minecraft/enchantment/Enchantments.mapping

you removed wip but it's still a draft edit: maybe intentional until #598 is merged?

yes, draft until the FCP prs are merged

sorry for torturing you with my wip system that is known to only myself

FCP for three days due to inactivity.


Adds basic Travis build and unit test

I'm going to go ahead and merge this, but feedback is welcome.

We should output the contents of the log files if the build fails.

@shamsimam Good idea, working on that in PR #12


Config Error

Hi, I seem to have an error with my config. I've attached the error and my config below.
Error: https://pastebin.com/2RX2niDD
Config: https://pastebin.com/fF5Jd23B

Could you please post the whole error?

https://pastebin.com/7zNR0Ju2

Was that adequate enough?


ng g i allows the user to mistakenly create a folder which cannot be deleted

HIGH PRIORITY - BUG
I wanted to create an interface file and used the command "ng g i shared/registration/registration.interface /dr" to dry run it, inadvertently using / instead of - for the dry run.
Instead of returning an error, which it should have done, it created he following file:-
shared\registration\registration.\dr.ts
The shared\registration folder already existed, however I don't think that has any bearing on the situation.
I was unable to delete this newly created "registration." folder, or do anything with it, or its containing folder, and when attempting to delete in windows explorer I was presented with the error 0x80004005, which only after much searching on google I managed to find the solution of running del "\?\C:[...]\shared\registration".
Obviously this is a serious bug in Windows (10), however Angular-CLI should protect the user from this sort of situation, probably by double-checking that none of the elements of the file path created contain a . (dot) character at the end

@williamBurgeson Was the dev server running when you tried to delete the folder?

If you're referring to ng serve, or likewise, then no; it's a .net core project so I do ng build and press play in visual studio.
Bearing in mind it can't be deleted either in windows explorer or powershell (I didn't think to try command line).
Note the face that I'm calling the file xxx.interface, and the ng cli seems to strip off the "interface" part of the filename.

Are you still able to reproduce this issue with the latest version of the CLI?

Closing the issue due to inactivity. If the problem still exists in the latest version of the CLI, please open a new issue following the template and providing a minimal demo where we can reproduce it. Thanks! :-)


lm-evaluation-harness broken on master

Since https://github.com/vllm-project/vllm/pull/3065, the eval suite https://github.com/EleutherAI/lm-evaluation-harness is broken.
Repro (this should be run on 2 A100s or H100s to make sure the Mixtral model fits into GPU memory):
# First install vllm from master via https://docs.vllm.ai/en/latest/getting_started/installation.html#build-from-source

# Then clone an install https://github.com/EleutherAI/lm-evaluation-harness
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .

# Now run the evaluation harness
lm_eval --model vllm --model_args pretrained=mistralai/Mixtral-8x7B-Instruct-v0.1,tensor_parallel_size=2 --tasks mmlu --num_fewshot 5

This fails with
  File "/home/ray/anaconda3/bin/lm_eval", line 8, in <module>
    sys.exit(cli_evaluate())
  File "/home/ray/default/lm-evaluation-harness/lm_eval/__main__.py", line 318, in cli_evaluate
    results = evaluator.simple_evaluate(
  File "/home/ray/default/lm-evaluation-harness/lm_eval/utils.py", line 288, in _wrapper
    return fn(*args, **kwargs)
  File "/home/ray/default/lm-evaluation-harness/lm_eval/evaluator.py", line 230, in simple_evaluate
    results = evaluate(
  File "/home/ray/default/lm-evaluation-harness/lm_eval/utils.py", line 288, in _wrapper
    return fn(*args, **kwargs)
  File "/home/ray/default/lm-evaluation-harness/lm_eval/evaluator.py", line 368, in evaluate
    resps = getattr(lm, reqtype)(cloned_reqs)
  File "/home/ray/default/lm-evaluation-harness/lm_eval/api/model.py", line 321, in loglikelihood
    return self._loglikelihood_tokens(new_reqs)
  File "/home/ray/default/lm-evaluation-harness/lm_eval/models/vllm_causallms.py", line 379, in _loglikelihood_tokens
    answer = self._parse_logprobs(
  File "/home/ray/default/lm-evaluation-harness/lm_eval/models/vllm_causallms.py", line 416, in _parse_logprobs
    continuation_logprobs = sum(
TypeError: unsupported operand type(s) for +: 'int' and 'Logprob'

The API breakage is fixed in https://github.com/EleutherAI/lm-evaluation-harness/pull/1549, but after the fix it is extremely slow (about 40x slower than before), so not really feasible to run:
Running loglikelihood requests:   0%|                  [...]               | 32/56168 [22:52<668:47:47, 42.89s/it]

Being able to run the evaluation harness in a timely manner is crucial so we can ensure model performance doesn't degrade.

I think this is because without specifying  a batch size the harness defaults to bs 1. Should be fixed if you use --batch_size auto and we can take advantage of vLLM's continuous batching.

@pcmoritz did you solve this? Im facing similar issue.


Bind group layout entries

Objective

Follow up to #9694

Solution

Same api as #9694 but adapted for BindGroupLayoutEntry
Use the same ShaderStages visibilty for all entries by default
Add BindingType helper function that mirror the wgsl equivalent and that make writing layouts much simpler.

Before:
let layout = render_device.create_bind_group_layout(&BindGroupLayoutDescriptor {
    label: Some("post_process_bind_group_layout"),
    entries: &[
        BindGroupLayoutEntry {
            binding: 0,
            visibility: ShaderStages::FRAGMENT,
            ty: BindingType::Texture {
                sample_type: TextureSampleType::Float { filterable: true },
                view_dimension: TextureViewDimension::D2,
                multisampled: false,
            },
            count: None,
        },
        BindGroupLayoutEntry {
            binding: 1,
            visibility: ShaderStages::FRAGMENT,
            ty: BindingType::Sampler(SamplerBindingType::Filtering),
            count: None,
        },
        BindGroupLayoutEntry {
            binding: 2,
            visibility: ShaderStages::FRAGMENT,
            ty: BindingType::Buffer {
                ty: bevy::render::render_resource::BufferBindingType::Uniform,
                has_dynamic_offset: false,
                min_binding_size: Some(PostProcessSettings::min_size()),
            },
            count: None,
        },
    ],
});

After:
let layout = render_device.create_bind_group_layout(
    "post_process_bind_group_layout"),
    &BindGroupLayoutEntries::sequential(
        ShaderStages::FRAGMENT,
        (
            texture_2d_f32(),
            sampler(SamplerBindingType::Filtering),
            uniform_buffer(false, Some(PostProcessSettings::min_size())),
        ),
    ),
);

Here's a more extreme example in bevy_solari: https://github.com/JMS55/bevy/pull/15/commits/86dab7f5da23da45d4ab668ae30553dadb816d8f

Changelog

Added BindGroupLayoutEntries and all BindingType helper functions.

Migration Guide
RenderDevice::create_bind_group_layout() doesn't take a BindGroupLayoutDescriptor anymore. You need to provide the parameters separately
// 0.12
let layout = render_device.create_bind_group_layout(&BindGroupLayoutDescriptor {
    label: Some("post_process_bind_group_layout"),
    entries: &[
        BindGroupLayoutEntry {
			// ...
        },
    ],
});

// 0.13
let layout = render_device.create_bind_group_layout(
	"post_process_bind_group_layout",
    &[
        BindGroupLayoutEntry {
			// ...
        },
    ],
);

TODO

[x] implement a Dynamic variant
[x] update the RenderDevice::create_bind_group_layout() api to match the one from RenderDevice::creat_bind_group()
[x] docs

Fixed the typo + fixed ci + rebased

We might want to wait after 0.12.1 to merge this


ROCm 5.1.1 with PyTorch

I have:

Python 3.10
torch-1.12.0+rocm5.1.1
torchaudio-0.12.0+rocm5.1.1
torchvision-0.13.0+rocm5.1.1
Ubuntu 22.04 LTS
AMD® Renoir graphics

But when I run any PyTorch function I got
.local/lib/python3.10/site-packages/torch/cuda/__init__.py", line 217, in _lazy_init
    torch._C._cuda_init()
RuntimeError: Unexpected error from hipGetDeviceCount(). Did you run some cuda functions before calling NumHipDevices() that might have already set an error? Error 101: hipErrorInvalidDevice

Does ROCm support Ubuntu 22.04? Maybe you can suggest something?
Example of Python code:
   import torch
   cuda = torch.device('cuda')
    y = torch.tensor([1., 2.]).cuda()

PS: found that it is related with:

https://github.com/RadeonOpenCompute/ROCm/issues/1770

Unfortunately ROCm doesn't support Renoir as far i know. It just isn't supported out of the box and i don't know if hacking is worth the trouble. I can recommend you to try PlaidML which runs just on OpenCL. It's an ML framework based on tensorflow/keras, latest release is from 2020 so it's outdated but it will give you most ML capabilites.

I get this error on RX 6900XT

I get it with a RADEON RX 7900XT, too. It may not be related to the "unsupported" GPU!
According to AMD's documentation, any RDNA architecture is supported. Mine is using the new RDNA3.

I get it with a RADEON RX 7900XT, too. It may not be related to the "unsupported" GPU! According to AMD's documentation, any RDNA architecture is supported. Mine is using the new RDNA3.

Can you please point me to where AMD's documentation states any RDNA architecture is supported?

It does not say any RDNA architecture is supported, however the documentation is outdated (it should work on kernel 5.15 but that's max 5.3 I think there; but they say it works on 1.15) and I do not know where it is anymore.
Notable, they say RDNA GPUs are supported and they list one (only one) rx 6xxx GPU
I'm looking forward to have ROCm working on my system, however currently the developers do not care about documentation, so I guess I'll have to figure out on my own, and if I don't, I'll cry.
My GPU is listed when I issue the command sudo rocminfo. So I guess there will be some way...

Apologies for not following up.
For the original reported issue, sorry @Mikhail42, Renoir is not a supported GPU.
@arch-user-france1, do you still see this issue with latest ROCm 6.0.2 ?
Thanks,

Closing the ticket.  @arch-user-france1, please re-open if you still see this issue with latest ROCm 6.1.0.  Thanks.

With 5.7, everything works as intended.


Examine and update SensorFilter

@TheCoolKidsTable, Cameron Steggles and I went through SensorFilter to try to make some sense of it, annotating the .cpp as we went.
This PR looks to add comments/make the code generally more readable, as well as highlight some strange parts, and seek clarification on others. I'll add review comments on the file to highlight the areas which I would like to discuss more

Superseded by #557


MakeCode "Modules" category rename?

Can we rename to something like "Jacdac Modules"? Modules is a bit unspecific!

Too long, we can just do "Jacdac"
Sent from Outlookhttp://aka.ms/weboutlook

From: James Devine @.>
Sent: Friday, September 10, 2021 9:01 AM
To: microsoft/jacdac @.>
Cc: Peli de Halleux @.>; Assign @.>
Subject: Re: [microsoft/jacdac] MakeCode "Modules" category rename? (#617)
Assigned #617https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fjacdac%2Fissues%2F617&data=04|01|jhalleux%40microsoft.com|ac11aafa85294fa7ddf208d9747439bc|72f988bf86f141af91ab2d7cd011db47|1|0|637668864825704088|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=lYxhXhilMDOoi%2BNwhce0Gvds%2BxpdcIlevRjBwLGtJ50%3D&reserved=0 to @pelikhanhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpelikhan&data=04|01|jhalleux%40microsoft.com|ac11aafa85294fa7ddf208d9747439bc|72f988bf86f141af91ab2d7cd011db47|1|0|637668864825714089|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=71Yxar4ZHS7cB6%2Bk6Us%2FQL5hWhUI6tUoUvBB1v8WDSg%3D&reserved=0.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fjacdac%2Fissues%2F617%23event-5285315083&data=04|01|jhalleux%40microsoft.com|ac11aafa85294fa7ddf208d9747439bc|72f988bf86f141af91ab2d7cd011db47|1|0|637668864825714089|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=dOLF2ZFQhF9aS4j05OIVwY751HREr9%2BIdAFsy4CTGEo%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAA73QKPPA7XJVG4ZKQ6FHSLUBITU3ANCNFSM5DZUCDVQ&data=04|01|jhalleux%40microsoft.com|ac11aafa85294fa7ddf208d9747439bc|72f988bf86f141af91ab2d7cd011db47|1|0|637668864825724078|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=82ZaxQocXdd6oek%2BlH0vK4I2ZPu4rdts2vbgJ2o88Wo%3D&reserved=0.

Sounds good

Logo needs to be rotated too.

It's too late to do this kind of renaming at this point.


[v1.8] docker: bump cilium-iproute2 image

Backport #14593 to 1.8.
The same iproute2 image tag as in the original PR is used, but cilium-runtime and then cilium-builder have been rebuilt specifically for the 1.8 branch. See notes in individual commit logs for adjustments.
Once this PR is merged, you can update the PR label via:
$ contrib/backporting/set-labels.py 14593 done 1.8

test-backport-1.8

test-backport-1.8

test-missed-k8s

test-missed-k8s

test-upstream-k8s

test-upstream-k8s

test-upstream-k8s

test-upstream-k8s

retest-net-next

retest-net-next

K8s-1.11-Kernel-netnext failure does not seem to be related. I'm not sure how to trigger this test again, retest-net-next triggered K8s-1.13-Kernel-netnext :shrug:.

K8s-1.11-Kernel-netnext failure does not seem to be related. I'm not sure how to trigger this test again, retest-net-next triggered K8s-1.13-Kernel-netnext :shrug:.


Export Result alias

Code using failure::Error will often use the type Result<T, Error>, so export that directly to avoid all downstream users from
having to do it.
Addresses issue https://github.com/withoutboats/failure/issues/95

I actually think the use of Result aliases has been a mistake in the ecosystem - I'd be much more comfortable with IoResult or something for example. It leads to new users being very confused, for example when they do something like use std::io::* and suddenly Result no longer has two parameters.

It is something to learn, but after learning it once, it's quite convenient. For most of my modules, I have one major Result type, and only couple of fully qualified exceptions.
Anyway, since ecosystem uses this convention already, it's better to accept it and learn to live with it than split the ecosystem.

I'm very much against this also.
I think the custom Result types were a mistake too, and not only make code more obtuse, but also give the wrong incentive to always use the main error type when a more specific error would be more appropriate.

I'm fine with deciding to take this or drop it. My personal preference would be to merge (obviously), and I think the notational convenience of Result aliases outweighs the disadvantages - but I can see the arguments against it.

FailResult?

FailResult?

A bit misleading, since it doesn't involve the Fail trait directly. failure::ErrorResult might be better.
TBH I don't see the problem with just leaving it as failure::Result. It's purely opt-in unless you were already doing use failure::*, and you could do use failure::Result as ErrResult;. (Though I guess the same applies to use failure::ErrorResult as Result;)

I also frequently wish this existed.
Regarding IoResult, the usual style I see in the wild is io::Result which does the trick of providing context elsewhere, while leaving it implicit within the context (ie inside the io module). I think most projects would be typing out failure::Result<bool> or whatever, not doing use failure::Result;
I believe that matching the usual ecosystem patterns and habits is important for such a fundamental crate.

@withoutboats

I actually think the use of Result aliases has been a mistake in the ecosystem - I'd be much more comfortable with IoResult or something for example. It leads to new users being very confused, for example when they do something like use std::io::* and suddenly Result no longer has two parameters.

I have to disagree; having same style allows for easy finding when looking for those in the docs. If someone uses use failure::* they are aware they are not carefully knowing what is being imported.
@fitzgen

Regarding IoResult, the usual style I see in the wild is io::Result which does the trick of providing context elsewhere, while leaving it implicit within the context (ie inside the io module). I think most projects would be typing out failure::Result or whatever, not doing use failure::Result;

agreed.
The possibility of adding the context is what makes it nice. We can opt-in to use it directly and use context depending on what makes the code easier to read.


Repo license

Hi, thanks for sharing great codes related to active learning in object detection. Have you considered adding a license to this specific repo?

Done


Changed the type of InnerTransaction.value to Option

Closes #236

Changed InnerTransaction.value type to Option<String>

Pull Request Test Coverage Report for Build 707

6 of 6 (100.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 69.273%

Totals

Change from base Build 701:
0.0%

Covered Lines:
4651

Relevant Lines:
6714

💛  - Coveralls


Misleading tooltip for the "Open Configuration File" button

When run bitcoin-qt -conf=/home/hebasto/new-conf, the "Open Configuration File" button tooltip

"Open the Bitcoin Core configuration file from the working directory."

is misleading.

One way to deal with this is to display the directory's location from which bitcoin.conf is loaded.
Let me try to figure out if this solution can be applied.


semantic-release for @beta and @next releases

Upon commit to beta branche (next), release build uses semantic-release's new workflows to create pre-release tag and publish npm package to the appropriate @beta (@next) channel

See:

https://github.com/semantic-release/semantic-release/blob/beta/docs/recipes/pre-releases.md
https://github.com/semantic-release/semantic-release/blob/beta/docs/usage/configuration.md#branches
https://github.com/semantic-release/semantic-release/blob/beta/docs/usage/plugins.md#plugin-ordering
https://github.com/semantic-release/semantic-release/blob/beta/docs/extending/plugins-list.md

:tada: This PR is included in version 1.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Create a support interface

Change a Support category under the Administration module for displaying logs.
Related to #9

A new Support permission has been added providing access to a new Support module with a Events category containing a Logs navigation link, which navigates to a Logs page, showing logs persisted to the Logs table in the database.
A new custom LogSearch component allows users to provide search criteria for searching logs, displayed in a grid where logs can be further filtered and sorted in the grid.


Add an "open in browser" option

When producing large graphs it may be preferable to view the result in the browser, because it has more zooming/panning capabilities.

Either that or at least allowing us to export an image.

I've implemented that in another extension and can port that here. But it would be cool if you reviewed and accepted my outstanding pull request (ability to scale the svg) first : )

Issue can be closed.

@jan-dolejsi sorry for the delay on publishing the new release. Thanks a lot for the PR.


Refactor database code

Split models.py into separate files, merge likes.py with them. Shorten __repr__. Remove circular dependency on botbot_server.py.

Closed by #34.


use non-guessable identifiers for deck/decklist URLs

instead of the currently used sequentially created internal primary identifiers.
this should curb attempts to scrape lists via script by incrementing the deck identifiers.
rig up a GUID generator and rework the routes/controllers accordingly.
will require schema changes, too.
back-fill existing lists via a custom Migration or command.
apparently, the l5r db has this feature already, so see if this can be ported for starters.

just a suggestion to use the same links and have a password to access the list +plus whitelist 4 people who have access without password

@luky92 interesting idea. i've been thinking along the lines of letting deck builders create/revoke shareable links, similar to how several google applications do it. but that's a follow-up item, let's squish the problem at hand first.


How to compile TS in VSCode?

As the title.

Here

I find a way to compile TS----  This.
But I have to write the filename in tasks.json args like below
{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "showOutput": "silent",
    "args": ["HelloWorld.ts"],
    "problemMatcher": "$tsc"
}

Is there a easyway to compile TS?Not hardcode the filename in tasks.json.

I shoul writer the tasks.json like below:
{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "showOutput": "silent",
    "args": [],
    "problemMatcher": "$tsc"
}

default user current ts file's name;


Wrong category number for object detection OID

hello,
I notice that there are only 443 categories for OID(oid_boxable_leaf) in https://github.com/ozendelait/rvc_devkit/blob/master/objdet/obj_det_mapping.csv. However, there should be 500 categories in OID challenge version.
Why some categories are absent?
Thank you very much.

The best-effort mapping only takes OID leaf-nodes into account