History
One dated entry per session, appended. Never rewritten.
2026-09-03 — Turbo Python built, from an empty repository to a complete editor
- Goal:
/turbo-new-editor Python ./turbo-python— a third editor in the family, on turbo-core v0.4.0, without forking anything. - Shape: Python has no Go lexer worth using, so this followed
turbo-rust/internal/rustlang— a hand-written scanner againstsyntax.LineScanner, a line at a time, rather than turbo-go's byte-offset conversion. - Decisions put to the user: the menu label
~P~ythonoverP~y~thon/Py~t~hon;pylspover pyright and ruff-lsp;pyproject.tomlthensetup.pythensetup.cfgas root markers; and the six starter commands, all throughuv. - Changes:
main.go;internal/pythonlang/(profile,scan.go,literals.go,words.go, three embedded.tmplstarter files);Makefile,scripts/install.sh,scripts/check-version.shand the four numbered release scripts; 33 documentation pages in each of EN and FR; a rootREADME.md. - Scanner decisions: a name wholly in capitals is a constant, any other capitalised name a type — Turbo Rust has only the second rule and documents
SCREAMING_SNAKE_CASEas a known wrong answer, and PEP 8 separates the conventions well enough that the wrong answer was worth removing rather than inheriting. A capitalised name is a type even when it is called, which is the one rule the two editors deliberately order differently.selfandclsare builtins although the language does not name them. An f-string is one span, braces included. - The
[all]in the install hint is not cosmetic: installed bare, pylsp starts, completes and jumps, and publishes an empty diagnostics list for a file that does not parse, because the linters that produce them are extras. A gutter blank for want of a linter and a gutter blank for want of a bug look identical. - Four server directories besides
PATH— the active virtualenv,~/.local/bin, pyenv's shims, and every~/Library/Python/<version>/binthat exists.Profile()is a function rather than a variable because of the first: a variable would freeze whateverVIRTUAL_ENVsaid at link time. - Tests: 129, including one entry per line, spans in order and non-overlapping, broken source still colouring, one per construct and one per thing the scanner deliberately refuses; the templates' formatting contract counted and filled; and five that drive a real pylsp end to end — completion typed into the buffer rather than read off disk, references, the file's symbols, diagnostics on a file that does not parse, and an assertion that pylsp answers neither implementations nor project-wide symbols.
- Quality: PASS 0/0/0, total complexity 91. One smell in the first run, gone in the second.
- The documentation was adapted from Turbo Rust's, and adapting is not substituting. A mechanical pass left, invisibly to every test: a package diagram still labelled
internal/rustlangand "the Rust scanner" withhost="turbo-rust"; a tutorial that had the reader type Rust code into a Python file and claimed Rust's colours for it;crate/caissein five pages;golangci-lintandgo vetin the tools how-to and in the French tools explanation, whose English twin had been rewritten properly;switchandif err != nilin the snippets explanation; and — the mirror image of the defect the skill warns about — the English menus reference saying project menus appear "between Go and Help" while the French one said Python. All fixed in both languages. - Three claims were stale because the library moved, not because of the copy: the menu bar listing omitted the Code menu in both languages and in the tutorial, and the tutorial's "press → four times to reach Options" was one press short for the same reason.
- Two commands in the docs did not exist:
uv updateanduv init --bin. Replaced withuv lock --upgradeanduv init --app, checked againstuv 0.9.26. - The tutorial was rewritten and then run, verbatim, in a pty against a real
uv initproject: every colour claim read back off the terminal as an SGR code, every key count re-counted,uv run main.py's real first-run output pasted in, and a new paragraph explaining the!the language server puts in the gutter forE305. - A Python-specific fact the copied text hid:
Entercopies the current line's indentation and does not add a level after a colon. In a language whose blocks are indentation, that is worth a sentence in the tutorial and a rewritten paragraph in the snippets explanation, where re-indenting is a correctness matter rather than a nicety. diagram_test.gois new, and holds the drawio togo list: the boxes are exactly the packages the module imports, every arrow out of our two packages is a real import, thehostattribute names this project, and no label names another editor's language. All four falsified against the four ways the copied diagram was wrong.- Verified in a real pty, beyond the tests: the Python menu under
Alt-PwithCreate tools fileat30;42andOpen tools filegreyed at90;47; the About box reading "A Turbo C-style editor for Python"; a triple-quoted f-string carried across a line break;Ctrl-Ydeleting a line; the theme dialog opening on the current theme; the server found in~/.local/binwithPATHstripped, and the install hint on the status bar when it is not findable at all. And a file that does not parse, opened by a relative path, showing×in the gutter and⚠ invalid syntaxon the status bar — the failure mode Turbo Go shipped with for months. - Registered in the family: turbo-core's
README.md,docs/{en,fr}/README.md,profile/profile.go's package comment,how-to/release-the-library.md,how-to/test-without-publishing.md,how-to/write-the-starter-files.md,explanation/architecture.mdand.memory/summary.md; plus the "both editors" claims in turbo-go's and turbo-rust's architecture explanations. History in those repositories was left alone: "wrong the moment there were two editors" is a true sentence about the past. - turbo-core's
.gostrings were swept for hardcoded language names. Every hit was a false positive (Go to definition), a doc-comment example of the seam, or a true statement about the implementation (written in Go.). Nothing to fix — the About box's language had already been moved into the profile. - The adaptation found defects in the editor it was adapted from. turbo-rust's English
reference/menus.mdsaid project menus appear "between Go and Help", twice; both siblings' tutorials listed a menu bar without the Code menu and told the reader to press→four times to reach Options, which has been five since that menu shipped; turbo-go's listing was missing Snippets and its own Go menu as well. All fixed in both languages, in both repositories, each with its own history entry and handoff. - Left for the user: nothing is committed, here or in the three repositories beside it. This tree is untracked on
mainatefb533c.
2026-09-03 (later) — released as v0.1.0, and re-verified against turbo-core v0.4.1
- The user committed, tagged and pushed all four repositories between sessions: turbo-python v0.1.0 (
bccbb0b), turbo-core v0.4.1 (4f93fb0), turbo-go v0.4.2, turbo-rust v0.4.2. Everything written in the entry above is in those tags. - turbo-core v0.4.1 changes one
.gofile and it is a comment —profile/profile.go's package doc, which counted the editors. No behaviour change, so nothing in this editor's documentation is affected by the bump. - Re-verified at the new HEAD:
go.modnow requiresv0.4.1with no activereplace;gofmt -lclean,go build ./...clean,go test ./...green in both packages against the freshly downloaded module. .memory/summary.mdcorrected in place: the pinned version, and the two claims that had become false — "nothing is committed" and "no release". The handoff was left alone, because a handoff records what was true when it was written.
2026-09-09 — a documentation defect a fourth editor exposed
- Goal: none of its own. This repository was the worked example for turbo-moonbit, and adapting it surfaced a defect here.
- Changes:
Alt-T→Alt-Pin ten files across both languages —reference/python-tools.md,reference/menus.md,reference/keyboard.mdandhow-to/run-uv-commands.md. The Python menu is~P~ythonand answers toAlt-P;Alt-Tis Turbo Rust's, fromRus~t~, and it survived the mechanical substitution that produced these pages because it is not an identifier. A sentence about custom-menu hot keys ("FormatgetsAlt-M") was wrong for the same reason and was rewritten. "all three editors" → "all four" in the architecture explanation, both languages. - Decisions: fixed here rather than left, because it is a two-line-per-file correction in somebody else's repository — exactly the kind of change that is invisible afterwards if it is not written down.
- Tests: none added here. turbo-moonbit gained
TestTheToolsReferenceMatchesTheStarterFile, which reads the tools table out of its own reference pages and holds it to the file the editor writes, hot key included. Copying that test across is the way to stop this recurring, and it is perhaps twenty minutes. - Not done: nothing else in this repository was touched, and its suite was not re-run.
2026-09-09 (later) — the theme list gained three entries
- Goal: none of its own. turbo-core gained
monochrome-light,darculaandintellij-light, and renamedmonochrometomonochrome-dark; this repository's documentation had to follow. Eleven themes ship now. - Changes:
docs/{en,fr}/reference/themes.md— the embedded list, three new table rows, and a new "a name a theme used to answer to" section sayingmonochromestill loads;docs/{en,fr}/how-to/write-a-theme.md— the inherit-from advice and the shipped-theme count;README.md's themes bullet. No code change. - History was left alone: "comments were the dimmest colour in six of the eight shipped themes" in
write-a-theme.mdis a true sentence about when that rule was written. - Not yet true of the binary. This repository pins turbo-core v0.4.2, which ships eight themes. The documentation is ahead until turbo-core is tagged and the
go.modhere is bumped — see turbo-core's handoff of the same date.
2026-09-14 — the family count moved from four to five
- Asked: nothing of this repository. Turbo Golo was built beside it, and
docs/{en,fr}/explanation/architecture.mdsaid the library's packages are used unchanged by "all four editors". - Changes: that one sentence, in both languages — four → five. No code touched; no tests run.
2026-09-15 — ACP agent windows, ported from turbo-go
- 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
Agentmenu and the permission dialog all live there. See turbo-core's history for the same date. - Changes:
internal/*/acp.toml.tmpl, embedded intemplates.goand wired intoprofile.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. - 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. - 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. - Quality: PASS 0/0/0.
- 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.
- Not committed.
2026-09-15 (night) — slash commands and @ mentions, documented
- 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. - Changes:
docs/{en,fr}/reference/acp.md— seven key rows for the list, a Commands and mentions section, thesession/promptandavailable_commands_updaterows, 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 embeddedacp.toml.tmpl— two key lines. Applied by one script across the five editors with an exactly-once anchor check. - Tests:
go test ./...green (the template change is a comment; the tests that read the created file still pass). - 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.
- Not committed.
2026-09-16 — the trace variable and a troubleshooting bullet, documented
- 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 inreference/acp.md. Docs only; not committed. - Later on 2026-09-16:
.turbo-python/acp.toml(andagent.yaml, docker agent's config copied from turbo-go) now hold two agents — Bob (llama.cpp) viadocker agent serve acp, and the user's mini-me (llama.cpp) (mm -acp,AGENT_CONFIGenv) — placed where this repository's demo project already keeps its settings. Verified to load as two agents with this editor's ownProfile(); not opened,mmanddockerare on the user's Mac. Working files for trying the/picker, not part of the feature.
2026-09-16 — family count: a sixth editor, Turbo JS
- 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.
- Changes:
docs/en/explanation/architecture.md,docs/fr/explanation/architecture.md— "five editors" → six. Nothing else touched; history left as it was. - Tests: none affected — documentation only.
2026-09-17 — documentation: terminal windows and tools on Windows
- 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 -cwent false the moment that landed. - 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/python-tools.md(shell row, cmd.exe's globs and;, error row),docs/*/explanation/python-tools.md(cmd.exe /S /C). Applied by one script across the six editors, one anchor per file. - 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. - Tests: none affected — documentation only.
2026-09-18 — the "Untitled window has no LSP" fix: docs variant added, fix is turbo-core's
- 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.mdof 2026-09-18 for the defect and the fix. - Changes here:
docs/{en,fr}/how-to/enable-completion.mdgain 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. - Quality: gate not re-run — a Markdown-only change; the gate measures the Go code.
- Docs ahead of the binary: the behaviour arrives only when turbo-core is tagged and this editor re-pinned. Not committed.
2026-09-19 — moved to Rickub: turbo-core v1.0.0 re-pinned, releases published by a workflow
- Asked: the same migration turbo-go received the same day, for all five remaining editors — turbo-core moved to
rickub.comand was published as v1.0.0 with a Release workflow. - Changes, module:
codeberg.org/turbo-editors→rickub.com/turbo-editorsingo.mod, every.gofile,Makefile,scripts/install.sh,README.md,docs/{en,fr},.memory/summary.md(turbo-core deep links also from Codeberg'ssrc/branch/main/toblob/main/).require rickub.com/turbo-editors/turbo-core v1.0.0;go mod tidywithGOWORK=offrewrotego.sumfrom the proxy. - 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,replacecheck, freshrelease/${TAG}/,go installline in the README, no hand-off to 04),02-release.publish.shand04-release.upload-binaries.shdeleted,release.envrewritten (TAG="v1.0.0",ABOUT="Turbo Python"). 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.py) kept from the old 03. Docs: the release section and the wrong-commit variant ofdocs/{en,fr}/how-to/make-a-release.mdrewritten. - Tests:
release_test.goregenerated from turbo-go's — seesummary.md. The file-writing helper iswriteTestFilebecause turbo-python'smain_test.goownswriteFile, and the command helperrunOrFailbecausemain.goownsrun. - Not done: nothing committed or pushed — no commit exists yet and
originis unreachable from the sandbox. The workflow has not run on Rickub for this editor; turbo-go's identical one has, and published.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
|