Skip to content

Align tooling: Node 22.23.1, TypeScript 6, current actions - #37

Merged
botre merged 6 commits into
masterfrom
chore/tooling-alignment
Jul 28, 2026
Merged

Align tooling: Node 22.23.1, TypeScript 6, current actions#37
botre merged 6 commits into
masterfrom
chore/tooling-alignment

Conversation

@botre

@botre botre commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

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

from to
node (CI) literal "22" .tool-versions -> 22.23.1
typescript (e2e) 5.6.0 6.0.3
go version (CI) literal "1.25" read from go.mod
checkout / setup-go / setup-node v6 / v6 / v6 v7 / v7 / v7
build-push-action v6 v7

The e2e TypeScript was decorative

The 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 — the types it declared could never have resolved. Both are now in
place and tsc -p tsconfig.json passes.

Version sources

Both workflows hardcoded go-version: "1.25" next to a go.mod that already
declares it; setup-go reads the module file instead. Node moves to a
.tool-versions file, matching how the other three repositories pin theirs.

Documentation

This repository had no AGENTS.md. It now carries the same comment policy as
the other three, plus the constraints that are not obvious from the source:

  • Setting PLATFORM is a trust decision — the header it selects is forgeable
    unless the origin is firewalled to the declared edge, and leaving it unset
    behind a proxy makes rate limiting global.
  • Captured data is deliberately ephemeral: SQLite writes to the container's
    writable layer and is lost on restart.
  • The listen port is a constant, not configuration.

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, 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 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

botre added 6 commits July 27, 2026 21:07
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
@botre
botre merged commit 9d99bfb into master Jul 28, 2026
2 checks passed
@botre
botre deleted the chore/tooling-alignment branch July 28, 2026 10:59
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.

1 participant