Handoff — 2026-09-16 — Turbo JS, first build
State
The editor is complete and green. make check passes with typescript-language-server 6.0.0 + typescript 6.0.3 on PATH (the nine real-server tests skip themselves without them, and under -short), the quality gate passes (0/0/0, complexity 108), the documentation is complete in both languages (37 pages each), the root README.md is written, demos/greeter runs, and the tutorial has been driven through a pty and read back as SGR codes. Nothing is in flight.
The working tree is uncommitted: the repository has no commits at all; everything is untracked on main. No commit, tag or push was asked for.
What was touched outside this repository
Each with its own history entry and handoff, each needing its own commit:
- turbo-core —
README.md,docs/{en,fr}/README.md,docs/{en,fr}/how-to/test-without-publishing.md,profile/profile.go(comment only),.memory/summary.md(six editors; two new "Not yet established" bullets),.memory/history.md,.memory/handoffs/2026-09-16-sixth-editor.md. No code change. Its tree also carries the still-uncommitted ACP trace work of 2026-09-16 that predates this session. - turbo-python, turbo-moonbit —
docs/{en,fr}/explanation/architecture.md: "all five editors" → six. - turbo-golo — the same two pages plus
docs/fr/explanation/design-decisions.md. - The kit:
kits/dev-toolkit/files/home/.claude/skills/turbo-new-editor/SKILL.mdand its installed copy~/.claude/skills/turbo-new-editor/SKILL.md(kept byte-identical), with this cycle's lessons. agent-memory/was copied back into the live~/.claude/projects/…/memory/, which had lost twelve of its thirteen entries.
Next steps
- Review the decisions in
summary.md— none was approved by the user: the nameTurbo JS, the~J~avaScriptmenu,typescript-language-server+typescript@6rather than TypeScript 7's own server,package.jsonas the only root marker, the seven starter tools, replacing turbo-core's JavaScript scanner, registering JSON here. - Commit — this repository (everything), then turbo-core, turbo-python, turbo-moonbit, turbo-golo, then the kit.
- Add a
LICENSEif wanted; the siblings are MIT,Copyright (c) 2026 turbo-editors. The root README says the file is the owner's to add. - Tag
v0.1.0when ready:release.envalready says so;01-release.tag.shrunsmake checkand refuses a livereplace. Createturbo-js.token.envfirst (gitignored by*.env). - Open an agent window from this editor once, on the Mac —
Alt-A▸ Create agents file, point it atmini-meordocker agent, and check a ```js fence in an answer comes out coloured. Nobody has. - Two turbo-core cycles this editor exposed, when wanted:
languageIdfrom the profile inlsp.Client.DidOpen, and pull diagnostics (textDocument/diagnostic) — which would let this editor run on TypeScript 7's server from onenpm install -g typescript.internal/jslang/editor_test.gois the harness: pointServerCommandat anode_modules/.bin/tscwith--lsp --stdioand the diagnostics test is the one that fails.
Watch out for
typescript@6, never baretypescript. The currenttypescriptis 7 and has notsserver.js; the server then fails atinitialize, after--versionsucceeded. The hint, the installer, the tutorial and the docs all pin@6;profile_test.goholds the hint to it.Languageissyntax.LanguageJavaScript, on purpose. A private constant would register a second JavaScript beside the library's instead of replacing it, and.jsfiles would then be claimed by whichever registration sorts last.TestRegisterReplacesTheLibrarysOwnJavaScriptScannerandTestTheEditorColoursJavaScriptItOpensboth prove the override by finding a coloured regex.Enterrepeats the previous line's indentation in turbo-core's editor. Any driver that types an indented listing must type only the change, or the buffer doubles its indents./tmp/tj/tut_script.jsondoes it right; the tutorial says so.docs/*/reference/languages.mdis read byreference_test.go; changing a JavaScript or JSON row means changing the test, and the FR page by hand.- The pty drivers live in
/tmp/tj/(pty_run.py,screen.py,tut_script.json,FACTS.md, the.rawcaptures) and will not survive the sandbox.screen.pyreplays a whole capture per query, so a 3 MB capture takes ~10 s per frame — batch the queries. - The sandbox is Linux, the user is on macOS:
/tmp/tj/turbo-jsis an ELF outside the tree;bin/is empty and must stay so. cpon this sandbox has produced NUL-filled files before; every copy this session was done from Python with a byte comparison afterwards.npm install -gin the sandbox writes to/usr/local/share/npm-global; the user's Mac will have it elsewhere — the editor searches nvm, npm-prefix, pnpm, Volta,/usr/local/binand/opt/homebrew/bin, and the docs list them.
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 |
|