| 📦 Turbo Golo d710c1b k33g 12h ago | 1 | # turbo-golo — history |
| 2 | |
| 3 | One dated entry per session, appended at the end. Never rewritten. |
| 4 | |
| 5 | ## 2026-09-14 — Turbo Golo built, from an empty repository to a passing gate |
| 6 | |
| 7 | *(Written by the following session from what was left on disk: this session ended before writing its memory. The code, tests, docs and quality reports are its evidence; `/tmp/tg/FACTS.md`, its own notes, is the source of the facts below.)* |
| 8 | |
| 9 | - **Goal**: ticket 4, "create turbo-golo" — `/turbo-new-editor` for Golo, in this directory, against turbo-core v0.5.0. |
| 10 | - **Changes**: `go.mod` (turbo-core v0.5.0, no active `replace`), `main.go`, `internal/gololang/` (profile, three-file scanner, three starter templates, six test files), `Makefile`, `scripts/`, the four release scripts, `docs/{en,fr}/` (34 EN pages, 33 FR — the French tutorial was not yet written), `docs/diagrams/packages.drawio`, `demos/` with three programs, `.qlty/` and `.quality/`. |
| 11 | - **Decisions** (recorded in `summary.md` — the main ones): no root marker; `golo lsp` as the server, the interpreter itself; strings carried to their closing quote wherever it is, following the lexer; `Some`/`None`/`Ok`/`Err` as types; the lexer's own identifier predicate, emoji included; the builtins table held to the real server; Run first in the tools file and no Format/Lint because GoloScript has neither; six placeholders in eight tools. |
| 12 | - **Tests**: 250, all passing with `golo` v0.1.1 installed. Scanner invariants, one case per construct and per refusal, the template contract, the editor on a `SimulationScreen`, the drawio held to `go list`, the languages reference held to the scanner, and the real `golo lsp` driven end to end — completion on typed text, hover, definition, symbols, and a file that does not compile. |
| 13 | - **Quality**: run #1 FAIL (2 smells), run #2 PASS — 0/0/0, complexity 54. |
| 14 | - **Verified in a pty**: the tutorial run start to finish (`/tmp/tg/tut.raw`), every colour claim read back as SGR, the `Tools` menu appearing, `Run` asking for the script, the `//` diagnostic in the gutter and on the status bar. |
| 15 | - **Not recorded**: whether a mutation pass was run over the tests. See `summary.md`, "Not yet established". |
| 16 | |
| 17 | ## 2026-09-14 (later) — finishing the cycle: French tutorial, README, memory, family |
| 18 | |
| 19 | - **Asked**: "continue le travail que tu avais en cours sur le turbo-golo editor". Reconstructed the state from disk: code green, gate PASS, one French page missing, no root README, no `.memory/`, family not updated. |
| 20 | - **Changes**: `docs/fr/tutorials/getting-started.md` (written from the English one, whose claims were re-read off `/tmp/tg/tut.raw` first); `README.md` at the root; this `.memory/` (README, summary, history, handoff). |
| 21 | - **Outside this repository**: turbo-core (`README.md`, both doc READMEs, both `test-without-publishing.md`, `profile/profile.go`'s comment, `.memory/summary.md`, plus a history entry and a handoff) now counts five editors; turbo-python and turbo-moonbit (`docs/{en,fr}/explanation/architecture.md`, plus a history entry and a handoff each) say "all five editors". turbo-core's `.go` strings swept for hardcoded language names — all innocent, no library change. |
| 22 | - **Tests**: `go build ./...`, `go vet ./...`, `go test ./...` — 250 passing, 0 skipped; `gofmt -l` clean. `go build ./profile` in turbo-core after the comment change. |
| 23 | - **Quality**: PASS, re-run at the end of the session with no code change. |
| 24 | - **Skill**: `turbo-new-editor` (kit source and installed copy) gained this cycle's lessons — write the `.memory/` skeleton at step 1 rather than at the end, count both doc trees before declaring the docs done, and the no-root-marker case. |
| 25 | |
| 26 | ## 2026-09-15 — ACP agent windows, ported from turbo-go |
| 27 | |
| 28 | - **Goal**: carry the Agent Client Protocol support to this editor. The feature itself is turbo-core's — the protocol client, the conversation model, the window widget, the `Agent` menu and the permission dialog all live there. See turbo-core's history for the same date. |
| 29 | - **Changes**: `internal/*/acp.toml.tmpl`, embedded in `templates.go` and wired into `profile.Templates.Agents`. That is the entire code change — one file and one line. Plus six documentation pages (EN + FR: how-to, reference, explanation) and their index entries. |
| 30 | - **Decisions**: the example agent is `docker agent`, as in every other editor, because the protocol is the point and the agent is the user's choice; the one sentence in the starter file that is about **this** editor names its own fence, and a test holds it to that — a starter file copied from another editor and left naming that editor's language is the obvious way to get this port wrong. |
| 31 | - **Tests**: 5 new in `internal/*`: both blanks filled with no `%!` marker, the file loads back as exactly one agent, it explains its keys, it names this editor's own language, and creating it twice leaves the first alone. |
| 32 | - **Quality**: PASS 0/0/0. |
| 33 | - **Docs**: adapted rather than copied — the slug, the language, the fence, the build command and the language server all differ from turbo-go's, and each was replaced. |
| 34 | - Not committed. |
| 35 | |
| 36 | ## 2026-09-15 (night) — slash commands and `@` mentions, documented |
| 37 | |
| 38 | - **Documentation and the starter file only in this repository**; the code is turbo-core's (see its `.memory/` of the same date). The user asked for the ACP changes that let an agent's commands be discovered the way Zed discovers them, then for `@` as a file selector. |
| 39 | - **Changes**: `docs/{en,fr}/reference/acp.md` — seven key rows for the list, a **Commands and mentions** section, the `session/prompt` and `available_commands_update` rows, the Limits bullet; `docs/{en,fr}/how-to/talk-to-an-agent.md` — "Use the agent's own commands" and "Point the agent at a file"; `docs/{en,fr}/explanation/agent-windows.md` — the "left out" bullet narrowed to images, two sections appended; the embedded `acp.toml.tmpl` — two key lines. Applied by one script across the five editors with an exactly-once anchor check. |
| 40 | - **Tests**: `go test ./...` green (the template change is a comment; the tests that read the created file still pass). |
| 41 | - **Ahead of the binary**: this repository pins turbo-core v0.7.0, which has none of this. The pages are true once turbo-core is tagged and the pin moved. |
| 42 | - Not committed. |
| 43 | |
| 44 | ## 2026-09-16 — the trace variable and a troubleshooting bullet, documented |
| 45 | |
| 46 | - turbo-core gained `TURBO_ACP_TRACE=<file>` and an "update this editor could not read" line in Agent status, because the user saw no `/` commands from their own agent and nothing on screen could say why. Documented here EN + FR: a bullet in the how-to's Variants, a section in `reference/acp.md`. Docs only; not committed. |
| 47 | - **Later on 2026-09-16**: `demos/.turbo-golo/acp.toml` (and `agent.yaml`, docker agent's config copied from turbo-go) now hold two agents — **Bob (llama.cpp)** via `docker agent serve acp`, and the user's **mini-me (llama.cpp)** (`mm -acp`, `AGENT_CONFIG` env) — placed where this repository's demo project already keeps its settings. Verified to load as two agents with this editor's own `Profile()`; not opened, `mm` and `docker` are on the user's Mac. Working files for trying the `/` picker, not part of the feature. |
| 48 | |
| 49 | ## 2026-09-16 — family count: a sixth editor, Turbo JS |
| 50 | |
| 51 | - **Asked**: nothing of this repository directly. Turbo JS was built beside it, and the sentences here that count the family went false the moment it existed. |
| 52 | - **Changes**: `docs/en/explanation/architecture.md`, `docs/fr/explanation/architecture.md`, `docs/fr/explanation/design-decisions.md` — "five editors" → six, and the five scanners a rejected alternative would have moved into the library → six. Nothing else touched; history left as it was. |
| 53 | - **Tests**: none affected — documentation only. |
| 54 | |
| 55 | ## 2026-09-17 — documentation: terminal windows and tools on Windows |
| 56 | |
| 57 | - **Asked**: nothing of this repository directly. turbo-core gained pseudo-console (ConPTY) terminal windows and a per-platform tools shell (cmd.exe on Windows); the pages here that said "Linux and macOS" or `/bin/sh -c` went false the moment that landed. |
| 58 | - **Changes** (EN + FR): `README.md` (terminal windows: Linux, macOS and Windows), `docs/*/reference/terminal.md` (shell row, controlling-terminal row, platform table, error row), `docs/*/explanation/terminal-windows.md` (the Windows section rewritten: a pseudo-console and why it is a file of its own, built and vetted but not yet run), `docs/*/how-to/use-a-terminal.md` (`%COMSPEC%`, the five things to try first on Windows), `docs/*/reference/golo-tools.md` (shell row, cmd.exe's globs and `;`, error row), `docs/*/explanation/golo-tools.md` (`cmd.exe /S /C`). Applied by one script across the six editors, one anchor per file. |
| 59 | - **Not changed**: code, `go.mod`. **The documentation is ahead of the binary** until turbo-core is tagged (v0.9.0) and re-pinned here; the feature has never been run on Windows by anyone. |
| 60 | - **Tests**: none affected — documentation only. |
| 61 | |
| 62 | ## 2026-09-18 — the "Untitled window has no LSP" fix: docs variant added, fix is turbo-core's |
| 63 | |
| 64 | - **Asked**: propagate to every editor the fix made in turbo-core the same day — saving now announces a document the server does not know (a window that started Untitled gets LSP from its first save), and Save As under a new name closes the old document. See turbo-core's `.memory/history.md` of 2026-09-18 for the defect and the fix. |
| 65 | - **Changes here**: `docs/{en,fr}/how-to/enable-completion.md` gain one variant — completion in a window that started without a name works from its first save, no relaunch needed. No code in this repository is involved. |
| 66 | - **Quality**: gate not re-run — a Markdown-only change; the gate measures the Go code. |
| 67 | - **Docs ahead of the binary**: the behaviour arrives only when turbo-core is tagged and this editor re-pinned. Not committed. |
| 68 | |
| 69 | ## 2026-09-19 — moved to Rickub: turbo-core v1.0.0 re-pinned, releases published by a workflow |
| 70 | |
| 71 | - **Asked**: the same migration turbo-go received the same day, for all five remaining editors — turbo-core moved to `rickub.com` and was published as v1.0.0 with a Release workflow. |
| 72 | - **Changes, module**: `codeberg.org/turbo-editors` → `rickub.com/turbo-editors` in `go.mod`, every `.go` file, `Makefile`, `scripts/install.sh`, `README.md`, `docs/{en,fr}`, `.memory/summary.md` (turbo-core deep links also from Codeberg's `src/branch/main/` to `blob/main/`). `require rickub.com/turbo-editors/turbo-core v1.0.0`; `go mod tidy` with `GOWORK=off` rewrote `go.sum` from the proxy. |
| 73 | - **Changes, release tooling**: `.github/workflows/release.yml` (new), `01-release.tag.sh` (rewritten), `03-build-releases.sh` → `02-build-releases.sh` (tag from `$1`, validation, `replace` check, fresh `release/${TAG}/`, `go install` line in the README, no hand-off to 04), `02-release.publish.sh` and `04-release.upload-binaries.sh` deleted, `release.env` rewritten (`TAG="v1.0.0"`, `ABOUT="Turbo Golo"`). All generated from turbo-go's final files with the names substituted; the README paragraph naming this editor's language server and the example file (`main.golo`) kept from the old 03. Docs: the release section and the wrong-commit variant of `docs/{en,fr}/how-to/make-a-release.md` rewritten. |
| 74 | - **Tests**: `release_test.go` regenerated from turbo-go's — see `summary.md`. The file-writing helper is `writeTestFile` because turbo-python's `main_test.go` owns `writeFile`, and the command helper `runOrFail` because `main.go` owns `run`. |
| 75 | - **Not done**: nothing committed or pushed — no commit exists yet and `origin` is unreachable from the sandbox. The workflow has not run on Rickub for this editor; turbo-go's identical one has, and published. |
| 76 | |
| 77 | ## 2026-09-19 (later) — GoloScript v0.2.0 answers references, implementations and project symbols: the pinning test did its job |
| 78 | |
| 79 | - **Origin**: the user ran `./01-release.tag.sh`; its `make check` failed on `TestGoloLSPAnswersNoneOfTheFourQuestionsItDoesNotAdvertise` — `golo lsp` on their Mac now answers references, implementations and workspace symbols. Reproduced in the sandbox by installing GoloScript v0.2.0 (2026-09-14, `golo-v0.2.0-linux-arm64` from Codeberg) into `/usr/local/bin`: the same three assertions fail, type definition still answers nothing. The test had skipped itself here until then, `golo` not being installed. |
| 80 | - **Measured** against the server directly (`initialize` capabilities and a two-file project): it advertises `definitionProvider`, `diagnosticProvider`, `documentSymbolProvider`, `hoverProvider`, `implementationProvider`, `referencesProvider`, `workspaceSymbolProvider` — not `typeDefinitionProvider`, and `textDocument/typeDefinition` returns `-32601 unsupported method`. References: declaration + every call, **within the file only** (a call in another file of the project is not found). Implementation: the declaration itself. `workspace/symbol`: every `.golo` under the root, open or not, module names included; empty query lists all. Substring matching was not checked and is not claimed anywhere. |
| 81 | - **Changes, tests**: the four-question test replaced by `TestFindReferencesWithRealGoloLSP` (3 locations: lines 3, 8, 12), `TestFindImplementationsWithRealGoloLSP` (the declaration), `TestSymbolsAcrossTheProjectWithRealGoloLSP` (`helper`, and `elsewhere` in a file written after start and never opened) and `TestGoloLSPDoesNotAnswerTypeDefinitionWithRealGoloLSP`; new constant `secondCallLine = 12`. Ten real-server tests, all green here against v0.2.0. |
| 82 | - **Changes, docs** (EN + FR): `how-to/enable-completion.md` (table, the “without a key” sentence, the boundary paragraph), `reference/keyboard.md`, `reference/menus.md` (intro and three rows), `how-to/ask-about-code.md` (table, paragraph, the `No … found` row, the `Ctrl-T` bullet), `how-to/navigate-code.md`, `explanation/colouring-and-completion.md`, `explanation/design-decisions.md`, `explanation/architecture.md` (ten tests, two new bullets, the closing paragraph), `how-to/run-the-tests.md`; `README.md` feature bullet; `.memory/summary.md` two bullets. Each page now says the boundary is `typeDefinition` alone and that the test is how the other three were noticed. |
| 83 | - **Not done**: not committed — `01-release.tag.sh` is to be run again by the user. `diagnosticProvider` (pull diagnostics) is newly advertised too; turbo-core reads `publishDiagnostics` only, and the diagnostics tests still pass, so the server also pushes. Not investigated further. |