turbo-editors/turbo-corepublic Fork 0
v0.9.0
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 v0.9.0 · k33g · 11h ago
2026-09-01-tickets-9-to-14.md · 44 lines · 3.2 KBmarkdown
Blame HistoryOpen raw

Handoff — 2026-09-01 — tickets 9 to 14

State

All six tickets are done and verified, on the branch feature/menu-theme-and-settings in all three repositories. Nothing is committed.

Four land in turbo-core:

Ticket What changed
12 reapplySettings in app/project.go, run from a new afterSave shared by both save paths. Saving settings.toml applies it at once.
11, 13, 14 projectFile + openProjectFile/hasProjectFile/not. Six menu items: create greyed once the file exists, open greyed until it does. New API: OpenTools, OpenSnippets, HasProjectTools, HasProjectSnippets.
10 syntax.comment raised past 4.5:1 WCAG in the six themes we author, plus TestEveryThemeWeAuthorKeepsItsCommentsReadable.

Suite green (16 packages), quality gate PASS 0/0/0 at complexity 1724. Documentation complete in EN and FR, including a new docs/*/how-to/test-without-publishing.md.

In flight

Nothing half-done.

Next steps

  1. Review and commit on feature/menu-theme-and-settings, merge to main.
  2. Release v0.3.0OpenTools, OpenSnippets, HasProjectTools and HasProjectSnippets are new public API, so it is a minor bump:
    TAG=v0.3.0 ./01-release.tag.sh
    TAG=v0.3.0 ./02-release.publish.sh
    
  3. In each editor: go get codeberg.org/turbo-editors/turbo-core@v0.3.0 && go mod tidy && make check. Until then the editors keep requiring v0.2.0, which builds — the five library-side tickets simply are not visible in them yet. This is deliberate, and different from the last two releases: nothing is left unbuildable.

Open questions / blockers

  • None.

Watch out for

  • reapplySettings matches on the path, not on a.settingsPath. A project that had no settings file has nothing remembered, so a remembered handle cannot see the file being created. There is a test named for that case.
  • It runs from afterSave, which both save paths share. Anything added to one save path and not the other goes missing silently; that is what this function exists to prevent. Do not re-inline it.
  • The status message ordering is deliberate: Saved … is emitted first so that re-reading the settings can replace it. A settings file that no longer parses must win the status bar over "saved".
  • The two contrast measures are not interchangeable. channelDistance for anything the eye must merely distinguish; contrastRatio for anything read. The bug in ticket 10 sailed through the first at 128 against a floor of 64.
  • Do not widen the WCAG rule to every key. It was measured: 84 of 432 theme/key pairings across the shipped themes are under 4.5, most of them Catppuccin's published palette. A blanket floor would either fail honestly-correct themes or have to be lowered until it means nothing.
  • The Catppuccin exemption is guarded. TestTheThemesWeDoNotOwnAreStillNamedThemesWeShip fails if the list ever names a theme that is not shipped, so the exemption cannot quietly outlive its reason.
  • Already there and "this project has no …" are now unreachable from the menus but still reachable from the API, and still tested. Do not delete them as dead code.
  • release.env and turbo-core.token.env hold live Codeberg tokens and are covered by *.env. Keep it that way.
 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
42
43
44
# Handoff — 2026-09-01 — tickets 9 to 14

## State

All six tickets are done and verified, on the branch `feature/menu-theme-and-settings` in all three repositories. Nothing is committed.

Four land in turbo-core:

| Ticket | What changed |
| --- | --- |
| 12 | `reapplySettings` in `app/project.go`, run from a new `afterSave` shared by both save paths. Saving `settings.toml` applies it at once. |
| 11, 13, 14 | `projectFile` + `openProjectFile`/`hasProjectFile`/`not`. Six menu items: create greyed once the file exists, open greyed until it does. New API: `OpenTools`, `OpenSnippets`, `HasProjectTools`, `HasProjectSnippets`. |
| 10 | `syntax.comment` raised past 4.5:1 WCAG in the six themes we author, plus `TestEveryThemeWeAuthorKeepsItsCommentsReadable`. |

Suite green (16 packages), quality gate **PASS 0/0/0** at complexity 1724. Documentation complete in EN and FR, including a new `docs/*/how-to/test-without-publishing.md`.

## In flight

Nothing half-done.

## Next steps

1. Review and commit on `feature/menu-theme-and-settings`, merge to `main`.
2. **Release v0.3.0**`OpenTools`, `OpenSnippets`, `HasProjectTools` and `HasProjectSnippets` are new public API, so it is a minor bump:
   ```sh
   TAG=v0.3.0 ./01-release.tag.sh
   TAG=v0.3.0 ./02-release.publish.sh
   ```
3. In each editor: `go get codeberg.org/turbo-editors/turbo-core@v0.3.0 && go mod tidy && make check`. Until then the editors keep requiring v0.2.0, which builds — the five library-side tickets simply are not visible in them yet. This is deliberate, and different from the last two releases: nothing is left unbuildable.

## Open questions / blockers

- None.

## Watch out for

- **`reapplySettings` matches on the path, not on `a.settingsPath`.** A project that had no settings file has nothing remembered, so a remembered handle cannot see the file being *created*. There is a test named for that case.
- **It runs from `afterSave`, which both save paths share.** Anything added to one save path and not the other goes missing silently; that is what this function exists to prevent. Do not re-inline it.
- **The status message ordering is deliberate**: `Saved …` is emitted first so that re-reading the settings can replace it. A settings file that no longer parses must win the status bar over "saved".
- **The two contrast measures are not interchangeable.** `channelDistance` for anything the eye must merely distinguish; `contrastRatio` for anything read. The bug in ticket 10 sailed through the first at 128 against a floor of 64.
- **Do not widen the WCAG rule to every key.** It was measured: 84 of 432 theme/key pairings across the shipped themes are under 4.5, most of them Catppuccin's published palette. A blanket floor would either fail honestly-correct themes or have to be lowered until it means nothing.
- **The Catppuccin exemption is guarded.** `TestTheThemesWeDoNotOwnAreStillNamedThemesWeShip` fails if the list ever names a theme that is not shipped, so the exemption cannot quietly outlive its reason.
- **`Already there` and "this project has no …" are now unreachable from the menus** but still reachable from the API, and still tested. Do not delete them as dead code.
- `release.env` and `turbo-core.token.env` hold live Codeberg tokens and are covered by `*.env`. Keep it that way.