turbo-js — history
Append-only. One dated entry per session. Never rewritten.
2026-09-16 — Turbo JS, first build
- Goal:
/turbo-new-editor nodes et javascript dans ./turbo-js— a Turbo editor for JavaScript on Node.js, built on turbo-core v0.8.0 in the empty repository the user had created and cloned (main, no commits, remotessh://git@codeberg.org/turbo-editors/turbo-js.git). - Method note: the user was not watching the session, so the plan-approval and per-step gates
methodical-devasks for were not held; the scope was taken as stated and the decisions insummary.mdare the ones to review. Documentation review and translation were delegated to nine subagents working from a fact sheet (/tmp/tj/FACTS.md); two of them wrote into this file and the handoff before being told not to, and their entries were folded into this one. A third flagged two slips inexplanation/architecture.md— "nine letters" listing ten, and "the diagram below" where the diagram is linked — fixed in both languages. - Decisions put to the user in the skill and taken here instead: name
Turbo JS, slugturbo-js, language "JavaScript"; menu~J~avaScriptonAlt-J; servertypescript-language-server --stdiowith the hintnpm install -g typescript-language-server typescript@6; root markerpackage.json; starter tools Install / Format / Lint / Test / Run / Start (+ Echo inTools). Two decisions the skill did not anticipate: the editor's JavaScript scanner replaces turbo-core's built-in under the same name, and a JSON scanner is registered beside it forpackage.json. - Changes:
go.mod(turbo-core v0.8.0, no replace, the commented-out one kept),main.go,internal/jslang/{jslang,scan,literals,words,json,templates}.go, the four.toml.tmplstarter files,Makefile,scripts/{install,check-version}.sh,01–04-release*.sh,release.env,git.shandnew.*.sh,.vscode/,.gitignore,demos/greeter/,docs/(37 pages × EN + FR,docs/README.md,docs/diagrams/packages.drawio),README.md,.qlty/qlty.toml(written byqlty init),.quality/. - The language server was measured, not chosen.
npm install -g typescript-language-server typescriptinstalled TypeScript 7.0.2, and every end-to-end test then failed atinitialize: TypeScript 7 (the native port) ships notsserver.js. Withtypescript@6(6.0.3) all nine tests pass in ~0.4 s each. TypeScript 7's own server (tsc --lsp --stdio, "typescript-go 7.0.2") was then run against the same tests by pointing the profile at it: eight pass, four times faster; the diagnostics test never receives apublishDiagnostics, because that server offers pull diagnostics (textDocument/diagnostic) which turbo-core does not request. Decision: the mature pair,@6pinned, the measurement written intojslang.go, the docs and turbo-core's memory. - Rejected: keeping the library's JavaScript scanner (no regexes, no Node globals — the one editor in the family without a scanner of its own); TypeScript colouring (a different language; the server serves
.tsanyway); a Build tool (no compile step);Alt-N/"Node" as the menu (N is Snippets', and the menu holds a project's whole toolchain); colouring${…}inside templates (a nesting depth to carry for one short expression). - Tests: 154 top-level (106 in
internal/jslang, 48 in the root package) acrossinternal/jslang,main_test.go,diagram_test.go,install_test.go,release_test.go,version_check_test.go; nine against the real server (completion of a buffer-only declaration, definition, references, implementations, type definition, hover, document symbols, workspace symbols, diagnostics);reference_test.goholds every JavaScript and JSON row ofreference/languages.md. Falsified by mutation — fourteen mutations scripted, three tests found vacuous and tightened (0xE+1without spaces for the hexadecimal guard, the snippets header comment rather than the whole file, an explicitRegister()call inmain.go). - Quality: run #1 FAIL (one
return-statementssmell,classOfWordwith eight returns → split intoclassByPosition,knownWordClass,classBySpelling); run #2 PASS, 0 errors, 0 warnings, 0 smells, complexity 108; run #3, after the test-only changes of the mutation pass, PASS at 109. - Docs: 26 pages per language adapted mechanically from turbo-golo and read whole by six subagents (EN/FR × how-to/reference/explanation) against the fact sheet — 85 surviving Golo lines plus the "no manifest / no formatter / strings cross lines / four of nine questions unanswered" paragraphs rewritten,
.turbo-jslo/substitution artefacts fixed, an Agent section added toreference/menus.md; 11 pages written from scratch in English (tutorial, languages, colouring-and-completion, architecture, the three tools pages, enable-completion, install-node, the two READMEs) and translated to French by three subagents. The tutorial was driven through a pty (/tmp/tj/pty_run.py,screen.py) and every claim in it — bar, arrow counts, menu items, the Run box, the terminal output,⚠ ')' expected., the Symbol box, theF12jump, the theme list, every colour as an SGR code — read back off the wire. One editor fact found that way:Enterrepeats the previous line's indentation, so a listing typed verbatim doubles its indents; the tutorial now says to type only the change. - Phase E: turbo-core (
README.md,docs/{en,fr}/README.md,docs/{en,fr}/how-to/test-without-publishing.md,profile/profile.gocomment,.memory/summary.md, a history entry andhandoffs/2026-09-16-sixth-editor.md), turbo-python, turbo-moonbit and turbo-golo (architecture pages EN + FR, golo's FR design-decisions; each with a history entry andhandoffs/2026-09-16-family-count.md). turbo-core's.gostrings swept for hardcoded language names: every hit innocent; no library change. Two library-level findings recorded there rather than fixed:lsp.Client.DidOpensendslanguageId: "go"for every editor, and the client does not pull diagnostics. - Also: the
turbo-new-editorskill updated in the kit source and the installed copy (overriding a built-in language, measuring pushed diagnostics and pinned versions, the indentation trap in tutorials, delegating the adapted-docs read-through with a fact sheet, slug-fragment greps, the family-count grep patterns, scripted mutation passes); the live agent memory restored fromagent-memory/(it held one of thirteen entries). - Not committed. Nothing tagged.
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/javascript-tools.md(shell row, cmd.exe's globs and;, error row),docs/*/explanation/javascript-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 JS"). 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.js) 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 |
|