| 📦 Turbo Go 3d7798b k33g 15h ago | 1 | # Handoff — 2026-09-01 — Turbo Go on turbo-core |
| 2 | |
| 3 | ## State |
| 4 | |
| 5 | Turbo 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 | |
| 7 | The 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 | |
| 11 | Everything is **uncommitted**, on branch `refactoring`. |
| 12 | |
| 13 | ## In flight |
| 14 | |
| 15 | Nothing. |
| 16 | |
| 17 | ## Next steps |
| 18 | |
| 19 | 1. **Commit turbo-core first**, then this repository. Turbo Go does not build without the library beside it. |
| 20 | 2. **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`. |
| 21 | 3. Ticket 0001 in `turbo-editors/.tickets` is the user's to close. |
| 22 | 4. 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 | |
| 26 | None. |
| 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. |