Skip to content

Release/v1.27.0 - #2

Merged
sethlinnkuleuven merged 309 commits into
mainfrom
release/v1.27.0
Sep 29, 2026
Merged

sethlinnkuleuven merged 309 commits into
mainfrom
release/v1.27.0

Conversation

@sethlinnkuleuven

Copy link
Copy Markdown

Checklist:

  • Added a description of the changes to the [Unreleased] section of docs/docs/CHANGELOG.md
  • Added test cases to the relevant parts of the codebase
  • Ran integration tests npm run test:integration (unsupported on Windows, please use WSL)
  • All of my commits have verified signatures

Xe and others added 30 commits December 2, 2025 07:58
Signed-off-by: Xe Iaso <[email protected]>
* feat: first implementation of honeypot logic

This is a bit of an experiment, stick with me.

The core idea here is that badly written crawlers are that: badly
written. They look for anything that contains `<a href="whatever" />`
tags and will blindly use those values to recurse. This takes advantage
of that by hiding a link in a `<script>` tag like this:

```html
<script type="ignore"><a href="/bots-only">Don't click</a></script>
```

Browsers will ignore it because they have no handler for the "ignore"
script type.

This current draft is very unoptimized (it takes like 7 seconds to
generate a page on my tower), however switching spintax libraries will
make this much faster.

The hope is to make this pluggable with WebAssembly such that we force
administrators to choose a storage method. First we crawl before we
walk.

The AI involvement in this commit is limited to the spintax in
affirmations.txt, spintext.txt, and titles.txt. This generates a bunch
of "pseudoprofound bullshit" like the following:

> This Restoration to Balance & Alignment
>
> There's a moment when creators are being called to realize that the work
> can't be reduced to results, but about energy. We don't innovate products
> by pushing harder, we do it by holding the vision. Because momentum can't
> be forced, it unfolds over time when culture are moving in the same
> direction. We're being invited into a paradigm shift in how we think
> about innovation. [...]

This is intended to "look" like normal article text. As this is a first
draft, this sucks and will be improved upon.

Assisted-by: GLM 4.6, ChatGPT, GPT-OSS 120b
Signed-off-by: Xe Iaso <[email protected]>

* fix(honeypot/naive): optimize hilariously

Signed-off-by: Xe Iaso <[email protected]>

* feat(honeypot/naive): attempt to automatically filter out based on crawling

Signed-off-by: Xe Iaso <[email protected]>

* fix(lib): use mazeGen instead of bsGen

Signed-off-by: Xe Iaso <[email protected]>

* docs: add honeypot docs

Signed-off-by: Xe Iaso <[email protected]>

* chore(test): go mod tidy

Signed-off-by: Xe Iaso <[email protected]>

* chore: fix spelling metadata

Signed-off-by: Xe Iaso <[email protected]>

* chore: spelling

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
- Use consistent informal address (fix simplified_explanation)
- Translate "protected_from" ("From" → "Von")
- Standardize "Webseite" → "Website"
- Use more natural phrasing:
  - "Berechnung wird durchgeführt" → "Berechnung läuft"
  - "Zur Hauptseite" → "Zur Startseite"
  - Replace awkward "sozialen Vertrag" phrasing
- "Fingerabdruckerkennung" → "Browser-Fingerprinting" (more common)
- Improve sentence structure and punctuation

Signed-off-by: Michael <[email protected]>
TIL docker clients don't include the Accept header all the time. I would
have thought they did that. Oops.

Closes: TecharoHQ#1346

Signed-off-by: Xe Iaso <[email protected]>
Looks like these rules don't work anymore.

Closes: TecharoHQ#1353

Signed-off-by: Xe Iaso <[email protected]>
Signed-off-by: Xe Iaso <[email protected]>
* docs: split nginx configuration files to their own directory

Signed-off-by: Xe Iaso <[email protected]>

* test: add nginx config smoke test based on the config in the docs

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
* test(nginx): fix tests to work in GHA

Closes: TecharoHQ#1371
Signed-off-by: Xe Iaso <[email protected]>

* fix(test): does this work lol

Signed-off-by: Xe Iaso <[email protected]>

* fix(test): does this other thing work lol

Signed-off-by: Xe Iaso <[email protected]>

* fix(test): pki folder location

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
Signed-off-by: Jason Cameron <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
* feat: iplist2rule utility command

Assisted-By: GLM 4.7 via Claude Code
Signed-off-by: Xe Iaso <[email protected]>

* docs: update CHANGELOG

Signed-off-by: Xe Iaso <[email protected]>

* chore: fix spelling

Signed-off-by: Xe Iaso <[email protected]>

* chore: fix spelling again

Signed-off-by: Xe Iaso <[email protected]>

* feat(iplist2rule): add comment describing how rule was generated

Signed-off-by: Xe Iaso <[email protected]>

* docs: add iplist2rule docs

Signed-off-by: Xe Iaso <[email protected]>

* chore: fix spelling

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
Signed-off-by: majiayu000 <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
…echaroHQ#1380)

The Accept-Language header parsing was not correctly handling quality
factors. When a browser sends "en-GB,de-DE;q=0.5", the expected behavior
is to prefer English (q=1.0 by default) over German (q=0.5).

The fix uses golang.org/x/text/language.ParseAcceptLanguage to properly
parse and sort language preferences by quality factor. It also adds base
language fallbacks (e.g., "en" for "en-GB") to ensure regional variants
match their parent languages when no exact match exists.

Fixes TecharoHQ#1022

Signed-off-by: majiayu000 <[email protected]>
…echaroHQ#1370)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jason Cameron <[email protected]>
…charoHQ#1387)

Bumps the npm group with 1 update: [preact](https://github.com/preactjs/preact).


Updates `preact` from 10.28.0 to 10.28.1
- [Release notes](https://github.com/preactjs/preact/releases)
- [Commits](preactjs/preact@10.28.0...10.28.1)

---
updated-dependencies:
- dependency-name: preact
  dependency-version: 10.28.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
Xe and others added 28 commits August 30, 2026 12:47
Reverts TecharoHQ#1895. The AI agent honeypot registration endpoint, its policy
bot rule, the footer registration block, and the associated docs page
are removed.

This was a mistake and I apologise.

Reverts: TecharoHQ#1895

Signed-off-by: Xe Iaso <[email protected]>
…#1767)

Due to facts and unfortunate circumstances involving how the Web Crypto
API[1] works, SHA256 functions et.al are not included on plain HTTP
requests, meaning that clients that are connecting over plain HTTP (EG:
Tor hidden services) can't pass the fast proof of work challenge method.

In order to work around this, I shipped a variant of the worker using
@aws-crypto/sha256-js[2] as a bit of a hack. However after some research
and soul seeking involved in fixing TecharoHQ#1766 I realized that these workers
are basically identical with the only difference being how it calculates
SHA256 hashes.

This change consolidates those two workers into one sha256 worker that
dynamically dispatches to either browser-native code when possible or
the @aws-crypto/sha256-js when not possible.

The secure context check reads self.isSecureContext, not
window.isSecureContext. This logic used to live in fast.ts on the main
thread where window exists, but a Web Worker has no window global, so
reading it there throws a ReferenceError and kills every worker before
it can hash anything.

[1]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
[2]: https://www.npmjs.com/package/@aws-crypto/sha256-js

Closes: TecharoHQ#1563

Assisted-by: Opus 5 via Claude Code

Signed-off-by: Xe Iaso <[email protected]>
* chore: fix wasm build scripts on macOS

Signed-off-by: Xe Iaso <[email protected]>

* chore: spelling

Signed-off-by: Xe Iaso <[email protected]>

* chore: spelling

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
Signed-off-by: Xe Iaso <[email protected]>
…echaroHQ#1907)

* build(deps): bump the gomod group across 1 directory with 16 updates

Bumps the gomod group with 12 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.43.7` |
| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.25` | `1.32.38` |
| [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) | `1.104.0` | `1.107.3` |
| [github.com/gaissmai/bart](https://github.com/gaissmai/bart) | `0.28.0` | `0.29.0` |
| [github.com/grpc-ecosystem/go-grpc-middleware/v2](https://github.com/grpc-ecosystem/go-grpc-middleware) | `2.3.3` | `2.3.4` |
| [github.com/mxschmitt/playwright-go](https://github.com/mxschmitt/playwright-go) | `0.6100.0` | `0.6201.1` |
| [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.23.2` | `1.24.1` |
| [github.com/redis/go-redis/v9](https://github.com/redis/go-redis) | `9.21.0` | `9.22.0` |
| [github.com/shirou/gopsutil/v4](https://github.com/shirou/gopsutil) | `4.26.6` | `4.26.7` |
| [github.com/testcontainers/testcontainers-go](https://github.com/testcontainers/testcontainers-go) | `0.43.0` | `0.44.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.82.1` | `1.83.1` |
| [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.36.2` | `0.36.4` |



Updates `github.com/aws/aws-sdk-go-v2` from 1.42.0 to 1.43.7
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@v1.42.0...v1.43.7)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.25 to 1.32.38
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@config/v1.32.25...config/v1.32.38)

Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.104.0 to 1.107.3
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@service/s3/v1.104.0...service/s3/v1.107.3)

Updates `github.com/gaissmai/bart` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/gaissmai/bart/releases)
- [Commits](gaissmai/bart@v0.28.0...v0.29.0)

Updates `github.com/grpc-ecosystem/go-grpc-middleware/v2` from 2.3.3 to 2.3.4
- [Release notes](https://github.com/grpc-ecosystem/go-grpc-middleware/releases)
- [Commits](grpc-ecosystem/go-grpc-middleware@v2.3.3...v2.3.4)

Updates `github.com/mxschmitt/playwright-go` from 0.6100.0 to 0.6201.1
- [Release notes](https://github.com/mxschmitt/playwright-go/releases)
- [Commits](mxschmitt/playwright-go@v0.6100.0...v0.6201.1)

Updates `github.com/prometheus/client_golang` from 1.23.2 to 1.24.1
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.23.2...v1.24.1)

Updates `github.com/redis/go-redis/v9` from 9.21.0 to 9.22.0
- [Release notes](https://github.com/redis/go-redis/releases)
- [Changelog](https://github.com/redis/go-redis/blob/master/RELEASE-NOTES.md)
- [Commits](redis/go-redis@v9.21.0...v9.22.0)

Updates `github.com/shirou/gopsutil/v4` from 4.26.6 to 4.26.7
- [Release notes](https://github.com/shirou/gopsutil/releases)
- [Commits](shirou/gopsutil@v4.26.6...v4.26.7)

Updates `github.com/testcontainers/testcontainers-go` from 0.43.0 to 0.44.0
- [Release notes](https://github.com/testcontainers/testcontainers-go/releases)
- [Commits](testcontainers/testcontainers-go@v0.43.0...v0.44.0)

Updates `golang.org/x/net` from 0.56.0 to 0.57.0
- [Commits](golang/net@v0.56.0...v0.57.0)

Updates `golang.org/x/sync` from 0.21.0 to 0.22.0
- [Commits](golang/sync@v0.21.0...v0.22.0)

Updates `golang.org/x/sys` from 0.46.0 to 0.47.0
- [Commits](golang/sys@v0.46.0...v0.47.0)

Updates `golang.org/x/text` from 0.38.0 to 0.40.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](golang/text@v0.38.0...v0.40.0)

Updates `google.golang.org/grpc` from 1.82.1 to 1.83.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.82.1...v1.83.1)

Updates `k8s.io/apimachinery` from 0.36.2 to 0.36.4
- [Commits](kubernetes/apimachinery@v0.36.2...v0.36.4)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.43.7
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.32.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/aws/aws-sdk-go-v2/service/s3
  dependency-version: 1.107.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/gaissmai/bart
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/grpc-ecosystem/go-grpc-middleware/v2
  dependency-version: 2.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/mxschmitt/playwright-go
  dependency-version: 0.6201.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/prometheus/client_golang
  dependency-version: 1.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/redis/go-redis/v9
  dependency-version: 9.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: github.com/shirou/gopsutil/v4
  dependency-version: 4.26.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
- dependency-name: github.com/testcontainers/testcontainers-go
  dependency-version: 0.44.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: golang.org/x/net
  dependency-version: 0.57.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: golang.org/x/sync
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: golang.org/x/sys
  dependency-version: 0.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: golang.org/x/text
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: google.golang.org/grpc
  dependency-version: 1.83.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore: go mod tidy

Signed-off-by: Xe Iaso <[email protected]>

* chore: go mod tidy

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Xe Iaso <[email protected]>
Signed-off-by: Xe Iaso <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Xe Iaso <[email protected]>
Co-authored-by: Xe Iaso <[email protected]>
…hrough when --target-host is set (TecharoHQ#1881)

Co-authored-by: Jason Cameron <[email protected]>
Signed-off-by: Jonas Zürcher <[email protected]>
Signed-off-by: Jason Cameron <[email protected]>
* Don't log challenge twice

It's in r.Context() already, which is where it came from in the first place.

Signed-off-by: dwhitemv25 <[email protected]>

* Add CHANGELOG entry for new log

Signed-off-by: dwhitemv25 <[email protected]>

---------

Signed-off-by: dwhitemv25 <[email protected]>
* test(ssh-ci): fix for v1.28.0-pre1 and later

Signed-off-by: Xe Iaso <[email protected]>

* fix(ssh-ci): add missing Docker deps

Signed-off-by: Xe Iaso <[email protected]>

* fix(ssh-ci): delete run folder when done

Signed-off-by: Xe Iaso <[email protected]>

* fix(wasm/scripts): move common logic into a library

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
* docs(blog): add post about WASM in Anubis

Signed-off-by: Xe Iaso <[email protected]>

* chore: spelling

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
* Clarify getChallenge error log

Respond to the client with a useful error message. The "getChallenge failed" message is logged on the line prior. The encoded text is unchanged.

Signed-off-by: dwhitemv25 <[email protected]>

* Update changelog

Signed-off-by: dwhitemv25 <[email protected]>

---------

Signed-off-by: dwhitemv25 <[email protected]>
I must have been thinking about IPv6 or something. Oops.

Signed-off-by: Xe Iaso <[email protected]>
…37.9 in the github-actions group (TecharoHQ#1945)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Jason Cameron <[email protected]>
Signed-off-by: Coobyk <[email protected]>
Co-authored-by: Jason Cameron <[email protected]>
…Q#1926)

* fix(ci): pin playwright to 1.62.1 to match playwright-go client

go.mod bumped mxschmitt/playwright-go to v0.6201.1 (protocol 1.62.x) in
the dependency-update PR that introduced it, but the playwright
run-server pinned by `npm run test:integration` and the go_tests
workflow's playwright cache/install steps stayed on 1.61.1. Every
Playwright-driven test now fails to connect with a version mismatch
error, discovered while validating an unrelated fix that required
`npm run test:integration` to pass per CONTRIBUTING.md.

Assisted-by: Claude Sonnet 5 via Claude Code
Signed-off-by: Fabian Peußer <[email protected]>

* fix(lib): restore original Referer across the challenge redirect

After a visitor passes a challenge, PassChallenge sends a 302 back to
the original URL. That follow-up navigation is same-site, so the
browser no longer sends the external Referer the visitor actually
arrived with (e.g. a social/referral link) -- the target sees the
internal challenge page instead, and server-side referrer tracking
misreports the visit as direct traffic.

Capture the Referer seen when the challenge is issued, relay it to the
target request via a one-shot cookie set alongside the auth cookie and
cleared on first use, and restore it onto the proxied request's Referer
header in maybeReverseProxy. This only ever affects the single request
right after a challenge is passed.

document.referrer itself can't be fixed this way: it reflects the
browser's own navigation history (the challenge page), and neither a
proxy nor a page script can override it -- confirmed with a real
Playwright-driven browser session. For client-side analytics that fall
back to query parameters instead of document.referrer (e.g. Plausible),
add an opt-in --preserve-referer-query-param flag that appends
utm_source/utm_medium derived from the original referrer's host to the
post-challenge redirect, unless the URL already carries a ref/source/
utm_*/gclid/msclkid parameter.

Fixes: TecharoHQ#1596

Assisted-by: Claude Sonnet 5 via Claude Code
Signed-off-by: Fabian Peußer <[email protected]>

---------

Signed-off-by: Fabian Peußer <[email protected]>
…echaroHQ#1947)

Share redirect validation between challenge completion and subrequest authentication. Reject ambiguous URL forms before checking allowed domains and cover redirect bypasses and challenge state in regression tests.

Assisted-by: GPT-6 via Codex

Signed-off-by: Michal Čihař <[email protected]>
How did CI miss this???

Signed-off-by: Xe Iaso <[email protected]>
…echaroHQ#1944)

Co-authored-by: Jason Cameron <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Jason Cameron <[email protected]>
* feat(expressions): add the ability for botstopper et.al to define custom CEL variables

Signed-off-by: Xe Iaso <[email protected]>

* feat(challenge): add challenge extension registry

Signed-off-by: Xe Iaso <[email protected]>

* docs(challenge): setup routes must include anubis.BasePrefix

Signed-off-by: Xe Iaso <[email protected]>

* feat(challenge): store list of extensions too

Signed-off-by: Xe Iaso <[email protected]>

* feat(config): add challenge extensions

Signed-off-by: Xe Iaso <[email protected]>

* feat(lib): support splicing in challenge extensions

Challenge extensions are optional addons to a challenge that add
additional client challenges, such as making sure they load images,
render CSS, or don't display headless browser behaviour.

Signed-off-by: Xe Iaso <[email protected]>

* feat(web): support challenge extension hooks

Signed-off-by: Xe Iaso <[email protected]>

* feat(challenge/extension): add store to setup flow for extensions

Signed-off-by: Xe Iaso <[email protected]>

* feat(js/lib): add hook for adding global browser anubis extension function

Signed-off-by: Xe Iaso <[email protected]>

* docs: document challenge extensions

Signed-off-by: Xe Iaso <[email protected]>

* chore: spelling

Signed-off-by: Xe Iaso <[email protected]>

* chore: go mod tidy

Signed-off-by: Xe Iaso <[email protected]>

* chore: fix linting

Signed-off-by: Xe Iaso <[email protected]>

---------

Signed-off-by: Xe Iaso <[email protected]>
…ts (TecharoHQ#1958)

Clients handed a challenge without gzip in Accept-Encoding are rejected
on purpose, but the rejection went through respondWithError, which
hardcodes HTTP 500, and was logged at ERROR. That made a deliberate bot
rejection indistinguishable from a server fault to anything watching 5xx
rates, and on a busy instance it is typically the only ERROR emitted.

Render the rejection with policy.StatusCodes.Deny, which is what the
explicit deny and DNSBL rejections already use, and drop the log line to
INFO to match them. The log message text is unchanged so fail2ban
filters matching on it keep working; filters keying on the ERROR level
need updating.

The randomChance(64) sampling is left alone. It has gated this rejection
ever since PR TecharoHQ#501, where a missing return also let the challenge page
render on top of the error page. PR TecharoHQ#924 only added that return, so
whether the rejection should be sampled needs its own discussion.

Closes: TecharoHQ#1009
Assisted-by: Claude Opus 5 via Claude Code

Signed-off-by: Ben Copeland <[email protected]>
created this branch to modify later
Changed background color to white
@sethlinnkuleuven
sethlinnkuleuven merged commit d065155 into main Sep 29, 2026
27 of 31 checks passed

- name: Setup Homebrew cellar cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
restore-keys: |
${{ runner.os }}-go-homebrew-cellar-
node-version: "24.15.0"
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
Comment on lines +3 to +8
on:
pull_request_target:
types:
- opened
- edited
- synchronize
Comment on lines +10 to +29
rust-test:
strategy:
fail-fast: false
matrix:
runner:
- ubuntu-24.04
- ubuntu-24.04-arm
name: cargo test (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
with:
cache: false
target: wasm32-unknown-unknown
- run: cargo test --all-features

# Check formatting with rustfmt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.