turbo-editors/turbo-gopublic Fork 0
main
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-go.git
git clone ssh://git@rickub.com/turbo-editors/turbo-go.git

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

2026-09-01-turbo-core-migration.md · 35 lines · 2.6 KBmarkdown Blame HistoryRaw
📦 Turbo Go 3d7798b k33g 13h ago1# Handoff — 2026-09-01 — Turbo Go on turbo-core
2
3## State
4
5Turbo Go is now a thin editor on top of [turbo-core](https://codeberg.org/turbo-editors/turbo-core): `main.go` plus `internal/golang`, about four hundred lines. The other fourteen packages moved into the library.
6
7The full existing test suite passes, unchanged in what it asserts. Quality gate PASS at 0/0/0. The binary builds, reports its version through the library's `version` package, and lists eight themes.
8
9**Nothing about the editor's behaviour changed** — menus, keys, themes, file formats and environment variables are what they were.
10
11Everything is **uncommitted**, on branch `refactoring`.
12
13## In flight
14
15Nothing.
16
17## Next steps
18
191. **Commit turbo-core first**, then this repository. Turbo Go does not build without the library beside it.
202. **Once turbo-core is tagged**, drop the `replace` directive from `go.mod` and run `make test` before pushing. See turbo-core's `docs/en/how-to/release-the-library.md`.
213. Ticket 0001 in `turbo-editors/.tickets` is the user's to close.
224. Nobody has run this build on a real terminal for a whole working session since the migration. The pty runs here cover rendering and colouring; they do not cover an hour of editing.
23
24## Open questions / blockers
25
26None.
27
28## Watch out for
29
30- **A decision that suits only Go now has to go in the profile or be argued for in the library.** That is the cost of the split, and it is the thing that keeps the two editors the same editor. Resist adding a Go-shaped special case to turbo-core.
31- **`internal/golang/scan.go` is the one scanner that works in byte offsets.** It uses `syntax.LineIndex`, not `syntax.LineScanner`, because `go/scanner` gives byte ranges. Do not "make it consistent" with the others.
32- **The templates in `internal/golang/templates.go` are tested here, not in the library.** turbo-core tests that `Create` writes the profile's template; what is *in* it — `gofmt -l -w .`, `go vet ./...`, Run being the one tool in a terminal — is this repository's test, because it is about Go.
33- **`TURBO_GO_THEME_DIR` and `TURBO_GO_SNIPPET_DIR` are derived from the slug.** They are unchanged on purpose. Changing the slug, or how `profile.envPrefix` works, breaks somebody's configuration silently.
34- **The release scripts stamp `turbo-core/version`, not a local package.** `-ldflags -X` can set a variable in a dependency, which is what makes this work; the path is in the `Makefile` once and read from there by `03-build-releases.sh`.
35- **The two real-gopls tests live in `internal/golang` now.** They skip themselves under `-short` and when gopls is missing, which is most sandboxes — so a green run does not mean they ran.