turbo-editors/turbo-gopublic Fork 0
v1.0.0
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.

📦 Turbo Go 3d7798b · on v1.0.0 · k33g · 12h ago
2026-09-01-turbo-core-migration.md · 35 lines · 2.6 KBmarkdown
Blame HistoryOpen raw

Handoff — 2026-09-01 — Turbo Go on turbo-core

State

Turbo Go is now a thin editor on top of turbo-core: main.go plus internal/golang, about four hundred lines. The other fourteen packages moved into the library.

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.

Nothing about the editor's behaviour changed — menus, keys, themes, file formats and environment variables are what they were.

Everything is uncommitted, on branch refactoring.

In flight

Nothing.

Next steps

  1. Commit turbo-core first, then this repository. Turbo Go does not build without the library beside it.
  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.
  3. Ticket 0001 in turbo-editors/.tickets is the user's to close.
  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.

Open questions / blockers

None.

Watch out for

  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
 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
# Handoff — 2026-09-01 — Turbo Go on turbo-core

## State

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.

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.

**Nothing about the editor's behaviour changed** — menus, keys, themes, file formats and environment variables are what they were.

Everything is **uncommitted**, on branch `refactoring`.

## In flight

Nothing.

## Next steps

1. **Commit turbo-core first**, then this repository. Turbo Go does not build without the library beside it.
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`.
3. Ticket 0001 in `turbo-editors/.tickets` is the user's to close.
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.

## Open questions / blockers

None.

## Watch out for

- **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.
- **`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.
- **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.
- **`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.
- **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`.
- **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.