# Handoff — 2026-09-01 — Tool parameters and release tooling ## State Both halves are done and green. **Tool parameters**: a `{{label}}` in a tools command opens a box before the command runs, one field per label, values shell-quoted unless the label ends in `...`, remembered per tool for the session. Verified in a real pty against Turbo Go. **Release tooling**: `01-release.tag.sh` publishes the library, `02-release.publish.sh` creates the Codeberg release page for a tag already pushed. **Everything is committed and released.** turbo-core v0.1.0 (`f1f0375`), turbo-go v0.2.2 (`d64410c`), turbo-rust v0.1.0 (`2d5dbec`) — the last two exactly at their HEADs, all three trees clean on `main`. Both editors depend on the published library with no active `replace`. Whole suite green in all three repositories; quality gate PASS at 0/0/0 everywhere. ## In flight Nothing. ## Next steps 1. **Nobody has used a parameterised tool for real work yet.** That is the next thing worth doing, and the first hour of it will find something. 2. **turbo-core's next tag should pick up `bc4a464`** — the publish script and the release how-to are on `main` but not in v0.1.0. 3. **Two lines of tidying in the editors' `go.mod`**, whenever something else takes you there: the commented-out replace block, whose text is now false, and the missing trailing newline. ## Open questions / blockers None. ## Watch out for - **turbo-core v0.1.0 does not contain `02-release.publish.sh`.** The tag was cut one commit earlier. Do not move it — consumers pin it and the proxy caches what it fetched; the release script refuses for that reason. Fold it into the next version. - **The editors carry a commented-out `replace` whose comment is now wrong.** It says "drop it once the version above is tagged and published"; it is. Harmless, but it costs the next reader a minute. - **A checksum mismatch after dropping the replaces is probably a poisoned module cache, not an attack.** An earlier verification here built a hand-made `file://` proxy zip for v0.1.0, and its hash went into `$GOMODCACHE`. `rm -rf "$(go env GOMODCACHE)"/{,cache/download/}codeberg.org/turbo-editors` and re-fetch before concluding anything. - **`TURBO_CORE_RELEASING` is load-bearing.** The release script exports it before `make check`, and the two end-to-end tests in `release_test.go` skip themselves when they see it. Remove the export and a real release recurses until something runs out — which is how it was found, by hanging. - **`release.env` holds a live Codeberg token.** `.gitignore` covers `*.env`, and `copyModuleInto` in `release_test.go` skips `*.env` so no test carries it into a temporary directory. Keep both. - **Double braces are not a style choice.** A falsification run with single braces turned `awk '{print $1}'` into `awk ''''`. `TestSingleBracesAreNotPlaceholders` is what holds it. - **`Fill` re-scans the command rather than using what `Placeholders` returned.** That is deliberate: a label written `{{x}}` in one place and `{{x...}}` in another is asked for once and substituted according to each occurrence's own braces. - **The popup's title is the filled command**, because `tools.Start` records what it was given. If you change `runCaptured` back to `tool.Command`, the title will lie about what ran and two tests will say so. - **`MaxParameterFields` is computed from the screen, not a constant.** A test pins the value for a 24-row terminal; if you change `parameterChrome`, that number changes with it.