Align tooling: Node 22.23.1, TypeScript 6, current actions - #37
Merged
Conversation
The e2e package declared TypeScript but nothing consumed it: there was no tsconfig, and Playwright transpiles specs without type checking. Adding one surfaced that the specs reach for Buffer while @types/node was never a dependency, so the types it declared could never have resolved. CI reads the Node version from .tool-versions rather than a literal, matching how the other repositories pin theirs. Verified: go vet, go test, the release build, and tsc against the new config. The Playwright suite was not run locally — httphq binds port 8080 from a constant, and that port is held here by an unrelated service. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
checkout, setup-go, setup-node and build-push-action go to v7. Both workflows hardcoded go-version "1.25" alongside a go.mod that already declares it. setup-go reads the module file instead, so the toolchain has one source of truth. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
This repository had neither. It carries the same comment policy as the other three, plus the constraints that are not obvious from the source: that setting PLATFORM is a trust decision about a spoofable header, that captured data is deliberately ephemeral, the logging contract, and that the listen port is a constant rather than configuration. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
It now lives in AGENTS.md, and two copies of the same contract drift apart. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
Same configuration the other repositories carry, covering the Go module, the workflow actions and the e2e npm package, with a one-day minimumReleaseAge cooldown on proposed updates. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
The Renovate app is not installed on this repository, so the file describes behaviour that does not run. Claude-Session: https://claude.ai/code/session_01VmYrjjGBPRGS4zfYZuoCmw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of a four-repository pass aligning shared tooling upward. Companion PRs in
formspark/monorepo, botpoison/monorepo and botre/postcraft. Smallest of the
four — the Go side is untouched.
What changed
"22".tool-versions-> 22.23.1"1.25"go.modThe e2e TypeScript was decorative
The package declared
typescriptbut nothing consumed it: there was notsconfig, and Playwright transpiles specs without type checking. Adding one
surfaced that the specs reach for
Bufferwhile@types/nodewas never adependency — the types it declared could never have resolved. Both are now in
place and
tsc -p tsconfig.jsonpasses.Version sources
Both workflows hardcoded
go-version: "1.25"next to ago.modthat alreadydeclares it;
setup-goreads the module file instead. Node moves to a.tool-versionsfile, matching how the other three repositories pin theirs.Documentation
This repository had no
AGENTS.md. It now carries the same comment policy asthe other three, plus the constraints that are not obvious from the source:
PLATFORMis a trust decision — the header it selects is forgeableunless the origin is firewalled to the declared edge, and leaving it unset
behind a proxy makes rate limiting global.
writable layer and is lost on restart.
The logging section moved out of the README, since two copies of the same
contract drift apart.
Verification
go vet,go test ./..., the release build, andtscagainst the new config.The Playwright suite was not run locally. httphq binds port 8080 from a
constant, and that port is held on this machine by an unrelated service. CI
covers it — and this PR changes only type declarations and workflow metadata,
neither of which affects spec execution.
🤖 Generated with Claude Code