turbo-editors/turbo-corepublic Fork 0
28d59854361aeda8541d853093e732126f3d7bff
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-core.git
git clone ssh://git@rickub.com/turbo-editors/turbo-core.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

🛟 Updated. 28d5985 · on 28d59854361aeda8541d853093e732126f3d7bff · k33g · 16h ago
2026-09-01-tool-parameters.md · 41 lines · 3.4 KBmarkdown
Blame HistoryOpen raw

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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.