VRF command batch check witness does not use delegatedStake

While testing the new VRF commands mina advanced vrf batch-check-witness it seems to use the value for totalStake as delegatedStake. As a result, the thresholdMet for the command can be true where it should be false.
Output was generated via mina advanced vrf batch-generate-witness and the vrfThreshold values were appended to this output.
mina advanced vrf batch-check-witness
{
  "message": {
    "globalSlot": "42845",
    "epochSeed": "2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9",
    "delegatorIndex": 1276
  },
  "publicKey": "B62qpge4uMq4Vv5Rvc8Gw9qSquUYd6xoW1pz7HQkMSHm6h1o7pvLPAN",
  "c": "19416334177459765413057069821807586036057488642590461566665439753889666087258",
  "s": "3295014664252589310792027359262315069687653157993321251267046274461208608725",
  "ScaledMessageHash": [
    "0x115ae01b81465ab5bff171ee701db625839f8aa4faf358242e0bb7b5532d551d",
    "0xfc56879a92ff31ebe3deef9eeab0b13a692ffd6c75c5c5c08593016b43020d13"
  ],
  "vrfThreshold": {
    "delegatedStake": "1732583545194353",
    "totalStake": "825474412840039233"
  }
}
{
  "message": {
    "globalSlot": "42845",
    "epochSeed": "2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9",
    "delegatorIndex": 1276
  },
  "publicKey": "B62qpge4uMq4Vv5Rvc8Gw9qSquUYd6xoW1pz7HQkMSHm6h1o7pvLPAN",
  "c":
    "19416334177459765413057069821807586036057488642590461566665439753889666087258",
  "s":
    "3295014664252589310792027359262315069687653157993321251267046274461208608725",
  "ScaledMessageHash": [
    "0x115ae01b81465ab5bff171ee701db625839f8aa4faf358242e0bb7b5532d551d",
    "0xfc56879a92ff31ebe3deef9eeab0b13a692ffd6c75c5c5c08593016b43020d13"
  ],
  "vrfThreshold": {
    "delegatedStake": "18446744073.709551615",
    "totalStake": "18446744073.709551615"
  },
  "vrfOutput": "EiRso5R2XH6Hznddoz2BWDFY1aH4bMPUcqbLVQHWuZFUSWMP47Sk2",
  "vrfOutputFractional": 0.28249260018840877,
  "thresholdMet": true
}

I tested this against the output from mina advanced vrf generate-witness which does return correctly (and verified this was not a winning slot).
mina advanced vrf generate-witness --delegator-index 1276 --epoch-seed 2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9 --global-slot 42845 --privkey-path ~/path-to-my-wallet --delegated-stake<PHONE_NUMBER>194353 --total-stake<PHONE_NUMBER>40039233 --generate-outputs true

{
  "message": {
    "globalSlot": "42845",
    "epochSeed": "2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9",
    "delegatorIndex": 1276
  },
  "publicKey": "B62qpge4uMq4Vv5Rvc8Gw9qSquUYd6xoW1pz7HQkMSHm6h1o7pvLPAN",
  "c":
    "20675484422149683680235196069821332945427942714551355049709369745710673392919",
  "s":
    "18364293605438900729007207113385842477849131524072774431140826782834002671259",
  "ScaledMessageHash": [
    "0x115ae01b81465ab5bff171ee701db625839f8aa4faf358242e0bb7b5532d551d",
    "0xfc56879a92ff31ebe3deef9eeab0b13a692ffd6c75c5c5c08593016b43020d13"
  ],
  "vrfThreshold": {
    "delegatedStake": "1732583.545194353",
    "totalStake": "825474412.840039233"
  },
  "vrfOutput": "EiRso5R2XH6Hznddoz2BWDFY1aH4bMPUcqbLVQHWuZFUSWMP47Sk2",
  "vrfOutputFractional": 0.28249260018840877,
  "thresholdMet": false
}

On closer inspection, this seems to be an inconsistency between the JSON vrfThreshold (in MINA) and the command line arguments (in NANOMINA). Inserting the appropriate decimal point seems to give the correct result:
{  "message": {    "globalSlot": "42845",    "epochSeed": "2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9",    "delegatorIndex": 1276
  },
  "publicKey": "B62qpge4uMq4Vv5Rvc8Gw9qSquUYd6xoW1pz7HQkMSHm6h1o7pvLPAN",
  "c": "19416334177459765413057069821807586036057488642590461566665439753889666087258",
  "s": "3295014664252589310792027359262315069687653157993321251267046274461208608725",
  "ScaledMessageHash": [
    "0x115ae01b81465ab5bff171ee701db625839f8aa4faf358242e0bb7b5532d551d",
    "0xfc56879a92ff31ebe3deef9eeab0b13a692ffd6c75c5c5c08593016b43020d13"
  ],
  "vrfThreshold": {
    "delegatedStake": "1732583.545194353",
    "totalStake": "825474412.840039233"
  }
}
{
  "message": {
    "globalSlot": "42845",
    "epochSeed": "2vaFz7v83bB3zNj4VvKUM3T5uT8mfnoPmZrbuR3hGAEdQyhZriN9",
    "delegatorIndex": 1276
  },
  "publicKey": "B62qpge4uMq4Vv5Rvc8Gw9qSquUYd6xoW1pz7HQkMSHm6h1o7pvLPAN",
  "c":
    "19416334177459765413057069821807586036057488642590461566665439753889666087258",
  "s":
    "3295014664252589310792027359262315069687653157993321251267046274461208608725",
  "ScaledMessageHash": [
    "0x115ae01b81465ab5bff171ee701db625839f8aa4faf358242e0bb7b5532d551d",
    "0xfc56879a92ff31ebe3deef9eeab0b13a692ffd6c75c5c5c08593016b43020d13"
  ],
  "vrfThreshold": {
    "delegatedStake": "1732583.545194353",
    "totalStake": "825474412.840039233"
  },
  "vrfOutput": "EiRso5R2XH6Hznddoz2BWDFY1aH4bMPUcqbLVQHWuZFUSWMP47Sk2",
  "vrfOutputFractional": 0.28249260018840877,
  "thresholdMet": false
}

This was hidden by a bug in the ocaml-integers library, which emits the maximum 64-bit value<PHONE_NUMBER>3709551615 instead of throwing an error, if the read value doesn't fit in 64 bits.

Ah nice, that's easy :) Confirmed this works for me too!

Opened a PR against upstream with a fix: ocamllabs/ocaml-integers#32.


Pass notifierOptions every were that notifier is called.

Summary
(If you have not already please refer to the contributing guideline as described
here)

[ ] Tell us about the problem your pull request is solving.
[ ] Are there any open issues that are related to this?
[ ] Is this PR dependent on PRs in other repos?

If so, please mention them to keep the conversations linked together.
Other Information
If there's anything else that's important and relevant to your pull
request, mention that information here. This could include
benchmarks, or other information.
Your PR will be reviewed by a core team member and they will work with you to get your changes merged in a timely manner. If merged your PR will automatically be added to the changelog in the next release.
If your changes involve documentation updates please mention that and link the appropriate PR in feathers-docs.
Thanks for contributing to Feathers! :heart:

I've seen that you made a release after merging this PR. There are actually dedicated scripts in the module to do so, you need to run eg npm run release:patch (or minor/major). This will automatically increase the version number, push to NPM but as well push a tag to Github and update the changelog (you need to install https://github.com/github-changelog-generator/github-changelog-generator).
We should probably add something in the docs about that. Let me know.

That was a mistake I made. I actually ran  npm run release:patch but I had a bad configuration with my IDE so it errored out but it still incremented my local git. I push up some change to try to undo what I did. Then we figured out what happened and ran that command again and fixed it.  I also installed github_changelog_generator so I am not sure why that did not work.
Ya adding more info in the docs would be great!

Will try to fix it, would also be great to fill the PR description to know what problem is solved.

I've just added this. Hope this will help.


new render mechanism

Modified __h__(tag, data, children, namespace) into __r__(__s__(tag, data, namespace), children) to separate node-self process and children process.
Supported getters for text node (__t__) and static root (__m__) to make general detail control possible.

Made some simplifications based on your changes in https://github.com/vuejs/vue/commit/2dc5b1782871d87a7c795361eac0d49fd396c05f:

renaming to make function names for self-apparent

renderSelf -> renderElement
renderElement -> renderElementWithChildren

removed the need for the ComponentDef - renderElement always return VNode | void, instead we do different set children ops depending on whether the vnode is a component or not.


Error saving

Error Code
Error: Service Unavailable

Error: Service Unavailable
    at Request.<anonymous> (https://homebrewery.naturalcrit.com/homebrew/bundle.js:77769:21)
    at Emitter.emit (https://homebrewery.naturalcrit.com/homebrew/bundle.js:1954:20)
    at XMLHttpRequest.<anonymous> (https://homebrewery.naturalcrit.com/homebrew/bundle.js:78059:10)
{
  "status": 503,
  "method": "PUT",
  "url": "/api/update/wk9AFlwtBeuP"
}

### Your description of what happened:

I saved, did about 10 minutes of work, and saved again. The second time, it took 4 attempts for it to actually save.

This error tells us that the server was exceptionally busy, we recommend waiting a few minutes, then trying again.


Support for Nelmio API Doc

Since I am using the auth bundle with swagger..wondering if there is an easy way to get the login route into the api doc? Thanks

I found it in a closed issue..sorry for spamming..

@JuliusKoronci, I have the same issue, could you share a link to the issue you've found?

@kix I don't remember but you can check my repo..it should be there https://github.com/JuliusKoronci/Symfony-React-CI/tree/master/symfony-app

You can add the route to the paths array under the documentation key:
    documentation:
        paths:
            /api/login_check:
                post:
                    summary: get jwt
                    consumes:
                        - application/json
                    parameters:
                        - in: body
                          name: user
                          description: user credentials
                          schema:
                              type: object
                              required:
                                  - userName
                              properties:
                                  username:
                                      type: string
                                  password:
                                      type: string


Rework config map's

Reworks the zeebe config maps which are deployed with the services/applications.

Remove the startup scripts from the gateway config map
Replace most of the code from the zeebe startup script with kubernetes dependent environment variables

inspired by https://github.com/camunda-community-hub/camunda-cloud-operator/blob/main/operator/controllers/zeebe_controller.go
Why: To have everything in one place and for better maintainability most of the env vars are set in the statefulset manifest.

Initial contact points are calculated with helm template range (inspired by https://github.com/helm/helm/issues/1055)

I tried it out and the following is calculated correctly:
$ k logs test-zeebe-0

+ env
...
ZEEBE_BROKER_CLUSTER_NODEID=0
ZEEBE_BROKER_CLUSTER_CLUSTERNAME=test-zeebe
ZEEBE_BROKER_CLUSTER_INITIALCONTACTPOINTS=test-zeebe-0.test-zeebe.zell-helm-test.svc.cluster.local, test-zeebe-1.test-zeebe.zell-helm-test.svc.cluster.local, test-zeebe-2.test-zeebe.zell-helm-test.svc.cluster.local,
...
K8S_NAMESPACE=zell-helm-test
K8S_SERVICE_NAME=test-zeebe
K8S_NAME=test-zeebe-0

\cc Maybe interesting for you @Sijoma (I can still not request a review from you)
related to #124

Seems way cleaner 👍 . I wonder what it would take to have a dynamic discovery mechanism?
Would this also be a PR for our "other" repo? 😉

Seems way cleaner ￼ . I wonder what it would take to have a dynamic discovery mechanism?

Yeah would also be cool :) unfortunately currently not possible.
Yes I just wanted to check with you how you like it :smile: and then I wanted to create a PR their :grimacing:
Thanks for the review @Sijoma :heart:


"DetectionCfg" problem  in Argo2Dataset

Hello. I've been testing your model on av2.
But I have a problem DetectionCFG which is in "mmdet3d>datasets>argo2_dataset.py>Argo2Dataset line 481".
DetectionCfg in latest av2 library might has no "split" argument I think ...
Probably, I think this is the library version problem.
So Can I ask What version is your av2 libary?

My av2 version is 0.1.0.. Some users use 0.2.0.

I think that I can recover performances by deleting the below line in argo==0.2.0
https://github.com/tusen-ai/SST/blob/a42fcab3d5827492c95721b50c3871d47aa30335/mmdet3d/datasets/argo2_dataset.py#L481
Below  is the result that I tested

Thanks for reminding me! Glad to see that!


Setting label disappears when value is empty

idk if this has been fixed already but I stumbled upon this in v1.7.2.
I have the following dropdown menu setting to set a custom color for the tooltip for a certain type of item:
{
  "id": "TestDropdown",
  "type": "select",
  "name": "Test Setting",
  "description": "To show that labels for options with no value are broken.",
  "defaultValue": "",
  "options": [
    { "value":  "", "label": "Disable" },
    { "value": "5", "label": "Gray" },
    { "value": "6", "label": "Black" }
  ]
}

If "Gray" is selected, the label in the setting bar will say "Gray". If "Disable" is selected, the bar will be empty. The setting itself works though (like code/game-wise)
Can you fix this?

This is an intentional feature of MUI's Select component:

The input value. Providing an empty string will select no options.
Set to an empty string '' if you don't want any of the available options to be selected.

I could theoretically work around it by automatically replacing empty string with some dummy placeholder in every mod config that D2RMM loads, but you'd probably be better off using a real value (instead of "") anyway.

Ah that makes sense. That way you could also force a user to select an option instead of using a default value.
I'll work around it then, I'll close the issue.


cert-manager check api: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Got an issue here while installing cert-manager 1.5.3 on (self-installed) k8s 1.22.1:
cert-manager is installed using
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
The pods seem okay:
kubectl get pods --namespace cert-manager -o wide
NAME                                      READY   STATUS    RESTARTS   AGE   IP          NODE            NOMINATED NODE   READINESS GATES
cert-manager-848f547974-qzl55             1/1     Running   0          80s   <IP_ADDRESS>   k8s-worker-01   <none>           <none>
cert-manager-cainjector-54f4cc6b5-mnzkv   1/1     Running   0          80s   <IP_ADDRESS>   k8s-worker-01   <none>           <none>
cert-manager-webhook-7c9588c76-7npxj      1/1     Running   0          80s   <IP_ADDRESS>   k8s-worker-02   <none>           <none>

Verifying the cert-manager installation fails:
kubectl cert-manager check api
Not ready: Internal error occurred: conversion webhook for cert-manager.io/v1alpha2, Kind=Certificate failed: Post "https://cert-manager-webhook.cert-manager.svc:443/convert?timeout=30s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

What exactly fails here? The k8s api-server connecting to the webhook pod?
Pod logs:
k logs -n cert-manager cert-manager-848f547974-qzl55
I0908 13:55:44.353782       1 start.go:75] cert-manager "msg"="starting controller"  "git-commit"="b26bd256f124d480fcb198e1464854f41b0d0d2c" "version"="v1.5.3"
W0908 13:55:44.353974       1 client_config.go:615] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0908 13:55:44.355215       1 controller.go:268] cert-manager/controller/build-context "msg"="configured acme dns01 nameservers" "nameservers"=["<IP_ADDRESS>:53"]
I0908 13:55:44.355770       1 controller.go:85] cert-manager/controller "msg"="enabled controllers: [certificaterequests-approver certificaterequests-issuer-acme certificaterequests-issuer-ca certificaterequests-issuer-selfsigned certificaterequests-issuer-vault certificaterequests-issuer-venafi certificates-issuing certificates-key-manager certificates-metrics certificates-readiness certificates-request-manager certificates-revision-manager certificates-trigger challenges clusterissuers ingress-shim issuers orders]"
I0908 13:55:44.356038       1 controller.go:115] cert-manager/controller "msg"="starting leader election"
I0908 13:55:44.356159       1 controller.go:105] cert-manager/controller "msg"="starting metrics server"  "address"={"IP":"::","Port":9402,"Zone":""}
I0908 13:55:44.356773       1 leaderelection.go:243] attempting to acquire leader lease kube-system/cert-manager-controller...

  Using the inClusterConfig.  This might not work.
W0908 13:55:44.250438       1 client_config.go:615] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0908 13:55:44.250585       1 webhook.go:70] cert-manager/webhook "msg"="using dynamic certificate generating using CA stored in Secret resource"  "secret_name"="cert-manager-webhook-ca" "secret_namespace"="cert-manager"
I0908 13:55:44.250933       1 server.go:138] cert-manager/webhook "msg"="listening for insecure healthz connections"  "address"=":6080"
I0908 13:55:44.251011       1 server.go:169] cert-manager/webhook "msg"="listening for secure connections"  "address"=":10250"
I0908 13:55:44.251101       1 server.go:201] cert-manager/webhook "msg"="registered pprof handlers"
I0908 13:55:45.284810       1 dynamic_source.go:272] cert-manager/webhook "msg"="Updated serving TLS certificate"

Environment details:

Kubernetes version: 1.22.1
Cloud-provider/provisioner: none
cert-manager version: 1.5.3
Install method: kubectl apply

/kind bug

Same with cert-manager 1.0.4 here; rancher 2.5.9, k8s 1.16.19

When at least somebody would know where this error is coming from, then I would hopefully be able to troubleshoot this.
Is it the cert-manager pod talking to the cert-manager-webhook pod?
By deploying a test pod, I could confirm DNS resolution of "cert-manager-webhook.cert-manager.svc" is working and it is pointing to the cert-manager-webhook service:
/ # ping cert-manager-webhook.cert-manager.svc
PING cert-manager-webhook.cert-manager.svc (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: seq=0 ttl=64 time=0.030 ms
64 bytes from <IP_ADDRESS>: seq=1 ttl=64 time=0.059 ms
^C

telnet to port 443 also works:
/ # telnet cert-manager-webhook.cert-manager.svc 443
Connected to cert-manager-webhook.cert-manager.svc
^C

we have found that with networkpolicy we could enable/allow the required connection from container kube-apiserver in kube-system to the webhook, check this one: https://github.com/jetstack/cert-manager/issues/2334#issuecomment-787726661

I don't run the kube-apiserver in a container.

Ahh, I absolutely love it when I have some weird issue, find someone else who had the exact same problem and it was closed without solution by a helpful stale bot.
Anyone figure something out for this yet? The docs mention this issue here: https://cert-manager.io/docs/troubleshooting/webhook/#error-nethttp-request-canceled-while-waiting-for-connection but don't actually have any help on what to do about it


Bug: log level filter level doesn't reset when loading another file using drag and drop

Bug
Log level filter should reset the filter level when loading another file. However, on drag and drop a new file, the log level filter doesn't reset (and new logs are not filtered).
yscope-log-viewer version
82e677e
Environment
Chrome: 131.0.6778.86
Reproduction steps

Open a new log file with log viewer.
Set log level filter.
Drag and drop another file, observe that the log level filter doesn't reset.

@davemarco / @jackluo923 shall we persist the log level filter across different files?

should either be fixed

It needs to be fixed regardless since the logs are not filtered when the new file is loaded (even though the filter says it's enabled).
I would prefer we reset the filter when loading a new file.


Inform about missing package

When there is missing package: tcpdump or windump, packetWhisper silently continues.

Automatically removed trailing whitespaces.
Changed this behavior to early exit, to inform end user about missing package.
Added autodetection of system that packetWhisper is running on.

@TryCatchHCF hey, could you look at this PR?


Chart Navigator:  Data lines not rendering properly in nav chart if you adjust the timeline in range picker.

If you have a range picker+timeseries+navigator chart and then you change the starting date in the range picker from say April to October, the data lines fall out of the navigator bar on the left hand side.
See screenshot.
Seeing this with vis version 0.6.14 and timeseries 0.4.4.

Although true, this is only an issue if the range picker doesnt fetch new data. So it is mostly an edge case present in our demo. Marking as low priority bug

fixed in v3


Cannot read property 'prepare' of undefined

Hello, guys. I have the following errors with Recroder and Player. I am using React Native 0.41

I think you need to specify platform and how to reproduce this error.
This library is already in use by many people, so I suggest you to check if there is missing step in your setup: https://github.com/futurice/react-native-audio-toolkit/blob/master/docs/SETUP.md

Any progress with this guys?
I'm still getting
TypeError: Cannot read property 'prepare' of undefined
from: node_modules/react-native-audio-toolkit/src/Recorder.js:77:18
as of ^1.0.6
Do you have a work around here?

Just ran into this error myself... It's occurring while simulating using Expo.
react-native: 0.50.3
react-native-audio-toolkit: ^1.0.6
new Player('./sample.m4a')             .play()             .on('ended', () => {                console.log('play mp3 done')             });

It appears to be only occurring when we do Jest Tests
other than that, it seems to work fine with prepare.
Maybe this has something to do with jest 21.2.1 ?

Got this issue but I solved it by just using the prepare function before calling the play function.
I got this issue only on android it was working fine on iOS even without the prepare.

Seems like calling .prepare or .play in any order still causes this error for me. It's complaining about this this line for the player and this line for the recorder
Since RCTAudioRecorder/RCTAudioPlayer is simply being grabbed by the NativeModule and this error is claiming it doesn't exist then I would say that this is caused when you haven't included this package properly within your iOS app.
I know I'm including it a little differently then the standard linking method. So I think step one is including it correctly, however that may be for your project. (Still trying to figure out how to do it for mine)

Hey guys, I am having the same issue. Anybody figure this out? I am using an ejected version of CRNA and everything is linked correctly, but I am getting this same err with the .play. The sound instance itself seems to be created correctly, but then that method throws this error.

@ryekerjh I ended up switching to this library with a lot more luck: https://github.com/react-native-kit/react-native-track-player/

same issue here...

Any updates?

if your react-native version >= 0.60, you need reinstall pods.

Do you need to eject to use the app?

Check that you have linked the library and run pod install

Same issue. I didn't eject; could that be the cause?


[LIBCLOUD-707] Fixed exception when parsing CloudSigma static IPs

Fixes issue with CloudSigma compute driver: https://issues.apache.org/jira/browse/LIBCLOUD-707

Merged into trunk. Thanks.


Two Bugs when displaying comments + comment suggest change doesn't work

Summary
There occur two appeareance bugs with the comments plugin and within this the option.
Steps to reproduce
I'm using Windows 8.1 and Firefox 75.0

(1) Go to a line and add several comments, then they overlap. The last one always hides the other ones so that the others can't be edited (The screenshot below was taken from https://pad.systemli.org)

(2) When you go on a comment in the line, the corresponding box shows on the right. When you go with the cursor to the right, it disappears.
(3) when "table of contents" and "Chat (and user) always on screen" setting is enabled, table of contents overlaps the comment. Only occurs on https://board.net

Example
https://board.net/p/testpad_der_tuuwi
https://pad.systemli.org/p/PostWachstumsDefinition-temp
What is the expected correct behavior?

(1) comments when comments overlap, they should have permanent, untransparent boxes

this already happens on board
on Systemli for example the comments on the right are transparent and they overlap (see image above)

(2) the corresponding box on the right should stay when clicking on a comment in the text
(3) toc shouldn't overlap comment. It should be shown above ToC when selected.

Possible fixes
On sandstorm you can test pads for one hour in the demo version, the have high level functionality with stable plugins, there the comments work fine! I don't know how they did this
https://sandstorm.io/demo
P.S.: Furthermore, "include suggested change" doesn't work on the board.net instance.

@Oremountainflorian can you replicate on https://video.etherpad.com ?  I think this is an old bug.  If you can replicate there I will re-open.


The functions don't work in any JSON parsed afterwards.

When the ReadContext instance is created more then once, the behavior of sum(), min(), max(), avg() and probably other functions is wrong.
Here's a code snippet to reproduce the problem:
ReadContext ctx = JsonPath.parse("{'arr': [1,2]}");
ctx.read("max($.arr[*])");    // OK: returns 2

ReadContext ctx2 = JsonPath.parse("{'arr': [3,4]}");
ctx2.read("max($.arr[*])");   // raise Error.

The call ctx2.read(...) raise an exception:
12:53:22.786 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $.max(...)
12:53:22.818 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $['arr'][*]
12:53:22.818 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $.max(...)
12:53:22.818 [main] DEBUG com.jayway.jsonpath.internal.path.CompiledPath - Evaluating path: $['arr']
Exception in thread "main" com.jayway.jsonpath.JsonPathException: Aggregation function attempted to calculate value using empty array
	at com.jayway.jsonpath.internal.function.numeric.AbstractAggregation.invoke(AbstractAggregation.java:59)
	at com.jayway.jsonpath.internal.path.FunctionPathToken.evaluate(FunctionPathToken.java:41)
	at com.jayway.jsonpath.internal.path.RootPathToken.evaluate(RootPathToken.java:66)
	at com.jayway.jsonpath.internal.path.CompiledPath.evaluate(CompiledPath.java:99)
	at com.jayway.jsonpath.internal.path.CompiledPath.evaluate(CompiledPath.java:107)
	at com.jayway.jsonpath.JsonPath.read(JsonPath.java:179)
	at com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:88)
	at com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:77)
	at com.objectiflune.tests.json.JsonFuncTest.main(JsonFuncTest.java:15)_

All functions work as expected, but only in the first json parsed. Once a new context is created, many functions throw the exception.
For this to work again, the application must be restarted.
It seems that there are cached variables linked to the process that cause incorrect parameter validation for the second context.

After a little research, I found out more about this problem:
It seems that the problem is caused by the FunctionPathToken.cleanWildcardPathToken() method. The wildcard path token is removed from the JsonPath function, causing a bad output for the cached JsonPath when it is called second time for the same JsonPath.
The issue was introduced as a bug fix for https://github.com/json-path/JsonPath/issues/786, so the problem has existed since March 2022.
For this problem, one of the following workarounds can help:

Avoid caching the JsonPath function in the default LRUCache.java file.
Use a custom cache instance that will not cache the JsonPath function.


feat: zod generator

Status
WIP
Description
A new generator that will convert the schema to a Zod object.
This is more of a tryout to see if it's possible to convert to Zod, at this moment it only contains the types needed for doing API calls and not the ones that are generated for Typescript.
In the future, it would be nice to generate the models for Typescript and for Zod.
Related PRs
Based on https://github.com/anymaniax/orval/pull/415
Todos

[ ] Tests
[ ] Test on a bigger schema
[ ] Documentation
[ ] Changelog Entry (unreleased)

Examples
import * as zod from 'zod';

/**
 * @summary List all pets
 */
export const listPetsParams = zod.object({
  limit: zod.string().optional(),
  sort: zod.enum(['name', '-name', 'email', '-email']),
  version: zod.number().optional(),
});

export const listPetsHeader = zod.object({
  'X-EXAMPLE': zod.enum(['ONE', 'TWO', 'THREE']),
});

/**
 * @summary Create a pet
 */
export const createPetsParams = zod.object({
  limit: zod.string().optional(),
  sort: zod.enum(['name', '-name', 'email', '-email']),
  version: zod.number().optional(),
});

export const createPetsBody = zod.object({
  name: zod.string(),
  tag: zod.string(),
});

export const createPetsHeader = zod.object({
  'X-EXAMPLE': zod.enum(['ONE', 'TWO', 'THREE']),
});

/**
 * @summary Info for a specific pet
 */
export const showPetByIdParams = zod.object({
  petId: zod.string(),
  testId: zod.string(),
  version: zod.number().optional(),
});

You should open a matching issue ticket so it can link this PR in the future and for release notes.

@stijnvanhulle Nice!
@anymaniax Is it possible to generate both react-query and zod related code using the current config? (provided this PR is ready and merged 🙂 )

Is there anything we can do to help this get merged? 😇

I am currently extracting the orval core to be able to write any kind of generator like this one easily and even be able to create your own package directly with it.

Hello @gunnartorfis @stijnvanhulle, you can now check the new architecture and create your own client with the extracted core. The current version is<EMAIL_ADDRESS>


Docker image compatible with Rasperry Pi (arm) 32bits and 64bits

All is in the title. I'm running docker on a rpi with raspianOS 64bits version. I've seen on the DockerHub there is only amd64 images. Is-it difficult to provide such an image (I'm a noob on docker so I don't how much work it represents) ?
Thank you for your time and your work.

Thank you for your suggestion. I've added linux/arm64 and linux/arm/v7 images on the master branch.
For now they are only available for the remirigal/plex-auto-languages:master images, the remirigal/plex-auto-languages:latest arm-based images will be available as soon as a new version is released. I will let you know.

Version v1.2.0 has been released as well as the new arm-based images for remirigal/plex-auto-languages:latest.
I'm closing this issue but feel free to reopen it if you have any question.


add service.serviceMonitor options

nindent 6 worked for me, because yaml renders in next line
namespaceOverride for cases when prom-operator installed in another namespace

Thanks!
Works like a charm

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

this has been fixed in another PR


large heading not readable in mobile view

Describe the bug
The size of the h1 (Which is "Creating an inclusive data ecosystem") is two large not readable in  mobile view ###the changed to be small.......
To Reproduce
Steps to reproduce the behavior:

Go to 'https://wecount.inclusivedesign.ca/'
Click on 'homepage'
See error

Screenshots before---

after---

Smartphone (please complete the following information):

Device: [e.g. iPhone6 , 5 , 6s]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser

Additional context--
@cindyli @greatislander @gtirloni
i already fixed this issue here the link of my pr
Add any other context about the problem here.

Closed as this is a duplicate of #322 that has been fixed a couple of days ago.
@Raunaksingh100, you can check the fix at the WeCount dev deploy.

@cindyli  what about this link https://wecount.inclusivedesign.ca/
there is still h1 problem

@Raunaksingh100 what you pointed to is the production site that will only be updated at production releases. At this point, the fix for #322 has been merged into the dev branch and is waiting for the next 2.2 release, which hopefully will happen soon.


Document does not appear near cursor at Vim Plugin

Document preview appears in a different buffer not as a popup window near the cursor as it used to be. However I can't recall any changes I made in Kite/plugin settings, therefore can't suggest a way to replicate. Is there a way to make it work Documentation as a popup window in Vim?
I am attaching the screenshot.

Ohh my mistake. Just added set completeopt-=preview to my .vimrc and it worked.


pubKeyCredParams field not properly functioning w/ non ES256 Algos on register

Describe the issue
Hi folks, I'm currently trying to register a new passkey with my webapp. Specifically, I'm trying to register a passkey that uses either RS256 -257, or EDDSA -8 (in fact, any deterministic signature scheme will work), however the application bugs out when I try to use either of these. It seems to work fine when using ES256 however.
I'm currently trying to set up the passkey either through my browser (Chrome or Firefox) or through iCloud Keychain, none of the above seem to work (nor my yubikey). From docs online it seems like these algorithms should be supported, however I haven't been able to find an explicit confirmation of this.
I'm trying to figure out if it's my implementation or lack of support on the browser/ authenticator.
Thanks!
Reproduction Steps
I'm using the generic options blob, but specifically also including a supportedAlgorithmIDs: [-8], field. This causes the browser (i.e. authenticator?) to fail to create a new passkey.
Expected behavior
To be able to successfully generate a passkey under the specified signing alg.
Dependencies

OS: macOS 14.1.1
Browser: Chrome Version 120.0.6099.109 (Official Build) (arm64)

I'm trying to figure out if it's my implementation or lack of support on the browser/ authenticator.

Anecdotally almost everything supports ES256. It's the authenticators that support RS256 and Ed25519 that are the exception. I'm all but certain your issues are related to the omission of -7 from supportedAlgorithmIDs.
This probably isn't a satisfactory answer for you given your constraint that you only use "any deterministic signature scheme". However it's the reality of WebAuthn; the only way to really change this state of things is to advocate Google, Apple, and others for Ed25519 support. There's nothing I can really do at the library level to fix this issue if the authenticators don't support -8 in the first place...

Yeah, that's what I figured. Totally understand that this isn't an issue with the library, just wanted to get a direct answer on whether Chrome/ keychain support deterministic algs and this seemed the most efficient channel. It's a shame, but understandable. Thanks for the prompt response!


App crash at startup

seeing this crash :
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/protocol/HttpRequestExecutor;
       at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:695)
       at com.github.tomakehurst.wiremock.http.HttpClientFactory.createClient(HttpClientFactory.java:76)
       at com.github.tomakehurst.wiremock.http.ProxyResponseRenderer.<init>(ProxyResponseRenderer.java:58)
       at com.github.tomakehurst.wiremock.core.WireMockApp.buildStubRequestHandler(WireMockApp.java:131)
       at com.github.tomakehurst.wiremock.WireMockServer.<init>(WireMockServer.java:73)
       at com.handstandsam.shoppingapp.mockaccount.Stubberator.<init>(Stubberator.kt:26)
       at com.handstandsam.shoppingapp.network.MockNetworkManager.init(MockNetworkManager.kt:20)
       at com.handstandsam.shoppingapp.network.MockNetworkManager.<init>(MockNetworkManager.kt:40)
       at com.handstandsam.shoppingapp.ServerDimensionKt.serverDimensionNetworkGraph(ServerDimension.kt:18)
       at com.handstandsam.shoppingapp.MyApplication$appGraph$2.invoke(MyApplication.kt:13)
       at com.handstandsam.shoppingapp.MyApplication$appGraph$2.invoke(Unknown Source:0)
       at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
       at com.handstandsam.shoppingapp.MyApplication.getAppGraph(MyApplication.kt:10)
       at com.handstandsam.shoppingapp.MyApplication.onCreate(MyApplication.kt:19)
       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)

I am also seeing the same thing. After updating dependencies to run on the latest version Android Studio (build tools to gradle:4.2.0-beta02) and selecting the build variant to use the mockserverDebug, this is the error I see. I also see others having this issue in the comments for recent WireMock posts, such as here: https://medium.com/mindorks/efficient-android-testing-using-wiremock-and-espresso-cf2d7b7c735f.

Thanks, you can use the inmemory flavor instead and it should work.  I'll probably replace the wiremock flavor.  Sorry!

I just removed WireMock from the app and am now using MockWebServer https://github.com/handstandsam/ShoppingApp/pull/33

Sam! Love the tool. MockWebServer would be the solution if we didn't use a 3rd party client. Until we can completely use regular okhttp/retrofit clients WireMock works great.


Parent height not updating when i'm using pymChild.sendHeight()

Hi,
I have an application which exists inside another application that's written by another company. We are both using pym to resize their iframe solution dependent on my content size. A lot of my content is loading with ajax so when the height is set some of the content hasn't finished loading yet.
This cuts my content off since the parent height already is set when my ajax lists are loading. I try to use pymChild.sendHeight() but the height of the parent is not updating. When i debug and try the sendHeight function in the console the correct height value of the child is returned but still the parent height is'nt updating.
As far as i can see all the code that's needed is in place and the script is working on some of the pages where content is'nt loaded via ajax.
Any ideas?

Hi @Brynskog,
There's a render callback on the pym child side that can be used for this kind of scenario, you should use that render callback to launch all your ajax loading and when you know the loading has ended then invoke the pym.sendHeight().
function render(width) {
    // Load the child page using Ajax and when that is done invoke:
    pymChild.sendHeight();
}

var pymChild = new pym.Child({ renderCallback: render });

Hi @jjelosua ,
Thank you but unfortunately this does not work for me. But it might be something else causing it. When i look at my pymChild in the debugger i get null or undefined for everything that has to do with the parent, for ex. "parentWidth", "parentUrl", etc..
Shouldn't there be some sort of connection to the parent that i can see in this stage?
Regards,
Simon

Hi @Brynskog, So the pymChild.sendHeight() never changes the height of the parent? Then it seems that the problem might be with the configuration on the parent side of things, can you provide a simple example of the issue that we can take a look at. Is the parent creating the iFrame from a container with an id? The iFrame needs to be created by Pym.js in order for the communication to happen, if you are not seeing parentWidth or parentUrl it can point us to the idea that the iFrame is not being generated by Pym and if that is the case the communication will not happen....again a code example would be needed for us to try to help you. Can you send pym's initialization code on the parent page?

Hi @jjelosua ,
Thank you for the support. I've let this go for the moment since the parent isn't part of my company's code but part of another company. We are only providing the child part and i think i've implemented things correctly. The problem only occurs in the test env. and not production so we actually closed the error report.
Regards
Simon

The only workaround or hack I found is
create a hidden button with class update_height and add an event on click sendHeight because no matter what you do renderCallback does not work.
<script>

			function update_height(e) {
			    pymChild.sendHeight();
			}

			$('.update_height').on('click', update_height);

			var pymChild = new pym.Child();

			setTimeout(update_height, 500);

    </script>


Configuration Sync - Initial commit into the OPNsense-plugins repo

Submitting plugin named "Configuration Sync" which, as per the README

Configuration Sync is a tool designed to one-way synchronize the system configuration files from the OPNsense host to S3 compatible object data storage in close to real time. While the tool has the effect of being a great configuration backup tool the intent is to provide a tool that stores the OPNsense system configuration in a location that is readily addressable using DevOps automation tools such as Terraform.
The ability to start an OPNsense instance using automation tools means OPNsense becomes a first-class choice for building and managing network infrastructure within cloud-compute providers.

The use case I am seeking to address here is the requirement to always (as best possible) have the latest configuration file stored in S3 so that an OPNsense instance can be destroyed without (much) concern for the system state and then re-create it using an automation tool (such as Terraform) - I acknowledge there is still an open question on how to deal with required plugins.
I'm left wondering if we could be so very bold enough to propose a new top-level menu called "Cloud" under which this plugin might exist along with other components that assist in making OPNsense work in such environments live - as part of another project (see our verbnetworks git repo) we have tools to generate images suitable for AWS and Digital Ocean, these tools rely on syshook scripts to tweak the config.xml files at boot to make the system work in such environments - these tools should perhaps also exist as plugins and would "fit" nicely under such a "Cloud" top-level menu.
Feedback, suggestions all welcome.

Also - this plugin requires commit 68f0559a0058b7aa49415662c1c3e67f478ed21a else the responseMsg dialogue will not update when pressing the "Test Credentials" button with a message stuck at "Running tests..."

Hi @ndejong,
opnsense/core@68f0559 will be in 18.7.1. I'll find a bit of review time this week.
Cheers,
Franco

I can already see some dead code and a ControllerUtils.php file that needs to be tidied up within the UI controller  - happy enough to receive basic high-level feedback to start with before we get into the nut-n-bolts if that helps getting started with this one - N

Have addressed the first round, really appreciate the time and attention @fabianfrz
Two things that require some assistance with:-

the item "why not pull it in as a dependency?"
the anonymous function wrapping the change() callback event.

@fichtner the PHP / JS is ok, you can handle the rest.

Hi @fichtner - anything I can do to help this along for you?

@ndejong We should work on inclusion for one plugin first... this one first or #818 ? This one has one third fewer lines to review and is older in submission date.

@ndejong We should work on inclusion for one plugin first... this one first or #818 ? This one has one third fewer lines to review and is older in submission date.

Lets work on this #777 first as it is easier - the other has a range of bugs and issues that I've discovered since the last push and perhaps need some guidance on, particularly around logging - I'll follow that up on that ticket.
WRT namespaces: you've mentioned namespace in the other project and I expect the same comments apply here - Earlier in the year when I started this plugin and after reading the samples and dev docs it was still an open question for me that felt a bit weird so I emailed project@opnsense about it - response was that other namespaces where okay but many people just chose the default OPNsense - perhaps a paragraph in the dev docs would help clear this up.
No problem if you'd like me to revise and have this migrated into the OPNsense namespace - let me know either way.


[MaxLineLength] - Sort the returned elements by text offset

Fixes: https://github.com/detekt/detekt/issues/7555

Warnings

:warning:
This PR is approved with no milestone set. If merged, it won't appear in the detekt release notes.

  Generated by :no_entry_sign: dangerJS against 8e3eebc8c1be3510846f0b807786fffe285aa3d6


TIM-65 feat(notification): add notification

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#135
#134  👈
#133
#132
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @xdjeremy and the rest of your teammates on  Graphite


Fill out notofonts profile with checks from notolint

Description
The nototools repository is going away soon. Because of this, we want to (finally) move all the checks from notolint into the notofonts profile. This implements the salient ones.
To Do

[x] update CHANGELOG.md
[x] wait for all checks to pass
[ ] request a review

I agree with Felipe, but actually an increasing amount of Noto fonts have
multiple copyright holders so we should move them all to the gf standard
notice (Project Authors)

oh! All these new checks are currently lacking code-tests. What's your plan, @simoncozens?

What's your plan, @simoncozens?

Plan? I'm just making stuff up as I go along, as usual. :-) I'll get some tests added.

fair enough ;-)

I will merge this because it is useful, but please consider sending a followup PR including code-tests for these newly added checks.

Thank you! I did start working on tests today but other things took priority. Will try to finish up by end of week.

cool! thanks


Add Bubbleprof text to io recommendation

Now that Clinic Bubbleprof is available, we can recommend it in Doctor. This is a starting point, I'm expecting some suggested versions.
New text as shown in the UI:

Let's wait @dave anyway.

@davidmarkclements Couldn't contact you today, presume you're in SF, we're merging with the above changes, ping me if there's anything more you want changed and I'll open a new PR for it


Add sender accounts secrets

🚀 Feature Proposal
Add a sender account similar to the old script:
https://github.com/cisagov/pca-teamserver-aws/blob/2e71ff582a5b933485280e86ebcf54e5eb00a67d/packer/ansible/roles/server_setup/files/ServerSetup.sh#L663
Motivation
This is the account that is used during operations to receive return email.  We might want this to be a configurable list.
Example
At server configuration time, the sender accounts are created with the secrets defined.
We should see how often these are changed during an assessment. (if at all)
Pitch
It replicates previous functionality.

Added in v0.0.2


Building Failure

I was buiding this for the cuda backend using cmake
Using command: cmake .. -DCMAKE_CXX_COMPILER=/opt/intel/oneapi/compiler/latest/linux/bin-llvm/clang++ \          -DCMAKE_C_COMPILER=/opt/intel/oneapi/compiler/latest/linux/bin-llvm/clang \          -DENABLE_CUBLAS_BACKEND=True  \          -DENABLE_CUSOLVER_BACKEND=True \          -DENABLE_CURAND_BACKEND=True   \          -DENABLE_NETLIB_BACKEND=False   \          -DREF_BLAS_ROOT=/usr/local
Cmake report the problem
Could NOT find LAPACKE (missing: CBLAS64_file)
I have already installed the LAPACKE using cmake into both /local/usr and $HOME/.local/lapack/
Someone have ideas about how to solve this? Thanks

I have slove this problem by buidling the LAPACKET with BUILD_INDEX64=ON and setting BUILD_SHARED_LIBS=ON and CBLAS= ON

Hi @Lang0722,
Some pointers that might help for the future:

you can select which domains to use with the TARGET_DOMAINS variable, this is a list of domains separated by ;. The options are blas, dft, rng, and lapack. I think you want -DTARGET_DOMAINS="blas;lapack".
I don't think you need REF_BLAS_ROOT unless you are contributing to oneMKL
ENABLE_MKLGPU_BACKEND and ENABLE_MKLCPU_BACKEND are enabled by default, so if you only want the cuda libraries then you can turn those off.  It does sound like you have the libraries though.

Without setting the TARGET_DOMAINS, and leaving ENABLE_MKLGPU_BACKEND/ENABLE_MKLCPU_BACKEND, all the Intel libraries are enabled so that might have been causing your issue.


[gaussian processes] define learning goals in GP chapter

currently, only placeholders on title page

 IC week #0


Increase service timeout to 120s, add execution state UNKNOWN

Proposed change

This PR is trying to cope with some longer standing issues regarding service execution:

Increase default timeout to 120 seconds (as per https://github.com/bimmerconnected/bimmer_connected/issues/190)
Add an UNKOWN execution state if we don't get a valid API response that does not break the loop (https://github.com/home-assistant/core/issues/34776)

Type of change

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (which adds functionality to this library)
[ ] Breaking change (fix/feature causing existing functionality to break)
[ ] Code quality improvements to existing code or addition of tests

Additional information

This PR fixes or closes issue: fixes #
This PR is related to issue: https://github.com/bimmerconnected/bimmer_connected/issues/190, https://github.com/home-assistant/core/issues/34776

Checklist

[x] The code change is tested and works locally.
[x] Tests have been added to verify that the new code works.

Well, at least I was VERY consistent 🤣 Thanks!


Strange characters aren't transmitted properly

As an example, echoing ’ returns <<195, 162, 194, 128, 194, 153>> instead of ’.

I've pushed a branch #14 to this fork with a test illustrating the problem.

I've discovered that adding :binary to the options given to Port.open fixes this, but then breaks the test where a Buffer is returned from node.


minor tweak so when you dont have vagrant plugins you know what plugi…

…ns you need to install

@sqorbrody Thank you for your contribution!


Android build fails on 5.0.0+4 with 'Could not find method jvmToolchain'

Hey,
when building for android I'm getting the following errors:
A problem occurred evaluating project ':biometric_storage'.
> Could not find method jvmToolchain() for arguments [17] on extension 'kotlin' of type org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension.

A problem occurred configuring project ':biometric_storage'.
> Failed to notify project evaluation listener.
   > Cannot invoke method substring() on null object
   > compileSdkVersion is not specified. Please add it to build.gradle

I'm quite new to android, gradle and kotlin.
I think somewhere in my gradle config I have to wrong versions set.
I'm using
Flutter version 3.16.5
android-34, build-tools 34.0.0
OpenJDK 17.0.7+0-17.0.7b1000.6-10550314
gradle-7.5
ext.kotlin_version = '1.7.10'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
id "com.android.application" version "7.3.0" apply false

To be honest I'm a bit confused about all of the versions of the different tools. It looks like that the biometric_storage plugin uses gradle 8.1. So does that mean I have to upgrade to that version? Which JDK and android-kotlin-plugin version should be used then?

After removing biometric_storage as a dependency my builds work just fine.
So instead I'm using a combination of local_auth and flutter_secure_storage as this package is broken (at least for me).

my temporary fix is to remove
kotlin {
jvmToolchain(17)
}
from the libary's Gradle file at /Users/"yourUser"/.pub-cache/hosted/pub.dev/biometric_storage-5.0.0+4/android/build.gradle

I don't have explicitly set
kotlin { jvmToolchain(17) }
Yet i get the same error, any news onto why this happens?

it's set in the library by default for you.

upgrade kotlin version and build grande works for me, probably just kotlin_version is enough
from
ext.kotlin_version = '1.7.x'
to
ext.kotlin_version = '1.8.20'

I update android/build.gradle
buildscript {
ext.kotlin_version = '1.9.22' //use latest version
}
but same issue. Any help

I have the same error, any fix?

That is a major issue - we can't use the latest gradle. Any proper solution?


Reactivity of wallet state

In the client package we expose methods that frontends will use to connect to our wallet. After working with the cosmos-kit, think we should consider some enhancements.
cosmos-kit library
Cosmology's cosmos-kit is a standard in cosmos for connecting to wallets. They have a library managing the core logic and packages (such as @cosmos-kit/react) that provide helpers for various frontend frameworks. For our case, we are using the react package to access react hooks such as useWallet which gives us access to the user's wallet state:
import { useWallet } from '@cosmos-kit/react';
const { status } = useWallet()

switch (status) {
  case WalletStatus.Disconnected:
    return <WalletButtonBase buttonText='Connect Wallet' onClick={onClickConnect} />;
  case WalletStatus.Connecting:
    return ...
  case WalletStatus.Connected:
   return ...
  case WalletStatus.Error:
   return ...
}

The hook is reactive. So whenever the user's wallet state changes, the UI automatically reflects the correct state.
Their API that they expose in WalletContext is helpful to review as well. It has wallet and chain state:
export interface ChainWalletContext {
  chain: Chain;
  assets: AssetList | undefined;
  wallet: Wallet;
  logoUrl: string | undefined;
   ...
}

Wallet connection status:
export interface ChainWalletContext {
   ...
  isWalletDisconnected: boolean;
  isWalletConnecting: boolean;
  isWalletConnected: boolean;
  isWalletRejected: boolean;
  isWalletNotExist: boolean;
  isWalletError: boolean;
   ...
}

and actions the user can take
export interface ChainWalletContext {
   ...
  connect: () => Promise<void>;
  disconnect: (options?: DisconnectOptions) => Promise<void>;
   ...
}

API change recommendations for us

Enclose our separately exported client functions into a single object (that implements an interface) that gets exported. This was also discussed here: https://github.com/penumbra-zone/web/issues/825.
Create a new WalletContext interface that exposes a wallet state field akin to cosmos-kit plus the functions from the interface above.
Build a new method that allows to subscribe to wallet state and get live updates.
Write a usePenumbraWallet() hook that makes use of this new possibility for reactivity

export const usePenumbraWallet = () => {
  const [walletState, setWalletState] = useState();

  useEffect(() => {
    PenumbraClient.subscribe(state => setWalletState(state));
  });

  // And other methods from the client
  return { walletState };
};

Hey @turbocrime and @grod220, wanted to discuss the API of the client library and touch both #1093, #825, #340 and #341 – all issues describe the ways to connect to the extensions and consume data from the blockchain. I read the related issues and did my research with a goal to decompose the issue. So, the following read aims to solve this user pain:

I, as a user of Penumbra, want to connect my dApp to my third-party wallet and perform transactions and query the blockchain.

It does not explain how users should create their wallets. I'll assume their wallets are Prax's twins.
API inspiration
I am highly inspired by the Viem library for Ethereum. In my opinion, it has one of the best DX in the field by having a notion of clients:
import { createPublicClient, createWalletClient, http, custom } from 'viem';
import { mainnet } from 'viem/chains';

// Public client – provides the access to RPC for Ethereum blockchain
const publicClient = createPublicClient({
  chain: mainnet,
  transport: http()
});

const balance = await publicClient.getBalance({
  address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
});

// Wallet client – allows sending transactions on behalf on the connected user
const client = createWalletClient({
  chain: mainnet,
  transport: custom(window.ethereum!)
});

const hash = await client.sendTransaction({
  account: address,
  to: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
  value: parseEther('0.001')
})

I am sure we could make connection to Penumbra and its wallets similar. The only difference is that Penumbra won't have a Public client – all actions and even queries must be made by the user connected to wallet.
Next API concepts
Here are the main concepts that I think we need for the comfortable dApp development by third-parties:

Penumbra wallets should follow the EIP-6963 Ethereum standard for wallets discovery (demo here). Right now we are writing into the window[Symbol('penumbra')] but this creates race conditions between wallets. The EIP-6963 would solve this problem.
All services like ViewService, StakeService, DexService, etc., will be unified into one interface within this API. A field supportedServices should be added to the wallet configuration, so it would instantly throw errors in case of any non-supported apis.

With this in mind, I propose the following API:
import { createClient } from '@penumbra-zone/client';

// Calling `createClient` starts listening to "eip6963:announceProvider" event
// but we should rename it to not confuse with Ethereum
const client = createClient();

// Returns the list of discovered wallets. Probably a function `onWalletDiscovered` should also be
// created to subscribe to new wallets sending events – this way users won't have to reload the page to see them
const wallets = client.getInjectedWallets();

// Connect to any of discovered injected wallets
// Additionally, `client.onConnectionChange` could be called to monitor for the connection
const wallet = client.connect(wallets[0]);

// Consume the `ViewService`
const { address } = await client.view.addressByIndex({});

I believe such API would enhance Penumbra adoption and bring many projects connected to Penumbra wallets and even blockchain newcomers could easily create their first app in the private blockchain!
What do you think about this API? Maybe I misunderstood some theory behind the wallets or it is just irrelevant – please hit me with your opinion!

glancing over this. interesting it was published around last year when i was initially working on the wallet injection, would have been cool to read then!
some of the conflict conditions described in the article don't exist in our implementation and ive prototyped another design https://github.com/penumbra-zone/web/pull/1145 with some other benefits/considerations
i think specifically adopting an eth standard is not something that works. penumbra is expected to integrate more with the cosmos ecosystem
will look at this more soon but i think significant changes have been declined by @grod220 as not a current priority

the transport is capable of type-agnostic transmission but currently the developer is expected to init with the message types they expect to handle, and connect to an extension that is aware of those types

Helpful writeup @VanishMax. Interesting to see references in the industry for a similar problem space. Timing-wise, for now it's best to be forward-compatible (ish) to the current injected provider interface. However, it may be good to capture this in another issue so it doesn't get lost.
I'd say the main effort of this issue is to ensure consumers are able to create reactive interfaces. At the moment, dapps cannot for example create a "Connect" button that listens to the current state of the wallet. It has to re-request/poll to get the latest state.


Jwoo/ios auto priority update

fixes issue #3192
when there are two columns, and both have width "auto", the last column stretches in other renderers.
This PR adjust hugging priories to mimic the behavior.
How verified:
verified with tests cards given by customer and existing cards.
Microsoft Reviewers: Open in CodeFlow

@almedina-ms can you take a stab at resolving the conflicts and merging this in since @nesalang is OOF this week?  Tx


compile fail on mac

panic: unexpected lsof field: f in "7"

On Sun, Jul 21, 2019 at 05:21:26AM -0700, jow blew wrote:

panic: unexpected lsof field: f in "7"

Hi,
I don't have access to a mac, so I can't fix this without help.

Getting the same error

lsof.go
add these code in line70
	case 'f':
		/*
		  lsof:	ID    field description
			 a    access: r = read; w = write; u = read/write
			 c    command name
			 C    file struct share count
			 d    device character code
			 D    major/minor device number as 0x<hex>
			 f    file descriptor (always selected)

			mac platform ,lsof version revision: 4.89, file descriptor (always selected)
		 */
		continue

fixed code , see
https://github.com/gaoguofu/procspy/pull/1/files/3965192f94c083f4fd1a42dd58ef93d486803938


Bump libgit2 to 1.4.0

Closes #804.

Would it be possible to bump the version probe here?

@ehuss @alexcrichton yeah lets bump that before we mark a release please

we probably need a release checklist in the readme


Issue 3 create custom user model

Change Summary
Created basic user models
Change Form
Fill this up (NA if not available). If a certain criteria is not met, can you please give a reason.

[x] The pull request title has an issue number
[x] The change works by "Smoke testing" or quick testing
[ ] The change has tests
[x] The change has documentation

Related issue

Resolve #3

There are a couple of other things that could reasonably be put under the scope of this issue, namely adding some additional fields (gender identity and indigenous status per a recent update from the client) and writing some tests for this model. But I think we want this model in main ASAP, so I think we can leave implementing those for a later issue.

All requested changes have been made. Not sure creating an app just for users is appropriate considering that no other systems are currently intended to interact with these user accounts. Probably worth discussing with the client.

I'm going to make an exception and fix the requested changes myself since it's a high priority to get this issue over with and it's my fault for not noticing earlier the things I most recently requested changes for for.

You beat me to it by 3 minutes!

You beat me to it by 3 minutes!

Haha, turns out I could have left it to you then!


Spec tests merging native tests.

@c0s Can you review? Some of these might change dependent on how our meeting goes next Tuesday but rough outline. Thanks!

It is all looks good (I didn't test it though). @jctanner might be a good person to look at it as he's working on the similar thing.
+1 from me


Increase max ops

Breaking the original PR (#87) into a new one on a separate branch with a fix for the tests.

Can one of the admins verify this patch?

@b0d0nne11 I am fine with that. I have never actually seen this exception in production. what do you think?

Same here. Sounds fine to me.

@mhahnenberg please rebase, then I will merge it.

Thank you!


Remove legacy AES which is no longer needed (as far as I know)

Ok it's needed by the master branch of miTLS. Sigh. I can make sure it at least only exists in the dist/mitls folder

Ok it's needed by the master branch of miTLS. Sigh. I can make sure it at least only exists in the dist/mitls folder

SGTM! Thanks Jonathan!

Thanks. Do you and Tahina mind giving me a review of this?

Thanks Tahina! @beurdouche the next nightly build will take care of removing Hacl_AES everywhere except in dist/mitls


Produced draft is read only even original object is writable

🐛 Bug Report
When trying to produce a new state from the writable object the draft becomes read-only.
To Reproduce
You can see it clearly in codesandbox I attached.
Expected behavior
Generated draft should be writable as an original object.
Link to repro
https://codesandbox.io/embed/long-wind-yo2ow
Environment
    "immer": "3.2.0",
    "react": "16.8.4",
    "react-dom": "16.8.4",
    "react-scripts": "2.1.3"

Thanks for looking into it.

Note that the goal of this whole project is to work with immutable data structures, so if you need it to be mutable, Immer might not what you should be looking for.
Anyway, for changing this behavior, see: https://github.com/immerjs/immer#auto-freezing

P.S.: please don't assign bug labels yourself, the idea is that maintainers decide on that ;-)

@Joozty apologies, spoke too soon, it was applied automatically by the issue template


[BUG] test_map_scalars_supported_key_types fails with DATAGEN_SEED=1698940723

Local repro:
SPARK_RAPIDS_TEST_DATAGEN_SEED=1698940723 ./run_pyspark_from_build.sh -k test_map_scalars_supported_key_types\ and\ Map\ and\ Decimal\ and\ not_null

[2023-11-02T17:07:56.061Z] ----------------------------- Captured stdout call -----------------------------
[2023-11-02T17:07:56.061Z] ### CPU RUN ###
[2023-11-02T17:07:56.061Z] ^[[31m^[[1m_ test_map_scalars_supported_key_types[Map(not_null)(Decimal(not_null)(20,2),Decimal(not_null)(20,2))] _^[[0m
[2023-11-02T17:07:56.061Z] [gw4] linux -- Python 3.8.10 /usr/bin/python
[2023-11-02T17:07:56.061Z]
[2023-11-02T17:07:56.061Z] data_gen = Map(not_null)(Decimal(not_null)(20,2),Decimal(not_null)(20,2))
[2023-11-02T17:07:56.061Z]
[2023-11-02T17:07:56.061Z]     @allow_non_gpu('WindowLocalExec')
[2023-11-02T17:07:56.061Z]     @pytest.mark.parametrize('data_gen', supported_key_map_gens, ids=idfn)
[2023-11-02T17:07:56.061Z]     def test_map_scalars_supported_key_types(data_gen):
[2023-11-02T17:07:56.061Z]         key_gen = data_gen._key_gen
[2023-11-02T17:07:56.061Z]         def query_map_scalar(spark):
[2023-11-02T17:07:56.061Z]             key_df = gen_df(spark, [("key", key_gen)], length=100).orderBy(col("key"))\
[2023-11-02T17:07:56.061Z]                 .select(col("key"),
[2023-11-02T17:07:56.061Z]                         row_number().over(Window().orderBy(col('key')))\
[2023-11-02T17:07:56.061Z]                             .alias("row_num"))
[2023-11-02T17:07:56.061Z]             key_df.select(col("key").alias("key_at_ix"))\
[2023-11-02T17:07:56.061Z]                 .where(col("row_num") == 5)\
[2023-11-02T17:07:56.061Z]                 .repartition(100)\
[2023-11-02T17:07:56.061Z]                 .createOrReplaceTempView("single_key_tbl")
[2023-11-02T17:07:56.061Z]             key_df.select(col("key").alias("key_at_ix_next")) \
[2023-11-02T17:07:56.061Z]                 .where(col("row_num") == 6) \
[2023-11-02T17:07:56.061Z]                 .repartition(100) \
[2023-11-02T17:07:56.061Z]                 .createOrReplaceTempView("single_key_tbl_next")
[2023-11-02T17:07:56.061Z]             # There will be a single row in single_key_tbl (the row that matched key_ix).
[2023-11-02T17:07:56.061Z]             # We repartition this table to create several empty tables to test empty partitions,
[2023-11-02T17:07:56.061Z]             # and also because the window operation put everything into a one partition prior.
[2023-11-02T17:07:56.061Z]             # Because this is a single key, first(ignore_nulls = true) will be deterministic.
[2023-11-02T17:07:56.061Z]             return spark.sql(
[2023-11-02T17:07:56.061Z]                 "select key_at_ix, " +
[2023-11-02T17:07:56.061Z]                 "       (select first(map(key_at_ix, 'value'), true) " +
[2023-11-02T17:07:56.061Z]                 "        from single_key_tbl)[key_at_ix], " +
[2023-11-02T17:07:56.061Z]                 # this one is on purpose using `key_at_ix` to guarantee we won't match the key
[2023-11-02T17:07:56.061Z]                 "       (select first(map(key_at_ix_next, 'value'), true) " +
[2023-11-02T17:07:56.061Z]                 "        from single_key_tbl_next)[key_at_ix] " +
[2023-11-02T17:07:56.061Z]                 "from single_key_tbl")
[2023-11-02T17:07:56.061Z] >       assert_cpu_and_gpu_are_equal_collect_with_capture(
[2023-11-02T17:07:56.061Z]             query_map_scalar,
[2023-11-02T17:07:56.061Z]             # check that GpuGetMapValue wasn't optimized out
[2023-11-02T17:07:56.061Z]             exist_classes="GpuGetMapValue",
[2023-11-02T17:07:56.061Z]             conf = {"spark.rapids.sql.explain": "NONE"})
[2023-11-02T17:07:56.061Z]
[2023-11-02T17:07:56.061Z] ^[[1m^[[31m../../src/main/python/map_test.py^[[0m:217:
[2023-11-02T17:07:56.061Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2023-11-02T17:07:56.061Z] ^[[1m^[[31m../../src/main/python/asserts.py^[[0m:402: in assert_cpu_and_gpu_are_equal_collect_with_capture
[2023-11-02T17:07:56.061Z]     assert_equal(from_cpu, from_gpu)
[2023-11-02T17:07:56.061Z] ^[[1m^[[31m../../src/main/python/asserts.py^[[0m:107: in assert_equal
[2023-11-02T17:07:56.061Z]     _assert_equal(cpu, gpu, float_check=get_float_check(), path=[])
[2023-11-02T17:07:56.061Z] ^[[1m^[[31m../../src/main/python/asserts.py^[[0m:43: in _assert_equal
[2023-11-02T17:07:56.061Z]     _assert_equal(cpu[index], gpu[index], float_check, path + [index])
[2023-11-02T17:07:56.061Z] ^[[1m^[[31m../../src/main/python/asserts.py^[[0m:36: in _assert_equal
[2023-11-02T17:07:56.061Z]     _assert_equal(cpu[field], gpu[field], float_check, path + [field])
[2023-11-02T17:07:56.061Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2023-11-02T17:07:56.061Z]
[2023-11-02T17:07:56.061Z] cpu = Decimal('-945522642860370770.47'), gpu = Decimal('-924221809271194973.57')
[2023-11-02T17:07:56.061Z] float_check = <function get_float_check.<locals>.<lambda> at 0x7f27dfa5ca60>
[2023-11-02T17:07:56.061Z] path = [0, 'key_at_ix']
[2023-11-02T17:07:56.061Z]
[2023-11-02T17:07:56.061Z]     def _assert_equal(cpu, gpu, float_check, path):
[2023-11-02T17:07:56.061Z]         t = type(cpu)
[2023-11-02T17:07:56.061Z]         if (t is Row):
[2023-11-02T17:07:56.061Z]             assert len(cpu) == len(gpu), "CPU and GPU row have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
[2023-11-02T17:07:56.061Z]             if hasattr(cpu, "__fields__") and hasattr(gpu, "__fields__"):
[2023-11-02T17:07:56.061Z]                 assert cpu.__fields__ == gpu.__fields__, "CPU and GPU row have different fields at {} CPU: {} GPU: {}".format(path, cpu.__fields__, gpu.__fields__)
[2023-11-02T17:07:56.061Z]                 for field in cpu.__fields__:
[2023-11-02T17:07:56.061Z]                     _assert_equal(cpu[field], gpu[field], float_check, path + [field])
[2023-11-02T17:07:56.061Z]             else:
[2023-11-02T17:07:56.061Z]                 for index in range(len(cpu)):
[2023-11-02T17:07:56.061Z]                     _assert_equal(cpu[index], gpu[index], float_check, path + [index])
[2023-11-02T17:07:56.061Z]         elif (t is list):
[2023-11-02T17:07:56.061Z]             assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
[2023-11-02T17:07:56.061Z]             for index in range(len(cpu)):
[2023-11-02T17:07:56.061Z]                 _assert_equal(cpu[index], gpu[index], float_check, path + [index])
[2023-11-02T17:07:56.061Z]         elif (t is tuple):
[2023-11-02T17:07:56.061Z]             assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
[2023-11-02T17:07:56.061Z]             for index in range(len(cpu)):
[2023-11-02T17:07:56.061Z]                 _assert_equal(cpu[index], gpu[index], float_check, path + [index])
[2023-11-02T17:07:56.061Z]         elif (t is pytypes.GeneratorType):
[2023-11-02T17:07:56.061Z]             index = 0
[2023-11-02T17:07:56.061Z]             # generator has no zip :( so we have to do this the hard way
[2023-11-02T17:07:56.061Z]             done = False
[2023-11-02T17:07:56.061Z]             while not done:
[2023-11-02T17:07:56.061Z]                 sub_cpu = None
[2023-11-02T17:07:56.061Z]                 sub_gpu = None
[2023-11-02T17:07:56.062Z]                 try:
[2023-11-02T17:07:56.062Z]                     sub_cpu = next(cpu)
[2023-11-02T17:07:56.062Z]                 except StopIteration:
[2023-11-02T17:07:56.062Z]                     done = True
[2023-11-02T17:07:56.062Z]
[2023-11-02T17:07:56.062Z]                 try:
[2023-11-02T17:07:56.062Z]                     sub_gpu = next(gpu)
[2023-11-02T17:07:56.062Z]                 except StopIteration:
[2023-11-02T17:07:56.062Z]                     done = True
[2023-11-02T17:07:56.062Z]
[2023-11-02T17:07:56.062Z]                 if done:
[2023-11-02T17:07:56.062Z]                     assert sub_cpu == sub_gpu and sub_cpu == None, "CPU and GPU generators have different lengths at {}".format(path)
[2023-11-02T17:07:56.062Z]                 else:
[2023-11-02T17:07:56.062Z]                     _assert_equal(sub_cpu, sub_gpu, float_check, path + [index])
[2023-11-02T17:07:56.062Z]
[2023-11-02T17:07:56.062Z]                 index = index + 1
[2023-11-02T17:07:56.062Z]         elif (t is dict):
[2023-11-02T17:07:56.062Z]             # The order of key/values is not guaranteed in python dicts, nor are they guaranteed by Spark
[2023-11-02T17:07:56.062Z]             # so sort the items to do our best with ignoring the order of dicts
[2023-11-02T17:07:56.062Z]             cpu_items = list(cpu.items()).sort(key=_RowCmp)
[2023-11-02T17:07:56.062Z]             gpu_items = list(gpu.items()).sort(key=_RowCmp)
[2023-11-02T17:07:56.062Z]             _assert_equal(cpu_items, gpu_items, float_check, path + ["map"])
[2023-11-02T17:07:56.062Z]         elif (t is int):
[2023-11-02T17:07:56.062Z]             assert cpu == gpu, "GPU and CPU int values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]         elif (t is float):
[2023-11-02T17:07:56.062Z]             if (math.isnan(cpu)):
[2023-11-02T17:07:56.062Z]                 assert math.isnan(gpu), "GPU and CPU float values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]             else:
[2023-11-02T17:07:56.062Z]                 assert float_check(cpu, gpu), "GPU and CPU float values are different {}".format(path)
[2023-11-02T17:07:56.062Z]         elif isinstance(cpu, str):
[2023-11-02T17:07:56.062Z]             assert cpu == gpu, "GPU and CPU string values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]         elif isinstance(cpu, datetime):
[2023-11-02T17:07:56.062Z]             assert cpu == gpu, "GPU and CPU timestamp values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]         elif isinstance(cpu, date):
[2023-11-02T17:07:56.062Z]             assert cpu == gpu, "GPU and CPU date values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]         elif isinstance(cpu, bool):
[2023-11-02T17:07:56.062Z]             assert cpu == gpu, "GPU and CPU boolean values are different at {}".format(path)
[2023-11-02T17:07:56.062Z]         elif isinstance(cpu, Decimal):
[2023-11-02T17:07:56.062Z] >           assert cpu == gpu, "GPU and CPU decimal values are different at {}".format(path)
[2023-11-02T17:07:56.062Z] ^[[1m^[[31mE           AssertionError: GPU and CPU decimal values are different at [0, 'key_at_ix']^[[0m
[2023-11-02T17:07:56.062Z]
[2023-11-02T17:07:56.062Z] ^[[1m^[[31m../../src/main/python/asserts.py^[[0m:93: AssertionError
[2023-11-02T17:07:56.062Z] ----------------------------- Captured stdout call -----------------------------
[2023-11-02T17:07:56.062Z] ### CPU RUN ###
[2023-11-02T17:07:56.062Z] ### GPU RUN ###
[2023-11-02T17:07:56.062Z] ### COLLECT: GPU TOOK 0.5741064548492432 CPU TOOK 0.5611119270324707 ###
[2023-11-02T17:07:56.062Z] --- CPU OUTPUT
[2023-11-02T17:07:56.062Z] +++ GPU OUTPUT
[2023-11-02T17:07:56.062Z] @@ -1 +1 @@
[2023-11-02T17:07:56.062Z] -Row(key_at_ix=Decimal('-945522642860370770.47'), scalarsubquery()[key_at_ix]='value', scalarsubquery()[key_at_ix]=None)
[2023-11-02T17:07:56.062Z] +Row(key_at_ix=Decimal('-924221809271194973.57'), scalarsubquery()[key_at_ix]='value', scalarsubquery()[key_at_ix]=None)

I would recommend trying this in CI with the xfail and the datagen-seed workaround removed.  Just to make sure that we haven't missed something.

Closing the loop here:
This is not a bug in spark-rapids or libcudf.  The problem is in Apache Spark:
https://issues.apache.org/jira/browse/SPARK-40089
Sorting of Decimals was busted in Spark versions prior to 3.4.
This test is now skipped on the error-prone Spark versions:
https://github.com/NVIDIA/spark-rapids/pull/9949


[MLS Spec change] Split LeafNode from KeyPackage (#575)

Description of the changes
As the title says. Result are two distinct structs for pre-publishing key material and populating leaf nodes in trees.
Link to the exact changes
https://github.com/mlswg/mls-protocol/pull/575

[x] #894
[x] #818
[ ] #893
[x] #968
[x] #1088

Tracking required changes

[x] Unambiguous signatures (#980)

Open items

[ ] High level API design
[x] Re-introduce caching of tree hashes
[ ] Avoiding excessive cloning of leaf nodes
[x] #1140
[x] Ensure sign/verify flows for leaf nodes is clean and safe
[x] #727
[x] #885
[x] Cleanup extensions
[x] Cleanup setting of lifetimes for leaf nodes.
[x] #1226

I'm closing this now that most of the work is done.
#893 is one open follow up spec change and there are a few things like API design we want to do, but that's either tracked separately or not a spec change.


Fix wrong behavior of Action Map Editor with non QWERTY layouts (Fix #52169)

This PR fixes #52169 issue.
Issue description:
With non QWERTY keyboard layouts, action keys assigned with non physical checkbox unchecked were wrong (if key position wasn't the same as QWERTY layout).
In game, the key that trigger the action wasn't the pressed key during configuration.
Identified cause:
Confusion in code between physical_keycode and keycode assignement in action map editor.
How this PR fixes the issue:
Instead of setting physical_keycode or keycode to KEY_NONE to determine if it's a physical key input or not, I've added a boolean in InputEventKey is_physical. keycode variables are no more set to KEY_NONE after beeing assigned. It's more clear and should prevent confusion.
I also change the tests InputEventKey.get_keycode()==0 by InputEventKey.is_physical_key()
I've added an extra info in the checkbock label to inform that key shown in map editor when physical is checked is based on QWERTY layout to clarify the way it works.
Result:

Key defined in Action map Editor works correctly in both mode (physical and normal mode) even on non QWERTY layouts.
Physical checkbox is more informative

I tested it, as currently (#52169), the input system is broken for non-qwerty keyboard.
I can confirm that the PR solves the issue and works now in both mode (normal & physical). However, this is a breaking change that will delete registered input if you saved them as physical if you open an "old" project because of the new boolean introduced. As so, if the fix is validated, this should be merged before the alpha at least.

As this PR is modifying InputEventKey which is quite core, we likely need a review from @reduz on it.

Thanks for the review @akien-mga . I've applied your changes.
I've also break the tooltip in two lines because it was very long. Hope it's ok :
https://github.com/jmb462/godot/blob/5264fa1213cfcc270f16b5a2ac6028909077c59f/editor/action_map_editor.cpp#L668-L669

I don't really think this is more clear, specially because in our context "physical key" means something else (the non remapped key). Additionally, this API can lead to an inconsistent state where user can create an event that is set as a physical key but contains no scancode, which will lead to worse confusion when trying to use the API. Maybe adding has_keycode() and has_unicode() methods in InputEventKey may make this less confusing.

~I don't really think this is more clear, specially because in our context "physical key" means something else (the non remapped key). Additionally, this API can lead to an inconsistent state where user can create an event that is set as a physical key but contains no scancode, which will lead to worse confusion when trying to use the API. Maybe adding has_keycode() and has_unicode() methods in InputEventKey may make this less confusing.~
Nevermind, I misunderstood the fix. I still do not understand the need for extra property, leaving aside clarity reasons I don't see how this issue could not be fixed without resorting to that.

Thanks for the review.
OK I can try a less impacting fix. I can fix the main issue whitout modifying the core input cpp files.
But, in that case, a less impacting issue remain. Without keeping both physical and normal keycode (and use one of the two in function of the boolean i've introduce) in the InputEventKey, we should reset action key when switching the "physical" checkbox in Event configuration windows because we loose one of the information. So the key become false (the action doesn't correspond to the key we pressed on keyboard).
Trying to explain it with screenshots :

Then, I press the physical checkbox, it becomes A (Physical) which is wrong. Should be Q (Physical) (but we lost the real physical information)

When I pressed the A key and checkbox is already checked, I get Q (Physical) which is correct.

If I uncheck the checkbox, it turns to Q. That's wrong. Should be A but we lost the keycode information.

So, if we don't keep the 2 keycodes in InputEventKey, I suggest to reset the key when checkbox is checked to force the action to have the correct keycode (physical or not).
Hope I'm clear. What do you think about that ?

I think the behavior you show in the screenshots can also be considered working as intended. It doesn't convert your past key press as the equivalent physical keycode, but it makes the registered keycode a physical one. This may or may not be what you want as a user, but it's a fairly niche situation anyway so IMO it's OK.
At least as a developer, I'm not surprised by the behavior - I'm adding the "physical" flag to a past keycode which was registered as the "A" key, so now it's the "physical" A which happens to be "Q" on my AZERTY keyboard.

I don't really agree that setting a key that we never pressed is intended or intuitive.
But if it's ok for you, the fix of initial issue may become quite trivial. I will update the PR soon.

I think the behavior you show in the screenshots can also be considered working as intended. It doesn't convert your past key press as the equivalent physical keycode, but it makes the registered keycode a physical one. This may or may not be what you want as a user, but it's a fairly niche situation anyway so IMO it's OK.

I think a good compromise would be to display both the key pressed and the key stored. For instance:
"Q (QWERTY layout) - A (on your local keyboard layout)"

@Calinou To do that, either we need to keep both keycode in InputEventKey (which seems to be excluded) or we need a function to convert physical_keycode to layout keycode.
@akien-mga So, to fix the original linked issue #52169, this PR turns in a 2 line deletion.
Seems that the logic of setting the keycode/physical_keycode was inverted (maybe a wrong copy/paste from the toggle checkbox callback).
Furthermore, we don't need to set keycode here at all. InputEventKey already contained it. So we just need to remove the keycode we don't want to use accordling to the physical checkbox state.
That doesn't fix some other strange behavior of this window and I will surely investigate more on this window. But it's out of scope of the initial issue.

Thanks!


Add a special catalog for CLaSH

CLaSH has its own functions, types and (soon) blocks. It therefore needs its own catalog. This PR adds a first (incomplete) version of that catalog, and a mechanism for backends (evaluators) to let Viskell know which catalog they need.

I can rebase+squash this PR if preferred.


Cognito AdminInitiateAuthRequest returns NotAuthorizedException: Refresh Token has been revoked on fresh refresh token

Hi,
I have a code that worked perfectly fine roughly a year ago. It uses a refresh token to call the AdminInitiateAuthRequest from a .netcore 3.1 lambda. Now testing it, I get refresh token has been revoked even though the refresh token has been generated just a minute before. Using the exact same refresh token on the /token endpoint or the AWS CLI admin-initiate-auth call works perfectly fine.

Hi @mvinkovits,
Good morning.
Could you please share the sample code and the contents of your .csproj file to troubleshoot the issue?
Thanks,
Ashish

Expected Behavior
Code should return response.HttpStatusCode == HttpStatusCode.OK
Current Behavior
client.InitiateAuthAsync(adminInitiateAuthRequest, token) throws exception refreshing id token.
Amazon.CognitoIdentityProvider.Model.NotAuthorizedException: Refresh Token has been revoked
 ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type     Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
  at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
  at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)
  at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
  at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)

Possible Solution
I don't know the underlying flow the sdk uses to create the request.
Steps to Reproduce (for bugs)

Create cognito user pool and app client allowing ALLOW_REFRESH_TOKEN_AUTH flow and enabling token revocation.
Login user with authorization code grant using the /token endpoint of user pool. Take refresh token.
Use refresh token to get new id token using AdminInitiateAuthReqeust.

Context
AmazonCognitoIdentityProviderClient client = new AmazonCognitoIdentityProviderClient(
              RegionEndpoint.GetBySystemName(await SettingsUtil.GetCognitoRegion()));
          var hmac = new HMACSHA256();
          hmac.Key = Encoding.UTF8.GetBytes(await SettingsUtil.GetCognitoClientSecret());
          var secretHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(userGuid + await SettingsUtil.GetCognitoClientId()));
          log.LogDebug("user:" + userGuid + " refresh token:" + refreshToken + " hash:" + Convert.ToBase64String(secretHash));
          var adminInitiateAuthRequest = new AdminInitiateAuthRequest()
          {
              ClientId = await SettingsUtil.GetCognitoClientId(),
              AuthFlow = AuthFlowType.REFRESH_TOKEN_AUTH,
              AuthParameters = new Dictionary<string, string>()
              { { "REFRESH_TOKEN", refreshToken }, { "SECRET_HASH", Convert.ToBase64String(secretHash) }
              }
          };
          try
          {
              var response = await client.AdminInitiateAuthAsync(adminInitiateAuthRequest, token);

Your Environment
AWSSDK.Core version used: AWSSDK.Core <IP_ADDRESS>
Operating System and version: lambda
Targeted .NET platform: 3.1
.NET Core Info
.NET Core version installed in the environment where application runs: lambda
Contents of project.json/project.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
 <TargetFramework>netcoreapp3.1</TargetFramework>
 <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
 <AWSProjectType>Lambda</AWSProjectType>
 </PropertyGroup>
 <ItemGroup>
 <PackageReference Include="Amazon.Lambda.Core" Version="2.1.0"/>
 <PackageReference Include="AWSSDK.CognitoIdentityProvider" Version="<IP_ADDRESS>"/>
 <PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.2.0"/>
 </ItemGroup>
 <ItemGroup>
 <ProjectReference Include="..\..\..\..\common\LambdaUtil\LambdaUtil.csproj"/>
 <ProjectReference Include="..\..\..\..\common\SettingsUtil\SettingsUtil.csproj"/>
 <ProjectReference Include="..\..\..\..\common\Model\Model.csproj"/>
 </ItemGroup>
</Project>

Hi @mvinkovits,
Good afternoon.
Thanks for providing reproduction steps. Somehow, I'm unable to reproduce the issue using the below customized (basic) code:
.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AWSSDK.CognitoIdentityProvider" Version="<IP_ADDRESS>" />
  </ItemGroup>

</Project>

Program.cs
using System;
using System.Security.Cryptography;
using System.Text;
using System.Collections.Generic;
using Amazon.CognitoIdentityProvider;
using Amazon.CognitoIdentityProvider.Model;

namespace CognitoRefreshTokenTest_Issue1936
{
    class Program
    {
        private static string userId = "<<user_id>>";
        private static string tempPassword = "<<temp_password_for_new_user>>";
        private static string password = "<<password>>";
        private static string clientId = "<<client_id>>";
        private static string clientSecret = "<<client_secret>>";
        private static string userPoolId = "<<user_pool_id>>";

        static void Main(string[] args)
        {
            AmazonCognitoIdentityProviderClient amazonCognitoIdentityProviderClient = new AmazonCognitoIdentityProviderClient();
            string secretHash = GetUserPoolSecretHash(userId, clientId, clientSecret);
            string refreshToken = null;

            var signinResponse = amazonCognitoIdentityProviderClient.AdminInitiateAuthAsync(new AdminInitiateAuthRequest()
            {
                ClientId = clientId,
                AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
                UserPoolId = userPoolId,
                AuthParameters = new Dictionary<string, string>() {
                    { "USERNAME", userId }, { "PASSWORD", tempPassword }, { "SECRET_HASH", secretHash }
                }
            }).Result;

            if (signinResponse.AuthenticationResult == null && signinResponse.ChallengeName == ChallengeNameType.NEW_PASSWORD_REQUIRED)
            {
                var adminrespondToAuthChallengeResponse = amazonCognitoIdentityProviderClient.AdminRespondToAuthChallengeAsync(new AdminRespondToAuthChallengeRequest()
                {
                    ChallengeName = ChallengeNameType.NEW_PASSWORD_REQUIRED,
                    UserPoolId = userPoolId,
                    ClientId = clientId,
                    Session = signinResponse.Session,
                    ChallengeResponses = new Dictionary<string, string>() {
                    { "USERNAME", userId }, { "NEW_PASSWORD", password}, { "SECRET_HASH", secretHash } }
                }).Result;

                refreshToken = adminrespondToAuthChallengeResponse.AuthenticationResult?.RefreshToken;
            }
            else
            {
                refreshToken = signinResponse.AuthenticationResult?.RefreshToken;
            }

            if(!string.IsNullOrEmpty(refreshToken))
            {
                var refreshTokenResponse = amazonCognitoIdentityProviderClient.AdminInitiateAuthAsync(new AdminInitiateAuthRequest()
                {
                    ClientId = clientId,
                    AuthFlow = AuthFlowType.REFRESH_TOKEN_AUTH,
                    UserPoolId = userPoolId,
                    AuthParameters = new Dictionary<string, string>() {
                    { "REFRESH_TOKEN", refreshToken }, { "SECRET_HASH", secretHash }
                }
                }).Result;
            }
        }

        private static string GetUserPoolSecretHash(string userID, string clientID, string clientSecret)
        {
            string message = userID + clientID;
            byte[] keyBytes = Encoding.UTF8.GetBytes(clientSecret);
            byte[] messageBytes = Encoding.UTF8.GetBytes(message);

            HMACSHA256 hmacSha256 = new HMACSHA256(keyBytes);
            byte[] hashMessage = hmacSha256.ComputeHash(messageBytes);

            return Convert.ToBase64String(hashMessage);
        }
    }
}

Please revisit your code and user pool settings (specifically app client Refresh token expiration).
Thanks,
Ashish

Thank you, good to know. I did disable token revocation in Cognito and then everything worked fine, so it is not an issue of the code, settings or lambda permissions.

Thank you, good to know. I did disable token revocation in Cognito and then everything worked fine, so it is not an issue of the code, settings or lambda permissions.

@mvinkovits I can confirm that the above logic works with my user pool and app client, which has token revocation enabled:

Since the issue is not reproducible, kindly confirm if it could be closed.
Thanks,
Ashish


Update bnb.html

Added Attribute values for class actions. they were all set to 1
Changes / Comments
Added attribute values that were all set to 1
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[ ] Does the pull request title have the sheet name(s)? Include each sheet name.
[x] Is this a bug fix?
[ ] Does this add functional enhancements (new features or extending existing features) ?
[ ] Does this add or change functional aesthetics (such as layout or color scheme) ?
[ ] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[ ] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

Character Sheet Info Roll20 Internal Use only.


Add a setting to disable "Dendron is active" toast

Please Select if your Request is Either something new or an Enhancement

[x] Enhancement of an existing Feature.
[ ] Request of a new feature.

Please select the area your request applys to. (Multiple selections are Possible)

[ ] Onboard. Initial vault setup and import/export pods
[ ] Create. Note creation, lookup, snippets and templates
[ ] Retrieve. Backlinks, references, graph view
[ ] Structure. Refactoring, multi-vault and schemas
[ ] Publish. Sharing your repo with the world
[x] Misc (Choose this if your not sure)

Is your feature request related to a problem? Please describe
The "Dendron is active" toast is a bit annoying to see every time I open my dendron workspace. It doesn't seem to have a timeout either, which forces me to manually close out of it.
Describe the solution you'd like
It'd be great to have a simple setting to disable the popup message. In addition, I think a timeout for the toast would be ideal.
Describe alternatives you've considered
To make it extra user-friendly, there could be a "Don't show this again" option on the toast. Not necessary but could be nice for some users.

These toasts should dismiss automatically but it does seem like they may be lingering for too long. Thanks for reporting @sethmnielsen


slash line continuation within string literals [enhancment]

I just found some old Python code breaking up long strings in a way that really seems like poor style (which black does not address https://github.com/psf/black/issues/1183), and seems like a good fit to this plugin:
if True:
    # Pointless if-statement just for indentation here:
    print("\
    \nMESSAGE - printing a multi-line message to the user here as a single\
    \nlong string literal taking multiple lines of Python source code.")

Nicer black approved style alternative:
if True:
    # Pointless if-statement just for indentation here:
    print(
        "\nMESSAGE - printing a multi-line message to the user here as a single"
        "\nlong string literal taking multiple lines of Python source code."
    )

This is based on a real example here: https://github.com/biopython/biopython/blob/biopython-175/Scripts/Restriction/ranacompiler.py#L279
I am proposing adding a new flake8 violation code for this, something like ISC00x slash line continuation within a string literal

I've found a special case where a slash line continuation at the very start of a multi-line triple quoted string seems like a reasonable idea. i.e. If we were to add a violation code for these slashes, that might be worth excluding or at least distinguishing from original example?
https://github.com/biopython/biopython/issues/2369
def usage():
    tool_name = "example"
    help_text = (
        """\
This is the first line for help for %s.

This is the third line (second line blank).
And 4th line with trailing new line character.
"""
        % tool_name
    )
    print(help_text)

usage()

As noted on the linked issue, the slash continuation lines are considered to start immediately (and leading white space is not seen as indentation but as part of the string), and this style ensures all the lines of text are flush left - including the opening line.

bad:
def usage():
    tool_name = "example"
    help_text = (
        """\
This is the first line for help for %s.

This is the third line (second line blank).
And 4th line with trailing new line character.
"""
        % tool_name
    )
    print(help_text)

usage()

good:
import textwrap

def usage():
    tool_name = "example"
    help_text = textwrap.dedent(
        """\
        This is the first line for help for %s.

        This is the third line (second line blank).
        And 4th line with trailing new line character.
        """
        % tool_name
    )
    print(help_text)

usage()

It's quite an easy one though
(
    (**t.start, "ISC004 ...", None)
    for t in file_tokens
    if t.type == tokenize.STRING and "\\n" in t.string
)

Might want to consider https://github.com/planetlabs/flake8-continuation/blob/master/flake8_continuation.py instead

Hmm, textwrap.dedent does look better.
Do you agree that the slash immediately after the opening triple quote is useful, whereas in general slash continuation within triple-quoted strings is best avoided?

Good find - do you think a link to https://github.com/planetlabs/flake8-continuation from the ISC readme would be a good idea?

Although if it isn't being maintained (see eg https://github.com/planetlabs/flake8-continuation/issues/1 ) then perhaps incorporating the check into ISC is practical.

Hmm, textwrap.dedent does look better.
Do you agree that the slash immediately after the opening triple quote is useful, whereas in general slash continuation within triple-quoted strings is best avoided?

continuation lines should only be allowed after ''' or """

Having tried out flake8-continuation (git clone and install from source with pip install . since the package on PyPI is broken), I find it overly broad - also covering things like list continuation.
I think a narrower string specific check as outlined here would be more useful. To that end, I may find the time to explore your code snippet for doing this within ISC.