Save file to %APPDATA%

It is possible to write a copy of the Java Script library to disk. Previously, the user could specify any folder.
This no longer works with the new Edge browser controls.
The file must be saved to %APPDATA% to work with a local copy of the Java Script library.

Therefore, the "Save file" button should save the file to %APPDATA%.
If a folder is specified, the folder should be created if necessary.

Command to get the path in app data:

ENVIRON("LOCALAPPDATA")

The statement here is not right. It is still possible to work with local java script files saved in any folder.
See https://blog.team-moeller.de/2023/04/sicherheitsfeatures-im-neuen-edge_13.html for further details.
Conclusion: This process will not be pursued further. The issue will be closed.


Can't login using the compose file credentials

Hi there, thx for your work :)!
I'm sure it's an easy problem to solve but I'm not able to proceed in the installation process.
My problem is that I can't establish a database connection using the credentials from my compose file, the only error I get is shown in the console in my screenshot
Any ideas what could solve it?

As well for siberian app log file: /var/www/html/var/log/output.log?

My siberian cms docker image is 1 year old, therefore I think that some changes on siberian cms side broke the setup.
I will try to investigate during the next 2 weeks if I have some free time.

Thanks, if you have time to look into it that would be great. I've only seen the console error that Tony screenshots. I have managed to install it using Debian 9 inside VirtualBox on a Windows host and Siberian's VestaCP install instructions, but understanding how to get it running with Docker would be better.

I use your docker, if you use the external IP (for example VPS) and in docker docker compose add mapping port of mariaDB.
You will pass to the next Step.
For my case, after the installation I try to login, I have an error .

Is it possible to activate log in web page ?
thanks for your response


Add Pick Methods

Add pick methods to set of bindings

have_selection() - returns if there is a selection
get_selection() - returns a (str, int) tuple, representing current selection. If no selection, returns ("", 0).
set_selection() - sets the current selected structure by name and index

When building UI interactions, it's useful to be able to set the pick selection based on events outside the pick routine.  The C++ functions take a Structure* but the Structure class doesn't have a binding, so pybind11 can't auto-convert something like a SurfaceMesh to a Structure, so I made the interface using the structure names.  There are other ways to implement this, but it seemed like a simple enough interface to do it this way.

Looks awesome, thank you! I agree that returning a (string, int) tuple is the most natural option.


small language changes

🚀 Deployed on https://6733cd10207a7b79fe8bfc57--cozy-fox-0defec.netlify.app


[Question] is there any way to integrate nami wallet with a Plutus StateMachine ?

Is there any way to integrate nami wallet with a Plutus StateMachine ?
For eg this off chain code
submitContract
    :: forall s. SubmitParams
    -> Contract (Last ThreadToken) s Text ()
submitContract sp = do
    logInfo @P.String "submitting result ..."
    pkh <- Contract.ownFirstPaymentPubKeyHash
    let xp =
            AxuParams
                { athletePkh = pkh
                , axuPkh = spXPkh sp
                , lockAmount = spLockAmount sp
                , redeemDeadline = spRedeemDeadline sp
                , gameDeadline = spGameDeadline sp
                , gToken = spToken sp
                }
        client = axuSMClient xp
        sKm = spSubmittedKm sp

    m <- mapError' $ getOnChainState client
    case m of
        Nothing -> logInfo @P.String "no running game found"
        Just (getStateData -> ts, _) -> case ts of
            AxuDatum tKm Nothing -> do
                -- logInfo @P.String $ P.show i
                logInfo @P.String $ "found targetKm set " P.<> P.show tKm
                rs <- mapError' $ runStep client $ SubmitAction sKm
                case rs of
                    TransitionSuccess s ->
                        logInfo @P.String $ "transition success with new state " P.<> P.show s
                    TransitionFailure InvalidTransition{tfState = ms, tfInput = i'} -> do
                        logInfo @P.String $ "TransitionFailure !!!"
                        logInfo @P.String $ "action " P.<> P.show i'
                        case ms of
                            Nothing -> logInfo @P.String "nothing in state "
                            Just s' -> logInfo @P.String $ "current state " P.<> P.show s'

                logInfo @P.String "sumitted!"
            _ -> logInfo @P.String "unexpected datum"

I dont know how to convert this into js script
    m <- mapError' $ getOnChainState client

and
    rs <- mapError' $ runStep client $ SubmitAction sKm

Thank you!

It's difficult to replicate that one by one. But these state machines are simply a high level API. I'm not sure how they work exactly, where do you define the on-chain validator and where do you pass it to the state machine?

This is the onchain validator code
https://gist.github.com/ahaxu/ad5b88d465fc0b9f59533ba1a6258c2d
This is the offchain part where i passed to the state machine
https://gist.github.com/ahaxu/020c1efd75ef1cd1797e8952b3eef51d

At the moment I'm trying to figure out how to interact with a state machine from the cardano-cli, then I was going to extrapolate to lucid

At the moment I'm trying to figure out how to interact with a state machine from the cardano-cli, then I was going to extrapolate to lucid
if you don't mind, can you share the cardano-cli here. Thank you!

Looks like you can't use the runStep functionality but you can interact with state machine contracts as if they regular ones.  Just providing the necessary script-file, datum and redeemer

Looks like you can't use the runStep functionality but you can interact with state machine contracts as if they regular ones. Just providing the necessary script-file, datum and redeemer
if so, i can make a try, thank you guys for your suggestion.


Update production-users.md

cycoresys.com

@Ulexus Sorry. You have to rebase. We just merged another one. It should be easy. :(

@xiang90 I will merge manually.


error getting digitalocean token: secret "digitalocean-dns" not found

I'm currently moving from Google Cloud Platform to Digital Ocean. Everything worked fine on GCP.  But now I have a problem with the wildcard DNS01 setup for Digital Ocean. The current setup has three ingress configurations.

domain.com / www.domain.com
admin.domain.com with basic auth
test environment (test.domain.com and test-admin.domain.com) with different basic auth

The current error
kubectl describe challenge spm-letsencrypt-dns-certificate-3379556558-489862382-645820794

Name:         spm-letsencrypt-dns-certificate-3379556558-489862382-645820794
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  acme.cert-manager.io/v1alpha3
Kind:         Challenge
Metadata:
  Creation Timestamp:  2020-04-20T05:19:16Z
  Finalizers:
    finalizer.acme.cert-manager.io
  Generation:  1
  Owner References:
    API Version:           acme.cert-manager.io/v1alpha2
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Order
    Name:                  spm-letsencrypt-dns-certificate-3379556558-489862382
    UID:                   9d6d3149-05f2-4319-9b2d-5f2ca74eebd6
  Resource Version:        186637
  Self Link:               /apis/acme.cert-manager.io/v1alpha3/namespaces/default/challenges/spm-letsencrypt-dns-certificate-3379556558-489862382-645820794
  UID:                     f59a9f9b-87b8-4ad4-acb8-3dfd335e2223
Spec:
  Authz URL:  https://acme-v02.api.letsencrypt.org/acme/authz-v3/4067153905
  Dns Name:   domain.com
  Issuer Ref:
    Name:  spm-letsencrypt-dns-prod
  Key:     eT83LxFWVfoBXlqS6qJjmikCmtHTZNDV28wFW8bu18E
  Solver:
    dns01:
      Cname Strategy:  Follow
      Digitalocean:
        Token Secret Ref:
          Key:   access-token
          Name:  digitalocean-dns
    Selector:
  Token:     RUaKQUORlD-uRdN3AFxQUjqIRGVzAMxAVZipdpu1LYA
  Type:      dns-01
  URL:       https://acme-v02.api.letsencrypt.org/acme/chall-v3/4067153905/jtL8sg
  Wildcard:  true
Status:
  Presented:   false
  Processing:  true
  Reason:      error getting digitalocean token: secret "digitalocean-dns" not found
  State:       pending
Events:
  Type     Reason        Age                   From          Message
  ----     ------        ----                  ----          -------
  Normal   Started       47m                   cert-manager  Challenge scheduled for processing
  Warning  PresentError  4m42s (x10 over 47m)  cert-manager  Error presenting challenge: error getting digitalocean token: secret "digitalocean-dns" not found

kubectl get secret -n cert-manager

NAME                                  TYPE                                  DATA   AGE
cert-manager-cainjector-token-7trm6   kubernetes.io/service-account-token   3      13h
cert-manager-token-f84w8              kubernetes.io/service-account-token   3      13h
cert-manager-webhook-ca               kubernetes.io/tls                     3      13h
cert-manager-webhook-tls              kubernetes.io/tls                     3      13h
cert-manager-webhook-token-wf85h      kubernetes.io/service-account-token   3      13h
default-token-ntdrw                   kubernetes.io/service-account-token   3      13h
digitalocean-dns                      Opaque                                1      46m
letsencrypt-dns-account-key           Opaque                                1      8h
sh.helm.release.v1.cert-manager.v1    helm.sh/release.v1

apiVersion: v1
kind: Secret
metadata:
  name: digitalocean-dns
  namespace: cert-manager
data:
  # insert your DO access token here
  access-token: <base64 token>

I tried deleting all Issuers, Ingresses and Certificates, multiple times but it didn't help. I switched from Issuer to ClusterIssuer and back...  I'm desperate for help. I spent many hours already. Every help is more than welcome. Thanks
Here are some of my configurations:
ingress-www-service.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-www-service
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/issuer: "spm-letsencrypt-dns-prod"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
  tls:
    - hosts:
        - domain.com
        - www.domain.com
      secretName: ingress-domain-com-letsencrypt-dns-tls
  rules:
    - host: www.domain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: spm-webapp-cluster-ip-service
              servicePort: 80
          - path: /api/
            backend:
              serviceName: spm-api-cluster-ip-service
              servicePort: 5000

ingress-service-with-basic-auth.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-with-auth-service
  annotations:
    kubernetes.io/ingress.class: "nginx"
    # https://github.com/jetstack/cert-manager/issues/841#issuecomment-414299467
    # cert-manager.io/issuer: "spm-letsencrypt-dns-prod"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: spm-admin-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required"
spec:
  tls:
    - hosts:
        - admin.domain.com
      secretName: ingress-domain-com-letsencrypt-dns-tls
  rules:
    - host: admin.domain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: spm-adminapp-cluster-ip-service
              servicePort: 80
          - path: /api/
            backend:
              serviceName: spm-api-cluster-ip-service
              servicePort: 5000

ingress-service-for-test-env.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-test-service
  annotations:
    kubernetes.io/ingress.class: "nginx"
    # https://github.com/jetstack/cert-manager/issues/841#issuecomment-414299467
    # cert-manager.io/issuer: "spm-letsencrypt-dns-prod"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: spm-test-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required"
spec:
  tls:
    - hosts:
        - test.domain.com
        - test-admin.domain.com
      secretName: ingress-domain-com-letsencrypt-dns-tls
  rules:
    - host: test.domain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: spm-webapp-test-cluster-ip-service
              servicePort: 80
          - path: /api/
            backend:
              serviceName: spm-api-test-cluster-ip-service
              servicePort: 5000
    - host: test-admin.domain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: spm-adminapp-test-cluster-ip-service
              servicePort: 80
          - path: /api/
            backend:
              serviceName: spm-api-test-cluster-ip-service
              servicePort: 5000

cert-issuer-letsencrypt-dns-prod.yml
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
  name: spm-letsencrypt-dns-prod
spec:
  acme:
    email<EMAIL_ADDRESS>    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # The secret that holds the generated private key used to communicate with Let's Encrypt
      name: letsencrypt-dns-account-key
    solvers:
      - dns01:
          cnameStrategy: Follow
          digitalocean:
            tokenSecretRef:
              name: digitalocean-dns
              key: access-token

certificate-letsencrypt-dns-prod.yml
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: spm-letsencrypt-dns-certificate
spec:
  secretName: spm-letsencrypt-dns-tls
  issuerRef:
    # The issuer created previously, see cert-issuer-letsencrypt-dns-prod.yml meta:name
    name: spm-letsencrypt-dns-prod
  commonName: domain.com
  dnsNames:
    - domain.com
    - "*.domain.com"

kubectl describe certificate spm-letsencrypt-dns-certificate

Name:         spm-letsencrypt-dns-certificate
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"cert-manager.io/v1alpha2","kind":"Certificate","metadata":{"annotations":{},"name":"spm-letsencrypt-dns-certificate","names...
API Version:  cert-manager.io/v1alpha3
Kind:         Certificate
Metadata:
  Creation Timestamp:  2020-04-20T05:19:15Z
  Generation:          1
  Resource Version:    186620
  Self Link:           /apis/cert-manager.io/v1alpha3/namespaces/default/certificates/spm-letsencrypt-dns-certificate
  UID:                 bcb35812-9203-4890-a1c9-2e79fff5ad8c
Spec:
  Common Name:  domain.com
  Dns Names:
    domain.com
    *.domain.com
  Issuer Ref:
    Name:       spm-letsencrypt-dns-prod
  Secret Name:  spm-letsencrypt-dns-tls
Status:
  Conditions:
    Last Transition Time:  2020-04-20T05:19:15Z
    Message:               Waiting for CertificateRequest "spm-letsencrypt-dns-certificate-3379556558" to complete
    Reason:                InProgress
    Status:                False
    Type:                  Ready
Events:
  Type    Reason        Age   From          Message
  ----    ------        ----  ----          -------
  Normal  GeneratedKey  55m   cert-manager  Generated a new private key
  Normal  Requested     55m   cert-manager  Created new CertificateRequest resource "spm-letsencrypt-dns-certificate-3379556558"

kubectl describe certificaterequest spm-letsencrypt-dns-certificate-3379556558

Name:         spm-letsencrypt-dns-certificate-3379556558
Namespace:    default
Labels:       <none>
Annotations:  cert-manager.io/certificate-name: spm-letsencrypt-dns-certificate
              cert-manager.io/private-key-secret-name: spm-letsencrypt-dns-tls
              kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"cert-manager.io/v1alpha2","kind":"Certificate","metadata":{"annotations":{},"name":"spm-letsencrypt-dns-certificate","names...
API Version:  cert-manager.io/v1alpha3
Kind:         CertificateRequest
.
.
.
Status:
  Conditions:
    Last Transition Time:  2020-04-20T05:19:15Z
    Message:               Waiting on certificate issuance from order default/spm-letsencrypt-dns-certificate-3379556558-489862382: "pending"
    Reason:                Pending
    Status:                False
    Type:                  Ready
Events:
  Type    Reason        Age   From          Message
  ----    ------        ----  ----          -------
  Normal  OrderCreated  57m   cert-manager  Created Order resource default/spm-letsencrypt-dns-certificate-3379556558-489862382

kubectl describe order spm-letsencrypt-dns-certificate-3379556558-489862382

Name:         spm-letsencrypt-dns-certificate-3379556558-489862382
Namespace:    default
Spec:
  Common Name:  domain.com
  Dns Names:
    domain.com
    *.domain.com
  Issuer Ref:
    Name:  spm-letsencrypt-dns-prod
Status:
  Authorizations:
    Challenges:
      Token:     RUaKQUORlD-uRdN3AFxQUjqIRGVzAMxAVZipdpu1LYA
      Type:      dns-01
      URL:       https://acme-v02.api.letsencrypt.org/acme/chall-v3/4067153905/jtL8sg
    Identifier:  domain.com
    URL:         https://acme-v02.api.letsencrypt.org/acme/authz-v3/4067153905
    Wildcard:    true
    Challenges:
      Token:     pPjJcAp_3R5kOJ7ikFPjyW3b4Hwo0fGZ37UrMXtgW3k
      Type:      http-01
      URL:       https://acme-v02.api.letsencrypt.org/acme/chall-v3/4067153906/V8dX1g
      Token:     pPjJcAp_3R5kOJ7ikFPjyW3b4Hwo0fGZ37UrMXtgW3k
      Type:      dns-01
      URL:       https://acme-v02.api.letsencrypt.org/acme/chall-v3/4067153906/b538gA
      Token:     pPjJcAp_3R5kOJ7ikFPjyW3b4Hwo0fGZ37UrMXtgW3k
      Type:      tls-alpn-01
      URL:       https://acme-v02.api.letsencrypt.org/acme/chall-v3/4067153906/FlXtzA
    Identifier:  domain.com
    URL:         https://acme-v02.api.letsencrypt.org/acme/authz-v3/4067153906
    Wildcard:    false
  Finalize URL:  https://acme-v02.api.letsencrypt.org/acme/finalize/83906541/3064322781
  State:         pending
  URL:           https://acme-v02.api.letsencrypt.org/acme/order/83906541/3064322781
Events:
  Type    Reason   Age   From          Message
  ----    ------   ----  ----          -------
  Normal  Created  59m   cert-manager  Created Challenge resource "spm-letsencrypt-dns-certificate-3379556558-489862382-645820794" for domain "domain.com"
  Normal  Created  59m   cert-manager  Created Challenge resource "spm-letsencrypt-dns-certificate-3379556558-489862382-581504582" for domain "domain.com"

Environment

cert-manager: v0.14.2
kubernetes: 1.16.6-do.2

Because you have configured a namespace scoped Issuer resource instead of a ClusterIssuer, the secret containing credentials for authenticating with the DNS service must be stored in the same namespace as the Issuer resource, and not the same namespace as cert-manager.

@munnerz Thanks! that's it!! Thanks a lot!! I used the DigitalOcean ACME  DNS01 Configuration from documentation from the cert-manager.io page. Do you think it is worth mentioning it here? Do you want me to create a PR for it?
I still have an issue with the wildcard certificate.
Https only works for domain.com and the www.domain.com which are defined in ingress-www-service.yml configuration. But for all the other subdomains. admin.domain.com (defined in ingress-service-with-basic-auth.yml), test.domain.com, test-admin.domain.com (defined in ingress-service-for-test-env.yml) the https doesn't work.
As you can see below on the certificate which is linked to the ingress service, it only shows domain.com and www.domain.com.
Should that not show domain.com and *.domain.com?
Do I need to list all the hosts under spec.tls.hosts in the ingress service (ingress-www-service.yml) with the annotation cert-manager.io/issuer: "spm-letsencrypt-dns-prod"?
kubectl describe certificate ingress-domain-com-letsencrypt-dns-tls

Name:         ingress-domain-com-letsencrypt-dns-tls
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  cert-manager.io/v1alpha3
Kind:         Certificate
Metadata:
  Creation Timestamp:  2020-04-21T06:09:15Z
  Generation:          1
  Owner References:
    API Version:           extensions/v1beta1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Ingress
    Name:                  ingress-www-service
    UID:                   3f828e59-f6d7-4a5a-ab62-4e75c85a89c5
  Resource Version:        391636
  Self Link:               /apis/cert-manager.io/v1alpha3/namespaces/default/certificates/ingress-domain-com-letsencrypt-dns-tls
  UID:                     e0a5c3ff-bb4b-4155-97a4-03feb6dc1dfe
Spec:
  Dns Names:
    domain.com
    www.domain.com
  Issuer Ref:
    Group:      cert-manager.io
    Kind:       Issuer
    Name:       spm-letsencrypt-issuer
  Secret Name:  ingress-domain-com-letsencrypt-dns-tls
Status:
  Conditions:
    Last Transition Time:  2020-04-21T06:09:15Z
    Message:               Certificate is up to date and has not expired
    Reason:                Ready
    Status:                True
    Type:                  Ready
  Not After:               2020-07-20T05:00:50Z
Events:                    <none>

@stevo-knievo a PR for more clarity in documentation is always welcome!
For getting a wildcard certificate I recommend making a Certificate resource and pointing your ingress to it's secret.
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: example-wildcard
spec:
  secretName: example-wildcard-tls
  dnsNames:
  - example.com
  - *.example.com
  issuerRef:
    name: <issuer>
    kind: Issuer

Thanks for getting back to me @meyskens! I opened a separate issue for my subdomains/https issue here. Otherwise it is getting too messy. @munnerz's answer solved the initial issue. Thanks again!


Commentary about a comment

image_wrapper.ts function InImageWithBorder, line 52
            // "TODO: this doesn't make much sense to me, why does it go negative?  Tests are not affected by
            // returning false, but the whole code_128 reader blows up when i throw [exception] on negative imgRef [line]."
            // assertNumberPositive(imgRef.x);
           // assertNumberPositive(imgRef.y);

When extending the line in both directions, it is quite common for the extension to exceed the image boundary.
The border extension I add is typically 10% of the current line length.  If the line starts at {10,y} and goes to {310,y},
then the length with be 300.   10% would result in 30.  30 from 10 is -20.

That solves that mystery! Thank you!
I see we're not actually using the border in this function.  I wonder how much difference it would make.  Have you done any tests with any specific numbers passed in here from getExtendedLine in barcode_decoder ?

I presumed that the image wrapper library may have been used by other projects that used the "border" argument.  Since I did not have any need for it, I removed it from my port.

I poked around at it a little bit, once i got over 10, it started having poor effects with more tests failing.
Something that I've noticed after having done a lot of scans, is that sometimes quagga has a real hard time with locating where the edge of the barcode is, and you'll often get a box that is too tight around the barcode, missing the first and/or last line.
so, some of those images, and a lot of images that people have submitted as not recognizing, i'm able to get it to recognize if i just cut the barcode out and paste it on a pure white background..
so i was thinking about putting in a step that takes the box from the locator, adds a border around the area, and rescans as if it had a big white border around it.  I thought maybe this was an already implemented version of it, but if it is, it doesn't improve anything.

I like the idea.
I will keep my eye out for where Quagga is getting the edge off a bit.  If I find a good example, I will research why.  Perhaps we can't prevent the inaccurate edge issue and not need to apply a white border.  I am less concerned with decoding a barcode than identifying its precise location.

I do a lot of retail product scanning, and I see it a lot when there's other graphics/text close to barcodes, as often seen on small retail items.  Usually holding my finger near one edge of the barcode allows for a scan to work.  it would be nice if we could manage to get some of these instances more accurate.  There are plenty of failing testcases in the repo that i suspect would work with small amounts of pre-processing or maybe even just using different patch/resolution settings.  But it's not something I've had time to dig into, and my background/experience is in much different areas. :)


Added Offering and Obtainium caps with ant rewards

Add 1e300 to Offering and Obtainium caps with ant rewards
Currently Offering and Obtainium have a bug where the game freezes when it reaches 2 ^ 1024
Game destruction with 1e300 caps will be extended after at least 179769313 seconds

I think you can do after you this:
did a prestige reset offering to 1e300 if you have more than 1e300 of them
did a reincarnation reset obtainium to 1e300 if you have more than 1e300 of them
Also it can go past 1e300 by other reset, so you also need to hardcap the gain

What is the reason of closing?


Update your results doesn't update the comments section

If you edit the Comments section you have to click run simulation above for the new text to be captured

The proposal generated has the old text

@GriffGreen actually the comments update, but it takes the time to process the results again (call API, render HTML to images, etc), which takes around 10 seconds. But I agree that is not the best UX when you just want to change the comments.

Is there a way to make the submit to github button unclickable either until it is loaded or at least for a period of time to avoid this error?

Fabio has a PR to disable submissions until it loads


django 1.8 support + DRF 3.1

will be able to help is testing process

@auvipy it would be awesome if you could test the latest master!

Released on pypi: https://pypi.python.org/pypi/djangorestframework-gis/0.8.1


Question regarding mat4.targetTo

Hello,
I apologize if I am missing something blatantly obvious here, but I am having a hard time understanding values I am getting from a piece of code I have written that is making use of this function even after reading related issues to it.
here is some trivial example code illustrating the crux of what I am trying to do:
let itemPosition = vec3.fromValues(0.0, 0.0, 10.0);
let itemTarget = vec3.fromValues(0.0, 0.0, 0.0);
let itemUp = vec3.fromValues(0.0, 1.0, 0.0);

let targetToMatrix = mat4.create();
mat4.targetTo(targetToMatrix, itemPosition, itemTarget, itemUp);

let rotationQuat = quat.create();
mat4.getRotation(rotationQuat, targetToMatrix);

let forwardVector = vec3.fromValues(0.0, 0.0, 1.0);
vec3.transformQuat(forwardVector, forwardVector, rotationQuat);

At this point when inspecting the values of forwardVector I am seeing: [0, 0, 1].  I would expect this to have been [0, 0, -1] . In all of the other cases I try, the resulting forward seems to be the negated vector of what I would expect as well.
I assume that I am missing something fundamental about the math here, but I would appreciate it if someone could shed some light on how i could use this function correctly to compute a forward vector from the object i am trying to rotate to its target.
I really appreciate your time!
Matthew

To get from the position (0, 0, 10) to the target (0, 0, 0), one must move themselves by (0, 0, -10), or take 10 steps along the (0, 0, -1) axis.


Weird display when used with Isabelle2017

On a mac, with up-to-date VSCode insiders and plugins, code replaced by symbols in Isabelle/HOL files appears huge, like shown in the attached picture. This looks a bit like issue #28 actually, except that folding is not necessary to reproduce it.

I have the same issue when using Coq 8.7 in VSCode. Also with a Mac.

I have the same issue, in my case with Haskell code, running on Arch Linux.

I changed in decorations.js the font-size from 10em to 1em in two places and it works for me now. Until it is fixed in the sources, you can change it by yourself in your computer.

That fix works for me, thanks!

@dan323 Which two places? I only see "10em" in one place, namely on Line 29 in the TypeScript source. What was the second place you changed it in?
Thanks for the suggestion, btw.

This is caused by a change in behavior of before/after decorations in vscode.

Caused by #34.

Fixed in release 0.4.1


pull request for e2e test at 02/06/2017 05:15:07

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Express generator: package.json name cannot have spaces

Generator uses current directory by default as application name (https://github.com/expressjs/generator/blob/v4.13.4/bin/express#L328) and sets "name" value in package.json accordingly. It might so happen that the name will contain spaces (if current directory name contained spaces). That will break the npm rule (https://docs.npmjs.com/files/package.json):

Therefore, the name can't contain any non-URL-safe characters

Related discussion in npm: https://github.com/npm/npm/issues/3105
How about replacing space with some other character, e.g. dash -?

Great idea! We can use validate-npm-package-name to validate the name, and the README there lists all the specific rules. I looked around a bit to see if there was a module by the npm team we could use to generate the name, but there isn't one I can find. So we can probably do a couple simple transformations, and if it doesn't pass validate-npm-package-name, then prompt for the name.

Why not just slugify the name and use the slug?

Yep, @gokaygurcan , sligufying would be fine, and I would count that as the "do a couple simple transformations" in my thoughts above. So: we can probably slugify the directory name, and if it doesn't pass validate-npm-package-name, then prompt for the name.

I added a fix in the 4.14 release proposal for this. You can see it in commit https://github.com/expressjs/generator/commit/180ec56c3d36af4c8f9e6817a064231827abba8b


Generic field type issue (composition)

In addition to #440 there is one more issue related to generic type support.
Consider the test:
import static org.assertj.core.api.Assertions.assertThat;

import java.io.Serializable;
import org.junit.jupiter.api.Test;

public class Generic2Test {

    @Test
    void genericComposedShouldBeCorrectlyPopulated() {
        // given
        EasyRandom easyRandom = new EasyRandom();

        // when
        CompositeResource composite = easyRandom.nextObject(CompositeResource.class);

        // then
        assertThat(composite.longResource.getId())
                .isInstanceOf(Long.class);
    }

    static abstract class IdResource<K extends Serializable, T extends IdResource<K, ?>> {

        private K id;

        @SuppressWarnings("unchecked")
        public T setId(K id) {
            this.id = id;
            return (T) this;
        }

        public K getId() {
            return id;
        }
    }

    static class LongResource extends IdResource<Long, LongResource> {
    }

    static class CompositeResource {
        private LongResource longResource;
    }
}

Instead of generating correct beans it fails with NPE:
org.jeasy.random.ObjectCreationException: Unable to create a random instance of type class org.jeasy.random.Generic2Test$CompositeResource

	at org.jeasy.random.EasyRandom.doPopulateBean(EasyRandom.java:172)
	at org.jeasy.random.EasyRandom.nextObject(EasyRandom.java:100)
	at org.jeasy.random.Generic2Test.genericInheritedShouldBeCorrectlyPopulated(Generic2Test.java:16)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
Caused by: org.jeasy.random.ObjectCreationException: Unable to create type: org.jeasy.random.Generic2Test$LongResource for field: longResource of class: org.jeasy.random.Generic2Test$CompositeResource
	at org.jeasy.random.FieldPopulator.populateField(FieldPopulator.java:98)
	at org.jeasy.random.EasyRandom.populateField(EasyRandom.java:209)
	at org.jeasy.random.EasyRandom.populateFields(EasyRandom.java:198)
	at org.jeasy.random.EasyRandom.doPopulateBean(EasyRandom.java:165)
	... 67 more
Caused by: org.jeasy.random.ObjectCreationException: Unable to create a random instance of type class org.jeasy.random.Generic2Test$LongResource
	at org.jeasy.random.EasyRandom.doPopulateBean(EasyRandom.java:172)
	at org.jeasy.random.FieldPopulator.generateRandomValue(FieldPopulator.java:160)
	at org.jeasy.random.FieldPopulator.populateField(FieldPopulator.java:93)
	... 70 more
Caused by: java.lang.NullPointerException
	at org.jeasy.random.FieldPopulator.getParametrizedType(FieldPopulator.java:170)
	at org.jeasy.random.FieldPopulator.getRandomizer(FieldPopulator.java:123)
	at org.jeasy.random.FieldPopulator.populateField(FieldPopulator.java:79)
	at org.jeasy.random.EasyRandom.populateField(EasyRandom.java:209)
	at org.jeasy.random.EasyRandom.populateFields(EasyRandom.java:198)
	at org.jeasy.random.EasyRandom.doPopulateBean(EasyRandom.java:165)
	... 72 more

Every new feature comes with new bugs 😄 ER should clearly not fail with a NPE. Thank you for reporting this.

I have spottet the same and added a simple test here:
#450
But did not found a solution yet

@reitzmichnicht you can find a raw solutions here:
https://github.com/j-easy/easy-random/compare/master...seregamorph:generic-base-class-classmate - uses com.fasterxml.classmate (jackson also has this dependency) to resolve generic type
Alternative impl:
https://github.com/j-easy/easy-random/compare/master...seregamorph:generic-base-class-spring-core-no-spring - it is based on the spring-core code, the spring code copied and cleaned up (all unused lines), alternatively spring-core dependency can be used.
These branches were rejected in this project, but you still can find a solution here.

@reitzmichnicht I'm adding your failing test here since #450 was closed.
@Test
void testGenericFieldRandomization() {
    // given
    class Base<T> {
        T t;
    }
    class Concrete {
        Base<String> f;
    }

    // when
    Concrete concrete = easyRandom.nextObject(Concrete.class);

    // then
    assertThat(concrete.f).isInstanceOf(Base.class);
}

This fails with the same stacktrace as above.

@reitzmichnicht I'm adding your failing test here since #450 was closed.
@Test
void testGenericFieldRandomization() {
    // given
    class Base<T> {
        T t;
    }
    class Concrete {
        Base<String> f;
    }

    // when
    Concrete concrete = easyRandom.nextObject(Concrete.class);

    // then
    assertThat(concrete.f).isInstanceOf(Base.class);
}

This fails with the same stacktrace as above.

@seregamorph

These branches were rejected in this project, but you still can find a solution here.

Thank you for pointing out these solutions. I just wanted to give a bit of context here about the reasons of rejecting those options.

master...seregamorph:generic-base-class-classmate - uses com.fasterxml.classmate (jackson also has this dependency) to resolve generic type

My concern with those changes is that they are based on #426, which was rejected for the reasons explained in details here: https://github.com/j-easy/easy-random/pull/426#issuecomment-722041902. While your changes are different from those in #426, the new GenericType is what concerning me the most, because java-classmate already defines its own GenericType. That said, I'm not against adding java-classmate as a dependency if it makes our lives easier regarding generic types introspection, and I'm open for contributions to fix this issue in a way that is not based on #426 and which remains relatively easy in order to control complexity.

master...seregamorph:generic-base-class-spring-core-no-spring - it is based on the spring-core code, the spring code copied and cleaned up (all unused lines), alternatively spring-core dependency can be used.

The reasons why this has been rejected were detailed here: https://github.com/j-easy/easy-random/issues/425#issuecomment-723494900.

@seregamorph

These branches were rejected in this project, but you still can find a solution here.

Thank you for pointing out these solutions. I just wanted to give a bit of context here about the reasons of rejecting those options.

master...seregamorph:generic-base-class-classmate - uses com.fasterxml.classmate (jackson also has this dependency) to resolve generic type

My concern with those changes is that they are based on #426, which was rejected for the reasons explained in details here: https://github.com/j-easy/easy-random/pull/426#issuecomment-722041902. While your changes are different from those in #426, the new GenericType is what concerning me the most, because java-classmate already defines its own GenericType. That said, I'm not against adding java-classmate as a dependency if it makes our lives easier regarding generic types introspection, and I'm open for contributions to fix this issue in a way that is not based on #426 and which remains relatively easy in order to control complexity.

master...seregamorph:generic-base-class-spring-core-no-spring - it is based on the spring-core code, the spring code copied and cleaned up (all unused lines), alternatively spring-core dependency can be used.

The reasons why this has been rejected were detailed here: https://github.com/j-easy/easy-random/issues/425#issuecomment-723494900.

I submitted a fix for this issue: https://github.com/j-easy/easy-random/pull/466.
There are a number of challenges around this issue (e.g. issue #440) that my fix does not address and the project is in maintenance mode. Thus, @beans can I ask you to look at it ahead and give me a shout if it has a chance for being accepted and if so, when it can be released?

Did hit the same issue today while upgrading a project.
Afaiu the problem is that the RandomizationContext is constructed with the CompositeResource. And from there all the parameterized information is taken. But this is completely wrong if a field/member has nothing to do with the parameterization hierarchy of that class but has it's own one like with LongResource.
The ParameterizedType of LongResource is defined as IdResource<Long, LongResource> and is completely independent of whatever generic information is in CompositeResource or if it doesn't have any at all, isn't?
I locally have a working hack (needs further polishing) where I create a fresh independent 'sub-RandomizationContext' in case I hit a field which has nothing to do with the generic hierarchy of the current class. Not quite sure though if this is the right way to approach it.


Please let us turn off the 5% GST and show just the regular prices.

Please let us turn off the 5% GST and show just the regular prices.

Solved in #80.


chore(master): release 1.5.19

:robot: I have created a release beep boop
1.5.19 (2023-09-24)
Miscellaneous

deps: update andreasaugustin/actions-template-sync action to v1.1.8 (01dffa6)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/wayofdev/docker-project-services/releases/tag/v1.5.19 :sunflower:


clothing-parenthesis-version

I add a function named addClothingParenthesis .
The addClothingParenthesis function determines if there are any missing closing parentheses at the end of an arithmetic.
expression. It counts the number of opening and closing parentheses in the expression and adds the necessary number of closing parentheses to balance the expression if there are more opening parentheses.
Why it's needed:
In arithmetic expressions, parentheses are used to group parts of the expression and define the order of operations. It is crucial to have balanced and correctly placed parentheses to ensure the proper evaluation of the expression. Without balanced parentheses, the expression may result in a syntax error or produce incorrect results. The addClothingParenthesis function provides a way to automatically add the necessary closing parentheses to maintain the balance and validity of the expression

Thanks @chavi362


App appreciation

Is there a good way to let a creator know that we are using and enjoying their app? It's happened a few times where I find exactly what I was hoping existed or discover something that I had never considered which improves my use of the watch. When this happens I want to let the creator know that their work is used and let the broader community know that the app is working as advertised.
These immediately come to mind, but there are many others:

Ratchet Launcher by @jsphpl
Sleep Log by @storm64
BanglExercise by @myxor
Many of the bootstrap apps by @gfwilliams

Nothing like this exists right now but maybe it could be a heart button or https://github.com/espruino/BangleApps/issues/238;

Thanks! Right now there isn't anything, but I think the reviews in https://github.com/espruino/BangleApps/issues/238 would be the best way to go.
It's been suggested that we could count the amount of people that have favourited an app - we'd just have to be careful about user privacy.
I can see the case where an app might be broken in some way and someone gives it a low score (or doesn't favourite when they might have), so it a way having a description so app developers can see what's wrong would be good (and maybe a way to mark that particular complaint as 'fixed' :).

A custom Disqus integration could be a start. It supports comments and we could use custom buttons to simulates a rating 🤔

Any progress on this.  I'd love to see how my apps are doing.

Please don't track the downloads. Sure we can use our own app loader to avoid being in the statistics. But how about this simple metric: Number of different contributors to an app. The more authors the more it is likely used.

The more authors the more it is likely used.

Nice idea, but I'm not sure it's a good metric. There are quite a lot of apps (especially watch faces) that only have one maintainer and will still be very popular.
Even commit history may not be a good choice - something like a clock may just be really simple and work first time. It doesn't have to include the kitchen sink to be popular

Sure we can use our own app loader to avoid being in the statistics.
I think any sort of tracking should be strictly opt-in so people don't need to do so. Octoprint and Home Assistant both are, I neglected to pull that info out for my suggestion.

I do effectively track downloads already since the webserver stores an activity log, but I'm not sure that's a good metric either since:
a) it depends on how many updates an app has
b) an app can get lots of downloads just by having a good description - we're not counting uninstalls
What we could do, as an opt-in, no login solution, is every time a user connects with the app loader, we upload the serial number or MAC address of the Bangle, plus a list of the apps installed - and maybe we drop any data that's more than 6 months old. That's not really personally identifiable, and it'd be kept securely on the server anyway.
We could do likes/comments that way too. To me, that seems preferable as there's no email address/password/other info, and there's no login required. It'd be trivial for me to implement.

Just for fun counted the authors, this is the top 50:

40 locale
13 setting
13 messages
11 boot
10 gpsinfo
10 gbridge
10 dtlaunch
9 widbatpc
9 calendar
9 alarm
8 toucher
8 impwclock
8 gpsrec
8 files
8 compass
8 calculator
7 recorder
7 pipboy
7 numerals
7 miclock
7 mclock
7 marioclock
7 largeclock
7 health
7 cliock
7 boldclk
7 blobclk
7 aclock
6 wohrm
6 weather
6 wclock
6 verticalface
6 vectorclock
6 swatch
6 slidingtext
6 slevel
6 sleepphasealarm
6 scolor
6 sclock
6 pomodo
6 mylocation
6 morse
6 metronome
6 launch
6 ios
6 devstopwatch
6 counter
6 blackjack
6 beebclock
6 antonclk

num_authors.sh.txt

Now when sorting by popular apps is implemented should this be considered done?

@gfwilliams may want to add a privacy policy depending on your local laws (and/or USA law since the app loader is hosted on Github?).
https://github.com/espruino/BangleApps/issues/1542#issuecomment-1102759037
Btw, thank you Gordon for adding this! :)

Ok, thanks - I'll add a link to (and update) our existing privacy policy


erlang: 20.1.7 -> 20.2.2

Motivation for this change
Update ErlangR20
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg build erlangR20

I increased the timeouts on my linux builder and the aarch64 builder to 3600s. Let's try this again.

@GrahamcOfBorg build erlangR20

@grahamc Another timeout :(

Another version of Erlang was just released. Should I close this PR and open a new one, should I squash the commits, or something else entirely?

I have amended the PR as necessary and merged. Thank you!


Conflicting role requirements

This page seems to have a conflict. In one paragraph it says:

Users do not require contributor access to the cluster to utilize this feature.

And in another:

In order to utilize the Live Data (preview) feature with this new user, you need to be a member of the Contributor role on the AKS cluster resource.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 73d09442-55a1-6ee5-8ac9-fd5e7ca06e87
Version Independent ID: e7f2e287-8b0e-a75e-dc66-7dbd3c00b245
Content: Set up Azure Monitor for containers Live Data (preview) - Azure Monitor
Content Source: articles/azure-monitor/insights/container-insights-livedata-setup.md
Service: azure-monitor
GitHub Login: @bwren
Microsoft Alias: magoedte

@aelij , Thanks for the feedback and bringing this to our notice . At this time we are reviewing the feedback and will get back to you shortly.

@aelij,  To use this feature you do not need contributor role. You can assign the 'Azure Kubernetes Cluster User' role to the new user and they will be able to access live features on the AKS cluster.
Great catch! Based on your feedback, we have raised a PR to add clarity on this. Once the PR is merged the doc will reflect the changes. Thanks again for taking time to share your valuable feedback and contributing to the Azure docs improvements.
We will close this thread, if you have any questions please just let us know.


Icons Alignment

Icons are not aligned in a sequence way in both web browser and mobile browser.

Hi! This is my first oss contribute.Can I work this issue?
which Icons are not aligned in a sequence way?

Yes u can contribute I will attach a screenshot refer to that.
Make all icons in one line

Yes u can contribute I will attach a screenshot refer to that.
Make all icons in one line

Rearrange sun rise feels-like and sunset icons in both mobile view and desktop view


Consider support for Alerting of the OpenSLO spec

Recently the OpensLO added support to define alerting for a SLO. See also this commit in OpensLO repo:
https://github.com/OpenSLO/OpenSLO/commit/08adc441a75b0043394849d65bdf853fc5349ead

Hi @weyert!
I would love to support OpenSLO alerting, however, we need to think about this because the spec seems too generic and has a little bit of complexity compared to Sloth's Put this labels and you are done
As happened with the OpenSLO initial spec, It will need a bit of research before committing to supporting it, because I don't know how it would play with Sloth's philosophy (easy, simple, and reliable).
Anyhow, the initial plan would be to support it

Great to hear, happy to discuss your concerns regarding OpenSLO alerting. I will try to have a stab at it over my upcoming time off


IOST ConversionReceiver and BaseToken contracts

Part of #66
IOSTConversionReciever Ethereum contract allows for transaction fees to be collected based on holdings of a specified discount token by requesting account.
BaseToken IOST contract should now have tests, and modified to keep track of conversion logs.

Issue discovered on IOST contract, currently resolving.

Resolved issue with IOST. Ready for review, sans automated tests, but we have manual tests.


Fix scan’s custom report name not working with multiple output types

Fixes Issue #9293 where scan's custom report filename was being used just for the html file and not for the xml file as it used to. This ensures that someone will not get a nasty surprise after scan completes and provides the report files.
One should use :output_files instead and this makes it obvious.
Checklist

[x] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[x] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary.

Motivation and Context

Using the scan option without specifying the output_types will, by default, try and provide a html and junit report file. Combined with the custom_report_file_name used to yield the xml junit file with the given name. With a recent update, that stopped working and the html file was yielded with the custom name: that is confusing when you want it for the xml file.
This change makes it so that if you provide multiple output types, and use this deprecated option, you'll get an error and not accidentally archive the html file thinking that you get a junit xml file.
Description
This adds a check for the options when generating them to ensure that one is not using options that will cause you problems later on.

@mfurtak @hjanuschka can I get a review? If it looks good, I could use a merge too.

🚀


fix typo

Note to Hacktoberfest 🎃 participants:
While we appreciate the enthusiasm, we are experiencing a high volume of drive-by pull requests (one-line changes, README tweaks, etc.). Please remember that hundreds of people are subscribed to this repo and will receive notifications for these PRs. Spam submissions will be closed and won't count towards your Hacktoberfest goals.
Please search for issues tagged good first issue or hacktoberfest to find things to work on.
You can also search all of GitHub.

Progress

[ ] 번역 초안 작성 (Draft translation)
[ ] 공통 스타일 가이드 확인 (Check the common style guide)
[ ] 모범사례 확인 (Check best practices)
[ ] 용어 확인 (Check the term)
[ ] 맞춤법 검사 (Spelling check)
[ ] 리뷰 반영 (Resolve reviews)

감사합니다!


Investigate and fix import process

@ljwh2 @eks-ebi - the first "major" change I would like us to introduce while re-implementing the import is to transform it from a 'real-time' process to a 'push-and-forget'.
Currently, when you press the 'Import' button, you wait for the process to finish and to see the associated results. This works, IF, they're not too many studies linked to the submission. Examples such as the Sidore submission, on the other hand, will fail. A second issue is the lack of a proper audit trail associated with the import. Currently, if the import fails, you get a message in the UI - which disappears pretty quickly, and there's no way to get it back. This leaves the dev team in darkness w.r.t. the cause of the failure.
Changing to a 'push-and-forget' will:

Change how you interact with the UI: You will press 'Import' and immediately receive a message if the request has been successfully recorded. You will not have to wait for the result. The result will be communicated by email. Later on, we can introduce in-app notifications and / or an admin dashboard.
Produce a proper audit log: in the notification email sent out for each such request, we will include the outcome of the operation and any errors encountered.

Feed-back would be greatly appreciated.

I don't see any problem with this plan as far as I know. Are there any disadvantages to the 'push-and-forget' model?

This sounds fine to me @tudorgroza, please go ahead

I already had a chat about this with Tudor as well, its going to be an excellent solution, the push-and-forget approach will be more stable with consistent outcomes for the varying file sizes and all use cases

List of failures to be tested in the new import process:

No rsId in associations
No risk allele present
Other errors: loci attributes, risk frequency, p-value, effect type
Missing location for rsId
Missing gene for rsId
rsId not found in Ensembl
....

Please feel free to add others.

Can we have a bit more detail here @tudorgroza ?
When you say "no rsID, no risk allele" - does this mean no text in the field? Sometimes curators will not have risk allele info so will need to enter "?". And not all variants have rsIDs as identifier.
Missing location/gene - this is not entered in the template, so nothing to import? This info comes from the mapping pipeline - are errors in the mapping pipeline causing the import to fail?

Finding answers to your questions would be the purpose of creating these tests. So far, based on my current understanding of the code, most items above will not fail the import, but will be flagged. Others - coming from the mapping pipeline - (more concretely pretty much all exceptions raised by the mapping pipeline) - will cause the process to fail.
We just need tests that are written to intentionally fail - for us to make sure the process does indeed fail when it's expected to fail.

uploaded template
Sorgini test template.xlsx
to PMID 31225122.
On clicking import, import failed - http://snoopy.ebi.ac.uk:9680/gwas/curation/submissions/5f466b5a62694a0001d4f3f0:
=== GENERAL OUTCOME: FAIL 1[Success] :: [Verifying studies | 5f466b5a62694a0001d4f3f0] 2[Fail] :: [Validating associations | 5f466b5a62694a0001d4f3f0] 3[Success] :: [Updating submission status: IMPORT_FAILED | 5f466b5a62694a0001d4f3f0] ** Errors: ** Validating associations | [GCST90000181 | testing1] Full validation error: OR and OR reciprocal [data]: OR value is less than 1 and no OR reciprocal value entered | false Validating associations | [GCST90000181 | testing1] Full validation error: Beta [data]: Value is not empty | false Validating associations | [GCST90000181 | testing1] Full validation error: Beta Unit [data]: Value is not empty | false Validating associations | [GCST90000181 | testing1] Full validation error: Beta Direction [data]: Value is not empty | false Validating associations | [GCST90000181 | testing1] Full validation error: OR reciprocal range [data]: Value is empty | true Validating associations | [GCST90000181 | testing1] Full validation error: P-value mantissa [data]: Value not valid i.e. greater than 9 | false Validating associations | [GCST90000181 | testing1] Full validation error: P-value mantissa [data]: Value is empty | false Validating associations | [GCST90000181 | testing1] Full validation error: P-value exponent [data]: Value is empty | false Validating associations | [GCST90000181 | testing1] Full validation error: OR reciprocal range [data]: Value is empty | true

@earlEBI - thank you for this! I need to make the output prettier :) Is the outcome expected or wrong?

I can't see anything wrong with the template, myself! From what i understand of the errors:

"OR and OR reciprocal [data]: OR value is less than 1 and no OR reciprocal value entered" - the OR I entered is not less than 1... and there is no OR reciprocal column in the new template.
beta [data]: "value is not empty" - what does that mean?
beta unit [data]: "value is not empty" - why is that a problem?
beta direction [data]: "value is not empty" - there is no beta direction column in the template anymore.
"P-value mantissa [data]: Value not valid i.e. greater than 9" - I thought it might automatically round the mantissa and exponent down, but that's okay if that's not possible. Although ideally it would fail in the template.
"P-value exponent [data]: Value is empty" - I think this is because I entered a p-value of 1e-1000 to see if it could handle it. Doesn't seem it can.
"OR reciprocal range [data]: Value is empty" - again, not relevant

Hopefully all that's readable...

Ah, I see on this page http://snoopy.ebi.ac.uk:9680/gwas/curation/submissions/5f466b5a62694a0001d4f3f0 under the Associations header, for some reason the OR and CI lower for the first association have been filled in with 0, so that's what some of the errors refer to. But those fields were empty in the upload template.

My Test Submission 1 (Auckland):
http://<IP_ADDRESS>/gwas/deposition/submission/5f55fd0f10d43700010d95d3
http://snoopy:9680/gwas/curation/submissions/5f55fd0f10d43700010d95d3
Features

Study and sample info intended to be all correct.
Included a Reported Trait that does not yet exist in the Catalog, to see what happens with that.
Intentional errors in the Association tab only:

Incorrect rsID (starts with "rs..." but is not in Ensembl)
Incorrect variant ID (does not start with "rs...")

Included different combinations of OR vs Beta with CI Lower/Upper vs Standard Error, to see how those are managed.

Result:
The submission preview is visible, but the Import button is inactive, i.e. unable to import this submission.
Error messages:
=== GENERAL OUTCOME: FAIL 1[Success]

:: [Verifying studies | 5f55fd0f10d43700010d95d3] 2[Fail]

:: [Validating associations | 5f55fd0f10d43700010d95d3] 3[Success]

This seems to say that the association validation was successful - but that doesn't seem to make sense because there are errors with the associations lists below
:: [Updating submission status: IMPORT_FAILED | 5f55fd0f10d43700010d95d3]

** Errors: **

Validating associations | [GCST90000188 | study1] Full validation error: OR reciprocal range [data]: Value is empty | true

Validating associations | [GCST90000188 | study1] Full validation error: OR reciprocal range [data]: Value is empty | true

We see this error a lot when adding data directly in the curation interface. There, it is only a warning and does not prevent us from publishing the study. I don't know if this error cause the import to fail? It probably shouldn't. In fact, it is not a meaningful error and ideally would be removed, because: 1) There is no "OR reciprocal range" column in the deposition template, so it would be impossible to enter a value for this field using this method. 2) If you enter a number >1 in the "OR" column, then there is no need for an "OR reciprocal range", so it should not be entered.
Validating associations | [GCST90000188 | study1] Full validation error: OR and OR reciprocal [data]: OR value is less than 1 and no OR reciprocal value entered | false

Another hold-over from adding data directly in the curation interface. There, we always have to enter an OR >1. If the OR reported in the paper is <1, then we instead enter it in the "OR reciprocal" field and there is a button to convert that to the OR (by doing a 1/x operation). But in the template there is only an "OR" field, which accepts numbers > or <1. I think the plan for the future was to store OR <1 as is from now on, without doing any inversion, so this warning should not be necessary. @earlEBI  @ljwh2 is that right?
Validating associations | [GCST90000188 | study1] Full validation error: OR reciprocal range [data]: Value is empty | true

Validating associations | [GCST90000189 | study2] :: rs000 not found for homo_sapiens

Validating associations | [GCST90000189 | study2] :: Attempt to map SNP: rs000 returned no location details

Validating associations | [GCST90000189 | study2] :: Attempt to map SNP: rs000 returned no mapped genes

Validating associations | [GCST90000189 | study2] :: variant123 not found for homo_sapiens

Validating associations | [GCST90000189 | study2] :: Attempt to map SNP: variant123 returned no location details

Validating associations | [GCST90000189 | study2] :: Attempt to map SNP: variant123 returned no mapped genes

The rs000 and variant123 errors are all expected, and I think they should prevent importing. But I don't understand why these only appear for [GCST90000189 | study2]: I entered the same false rsID for [GCST90000188 | study1], so I would expect to also see the same errors for that study.

@tudorgroza
I looked into testing the following errors:

No rsId in associations (i.e. a blank cell in the "Variant ID" column of the template)
No risk allele present (i.e. a blank cell in the "Effect allele" column)
Invalid risk allele (i.e. characters other than A, C, T, G, ? in the "Effect allele" column)

But these are all picked up in the deposition app, so therefore don't make it to the import stage. I guess there's a chance they could slip through if there's a problem with the depo validation, but not sure how to test these in curation.
the relevant errors in depo:
Associations: Column 'Effect allele' in row(s) [7] lacks mandatory value
Associations: Column 'Variant ID' in row(s) [6] lacks mandatory value
Associations: Column 'Effect allele' in row(s) [8-9] contains incorrect value. Accepted values should follow the pattern: '^[ACTG?-]*$'

My Test Submission 2 (Avet-Loiseau)
http://<IP_ADDRESS>/gwas/deposition/submission/5f56110010d43700010fafaa
http://snoopy:9680/gwas/curation/submissions/5f56110010d43700010fafaa?
Features:

Sample description contains an "Ancestry category" and "Founder/Genetically isolated population", but no "Ancestry" - want to see how this affects appears in curation interface
Associations:

Association with no "Other allele" - don't expect an error for this
Association with an effect allele frequency >1 - This would be scientifically nonsensical, but I don't know if it will give an error or not
Association with a p-value < 1E-5 (so valid in the template) but that rounds up (with 1sf) to 1E-5 (which would not be valid in the curation interface) - This should ideally give at least a warning message.
No effect information (i.e. no OR or Beta) for associations - don't expect an error for this

Results:
No errors on the import preview screen and the Import button is active.
However, when I clicked Import, the submission did not get imported (only the previously existing study can be seen in Curation Home: http://snoopy:9680/gwas/curation/studies?page=1&author=Avet-Loiseau H), and the following errors appeared on the preview page:
=== GENERAL OUTCOME: FAIL 1[Success]

:: [Verifying studies | 5f56110010d43700010fafaa] 2[Fail]

:: [Validating associations | 5f56110010d43700010fafaa] 3[Success]

:: [Updating submission status: IMPORT_FAILED | 5f56110010d43700010fafaa]

** Errors: **

Validating associations | [GCST90000190 | avet_study] Full validation error: Risk element (allele, haplotype or SNPxSNP interaction) frequency in controls [data]: Value is invalid, value is not between 0 and 1 | true

This is an expected error. The study should not be imported if the risk element is invalid (i.e. not between 0 and 1).
Validating associations | [GCST90000190 | avet_study] Full validation error: P-value mantissa [data]: Value not valid i.e. greater than 9 | false

This is an expected error. The study should not be imported if the p-value rounds to 1E-5 or greater, based on the current validation requirements in the curation interface.
There was no errors about the Other allele being missing - I think that is correct, as curators will not always be able to extract an Other allele.
There was no error about the OR/Beta being absent - that is the correct behaviour.

In response to above comments: I think the plan for the future was to store OR <1 as is from now on, without doing any inversion, so this warning should not be necessary. @earlEBI @ljwh2 is that right?
yes, that's correct.
The rs000 and variant123 errors are all expected, and I think they should prevent importing.
I don't agree, we may need to enter rsIDs not in Ensembl (if that is what authors have reported). Also may need to enter non-standard variant IDs.
Could be worth considering what the impact of the Ensembl pipeline failing would be (which it does from time to time). Would that prevent us importing anything?

Thanks so much @eks-ebi ! I'll go through these and see what's going on.

@ljwh2

Could be worth considering what the impact of the Ensembl pipeline failing would be (which it does from time to time). Would that prevent us importing anything?

Yes - that should stop the import process and report the error.

My Test Submission 3 (Bae)
http://<IP_ADDRESS>/gwas/deposition/submission/5f56305f10d437000112fc51
http://snoopy:9680/gwas/curation/submissions/5f56305f10d437000112fc51?
Features:

No errors expected in the template
8 studies, to make sure that all are successfully imported (testing the earlier error where some studies randomly failed to import)
Already-existing reported traits for 5/8 studies, new ones for 3/8 to test how these are imported - expect only the existing traits to appear

Result:

Successful import (see code below)
All 8 studies were successfully imported as expected, and the existing study is correctly marked "Requires Review" - so that earlier bug seems to be fixed in this case
For the existing reported traits, only 3/5 were imported, so 2 didn't get copied across. One ("Malignmant cutaneous melanoma") turns out to be the wrong term, so that's my mistake. But no idea why "Sporadic neuroblastoma" failed to import... maybe a typo I can't see? The new made-up reported traits were correctly not imported.

=== GENERAL OUTCOME: SUCCESS 1[Success] :: [Verifying studies | 5f56305f10d437000112fc51] 2[Success] :: [Validating associations | 5f56305f10d437000112fc51] 3[Success] :: [Deleting proxy studies | 5f56305f10d437000112fc51] 4[Success] :: [Creating study [GCST90000191] | 5f56305f10d437000112fc51] 5[Success] :: [Creating association | GCST90000191] 6[Success] :: [Creating sample | GCST90000191] 7[Success] :: [Creating study [GCST90000192] | 5f56305f10d437000112fc51] 8[Success] :: [Creating association | GCST90000192] 9[Success] :: [Creating sample | GCST90000192] 10[Success] :: [Creating study [GCST90000193] | 5f56305f10d437000112fc51] 11[Success] :: [Creating association | GCST90000193] 12[Success] :: [Creating sample | GCST90000193] 13[Success] :: [Creating study [GCST90000194] | 5f56305f10d437000112fc51] 14[Success] :: [Creating association | GCST90000194] 15[Success] :: [Creating sample | GCST90000194] 16[Success] :: [Creating study [GCST90000195] | 5f56305f10d437000112fc51] 17[Success] :: [Creating association | GCST90000195] 18[Success] :: [Creating sample | GCST90000195] 19[Success] :: [Creating study [GCST90000196] | 5f56305f10d437000112fc51] 20[Success] :: [Creating association | GCST90000196] 21[Success] :: [Creating sample | GCST90000196] 22[Success] :: [Creating study [GCST90000197] | 5f56305f10d437000112fc51] 23[Success] :: [Creating association | GCST90000197] 24[Success] :: [Creating sample | GCST90000197] 25[Success] :: [Creating study [GCST90000198] | 5f56305f10d437000112fc51] 26[Success] :: [Creating association | GCST90000198] 27[Success] :: [Creating sample | GCST90000198] 28[Success] :: [Deleting unpublished data | 5f56305f10d437000112fc51] 29[Success] :: [Updating submission status: CURATION_COMPLETE | 5f56305f10d437000112fc51]

@eks-ebi @ljwh2 - We will discuss more during the call we will hopefully have in the next coming days, however, after going through all of Elliot's feedback it seems that the new import process works as expected - with the major difference being the way I've dealt with errors emerging from the existing association validation process (the current implementation basically just makes note of them, while I considered them proper errors).
Let's discuss the semantics of these errors so that I can adapt the process accordingly.
PS: @eks-ebi - w.r.t. Sporadic neuroblastoma - it is indeed a typo ... but in the DB, not in your template. The DB entry has an extra space at the end :)

By the way, I just updated the Sporadic neuroblastoma entry in the curation interface, so it should no longer contain the extra space at the end.

Yesterday morning, we discussed that Tudor has made changes to the display of warnings for imported submissions. Here, I am re-testing a previous submission that should pass import:
Same as the Bae submission above, this time submitted under a different publication (Bani-Fatemi 32445792):
http://<IP_ADDRESS>/gwas/deposition/submission/5f60aae010d4370001b74e89
http://snoopy:9680/gwas/curation/submissions/5f60aae010d4370001b74e89
This submission is not expected to have any errors/warnings.
Result:

Import successful
Import messages all make sense
All studies were successfully imported and the old studies are correctly marked for review/deletion (see http://snoopy:9680/gwas/curation/studies?page=1&author=Bani-Fatemi A)

Import messages are nicely formatted:
=== GENERAL OUTCOME: SUCCESS
1[Success] :: [Verifying studies | 5f60aae010d4370001b74e89]
2[Success] :: [Validating associations | 5f60aae010d4370001b74e89]
3[Success] :: [Deleting proxy studies | 5f60aae010d4370001b74e89]
4[Success] :: [Creating study [GCST90000211] | 5f60aae010d4370001b74e89]
5[Success] :: [Creating association | GCST90000211]
6[Success] :: [Creating sample | GCST90000211]
7[Success] :: [Creating study [GCST90000212] | 5f60aae010d4370001b74e89]
8[Success] :: [Creating association | GCST90000212]
9[Success] :: [Creating sample | GCST90000212]
10[Success] :: [Creating study [GCST90000213] | 5f60aae010d4370001b74e89]
11[Success] :: [Creating association | GCST90000213]
12[Success] :: [Creating sample | GCST90000213]
13[Success] :: [Creating study [GCST90000214] | 5f60aae010d4370001b74e89]
14[Success] :: [Creating association | GCST90000214]
15[Success] :: [Creating sample | GCST90000214]
16[Success] :: [Creating study [GCST90000215] | 5f60aae010d4370001b74e89]
17[Success] :: [Creating association | GCST90000215]
18[Success] :: [Creating sample | GCST90000215]
19[Success] :: [Creating study [GCST90000216] | 5f60aae010d4370001b74e89]
20[Success] :: [Creating association | GCST90000216]
21[Success] :: [Creating sample | GCST90000216]
22[Success] :: [Creating study [GCST90000217] | 5f60aae010d4370001b74e89]
23[Success] :: [Creating association | GCST90000217]
24[Success] :: [Creating sample | GCST90000217]
25[Success] :: [Creating study [GCST90000218] | 5f60aae010d4370001b74e89]
26[Success] :: [Creating association | GCST90000218]
27[Success] :: [Creating sample | GCST90000218]
28[Success] :: [Deleting unpublished data | 5f60aae010d4370001b74e89]
29[Success] :: [Updating submission status: CURATION_COMPLETE | 5f60aae010d4370001b74e89]

Another repeated submission, this time where some warnings are expected:
Template identical to the Avet-Loiseau submission above, this time submitted under a different publication (Bankvall 32558109):
http://<IP_ADDRESS>/gwas/deposition/submission/5f60adb010d4370001b7d6dc
http://snoopy:9680/gwas/curation/submissions/5f60adb010d4370001b7d6dc
Results:

Import reported as GENERAL OUTCOME: FAIL, but the import does actually take place (see http://snoopy:9680/gwas/curation/studies?page=1&author=Bankvall M) - does it make sense to describe this as a FAIL?
Reports 2 errors/warnings - it could be confusing to see them listed twice, once as an error and once as a warning - what is the distinction in this report? Will they always include the same things? Do we need to report both?
One of the errors (about the allele frequency) has Save error = true, while the other (about the p-value mantissa) has Save error = false. What is the difference? Note that when you go into the imported study and go to the associations tab, both of the associations have failed mapping and would need to be edited manually before the associations can be approved and the study can be published in the Catalog (see http://snoopy:9680/gwas/curation/studies/62221793/associations). Both the invalid p-value and the invalid allele frequency seem to have been saved in the curation interface, although I don't know how this reflects the situation in the database...

Import messages:
=== GENERAL OUTCOME: FAIL
1[Success] :: [Verifying studies | 5f60adb010d4370001b7d6dc]
2[Success] :: [Validating associations | 5f60adb010d4370001b7d6dc]
3[Success] :: [Deleting proxy studies | 5f60adb010d4370001b7d6dc]
4[Success] :: [Creating study [GCST90000219] | 5f60adb010d4370001b7d6dc]
5[Success] :: [Creating association | GCST90000219]
6[Success] :: [Creating association | GCST90000219]
7[Fail] :: [Creating association | GCST90000219]
8[Fail] :: [Creating association | GCST90000219]
9[Success] :: [Creating sample | GCST90000219]
10[Success] :: [Deleting unpublished data | 5f60adb010d4370001b7d6dc]
11[Success] :: [Updating submission status: CURATION_COMPLETE | 5f60adb010d4370001b7d6dc]
** Errors: **
Creating association | Save error: true | Value is invalid, value is not between 0 and 1 | Risk element (allele, haplotype or SNPxSNP interaction) frequency in controls
Creating association | Save error: false | Value not valid i.e. greater than 9 | P-value mantissa
** Warnings: **
Validating associations | [GCST90000219 | avet_study] Full validation error: Risk element (allele, haplotype or SNPxSNP interaction) frequency in controls [data]: Value is invalid, value is not between 0 and 1 | true
Validating associations | [GCST90000219 | avet_study] Full validation error: P-value mantissa [data]: Value not valid i.e. greater than 9 | false

@eks-ebi - the error / warning pairs is most likely a bug. I'll look into fixing it. Thank you.