text:
Consul Catalog should split backends in different frontends if their tags traefik are different

Do you want to request a feature or report a bug?
Bug
What did you do?
I'm trying to enable Canary deployment using Nomad, Consul and Traefik. Canary deployment allows to deploy some instances of a new version of a service without disrupting all the running instances. When the new version is tested, it is promoted to replace the old version.
Nomad, the hashicorp scheduler, implements it by setting different consul tags on canary and non canary server instances. Both canary and non canary instances share the same consul service name in the consul catalog, and Nomad does not allow a different service name for canaries and non canaries. This might not be the Consul way to do things.
With canary deployed, the consul catalog looks like this:
for the list of services
$ curl -sv http://localhost:8500/v1/catalog/services | jq
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8500 (#0)
> GET /v1/catalog/services HTTP/1.1
> Host: localhost:8500
> User-Agent: curl/7.61.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Wed, 12 Sep 2018 08:18:54 GMT
< Vary: Accept-Encoding
< X-Consul-Effective-Consistency: leader
< X-Consul-Index: 1033
< X-Consul-Knownleader: true
< X-Consul-Lastcontact: 0
< Content-Length: 243
< Connection: keep-alive
<
{ [243 bytes data]
* Connection #0 to host localhost left intact
{
  "canary": [
    "traefik.frontend.rule=PathPrefix:/",
    "traefik.enable=true",
    "traefik.frontend.rule=PathPrefixStrip:/canary/",
    "external"
  ],
  "canary-int": [
    "internal"
  ],
  "consul": [],
  "nomad": [
    "http",
    "rpc",
    "serf"
  ],
  "nomad-client": [
    "http"
  ],
  "vault": [
    "standby"
  ]
}

for the details of a service
$ curl -sv http://localhost:8500/v1/catalog/service/canary | jq
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8500 (#0)
> GET /v1/catalog/service/canary HTTP/1.1
> Host: localhost:8500
> User-Agent: curl/7.61.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Wed, 12 Sep 2018 08:19:19 GMT
< Vary: Accept-Encoding
< X-Consul-Effective-Consistency: leader
< X-Consul-Index: 1045
< X-Consul-Knownleader: true
< X-Consul-Lastcontact: 0
< Content-Length: 3707
< Connection: keep-alive
<
{ [3707 bytes data]
* Connection #0 to host localhost left intact
[
  {
    "ID": "11ad3157-3800-aa8f-f80b-432e7108e8d2",
    "Node": "ip-10-0-30-186",
    "Address": "10.0.30.186",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.30.186",
      "wan": "10.0.30.186"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-gi3mcagiasxo3wfnadkongwxrzeuufg6",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefixStrip:/canary/",
      "external"
    ],
    "ServiceAddress": "10.0.30.186",
    "ServiceMeta": {},
    "ServicePort": 21087,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 1025,
    "ModifyIndex": 1025
  },
  {
    "ID": "11ad3157-3800-aa8f-f80b-432e7108e8d2",
    "Node": "ip-10-0-30-186",
    "Address": "10.0.30.186",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.30.186",
      "wan": "10.0.30.186"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-ndnbblp4ih32qd3bd7mnuuudlp2kwihf",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefix:/",
      "external"
    ],
    "ServiceAddress": "10.0.30.186",
    "ServiceMeta": {},
    "ServicePort": 23778,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 982,
    "ModifyIndex": 982
  },
  {
    "ID": "a2f334ce-eda1-c114-9195-0af8a2b4e5f8",
    "Node": "ip-10-0-42-126",
    "Address": "10.0.42.126",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.42.126",
      "wan": "10.0.42.126"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-5xdjpu2f4aysp4734oair5mclft7jz5b",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefix:/",
      "external"
    ],
    "ServiceAddress": "10.0.42.126",
    "ServiceMeta": {},
    "ServicePort": 21167,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 1000,
    "ModifyIndex": 1000
  },
  {
    "ID": "a2f334ce-eda1-c114-9195-0af8a2b4e5f8",
    "Node": "ip-10-0-42-126",
    "Address": "10.0.42.126",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.42.126",
      "wan": "10.0.42.126"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-jfogg53j4yi3pn6vidsuwi2eig6zx6ra",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefix:/",
      "external"
    ],
    "ServiceAddress": "10.0.42.126",
    "ServiceMeta": {},
    "ServicePort": 21356,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 984,
    "ModifyIndex": 984
  },
  {
    "ID": "e56ca08b-851f-2b63-ea9f-da4742f3d476",
    "Node": "ip-10-0-9-185",
    "Address": "10.0.9.185",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.9.185",
      "wan": "10.0.9.185"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-nk5hkzxoavc54y3tiv5e7a7ngn33crnu",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefixStrip:/canary/",
      "external"
    ],
    "ServiceAddress": "10.0.9.185",
    "ServiceMeta": {},
    "ServicePort": 24390,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 1033,
    "ModifyIndex": 1033
  },
  {
    "ID": "e56ca08b-851f-2b63-ea9f-da4742f3d476",
    "Node": "ip-10-0-9-185",
    "Address": "10.0.9.185",
    "Datacenter": "dc1",
    "TaggedAddresses": {
      "lan": "10.0.9.185",
      "wan": "10.0.9.185"
    },
    "NodeMeta": {
      "consul-network-segment": ""
    },
    "ServiceKind": "",
    "ServiceID": "_nomad-task-w34dbtuoxcjm4w4v23vbi3ja7uhszyx7",
    "ServiceName": "canary",
    "ServiceTags": [
      "traefik.enable=true",
      "traefik.frontend.rule=PathPrefixStrip:/canary/",
      "external"
    ],
    "ServiceAddress": "10.0.9.185",
    "ServiceMeta": {},
    "ServicePort": 21291,
    "ServiceEnableTagOverride": false,
    "ServiceProxyDestination": "",
    "ServiceConnect": {
      "Native": false,
      "Proxy": null
    },
    "CreateIndex": 1028,
    "ModifyIndex": 1028
  }
]

What did you see?
When Traefik sees this, it generates a single backend for the consul service, with all the server instances contained in it. level=debug msg="Configuration received from provider consul_catalog:
{
  "backends": {
    "backend-canary": {
      "servers": {
        "canary-0-0k81bnd6-NFzuZxR28gGaVtdtfg": {
          "url": "http://10.0.30.186:21087",
          "weight": 1
        },
        "canary-1-3XaFFPZ7QFV4I3Lu9uCETonW-RU": {
          "url": "http://10.0.30.186:23778",
          "weight": 1
        },
        "canary-2-l3Qq03XSPb8Q4wuxMM9HAMGjM6o": {
          "url": "http://10.0.42.126:21167",
          "weight": 1
        },
        "canary-3-oYumyPNaqo7uXqxzeBxYWWxLLmU": {
          "url": "http://10.0.42.126:21356",
          "weight": 1
        },
        "canary-4-U88UkG6UP2qQM5vshwXRDp07BmM": {
          "url": "http://10.0.9.185:21291",
          "weight": 1
        },
        "canary-5-ZhLBVZ5NXcZNicF-FFnbYGXRrdU": {
          "url": "http://10.0.9.185:24390",
          "weight": 1
        }
      },
      "loadBalancer": {
        "method": "wrr"
      }
    }
  },
  "frontends": {
    "frontend-canary": {
      "entryPoints": [
        "http",
        "https"
      ],
      "backend": "backend-canary",
      "routes": {
        "route-host-canary": {
          "rule": "PathPrefix:/"
        }
      },
      "passHostHeader": true,
      "priority": 0,
      "basicAuth": []
    }
  }
}

What did you expect to see instead?
I would have wanted to see traefik split the different servers in two separate backends because there is clearly two sets of server instances declared in consul when looking at tags. I wanted to see:
{
  "backends": {
    "backend-canary-0": {
      "servers": {
        "canary-1-3XaFFPZ7QFV4I3Lu9uCETonW-RU": {
          "url": "http://10.0.30.186:23778",
          "weight": 1
        },
        "canary-2-l3Qq03XSPb8Q4wuxMM9HAMGjM6o": {
          "url": "http://10.0.42.126:21167",
          "weight": 1
        },
        "canary-3-oYumyPNaqo7uXqxzeBxYWWxLLmU": {
          "url": "http://10.0.42.126:21356",
          "weight": 1
        }
      },
      "loadBalancer": {
        "method": "wrr"
      }
    },
    "backend-canary-1": {
      "servers": {
        "canary-0-0k81bnd6-NFzuZxR28gGaVtdtfg": {
          "url": "http://10.0.30.186:21087",
          "weight": 1
        },
        "canary-4-U88UkG6UP2qQM5vshwXRDp07BmM": {
          "url": "http://10.0.9.185:21291",
          "weight": 1
        },
        "canary-5-ZhLBVZ5NXcZNicF-FFnbYGXRrdU": {
          "url": "http://10.0.9.185:24390",
          "weight": 1
        }
      },
      "loadBalancer": {
        "method": "wrr"
      }
    }
  },
  "frontends": {
    "frontend-canary-0": {
      "entryPoints": [
        "http",
        "https"
      ],
      "backend": "backend-canary-0",
      "routes": {
        "route-host-canary": {
          "rule": "PathPrefix:/"
        }
      },
      "passHostHeader": true,
      "priority": 0,
      "basicAuth": []
    },
    "frontend-canary-1": {
      "entryPoints": [
        "http",
        "https"
      ],
      "backend": "backend-canary-1",
      "routes": {
        "route-host-canary": {
          "rule": "PathPrefix:/canary/"
        }
      },
      "passHostHeader": true,
      "priority": 0,
      "basicAuth": []
    }
  }
}

Output of traefik version: (What version of Traefik are you using?)
Version:      v1.6.6
Codename:     tetedemoine
Go version:   go1.10.3
Built:        2018-08-20_01:10:06PM
OS/Arch:      linux/amd64

What is your environment & configuration (arguments, toml, provider, platform, ...)?
Traefik running without containerization on a CoreOS host running a consul agent on localhost:
defaultEntryPoints = ["http", "https"]

[lifeCycle]
  requestAcceptGraceTimeout = "10s"

[entryPoints]

  [entryPoints.traefik]
    address = ":8079"

  [entryPoints.https]
    # unused as of now
    address = ":443"
    [entryPoints.https.tls]

  [entryPoints.http]
    address = ":80"

[ping]
  entryPoint = "traefik"

[metrics]
  [metrics.prometheus]
    entryPoint = "traefik"

[consulCatalog]
  endpoint = "127.0.0.1:8500"
  exposedByDefault = false

If applicable, please paste the log output in DEBUG level (--logLevel=DEBUG switch)
The most important log message is Configuration received from provider consul_catalog whith its JSON payload reformatted above.

...
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="List of services changed"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=nomad
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Filtering disabled Consul service nomad"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=nomad-client
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Filtering disabled Consul service nomad-client"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=vault
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=canary
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=canary-int
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Filtering disabled Consul service canary-int"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Fetching service" service=consul
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Filtering disabled Consul service consul"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Backend backend-canary: no load-balancer defined, fallback to 'wrr' method"
Sep 12 08:14:55 ip-10-0-9-185 traefik[2579]: time="2018-09-12T08:14:55Z" level=debug msg="Configuration received from provider consul_catalog: {\"backends\":{\"backend-canary\":{\"servers\":{\"canary-0-0k81bnd6-NFzuZxR28gGaVtdtfg\":{\"url\":\"http://10.0.30.186:21087\",\"weight\":1},\"canary-1-3XaFFPZ7QFV4I3Lu9uCETonW-RU\":{\"url\":\"http://10.0.30.186:23778\",\"weight\":1},\"canary-2-l3Qq03XSPb8Q4wuxMM9HAMGjM6o\":{\"url\":\"http://10.0.42.126:21167\",\"weight\":1},\"canary-3-oYumyPNaqo7uXqxzeBxYWWxLLmU\":{\"url\":\"http://10.0.42.126:21356\",\"weight\":1},\"canary-4-U88UkG6UP2qQM5vshwXRDp07BmM\":{\"url\":\"http://10.0.9.185:21291\",\"weight\":1},\"canary-5-ZhLBVZ5NXcZNicF-FFnbYGXRrdU\":{\"url\":\"http://10.0.9.185:24390\",\"weight\":1}},\"loadBalancer\":{\"method\":\"wrr\"}}},\"frontends\":{\"frontend-canary\":{\"entryPoints\":[\"http\",\"https\"],\"backend\":\"backend-canary\",\"routes\":{\"route-host-canary\":{\"rule\":\"PathPrefix:/\"}},\"passHostHeader\":true,\"priority\":0,\"basicAuth\":[]}}}"
...

Perhaps the easiest way to group nodes together is to introduce a consul tag traefik.service.group that can be used to group nodes within a single Consul service.

healthyNodes() in provider/consulcatalog/consul_catalog.go would need to return more than one catalogUpdate. Given a list of nodes in a consul service, it should return nodes grouped by identical tags.

Is @mildred’s commit something that could go into a release? As far as I can see there is no way to use Nomad’s blue/green deployments (via canary_tags) behind a Traefik instance currently?
Is there a work-around you can recommend? The only option I can come up with would involve tagging the Nomad job version number into the service name, but this is probably impractical for services that may be referenced outside of the Nomad job they are defined in.

Last news I had, providers are being moved to a new architecture, ans thé consul provider needs to ne portes over before this can be merged

@mildred Not sure if this would work for you, but we include version info in the service name and then have a higher traefik.frontend.priority on the canary tags.
e.g.:
........snip........
          "Services": [
            {
              "Id": "",
              "Name": "nginx-prod-us-${NOMAD_ALLOC_INDEX}-${NOMAD_META_VERSION}",
              "Tags": [
                "traefik.enable=true",
                "traefik.tags=api",
........snip........

@jcomeaux we're using Fabio and it's handled "natively" with canary_tags with the idea that the update of the service with canary enabled will simply have a different route myservice-canary for example.
Once promoted, that route disappears as Nomad will use the tags defined instead of canary_tags.
Still not sure how to roll this out with Traefik especially with things like auto_revert if the task fails to be healthy.

@juliens je viens de tester et on ne peut pas separer les backends, donc impossible de canary avec Consul 🌵

For anyone checking this in 2021, this is still the case. A workaround is possible and it's well described in Andy Dote's blog post.
In case this content ever taken offline, here's a brief sample a config that will work:
      service {
        name = "whoami"
        tags = [
          "edge.enable=true",
          "edge.http.routers.whoami.rule=Host(`whoami.example.com`)",
        ]
        canary_tags = ["dummy"]
      }

      service {
        name = "whoami-canary"
        tags = []
        canary_tags = [
          "edge.enable=true",
          "edge.http.routers.whoami_canary.rule=Query(`__canary=1`) && Host(`whoami.example.com`)",
        ]
      }

Basically, the idea is to split the service into two, which prevents Traefik from registering the new canary tasks as a backend server to the "current" stack.
Note that unlike in Andy's blog, canary_tags = ["dummy"] was used in the first service definition or else the stack would flap between enabled=true and enabled=false.

Perhaps the easiest way to group nodes together is to introduce a consul tag traefik.service.group that can be used to group nodes within a single Consul service.

The current state is really sub-optimal ...  Are there any plans to fix this with something like the above?  It should be possible to define a parameter in consul that will persuade traefik to group a set of instances of the same service into 'a different service' from traefik's perspective -- so that routing policy may be defined to treat 'groups of services' differently ...

Hey everyone,
I'm going to close this issue as support for Traefik v1 was dropped already so we won't be working on a fix for that branch. plus there is good workaround already described here.
If you believe something is still missing on the v2 implementation of Consul Catalog please don't hesitate to open a new one.

This is still an issue in v2 -- I will open another ticket

authors: breathe ddtmachado eigengrau jcomeaux m1keil mildred scalp42


text:
Add GrpcWeb middleware

What does this PR do?
This PR adds a middleware to be able to do gRPC web when using a gRPC backend.
Motivation
Fixes #4210
More
~- [ ] Added/updated tests~

[x] Added/updated documentation

Additional Notes
Co-authored-by: Kevin Pollet pollet.kevin@gmail.com

Exciting update, thanks!
It might be worth publicizing it by adding a note to
https://doc.traefik.io/traefik/user-guides/grpc/

Thanks a lot for the awesome middleware!

source: gharchive/pull-request

authors: juliens robfig zs-dima

repo: traefik/traefik

license: MIT

license_type: permissive

license_source: github-api


text:
Respect --cache-dir and other flags when auditing project directories

Fixes #299.

Confirmed locally that pip-audit --cache-dir=/tmp/test . now works as expected.

Yep. I realized that the only place it was being used was in the CI and that it wasn’t much better of a UX than directly running the command from within the virtual environment. But I can revert that, if you were using it locally!
Sent from mobile. Please excuse my brevity.

On Jun 14, 2022, at 6:16 PM, Alex Cameron @.***> wrote:

@tetsuo-cpp approved this pull request.
LGTM!
In Makefile:

.PHONY: all
all:
@echo "Run my targets individually!"

-.PHONY: run
What's happening here? I see make run is getting removed.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were assigned.

Yep. I realized that the only place it was being used was in the CI and that it wasn’t much better of a UX than directly running the command from within the virtual environment. But I can revert that, if you were using it locally! Sent from mobile. Please excuse my brevity.
…
On Jun 14, 2022, at 6:16 PM, Alex Cameron @.***> wrote:  @tetsuo-cpp approved this pull request. LGTM! In Makefile: > .PHONY: all all: @echo "Run my targets individually!" -.PHONY: run What's happening here? I see make run is getting removed. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were assigned.

All good! I wasn't using it, just curious.

authors: tetsuo-cpp woodruffw

repo: trailofbits/pip-audit


text:
Not sure about this one, but it could be a logic error

Inside uthenticode::read_certs() you add to offset while traversing WIN_CERTIFICATE structures which may exist 8-byte-aligned in the PE security directory. You then enter a while loop and add to it based on the WIN_CERTIFICATE members.
Overall in one loop iteration you do:
offset += sizeof(dwLength) + sizeof(wRevision) + sizeof(wCertificateType) + round(dwLength, 8);

I think with the last one you overshoot (well, technically you'd simply land inside the subsequent WIN_CERTIFICATE::bCertificate; but that would likely lead to all sorts of undesired effects).
The reason being that sizeof(bCertificate) is dwLength - 8 (i.e. sizeof(bCertificate) == dwLength - offsetof(WIN_CERTIFICATE, bCertificate)).
Or in other words: to find the next WIN_CERTIFICATE you have to take the original offset from when you entered the loop, add round(dwLength, 8) to that and then look at the next one.
This particular case doesn't seem to be covered by your test suite (for a lack of samples, I reckon?), which would explain why this went unnoticed. However, there's a good chance I simply have a wrinkle in my brain and am just blabbering some garbage 😉

Hmm, I think you're right.
Specifically, this line:
    std::vector<std::uint8_t> cert_data(raw_cert_table.data() + offset,
                                        raw_cert_table.data() + length);

should probably be:
    std::vector<std::uint8_t> cert_data(raw_cert_table.data() + offset,
                                        raw_cert_table.data() + length - 8);

...right? I'll do some testing and see whether that breaks anything.
(Also, if you know of a good way to generate a PE with multiple WIN_CERTIFICATE blobs, let me know! We're definitely missing good coverage for that.)

Ugh, I remember why we don't have coverage for this -- I tried to create a PE with multiple sequential signatures, but signtool.exe creates them with nested signatures instead.
If you know a good way to get signtool.exe or the Set-AuthenticodeSignature cmdlet to embed multiple certificates as separate WIN_CERTIFICATEs, let me know.

I haven't seen any binary multiple (non-nested) certificates either, to be honest.
I didn't mean line 400 but rather line 407 where it proceeds to the next WIN_CERTIFICATE structure. But you are right - and I missed that - line 400 is also affected by the same issue.
That said, I think there's a rather simple solution to this. The amount of offsetof(WIN_CERTIFICATE, bCertificate) (== 8) can be subtracted from length on line 399 or earlier and then everything falls in place, even for the issue on line 407, which I originally meant.

Yep, that sounds good to me. I'll create a fix PR later today.

I'm on the tohex thingamy anyway, so I can take this one as well, if you want.

Sure, if you don't mind! Separate PRs are preferred 🙂

If you know a good way to get signtool.exe or the Set-AuthenticodeSignature cmdlet to embed multiple certificates as separate WIN_CERTIFICATEs, let me know.

ClamAV cites a number of samples which have curious signatures, but I don't know how to convince signtool to append to the security directory instead of nesting. I have a hunch where this may be used, though (ELAM).
Negative serial doesn't seem to be such a big deal, I've seen those when using makecert for test-signing.

source: gharchive/issue

authors: hugmyndakassi woodruffw

repo: trailofbits/uthenticode


text:
Handler only with api version

I have problem that i see handler data only with version "/v1" not "/v1/ready" in prometheus.
Application:
from fastapi import FastAPI
from fastapi_versioning import VersionedFastAPI, version
from prometheus_fastapi_instrumentator import Instrumentator

app = FastAPI(title='MyApp')

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get("/ready")
@version(1)
async def ready():
    [my code]

app = VersionedFastAPI(app,
       version_format='{major}',
       prefix_format='/v{major}')

Instrumentator().instrument(app).expose(app)

Prometheus query:
http_requests_total{service="myapp"}
Prometheus data:
http_requests_total{container="myapp", endpoint="http", handler="/v1", instance="10.1.212.14:80", job="myapp", method="GET", namespace="default", pod="myapp-7c556d7547-pj87z", service="myapp", status="2xx"} | 10416

http_requests_total{container="myapp", endpoint="http", handler="/v1", instance="10.1.212.14:80", job="myapp", method="GET", namespace="default", pod="myapp-7c556d7547-pj87z", service="myapp", status="4xx"} | 2

Any idea?

The same Problem appears to me and seems to be related to sub apps in FastApi.
If the sub app is Instrumented, this has two caveats:

the prefix gets lost
You might need multiple Instrumentators which Need to exposed by different metric endpoints, which is also not ideal.

Any ideas how to resolve this?
Br Daniel

authors: dhofstetter sakulh

license: ISC


text:
MB-14310: Updates Go version to 1.19.2

Description
Updates go from 1.19.1 to 1.19.2. Includes release with security fixes.
Following instructions from https://transcom.github.io/mymove-docs/docs/backend/guides/how-to/upgrade-go-version/
Changelog or Releases

golang

go1.19.2 (released 2022-10-04) includes security fixes to the archive/tar, net/http/httputil, and regexp packages, as well as bug fixes to the compiler, the linker, the runtime, and the go/types package.

@eeeady Thanks for the review -- but do you not have write access to this repo? (Who does?)

repo: transcom/circleci-docker


text:
[MB-8471] Prime is able to create a payment request for different move

Jira ticket
Summary
Added tests to check for whether or not a move's MoveTaskOrderId matches the move's ServiceItem MoveTaskOrderId. If they don't match, then Prime should not be allowed to create a Payment Request and an error will be thrown.
Files that were changed

pkg/services/payment_request/payment_request_creator.go
pkg/services/payment_request/payment_request_creator_test.go
pkg/services/payment_request/rules.go
pkg/services/payment_request/rules_test.go

Verification Steps for Reviewers
These are to be checked by a reviewer.
Setup to Run the Code

Instructions for starting storybook
Instructions for starting the MilMove application
Instructions for running tests

How to test

You can pull down the branch
Run go test ./pkg/services/payment_request

Backend

[ ] Code follows the guidelines for Logging.
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Screenshots

Messages

:book:
:link: MB-8471

  Generated by :no_entry_sign: dangerJS against 059a81f836d1679c155618d9ba2ab679a1f8dbf9

closing this PR because it is a duplicate and a mistake

repo: transcom/mymove


text:
B 18028 create sit delivery prime api end point

B-18028
Summary
This is the first part of a series of backlogs that will create a new Prime API endpoint to allow the prime to enter the customer contact date and the customer requested delivery date for shipments in Origin or Destination SIT. These values will eventually be used to automatically update the Authorized End Date for Origin and Destination SIT and Required Delivery Date for Origin SIT (B-17854 will add the calculations). This ticket is just to setup the initial API endpoint to allow the prime to enter the dates.
Verification Steps for the Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Have the Agility acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

[ ] Has the branch been pulled in and checked out?
[ ] Have the BL acceptance criteria been met for this change?
[ ] Was the CircleCI build successful?
[ ] Has the code been reviewed from a standards and best practices point of view?

Setup to Run the Code

Instructions for starting storybook
Instructions for starting the MilMove application
Instructions for running tests

How to test

Access the Prime Swagger UI page http://primelocal:3000/swagger-ui/prime.html#/mtoShipment/updateSITDeliveryRequest
Under the /mto-shipments/{mtoShipmentID}/sit-delivery section, click the Try it out button
Enter a MTO shipment ID and eTag for a shipment that is in ORIGIN or DESTINATION SIT. Move codes ORGSIT and DSTSIT are good ones to use if you don't have one that is already in SIT.
In the body section change the dates for sitCustomerContacted and sitRequestedDelivery
Click the Execute button
You should get a 200 success code with a response that shows the dates you entered (see Screenshots section for example)

Frontend

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, Edge).
[ ] There are no new console errors in the browser devtools.
[ ] There are no new console errors in the test output.
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.
[ ] This change meets the standards for Section 508 compliance.

Backend

[ ] Code follows the guidelines for Logging.
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Database
Any new migrations/schema changes:

[ ] Follows our guidelines for Zero-Downtime Deploys.
[ ] Have been communicated to #g-database.
[ ] Secure migrations have been tested following the instructions in our docs.

Screenshots

Test coverage on server failed.
Last run: Mon 11 Dec 2023 06:54:22 PM UTC
Refer to this report to see coverage details for the server app.
Documentation for test coverage can be found at this link.

authors: r-mettler robot-mymove


text:
Update package json int

See main pr

Warnings

:warning:
This PR does not include changes to unit tests, even though it affects app code.

  Generated by :no_entry_sign: dangerJS against 401761473aa8f97346456309beba93e89e24179f

authors: cameroncaci robot-mymove


text:
MB-2942 SPIKE: Create mTLS webhook-client and support endpoint for testing

Description
MB-2942 is part of the Push Enable work. The spike was to create two independent apps that could communicate via mTLS: one to send a message, one to receive the message.
Part of the work in the spike revealed that we can use the existing Support API/Milmove server as our testing server, since it's mTLS-enabled and already built. This PR adds a new client, webhook-client, that can send a message to a new support endpoint, /support/v1/webhook-notify.
This is foundational work that will be refactored and built upon in future stories. It has no impact on existing functionality.
A helpful diagram created by @shimonacarvalho  is included at the bottom to illustrate the flow of the current iteration, plus planned behavior on staging once we have the appropriate certs. We determined that using a CAC won't be helpful when testing, so support for CACs won't be needed in the build-out.
Reviewer Notes

cmd/webhook-client uses the orders-api-client in the milmove_orders repo as its base. There's a lot of code addition, but less original code/changes that have been made.
You can (and should!) test both via Postman and the webhookclient`.
#TODO comments have been left behind to correspond with future stories

Setup
To test the webhook-client:
$ make server_run

// In a separate window,

$ make bin/webhook-client
$ webhook-client post-webhook-notify --message "Lorem ipsum" --port 9443 --hostname primelocal --insecure --certpath config/tls/devlocal-mtls.cer --keypath config/tls/devlocal-mtls.key

// Output:
{"message": "Lorem ipsum"}

To test in Postman:

Send a POST request to /support/v1/webhook-notify with the body:

{
    "message": "Lorem ipsum"
}

You should receive a response with your message included.
Code Review Verification Steps

[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change

Screenshots

Messages

:book:
:link: MB-2942

  Generated by :no_entry_sign: dangerJS against 0f09e0eb2a6214f9a4fdfe06e6f8dae228818296

authors: abbyoung robot-mymove


text:
MB-8173 Add secondary pickup address to customer return info

Description
We want shipments that are returned is customer responses to include the secondary pickup address so this adds it to the model_to_payload function. The yaml file already defined the responses as having this in there, so I didn't need to change that.
Reviewer Notes
Is the way I moved EqualDatePtr ok? It's a nice thing to have for internal too, and likely ghc, so I figure this is better in a shared spot rather than each having their own version.
I also was looking at potentially modifying the tests for Add/Edit because they also should return the shipment with the secondary pickup address included, but the way they're written now, I think it might be easier to just handle that in the story where we'll update the handlers to accept secondary pickup address. What do you think?
Setup

Run server and customer client
make server_run

make client_run

Log in as a customer who has a secondary pickup address (I used the HHG only one to test because it gets generated with a secondary pickup address already).

Check the network tab and look for the mto_shipments request.

Look at the response and see that secondary pickup address is now part of the response.

Code Review Verification Steps

[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change

We talked about having moved the date comparison in this thread: https://ustcdp3.slack.com/archives/CP497TGAU/p1622660847168600


text:
MB-3728 validator pattern to UpdateMTOShipment

Description
Introduce the validator pattern to the UpdateMTOShipment service layer. Converts one shared validation (checkStatus()), and converts one Prime-specific validation (checkAvailToPrime(...)).
Reviewer Notes
There are a lot of business-logic validations that are occurring in the handlers layer, that would be more appropriate in the services layer, but I had to control my urge to go an refactor everything... After this PR the validator pattern will be available for any further refactorings.

[x] Request review from a member of a different team.

Messages

:book:
:link: MB-3728

  Generated by :no_entry_sign: dangerJS against 7ff3609c4c75439785911f05701318328173279a

authors: nelztruss robot-mymove


text:
Please document env vars

I see 2 env vars in the source code, but they don't seem to work and it will still ask for the token and write it to ~/.transifexrc.
Would be great to fully run it with env vars only and document it in the README.
Thanks!

@m3nu Of course we can add it to the documentation, but regarding your question could you please share a little bit more about how you set your environment variables, to unblock you?
Things I tried so far, just to see if everything behaves normally:

Prefixing the variable TX_TOKEN=randomstring tx status ✅
Adding the variable in profile file export TX_TOKEN="randomstring" ✅

It works now. Not sure what was wrong before.

Thanks for the update @m3nu! 💪
We will include the environment variables in the documentation and I will close this!

Documentation updated!

repo: transifex/cli


text:
[Bug] Not using cached translations when offline (React Native)

Current Behavior
When network is unreachable the SDK falls back to the default language
Expected Behavior
The SDK should use the translations in cache if available and if not fall back to the default language
Steps to Reproduce
I created a local MemoryCache class to provide a way to cache translations (I'm using React Native). I also created a way to refresh the cache with a custom time limit.
Here's the code for the cache storage:
import { IMemoryCache } from '@transifex/native';
import { MMKV } from 'react-native-mmkv';

export default class MemoryCache implements IMemoryCache {
  storage: MMKV;
  translationsByLocale: Record<string, Record<string, string>>;

  constructor() {
    this.translationsByLocale = {};
    this.storage = new MMKV();
  }

  /**
   * Store locale translations in cache
   *
   * @param {String} localeCode
   * @param {Object} translations - Object with translation key:value pairs
   * @param {String} translations[key] - Translation string
   */
  update(localeCode: string, translations: Record<string, string>) {
    const timestamp = Date.now();
    const prevTranslations = this.storage.getString(localeCode);

    if (!prevTranslations) {
      this.storage.set('timestamp', timestamp);
      this.storage.set(localeCode, JSON.stringify(translations));
      return;
    }

    const newTranslations = {
      ...JSON.parse(prevTranslations),
      ...translations,
    };

    this.storage.set('timestamp', timestamp);
    this.storage.set(localeCode, JSON.stringify(newTranslations));
  }

  /**
   * Get translations by locale from cache
   *
   * @param {String} localeCode
   * @returns {Object} translations
   * @returns {String} translations[key]
   */
  getTranslations(localeCode: string) {
    const prevTranslations = this.storage.getString(localeCode);

    if (!prevTranslations) {
      return '';
    }

    const translations = JSON.parse(prevTranslations);

    return translations;
  }

  /**
   * Check if locale has translations in cache
   *
   * @param {String} localeCode
   * @returns {Boolean}
   */
  hasTranslations(localeCode: string) {
    const prevTranslations = this.storage.getString(localeCode);

    if (!prevTranslations) {
      return false;
    }

    return true;
  }

  /**
   * Check if translations are stale and need refreshing
   *
   * @param {String} localeCode
   * @returns {Boolean}
   */
  isStale(localeCode: string): boolean {
    const timestamp = Date.now();
    const lastUpdated = this.storage.getNumber('timestamp');

    if (!lastUpdated || !this.hasTranslations(localeCode)) {
      return true;
    }

    const age = timestamp - lastUpdated;

    if (age > 3600000) {
      return true;
    }

    return false;
  }

  /**
   * Get translation by key. If key does not exist in cache,
   * return empty string
   *
   * @param {String} key
   * @param {String} localeCode
   * @returns {String} - translation or empty string
   */
  get(key: string, localeCode: string) {
    return this.getTranslations(localeCode)[key] || '';
  }
}

Reproduction:

Add above caching class in your Transifex RN project
Install the app and change to a language other than your default just to cache it
Close your app
Close the device network connection
Re-open the app => The app reverts to default language

Possible Solution
Implement a mechanism to use cached translations, if present. Alternatively expose a way to choose translations source if translations fetching fails.
Possible Implementation
When fetching translations fails check the cache (if implemented) for stored translation for the requested locale

@ManosChatzidakis Your code looks legit. When you re-open the app, do you properly call the tx.setCurrentLocale(locale) to the locale to be restored? And if yes, what is the output of the tx.getCurrentLocale()?
For example:
// The app is restored
await tx.setCurrentLocale(<the stored locale of the previous session>);
// Assuming the network is down
console.log(tx.getCurrentLocale());

It works! I'm really sorry for the bug report, I was getting the locale incorrectly and thus setting an undefined locale. Created a minimal reproduction and figured it out :)

authors: ManosChatzidakis nbasili

repo: transifex/transifex-javascript


text:
Updating to react-notion-x v4.7.10 throw error

Related PR in react-notion-x: https://github.com/NotionX/react-notion-x/pull/108
Strange situation I'm in. I tried to update the react-notion-x package to the latest version and all is well in my local environment but when it gets deployed on vercel, it throws the error seen below. From debugging into it, it seems to come from the get-page-table-of-contents.ts file in notion-utils where recordMap exists but recordMap.block is undefined so object.keys can't parse it. Seems to happen with any public notion page.

closing as the underlying issue will be fixed in react-notion-x


text:
Add renderTimestamp to mount to fix initial deselection bug

This PR addresses
Previous selections weren't able to be unselected by simply clicking on the selection like before.
They were only unselectable after selecting something.
The component lifecycle didn't handle mount but did handle new props.
To Test this PR

Navigate to check with selection already made
Click "Select" to go to select mode
Make sure you can deselect something already selected by clicking on a selection

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

authors: klappy mannycolon

repo: translationCoreApps/VerseCheck

license: mit

license_source: bigquery


text:
🛑 TechinAsia_Laravel_API is down

In d03c97f, TechinAsia_Laravel_API (https://www.techinasia.com/api/2.0/companies) was down:

HTTP code: 403
Response time: 226 ms

Resolved: TechinAsia_Laravel_API is back up in 7b4de6c after 7 minutes.

repo: traqy/upptime


text:
🛑 TechinAsia_Laravel_API is down

In 9fb3939, TechinAsia_Laravel_API (https://www.techinasia.com/api/2.0/companies) was down:

HTTP code: 403
Response time: 225 ms

Resolved: TechinAsia_Laravel_API is back up in b3e3527 after 8 minutes.


text:
🛑 TechinAsia_WordPress_API is down

In 12fd95c, TechinAsia_WordPress_API (https://www.techinasia.com/wp-json/techinasia/2.0/posts) was down:

HTTP code: 403
Response time: 227 ms

Resolved: TechinAsia_WordPress_API is back up in 8308d36 after 7 minutes.


text:
🛑 TechinAsia_WordPress_API is down

In f34464b, TechinAsia_WordPress_API (https://www.techinasia.com/wp-json/techinasia/2.0/posts) was down:

HTTP code: 403
Response time: 171 ms

Resolved: TechinAsia_WordPress_API is back up in 35b1bcf after 10 minutes.


text:
Export GOPATH without trailing ":"

Closes travis-ci/travis-ci#3439

Thanks!

authors: meatballhat shurcooL

repo: travis-ci/travis-build


text:
ClangFormat incorrectly splits Objective-C string literals

I cloned and pulled the latest release of ClangFormat, which still exhibits this bug.
An NSArray literal containing NSString literals before running ClangFormat:
  NSArray *testInputStrings = @[
    @"abcdefg",
    @"*^&I*BEI*BDI C# RG#RC#YJGR #",
    @"那隻敏捷的棕色狐狸跳線懶狗。",
    @"1",
    @"12",
    @"123",
    @"1234",
    @"12345",
    @"123456",
    @"1234567",
    @"12345678",
    @"123456789",
    @"1234567890",
 @"kljsadgflkuyaerkuqhfbdsalkfbalkshdeklahdskjbfaskljhraslkrhuwbdbhsCKJhbasjkhfawkjhgrkjaebfdjkahsbdfjkhawkjfegkqrwjygr3uy24764587321rgj32hvr4jkh2vrkj2vfqrfqwjkh*&^*^&*RIBIEBKHBDJHABJEHBjqdbwjy3egjwybdehjbdfjsdhbfjsehbfjhsbfsjhbfdjshbfsmdbfshfbejw3jbfdsmhbdmshbfs"
  ];

The same NSArray literal after running ClangFormat:
  NSArray *testInputStrings = @[
    @"abcdefg",
    @"*^&I*BEI*BDI C# RG#RC#YJGR #",
    @"那隻敏捷的棕色狐狸跳線懶狗。",
    @"1",
    @"12",
    @"123",
    @"1234",
    @"12345",
    @"123456",
    @"1234567",
    @"12345678",
    @"123456789",
    @"1234567890",
    @"kljsadgflkuyaerkuqhfbdsalkfbalkshdeklahdskjbfaskljhraslkrhuwbdbhsCKJhbasj"
    @"khfawkjhgrkjaebfdjkahsbdfjkhawkjfegkqrwjygr3uy24764587321rgj32hvr4jkh2vr"
    @"kj2vfqrfqwjkh*&^*^&*"
    @"RIBIEBKHBDJHABJEHBjqdbwjy3egjwybdehjbdfjsdhbfjsehbfjhsbfsjhbfdjshbfsmdbf"
    @"shfbejw3jbfdsmhbdmshbfs"
  ];

Have set PenaltyBreakString: 2147483647 and clang-format is still breaking Objective-C string literals.
In my eyes, this issue should be reopened

It also seems to be a bug for me. I thought that PenaltyBreakString  should always have a higher priority than the ColumnLimit . Otherwise, is there a way for us to keep these two settings effective at the same time?

In my eyes, this issue should be reopened

It's not an issue with ClangFormat-Xcode. You need to report these issues to the LLVM Bugzilla.

authors: danwalkowski timbodeit tonyarnold xilin

repo: travisjeffery/ClangFormat-Xcode


text:
Fix transfer id in the delete_ssl method

When I try to delete SSL using the delete_ssl method, I get an error:
raise StatusCakeResponseError(error_message or 'API Call Failed')
statuscake.exceptions.StatusCakeResponseError: Provided ID must be numeric

Thanks !
I have no way to test this anymore but will accept as-is :-)

authors: kchudnov trbs

repo: trbs/statuscake


text:
Error with http call

Hi,
When i make a call to external API it the retry it loosing bearer token and authorization is not possible anymore.
+get_token:
http>: ${some_url}/rest/default/V1/integration/admin/token
method: POST
content:
username: ${username}
password: ${password}
content_format: json
headers:
- Content-Type: "application/json"
- Cookie: "PHPSESSID=32bfe8c8e79a7d445abaa9f04e32dd44"
store_content: true
and the error:
2023-04-14 13:16:11.972 +0000 [INFO] (0210@[53:pr_33578612:230461823]+wf_src_l0_+wf_^sub+load_conf_table^sub+td-for-each-1+if^sub+loop^sub+loop-0+magento_import+magento_import_2+api_call) io.digdag.core.agent.OperatorManager: http>: ${url}/rest/all/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=updated_at&searchCriteria[filter_groups][0][filters][0][value]=2023-04-13%2000:30:00&searchCriteria[filter_groups][0][filters][0][condition_type]=gteq&searchCriteria[filter_groups][1][filters][0][field]=updated_at&searchCriteria[filter_groups][1][filters][0][value]=2023-04-13%2001:00:00&searchCriteria[filter_groups][1][filters][0][condition_type]=lt
2023-04-14 13:16:11.995 +0000 [INFO] (0210@[53:pr_src_l0_it_magento_ploom:33578612:230461823]+wf_src_l0_it+wf_src_l0^sub+load_conf_table^sub+td-for-each-1+if^sub+loop^sub+loop-0+mport+mport_2+api_call) io.digdag.standards.operator.HttpOperatorFactory$HttpOperator: Sending HTTP request: GET https://***
2023-04-14 13:16:12.272 +0000 [ERROR] (0210@[53:pr_src_l0:33578612:230461823]+wf_src_l0+wf_src_l0_^sub+load_conf_table^sub+td-for-each-1+if^sub+loop^sub+loop-0+import+import_2+api_call) io.digdag.core.agent.OperatorManager: Task failed, retrying
io.digdag.spi.TaskExecutionException: io.digdag.spi.TaskExecutionException: HTTP 4XX Client Error: GET https://*** - 401 Unauthorized: {"message":"The consumer isn't authorized to access %resources.","parameters":{"resources":"XYZ::actions_view"}}
at io.digdag.spi.TaskExecutionException.ofNextPollingWithCause(TaskExecutionException.java:85)
Why the call is loosing autherization? Token is still valid afterwards, but somehow is not used anymore..

Hello, @makoslokos
Have you ever tried http tool like curl command?
You can debug -l debug option like digdag run -l debug config.yml.
It shows http request like
+disp_current_date:
  http>: http://localhost:8080/
  headers:
    - hoge: hogehoge

2023-04-16 00:16:05 +0900 [DEBUG] (HttpClient@548755293-19) org.eclipse.jetty.client.HttpSender: Request headers HttpRequest[GET / HTTP/1.1]@41ef043f
Accept-Encoding: gzip
User-Agent: Digdag/0.10.4 Jetty/9.3.z-SNAPSHOT
hoge: hogehoge
Host: localhost:8080

Yes, i have tried. In general the url is accessible, this is not the case. Is suspect that the problem is that if during WF execution appear some warning (e.g. too many subtasks) the http clause losts somehow credentials to call url and appears the error of 4xx.

If Digdag send the same request normal and error case, (you can check -l debug)
Is there any possibility server-side issue? (ie. Close/Expire session due to too many requests or retry.)

Hi,
I noticed you configured method:POST in yaml file but HTTP error is happening with GET method.

Sending HTTP request: GET https://***

I'm not sure if the URL is same with what you configured in yaml file but I guess your access is redirected to another URL.
If your application needs complex access control, it might be better to use py> or rb> operators instead of http> operator.
https://docs.digdag.io/operators/scripting.html
This is an example of my case.

yaml definition

+get_data_from_api:
  py>: test.send_http_request
  _env:
    PYTHONPATH: ./scripts
    api_token: ABCDEFG

scripts/test.py

import requests
import backoff

MAX_RETRIES = 10
RETRY_INTERVAL_FACTOR = 15  # seconds
REQUEST_TIMEOUT = 30  # seconds

@backoff.on_exception(backoff.expo, Exception, max_tries=MAX_RETRIES, factor=RETRY_INTERVAL_FACTOR)
def send_http_request(api_token):
    url = f'https://example.com/path/to/somewhere'
    query = f'SELECT * FROM example_table'
    headers = {
        'Authorization': f'Bearer {api_token}'
    }
    try:
        r = requests.get(url, timeout=REQUEST_TIMEOUT, headers=headers, params={'query': query})
        r.raise_for_status()
        return r.json()
    except requests.exceptions.HTTPError as e:
        print('HTTP Error: ', e)
    except requests.exceptions.RequestException as e:
        print('HTTP connection failure: ', e)
    except Exception as e:
        print('Unknown error', e)

Ok, will try. Thanks

authors: hiroyuki-sato makoslokos sakama

repo: treasure-data/digdag


text:
Digdag documentation Add '_after:' parameter description & usage

Though the standard syntax is great for understanding. Utilizing 'after' to generate a DAG explicitly is very powerful for optimizing the overall processing time of a workflow. We should emphasize it as part of Digdag's docs in the future.

Close the old issue. Please reopen or file new one if you need.

authors: rbparrish yoyama


text:
chore: Bump Rust version(s)

Upstream base tree-sitter has seen some updates this now
incorporates.
It also bumps this crate's version. The scheme chosen is for the
Rust crate's version to be in lockstep with the tree-sitter
dependency. Looking at the major tree-sitter libraries,
this seems to be the general style chosen. For example:

Python: https://github.com/tree-sitter/tree-sitter-python/blob/0dee05ef958ba2eae88d1e65f24b33cad70d4367/Cargo.toml
TypeScript: https://github.com/tree-sitter/tree-sitter-typescript/blob/198d03553f43a45b92ac5d0ee167db3fec6a6fd6/Cargo.toml

The commit also adjust the Rust code to be
compatible (the &'static change was just a lint,
not a compile error). cargo build and cargo test now pass.

We don't tie parser versions to the tree-sitter crate (that's what ABI is for, which can be checked independently of the version).
And aren't the bindings autogenerated?

Thanks for your comments!
I'm not sure I understand the versioning scheme. Would appreciate guidance here!

Starting from current HEAD at 9e3ec9848f28d26845ba300fd73c740459b83e9b , just bumping tree-sitter as:
diff --git a/Cargo.toml b/Cargo.toml
index d0b9dc6..6341487 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,7 +15,7 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"]
 path = "bindings/rust/lib.rs"

 [dependencies]
-tree-sitter = "~0.20.10"
+tree-sitter = ">=0.22.0"

 [build-dependencies]
 cc = "1.0"

I can regenerate bindings as
cargo install tree-sitter-cli@0.22.6 && ~/.cargo/bin/tree-sitter generate

using 0.22.6 as you did the other day in 9bb99439aa9666a4c407f89759775c5c46557875 . Now git diff bindings/rust gives
diff --git a/bindings/rust/build.rs b/bindings/rust/build.rs
index 8851fed..718f897 100644
--- a/bindings/rust/build.rs
+++ b/bindings/rust/build.rs
@@ -7,6 +7,9 @@ fn main() {
         .flag_if_supported("-Wno-unused-parameter")
         .flag_if_supported("-Wno-unused-but-set-variable")
         .flag_if_supported("-Wno-trigraphs");
+    #[cfg(target_env = "msvc")]
+    c_config.flag("-utf-8");
+
     let parser_path = src_dir.join("parser.c");
     c_config.file(&parser_path);

aka no changes in lib.rs. cargo test then fails. The changes necessary for Rust to compile I added manually. I will amend the above diff from generate to the PR as well.

Re: versioning scheme. I found this example where the tree-sitter dependency was bumped a minor, while the Crate version wasn't.
Is the versioning I chose here wrong? I'm happy to adjust!

Thank you. I regenerated after removing first, which gives slightly different results. Didn't squash yet to keep it readable.
Re: semver. The context for my PR is just that I'm trying to get this crate onto crates.io (with tree-sitter dep as >=0.22.0). It's not been released on there yet. So an initial release as 0.0.1 (the current one) would probably be fine with semver and is totally fine with my use case. Which initial version do you prefer?

Actually, versioning and publishing should be handled by our workflows; we'd prefer it if there was no "rogue publishing" that can interfere with that.
@ObserverOfTime

Publishing should be handled by our workflows. Versioning should start at 0.1.0 or 1.0.0 (0.0.1 = experimental = unpublishable).

Do we have the secrets configured for this repository? I would add the actions then today

Ideally they should be available org-wide (as we eventually want to publish ALL THE PARSERS).

Unfortunately, crates does not support team tokens and pypi has yet to approve the org.

@ObserverOfTime Can you set up the token and the publish workflow for this repo then?

Sure, but it would be published on my account.

Can we use our github app? It's a bit annoying that we have to tie packages to personal accounts that may move on, orphaning the package.

The app is for GitHub tokens, not registry tokens.

For reference: https://doc.rust-lang.org/cargo/reference/publishing.html#cargo-owner . Multiple individuals (all fully entitled) can be made owners, alleviating the issue of orphaning. Teams can then be entitled to publish crate updates etc.

Hey folks, is there a way I can help move this forward?

How can we push this PR forward ??

authors: MichaHoffmann ObserverOfTime ahmedhesham6 alexpovel clason

repo: tree-sitter-grammars/tree-sitter-hcl


text:
Data types are no longer highlighted

Problem description
Java data type keywords are no longer highlighted correctly.

This applies even for void functions.

As this is the grammar seemingly used by Linguist, this affects all Java repositories on GitHub.
Expected parse tree output (optional)
N/A.
Actual parse tree output (optional)
N/A.

Hello? Anyone?

this is also a keyword and is not highlighted

Seems like a potential editor issue (if it is, that's on their queries, not here)

repo: tree-sitter/tree-sitter-java


text:
atm language build failed: Python 3.6.5 not supported by gyp

Python language build error when running: apm install python-debugger language-python. Is tree-sitter incompatible with newer versions of python?
npm ERR! node v6.9.5
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE

npm ERR! tree-sitter-python@0.11.3 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the tree-sitter-python@0.11.3 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the tree-sitter-python package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs tree-sitter-python
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls tree-sitter-python
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /private/var/folders/1_/3cmgrq_n4y16hz37wm7mfnkm0000gn/T/apm-install-dir-118512-42406-1tygjwq.yermqp8pvi/npm-debug.log
npm ERR! code 1

No /private/var/folders/1_/3cmgrq_n4y16hz37wm7mfnkm0000gn/T/apm-install-dir-118512-42406-1tygjwq.yermqp8pvi/npm-debug.log file available.
Got a more verbose error when attempting to build tree-sitter-cli 'manually' using npm install tree-sitter-cli
gyp ERR! configure error
gyp ERR! stack Error: Python executable "/anaconda3/bin/python" is v3.6.5, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack     at PythonFinder.failPythonVersion (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:492:19)
gyp ERR! stack     at PythonFinder.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:474:14)
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:282:7)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at maybeClose (internal/child_process.js:961:16)
gyp ERR! stack     at Socket.stream.socket.on (internal/child_process.js:380:11)
gyp ERR! stack     at Socket.emit (events.js:182:13)
gyp ERR! stack     at Pipe._handle.close [as _onclose] (net.js:595:12)
gyp ERR! System Darwin 17.5.0
gyp ERR! command "/usr/local/Cellar/node/10.4.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/milk/node_modules/tree-sitter
gyp ERR! node -v v10.4.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok

@CooperStansbury Yes, sadly it is. Problem stems from the use of node-gyp, and the fact GYP only works with Python 2.7. The problem (most likely) never go away since GYP has been replaced by GN in Chromium, which essentially means GYP is abandonware at this point.

Yeah, this is a problem for all node modules that contain c or c++ code. Python 2 currently needs to be installed in order to build them. It’s really unfortunate.

Rad, thanks guys!

Yes, we can start pre-building the module on all platforms on CI, similar to https://github.com/tree-sitter/tree-sitter-ruby/pull/87 and https://github.com/tree-sitter/tree-sitter-bash/pull/20.

That's great!

Is this still the same issue?
npm error gyp info it worked if it ends with ok
npm error gyp info using node-gyp@10.1.0
npm error gyp info using node@22.2.0 | darwin | arm64
npm error gyp info find Python using Python version 3.12.3 found at "/opt/homebrew/opt/python@3.12/bin/python3.12"
npm error gyp info spawn /opt/homebrew/opt/python@3.12/bin/python3.12
npm error gyp info spawn args [
npm error gyp info spawn args '/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm error gyp info spawn args 'binding.gyp',
npm error gyp info spawn args '-f',
npm error gyp info spawn args 'make',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/Users/slu/entropy-dynamics/nucleus/instrumenter/node_modules/tree-sitter-python/build/config.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/Users/slu/Library/Caches/node-gyp/22.2.0/include/node/common.gypi',
npm error gyp info spawn args '-Dlibrary=shared_library',
npm error gyp info spawn args '-Dvisibility=default',
npm error gyp info spawn args '-Dnode_root_dir=/Users/slu/Library/Caches/node-gyp/22.2.0',
npm error gyp info spawn args '-Dnode_gyp_dir=/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp',
npm error gyp info spawn args '-Dnode_lib_file=/Users/slu/Library/Caches/node-gyp/22.2.0/<(target_arch)/node.lib',
npm error gyp info spawn args '-Dmodule_root_dir=/Users/slu/entropy-dynamics/nucleus/instrumenter/node_modules/tree-sitter-python',
npm error gyp info spawn args '-Dnode_engine=v8',
npm error gyp info spawn args '--depth=.',
npm error gyp info spawn args '--no-parallel',
npm error gyp info spawn args '--generator-output',
npm error gyp info spawn args 'build',
npm error gyp info spawn args '-Goutput_dir=.'
npm error gyp info spawn args ]
npm error gyp info spawn make
npm error gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm error In file included from ../bindings/node/binding.cc:3:
npm error ../../nan/nan.h:2548:8: error: no matching member function for call to 'SetAccessor'
npm error   tpl->SetAccessor(
npm error   ~~~~~^~~~~~~~~~~
npm error /Users/slu/Library/Caches/node-gyp/22.2.0/include/node/v8-template.h:1055:8: note: candidate function not viable: no known conversion from 'v8::AccessControl' to 'PropertyAttribute' for 5th argument
npm error   void SetAccessor(
npm error        ^
npm error /Users/slu/Library/Caches/node-gyp/22.2.0/include/node/v8-template.h:1049:8: note: candidate function not viable: no known conversion from 'imp::NativeGetter' (aka 'void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value> &)') to 'AccessorGetterCallback' (aka 'void (*)(Local<String>, const PropertyCallbackInfo<Value> &)') for 2nd argument
npm error   void SetAccessor(
npm error        ^
npm error In file included from ../bindings/node/binding.cc:3:
npm error ../../nan/nan.h:2594:8: error: no matching member function for call to 'SetAccessor'
npm error   tpl->SetAccessor(
npm error   ~~~~~^~~~~~~~~~~
npm error /Users/slu/Library/Caches/node-gyp/22.2.0/include/node/v8-template.h:1055:8: note: candidate function not viable: no known conversion from 'v8::AccessControl' to 'PropertyAttribute' for 5th argument
npm error   void SetAccessor(
npm error        ^
npm error /Users/slu/Library/Caches/node-gyp/22.2.0/include/node/v8-template.h:1049:8: note: candidate function not viable: no known conversion from 'imp::NativeGetter' (aka 'void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value> &)') to 'AccessorGetterCallback' (aka 'void (*)(Local<String>, const PropertyCallbackInfo<Value> &)') for 2nd argument
npm error   void SetAccessor(
npm error        ^
npm error 2 errors generated.
npm error make: *** [Release/obj.target/tree_sitter_python_binding/bindings/node/binding.o] Error 1
npm error gyp ERR! build error
npm error gyp ERR! stack Error: `make` failed with exit code: 2
npm error gyp ERR! stack at ChildProcess.<anonymous> (/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
npm error gyp ERR! System Darwin 23.5.0
npm error gyp ERR! command "/opt/homebrew/Cellar/node/22.2.0/bin/node" "/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm error gyp ERR! cwd /Users/slu/entropy-dynamics/nucleus/instrumenter/node_modules/tree-sitter-python
npm error gyp ERR! node -v v22.2.0
npm error gyp ERR! node-gyp -v v10.1.0
npm error gyp ERR! not ok

Are we sure that this tool requires python2 to work? That surely cannot be okay. I don't even know if it is practical to install py2 on macOS anymore. I'm sure it's possible, but...

sigh, i seem to be getting (with node 22 now) issues with gyp building for a lot more than just the python tree sitter module.

authors: CooperStansbury banacorn maxbrunsfeld thomasjo unphased

repo: tree-sitter/tree-sitter-python


text:
Clean up Discord invite link regex

I started the MR to remove the group capturing via adding ?: but then realized there was a doubled list item, and a doubled discord.gg link in the third_party RegEx.

Old non-3rd-party regex:

Updated:


text:
[lakeFS OC] Implement commitJob and commitTask

Commit job and commit task by committing (in lakeFS) the changes, and then merge to output branch.

What happens when you run this to write a simple DF?

Closed with https://github.com/treeverse/lakeFS/pull/4429

repo: treeverse/lakeFS


text:
Message should be clear that it is fatal quickstart mode can only run with local settings

quickstart mode can only run with local settings isn't clear that it's a fatal error and should be.
Originally posted by @rmoff in https://github.com/treeverse/lakeFS/issues/6400#issuecomment-1678607902

Fixed as part of: #6402

authors: N-o-Z rmoff


text:
Better error handling for file not find exception during export

closes #1687

Codecov Report

Merging #1690 (39795c0) into master (f9bcb3d) will decrease coverage by 0.07%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #1690      +/-   ##
==========================================
- Coverage   39.08%   39.01%   -0.08%
==========================================
  Files         167      167
  Lines       13771    13773       +2
==========================================
- Hits         5382     5373       -9
- Misses       7626     7635       +9
- Partials      763      765       +2

Impacted Files
Coverage Δ

pkg/graveler/committed/value.go
74.35% <0.00%> (-4.02%)
:arrow_down:

pkg/pyramid/tier_fs.go
58.51% <0.00%> (-3.94%)
:arrow_down:

Continue to review full report at Codecov.

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


text:
Test description typo in PriorityQueue.test.js

As title, it appears to me that the test description in line 37 :
  it('should be possible to change priority of internal nodes', () => {

and in line 54 :
  it('should be possible to change priority of head node', () => {

should be exchanged, since the node with item of value '100' should be the head node in my opinion. Thank you.

@iamlockon I guess you're right. The naming should be fixed now.

authors: iamlockon trekhleb

repo: trekhleb/javascript-algorithms


text:
Can we add our own cutom colors in the props for bar and line charts?

What problem does this feature solve?
right now we can only add colors predefined by tremor. It would be nice if we could also add any custom color.
What does the proposed API look like?
No response

Hey @LombaxTech, you actually can! Have a look here: https://www.tremor.so/docs/getting-started/theming#custom-charts-colors

authors: LombaxTech severinlandolt

repo: tremorlabs/tremor


text:
Negative margin not added properly when using margin shorthand

Adding negative margin to Box as <Box margin="-10px 0 10px 0"></Box> results in margin: calc(10px 0 10px 0* -1);; thus evaluating to a Invalid Property Value
If the same margin is divided two props as <Box margin="0 0 10px 0" marginTop="-10px"></Box>, it results in margin: 0 0 10px; margin-top: calc(10px* -1); which renders the element in expected position.
Issue is reproducible in 1.29.0 & also v2

It also happens with other margin values. Something about seeing a '-' character in the beginning?
                margin="0 0 10px 0"
                marginLeft="-10px"

Saw the styled-system config for margin passes any input to a transform function
https://github.com/trendmicro-frontend/tonic-ui/blob/v2/packages/styled-system/src/config/margin.js#L9
defined here
https://github.com/trendmicro-frontend/tonic-ui/blob/v2/packages/styled-system/src/utils/transforms.js#L35
Kind of looks like we should bail out of that positiveOrNegative function if we detect multiple values in the margin/padding shorthands

Kind of looks like we should bail out of that positiveOrNegative function if we detect multiple values in the margin/padding shorthands

Yes however there may likely be a use-case where someone passes in multiple tonic values eg: -8x 0 4x 0 which this function will help convert to the proper css values, however, I'm wondering why we're using calc here instead of simply returning -${value} like in the earlier version? I'm not quite seeing the added advantage of using calc, but there might be some benefits or use-cases that I'm missing? Although, the use of calc here not only seems a bit redundant, but it also restricts us from passing our own calc function for margin/padding, which can lead to an invalid property value as well.

Yes however there may likely be a use-case where someone passes in multiple tonic values eg: -8x 0 4x 0 which this function will help convert to the proper css values.

yes, though one minor note. margin/padding shorthand doesn't support multiplier values except in the very simple case of margin="8x". Something like margin="8x 0 4x 0" is passed exactly as it is to browser.

I guess that would be a nice thing to fix too, though, I never minded it much. I can never remember what the margin/padding shorthands are and would rather someone set the individual margin properties, instead.

Kind of looks like we should bail out of that positiveOrNegative function if we detect multiple values in the margin/padding shorthands

That's right!

Yes however there may likely be a use-case where someone passes in multiple tonic values eg: -8x 0 4x 0 which this function will help convert to the proper css values, however, I'm wondering why we're using calc here instead of simply returning -${value} like in the earlier version? I'm not quite seeing the added advantage of using calc, but there might be some benefits or use-cases that I'm missing? Although, the use of calc here not only seems a bit redundant, but it also restricts us from passing our own calc function for margin/padding, which can lead to an invalid property value as well.

The calc function is required when CSS variables are enabled. It automatically converts theme tokens into CSS variables, as shown below:

Note: You cannot use margin-top: -var(--tonic-space-1x) in this case.
I realize this restricts us from passing a custom calc function. I will investigate a better way to detect multiple values so that the negation is applied only to theme tokens. PRs are also welcome for the fix.

CSS Variables
Regarding CSS variables, you can manually enable this by setting useCSSVariables to true in the theme config:
import React from 'react';
import {
  Box,
  TonicProvider,
  colorStyle, // [optional] Required only for customizing color styles
  theme, // [optional] Required only for customizing the theme
} from '@tonic-ui/react';

// Enable CSS variables
theme.config.useCSSVariables = true;

function App(props) {
  return (
    <TonicProvider
      colorMode={{
        defaultValue: 'dark', // One of: 'dark', 'light'
      }}
      colorStyle={{
        defaultValue: colorStyle, // Custom color style
      }}
      theme={theme}
      useCSSBaseline={true} // If `true`, apply CSS reset and base styles
    >
      <Box {...props} />
    </TonicProvider>
  );
}

CSS Variables
Regarding CSS variables, you can manually enable this by setting useCSSVariables to true in the theme config:
import React from 'react';
import {
  Box,
  TonicProvider,
  colorStyle, // [optional] Required only for customizing color styles
  theme, // [optional] Required only for customizing the theme
} from '@tonic-ui/react';

// Enable CSS variables
theme.config.useCSSVariables = true;

function App(props) {
  return (
    <TonicProvider
      colorMode={{
        defaultValue: 'dark', // One of: 'dark', 'light'
      }}
      colorStyle={{
        defaultValue: colorStyle, // Custom color style
      }}
      theme={theme}
      useCSSBaseline={true} // If `true`, apply CSS reset and base styles
    >
      <Box {...props} />
    </TonicProvider>
  );
}

A PR was created to resolve this issue: https://github.com/trendmicro-frontend/tonic-ui/pull/869

This issue was fixed in 1.29.3 and 2.0.1

authors: cheton derekhawker gsaran trend-albert-shala

repo: trendmicro-frontend/tonic-ui


text:
arxiv green/red boxes are back...

I noticed recently that my blackhypersetup doesn't prevent those ugly green/red boxes from appearing in papers on arxiv. I think arxiv must have updated their process recently (as it also appears you can have a non-flat folder structure now too...)
A student of mine fixed it for one paper by doing
\hypersetup{
breaklinks=true,
colorlinks=true,
pdfusetitle=true
}

My guess is that the breaklinks=true command was the important one there, but some testing required.

Seems to be arxiv specific... https://tex.stackexchange.com/questions/30243/arxiv-org-remove-borders-around-hyperlinks

Can also specify the link border color to white as a hack: linkbordercolor = {1 1 1}

repo: trevorcampbell/shortex


text:
Amazon RDS Performance Insights mislabeled

We've got it listed as "AWS Performance Insights" but the product name is "Amazon RDS Performance Insights". This continues Amazon's confusing naming of some products as "AWS" and some as "Amazon".
https://aws.amazon.com/rds/performance-insights/

We probably should go through all of our AWS sources and double-check the names.

We probably should go through all of our AWS sources and double-check the names.
https://github.com/triggermesh/aws-event-sources/issues/303#issuecomment-883972441

That's a fair point, I was also thinking about that some time ago, not specifically for the Performance Insights source but all AWS sources.
We are listed with the correct names in Knative's documentation, but refer to products as "AWS ..." instead of "Amazon ..." inside the repo, mostly because tech folks almost always refer to AWS products that way. We should change that for correctness and consistency, at least at https://docs.triggermesh.io/sources/ and in the frontend.

@mattray after re-reading this issue, I'm assuming you were referring to the TriggerMesh frontend. If yes, can I transfer the issue there?

@antoineco I think anywhere user-facing should aim to match Amazon's branding. Less important on GitHub than in the UI for sure though

authors: antoineco mattray

repo: triggermesh/aws-event-sources


text:
Improve consistency of tmctl brokers command, expecting e.g. tmctl list brokers

Based on multiple people's feedback during our mini hackathon today

if we follow kubectl we could have a get command -not a list and have:

get brokers
get sources
get targets

so that we can see them as a list per type and potentially get a single one.
It does feel a bit redundant compared to describe

Closing for now as we haven't converged on anything.

authors: jmcx sebgoa

repo: triggermesh/tmctl


text:
Support for "marketingMode" flag

Hi there!
Wanted to know whether your plugin will still be working fine if I add the flag of 'marketingMode' set to 'none' in package.json file, as mentioned in one of the blogs of NativeScript release?
Here is the link of the blog where the reference is made for the same: https://www.nativescript.org/blog/announcing-the-release-of-nativescript-3.2
Looking forward to an early reply. Thank you!

@RinkalGohel it's markingMode and yes

authors: RinkalGohel triniwiz

repo: triniwiz/nativescript-pager


text:
Return scan types in rows.ColumnTypes()

This PR implements the required interfaces so that rows' ColumnTypes() include scan types. It also adds length, precision,  and size to applicable data types.
The docs for database type name say it should be returned in uppercase, without any length or precision. This would be a breaking change, since before it was returned lowercase. I'm also not entirely sure how to handle composite types, so I return them as-is, ex. ROW(VARCHAR(10), BIGINT).
I used the type signatures from the response instead of trying to parse the text.
My use case for this is I need to know the data types before trying to read any rows. Otherwise, I'd have to add a lot of boilerplate code to hold the first row and process it later.

This supersedes #15

I rebased this locally and some tests failed, I'm working on it.

repo: trinodb/trino-go-client


text:
Mark endpoints with empty Request arguments as such

:crown: copied proto files from server repo: 9b2b2b9f
feat: Mark endpoints which don't take arguments as such (#1844)

This is expected failures. Fixing now.

authors: fundthmcalculus mewmba

repo: trinsic-id/sdk


text:
Bump Triton version

Signed-off-by: szalpal mszolucha@nvidia.com

CI MESSAGE: [4053292]: BUILD STARTED

CI MESSAGE: [4053292]: BUILD FAILED

CI MESSAGE: [4116419]: BUILD STARTED

CI MESSAGE: [4116419]: BUILD FAILED

CI MESSAGE: [4116419]: BUILD PASSED

authors: dali-automaton szalpal


text:
getBlockRange() returns an error for range of 1.

The getBlockRange method returns an error for valid input:
https://github.com/tronprotocol/tronweb/blob/4b131bbcaa94f9d70fffd1dc36577703d42eefa1/src/lib/trx.js#L516-L517
It should be < instead of <=:
if (!utils.isInteger(end) || end < start)
    return callback('Invalid end of range provided');

If end is equal to start, I expect to get 1 block instead of error.

fixed in TronWeb 5.3.1

repo: tronprotocol/tronweb


text:
fix: TronWeb not usable within ServiceWorkers in Browser extensions

TronWeb currently can't be used in Browser Extension Service Workers due to Axios incompatibility with it.
There are usually two ways to fix this:

Convert to fetch
Add a fetch-adapter

Tests seem to run as they did before (some did fail for me before changing anything already).
Had to directly include  https://github.com/vespaiach/axios-fetch-adapter
as it wasn't possible to use the package as is.

Why got this closed?


text:
🛑 Lidarr is down

In e3303be, Lidarr (https://tronflix.app/lidarr/activity/queue/) was down:

HTTP code: 520
Response time: 97 ms

Resolved: Lidarr is back up in 3950177.

repo: tronyx/upptime


text:
🛑 Sonarr is down

In b52ac86, Sonarr (https://tronflix.app/sonarr/activity/queue/) was down:

HTTP code: 302
Response time: 72 ms

Resolved: Sonarr is back up in a763222 after 9 minutes.


text:
🛑 Nagios is down

In 214ed7d, Nagios (https://nagios.tronflix.app) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Nagios is back up in e0bec2e after 7 minutes.


text:
🛑 Nagios is down

In 915455d, Nagios (https://nagios.tronflix.app) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Nagios is back up in 8e3e0d5 after 5 minutes.


text:
🛑 Overseerr is down

In 54eae87, Overseerr (https://overseerr.tronflix.app/login) was down:

HTTP code: 403
Response time: 80 ms

Resolved: Overseerr is back up in 762dbe5.


text:
Documentation/examples include unnecessary

Hello, I just wanted to let you know that several of your documentation examples include creating an unnecessary
 element, for example:
grid.add_widget($('

'),
			node.x, node.y, node.width, node.height);
	}, this);

While it appears you intend for it to serve as a closing div tag, like
, what it's actually doing is creating an extra

 at the end. The trailing / tells jQuery it's an empty
 tag. For instance, $('
') is valid jQuery syntax to create an empty div, and results in

 being added to the DOM.
The correct way to add the container would be, $('

')

It's a typo. Thank you!

authors: timwis troolee


text:
Example Modified Weapons use EP

Nuke it?

Doc removed


text:
Building with cargo build --release --locked in windows

Hello,
I'm trying to build the workspace inside a windows environment. Inside the root directory of the project I am running cargo build --release --locked and getting this error:
error[E0432]: unresolved import `tokio::signal::unix`
 --> bitswap-monitoring-client\src\gateways.rs:7:20
  |
7 | use tokio::signal::unix::{signal, Signal, SignalKind};
  |                    ^^^^ could not find `unix` in `signal`

I assume this is a windows thing and maybe building with docker is a far better idea.

Hey,
yes, that only works on Unix. In theory I suppose we could add some conditional compilation that basically does

If you're compiling for Unix, enable reloading of lists via signals
If you're not compiling for Unix, disable that.

If you want, you can try writing a PR :) But not need.
Docker should work.
Best

repo: trudi-group/ipfs-tools


text:
Bulk Blasting items can be destroyed if not picked up and user quits the game and relogs in

Steps to reproduce:

Put an item on a depot in a bulk blasting setup (for example, crushed copper ore)
Wait until the ore is cooked into an ingot
Quit the game
Reopen the game
The ingot will start cooking again and be destroyed.

Please submit that to the Create devs and not here

Because this is probably not coming from the modpack

Happy for this to be closed if it's Create mod that's the issue :)

Have you tried throwing the ingots into the blasting ? If they disappear, then that means that reloading the world makes the items think they are being smelted, instead of finished being smelted

https://github.com/cech12/WoodenBucket/issues/19

It's a create / minecraft thing when you log out it resets the entity data and anything in a create bulk blast system that has no smelt recipe will be destroyed

Fair enough. If it's the Create mod, this isn't the right place to raise. it. I'll close it.

authors: LeDiablePatate bloodscon postie77

repo: trulyno/star-technology


text:
footbath, gamgee

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[f,g]

/trunk merge

repo: trunk-io/mergequeue-staging


text:
anapeiratic, duffs

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,d]

/trunk merge


text:
czechish

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[c]

/trunk merge


text:
enlightenedness, deray

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[d,e]

/trunk merge


text:
baring, ganglands

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[b,g]

/trunk merge


text:
goodmanship, dereligion

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[d,g]

/trunk merge


text:
gelants, doubleganger

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[d,g]

/trunk merge


text:
euconic, aberduvine

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,e]

/trunk merge


text:
ascochyta

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a]

/trunk merge


text:
boucle, fokker

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[b,f]

/trunk merge


text:
gobia, exhedra

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[e,g]

/trunk merge


text:
fribbles

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[f]

/trunk merge


text:
floodway, bespout

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[b,f]

/trunk merge


text:
draughted, ethnologically

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[d,e]

/trunk merge


text:
footful, cytogenetically

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[c,f]

/trunk merge


text:
dressed, entomolite

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[d,e]

/trunk merge


text:
amphitheater, designfulness (logical-conflict)

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,d]

/trunk merge


text:
abrogating, bilirubin

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,b]

/trunk merge


text:
gallegan, anaclastic

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,g]

/trunk merge


text:
decembrist, crouton

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[c,d]

/trunk merge


text:
finnan, davyum

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[d,f]

/trunk merge

repo: trunk-io/mergequeue


text:
dewormed, fendered

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[d,f]

/trunk merge


text:
demimondaines, exerciser

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[d,e]

/trunk merge


text:
angelophanic

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[a]

/trunk merge


text:
boyfriends, garbing

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[b,g]

/trunk merge


text:
ferried, curiegram

This pull request was generated by the 'mq' tool

/trunk merge


text:
delegacies, confessors

This pull request was generated by the 'mq' tool

/trunk merge


text:
abbreviatory, balistarius

This pull request was generated by the 'mq' tool

/trunk merge


text:
anlia, endocrinous

This pull request was generated by the 'mq' tool

/trunk merge


text:
fineish

This pull request was generated by the 'mq' tool

/trunk merge


text:
emender, attenuations

This pull request was generated by the 'mq' tool

/trunk merge


text:
formidability, adenovirus

This pull request was generated by the 'mq' tool

/trunk merge


text:
balsamiferous, deutomalal

This pull request was generated by the 'mq' tool

/trunk merge


text:
bluishness, formals

This pull request was generated by the 'mq' tool

/trunk merge


text:
duckpond, governante

This pull request was generated by the 'mq' tool

/trunk merge


text:
concludence, bouldery

This pull request was generated by the 'mq' tool

/trunk merge


text:
flaught, bouleuteria

This pull request was generated by the 'mq' tool

/trunk merge


text:
bacula, farmhouses

This pull request was generated by the 'mq' tool

/trunk merge


text:
continuua, derails

This pull request was generated by the 'mq' tool

/trunk merge


text:
entwisting

This pull request was generated by the 'mq' tool

/trunk merge


text:
camelman, atheistic

This pull request was generated by the 'mq' tool

/trunk merge


text:
furuncular

This pull request was generated by the 'mq' tool

/trunk merge


text:
dissectors, gantangs

This pull request was generated by the 'mq' tool

/trunk merge


text:
aesthesis, gratifications

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[a,g]

/trunk merge


text:
gatewards, dindling

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[d,g]

/trunk merge


text:
balmily, gangway

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[b,g]

/trunk merge


text:
fatal, belar

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[b,f]

/trunk merge


text:
bristlemouth, deltaite

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[b,d]

/trunk merge


text:
costmary, daphnean

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[c,d]

/trunk merge


text:
agisms, golosh

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 2100s
close stale after: 24 hours
[pullrequest]
requests per hour: 100
deps=[a,g]

/trunk merge


text:
elastometer

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[e]

/trunk merge


text:
blunderings

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[b]

/trunk merge


text:
dipmeter, anthomyia

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[a,d]

/trunk merge


text:
crankplate, agena

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[a,c]

/trunk merge


text:
furcellate, geds

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[f,g]

/trunk merge


text:
finesse, archicleistogamous

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[a,f]

/trunk merge


text:
destigmatize, enchafe

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[d,e]

/trunk merge


text:
fidelities, christologist

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[c,f]

/trunk merge


text:
feasibility, bardism

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[b,f]

/trunk merge


text:
altschin, electrotitration

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 1000
sleep for: 600s
close stale after: 24 hours
[pullrequest]
requests per hour: 20
deps=[a,e]

/trunk merge


text:
Upgrade ruby-build

Tested locally after deleting ruby and ruby-build from my cache.

Converting to draft until we get to the bottom of the original user's issue

repo: trunk-io/plugins


text:
ci: Migrate to Github Actions

Summary
Draft Status: The results of an investigation into #1688 thus far. Some hiccups were encountered that will require further digging
Related Issues or PRs
Closes: #1688
How To Test

Verify that all CI steps run properly.
Make sure that the considerations in the Remaining TODOs and Blockers are addressed.

Note that things like dependabot PRs are harder to replicate and test

Verify that duplication of work by the CI is kept to a minimum, and that anything migrated to Actions is no longer being performed in Circle

Remaining TODOs and blockers:

[ ] BLOCKER: The process of automatically merging approved dependabot PRs will likely break until further changes are made to secret management and permissions.

See https://github.com/dependabot/dependabot-core/issues/3253 for potential workarounds (and hopefully a more robust solution in the near future as indicated in this comment)

[ ] TODO (Maybe blocker?: Ephemeral deployments work with CircleCI specifically because Circle serves the uploaded artifacts, where Github does not. These can either remain in Circle (as this PR does so far) OR some additional infrastructure setup/management would be required to mimic the functionality.
[ ] TODO: For Happo to work properly in this PR, the Happo secrets must be added to Github secrets

Warnings

:warning:

Changes were made to package.json, but not to yarn.lock - Perhaps you need to run yarn install?

  Generated by :no_entry_sign: dangerJS against ea451ef4977632c581a753eac5acbf4c876e5671

authors: brandonlenz trussworks-infra

repo: trussworks/react-uswds


text:
Public access block policies cannot be created if already blocked at account level

Hello,
The aws_s3_bucket_public_access_block resource fails to be created (Access Denied status code: 403) if public access to S3 buckets is already blocked at account level.
In AWS Console:

You may want to make that resource's creation conditional via an input variable.

Yup, we'll get a change in to make this conditional. Thanks for the report!

This is fixed in the latest release (3.6.0), with the variable enable_s3_public_access_block. Thanks again for your report!

authors: CoryAtTruss dynamike littlebigfab


text:
增加会计日期AccountDate工具

可按用户，精确定义now的时间，方便穿越时间的调试或设置

mirana的ThreadNow和slardar的Now


text:
EMFILE: too many open files

https://github.com/nuxt/nuxt/issues/12376
https://github.com/nuxt/nuxt/pull/22333

may be caused by eslint, see https://eslint.nuxt.com/packages/module

Hey!
I've also this issue...
I've test to update tailwind.config but no result...
Any help?

For me, build and preview is works, but only dev not running good

For me, build and preview is works, but only dev not running good

No progress, still trying.

[5:43:58 PM]  WARN  Failed to parse static properties from plugin node_modules/.pnpm/nuxt@3.13.2_@parcel+watcher@2.4.1_@types+node@22.8.6_eslint@9.13.0_jiti@2.3.3__ioredis@5.4.1__mmnznmnhtfa3gabzpu4lo43haa/node_modules/nuxt/dist/app/plugins/revive-payload.server.js. spawn EBADF

  at ChildProcess.spawn (node:internal/child_process:421:11)
  at Object.spawn (node:child_process:762:9)
  at ensureServiceIsRunning (node_modules/.pnpm/esbuild@0.23.1/node_modules/esbuild/lib/main.js:1980:29)
  at transform (node_modules/.pnpm/esbuild@0.23.1/node_modules/esbuild/lib/main.js:1880:37)
  at extractMetadata (node_modules/.pnpm/nuxt@3.13.2_@parcel+watcher@2.4.1_@types+node@22.8.6_eslint@9.13.0_jiti@2.3.3__ioredis@5.4.1__mmnznmnhtfa3gabzpu4lo43haa/node_modules/nuxt/dist/index.mjs:3838:20)
  at annotatePlugins (node_modules/.pnpm/nuxt@3.13.2_@parcel+watcher@2.4.1_@types+node@22.8.6_eslint@9.13.0_jiti@2.3.3__ioredis@5.4.1__mmnznmnhtfa3gabzpu4lo43haa/node_modules/nuxt/dist/index.mjs:5421:18)
  at async getContents (node_modules/.pnpm/nuxt@3.13.2_@parcel+watcher@2.4.1_@types+node@22.8.6_eslint@9.13.0_jiti@2.3.3__ioredis@5.4.1__mmnznmnhtfa3gabzpu4lo43haa/node_modules/nuxt/dist/index.mjs:4794:27)
  at async i.getContents (node_modules/.pnpm/@nuxt+devtools@1.6.0_rollup@4.24.3_vite@5.4.10_@types+node@22.8.6_terser@5.36.0__vue@3.5.12_t_heqf7i7in3lyg2zs4y2dzpwutu/node_modules/@nuxt/devtools/dist/chunks/plugin-metrics.mjs:10:23)
  at async processTemplate (node_modules/.pnpm/nuxt@3.13.2_@parcel+watcher@2.4.1_@types+node@22.8.6_eslint@9.13.0_jiti@2.3.3__ioredis@5.4.1__mmnznmnhtfa3gabzpu4lo43haa/node_modules/nuxt/dist/index.mjs:5271:22)
  at async Promise.allSettled (index 2)

 ERROR  [unhandledRejection] EMFILE: too many open files, watch                                                                             5:44:02 PM

  at FSWatcher._handle.onchange (node:internal/fs/watchers:207:21)

^C *  Terminal will be reused by tasks, press any key to close it.

If it helps, I just created a docker environment and the dev server is working fine.
Here is my docker config:
1. Dockerfile:
FROM node:22.11-alpine
WORKDIR /app
RUN apk update && apk upgrade
COPY ./package*.json /app/
RUN npm install && npm cache clean --force
COPY . .
ENV PATH ./node_modules/.bin/:$PATH

2. docker-compose:
version: '3.3'

services:
  nuxt:
    build:
      context: .
    image: nuxt_dev
    container_name: nuxt_dev
    tmpfs: /tmp
    command: npm run dev
    volumes:
    - .:/app
    - /app/node_modules
    ports:
      - "3000:3000"

3. .dockerignore
node_modules
.nuxt
.output

Work

devtools: { enabled: false },

Not Work

rm node_modules and install
restart vscode
restart computer
brew install watchman
sudo launchctl limit maxfiles 8192 16384
experimental.watcher='parcel' or '@parcel/watcher'

You are a king! devtools: { enabled: false }, worked for me finally!

My guess is that the issue is due to some indirect DEPs upgrade.
and affects dev=true, may the watching of eslint, tailwind/unocss, nuxt.
the followings are changed, but tested for no effect

node from 20.16 to 20.18
vite-plugin-eslint2 removed

💊 just do the following, all issues gone,

prune pnpm store
upgrade nuxt to 3.14.0

so, the reason may be some indirect Deps upgrade between these days to nuxt 3.14.
the lesson I v taken is SHOULD

use fixed version than range
use lockfile first
dont upgrade during minor release

## reset by bash
pnpm store prune
find . -name "node_modules" -type d -prune -exec rm -rf {} +
find . -name "pnpm-lock.yaml" -type f -exec rm -f {} +
asdf install
pnpm -w i --ignore-pnpmfile
pnpm i

authors: Corentin7301 notumar trydofor

repo: trydofor/professional-razor