← Tidelines/Releases

TypeGlish 0.5.0: the language server ships

The engine leaves the playground. 0.5.0 ships typeglish lsp, so any LSP editor gets the exact checker CI runs, and the paint that travels with it now teaches the English class by colour.

by TypeGlish team4 min read#releasestypeglish 0.5.0
One engine, every editor.

TL;DR 0.5.0 ships the TypeGlish language server: run typeglish lsp and any LSP editor gets the one engine - diagnostics, semantic tokens, hover, completion, and rename, the same checks typeglish check returns in CI. The paint travels with it: colour now teaches the English class (hue families), and the world model stops minting objects out of $-sigil commands. Upgrade with npm i -D typeglish@latest.

For four releases the compiler has been getting better at reading English, and one editor - the bundled playground - has been the place you felt it. 0.5.0 moves the engine out of that one window. The language server ships as a first-class command, typeglish lsp, so the checker you run in CI is now the checker squiggling under your cursor in Neovim, Emacs, Zed, Helix, or VS Code. And the paint the server carries with it got smarter: a word's colour now names its English class. Upgrade with npm i -D typeglish@latest, or run it with no install at all: npx typeglish@latest check **/*.tg. Here is what matters.

§1The language server ships

0.1.0 shipped a single core language service and hinted that it could drive editors beyond the playground. 0.5.0 makes that a command you can point any editor at. typeglish lsp speaks the Language Server Protocol over stdio and answers with the full set an LSP client expects: diagnostics, semantic tokens, hover, completion, and rename. The point is not that TypeGlish now has editor support; it is that there is exactly one engine behind all of it. The squiggle you see while typing is the same verdict typeglish check prints in the terminal and blocks the build on in CI, because it is the same code path, not a lighter in-editor approximation.

refunds.tglogic/contradiction
You are a refund assistant.

You MUST escalate refund requests.
You NEVER escalate refund requests.
Two rules that read fine and sit a few lines apart: one obligates escalating a refund request, the other forbids it. The checker proves they cannot both hold and blocks the build with logic/contradiction, naming the conflicting lines. Before 0.5.0 you saw that verdict in the playground or in CI; now the language server underlines line 4 the moment you type it, in whatever editor you already use. The CI guard on this post re-proves that exact code against the real checker on every build. For why a proven contradiction is worth blocking on, read Your prompt argues with itself.

This is the release that closes the gap between authoring and shipping. A prompt engineer editing a .tg file in their own editor, with their own keybindings, now gets hover that explains a diagnostic, completion that knows the operators and the declared names, and a rename that moves a declaration and every @{pointer} to it at once - all served by the same package that gates the merge. Nothing about the language changed to make this possible; the engine simply stopped being trapped in one window.

§2Colour teaches the class

The second change is in the paint, and it rides the language server into every editor through those semantic tokens. Earlier releases taught the compiler to read the word classes of English - nouns, verbs, adjectives, adverbs, and, in the 0.3.0 function-word floor, the articles and quantifiers. 0.5.0 organizes the highlighting into hue families: each English class reads as a family of colour, so the colour of a painted word is now a statement about what the compiler decided it is. A quantifier does not just look different from a noun; its colour names its class.

voice-support.tg✓ compiles
$CONFIG modality voice

You are a calm support agent.
The account is a premium account.
You MUST verify the account before every refund.
Every content word here lands in a hue family: agent and account as nouns, verify as a verb, calm and premium as adjectives, the as an article, every as a quantifier. The $CONFIG line on top is the other half of the change: it is a compiler command, and in 0.5.0 the world model no longer mints an object out of it, so voice and modality are read as command scaffolding, never as entities the checker reasons about. The file compiles clean, and the guard on this post asserts exactly that. The object system a real entity comes from landed in 0.2.2.

Those two halves - colour keyed to class, and commands that no longer mint - are the same instinct pointed at two surfaces. One says: what the compiler thinks a word is should be visible, not buried in a hover. The other says: what a command does is configure the compiler, so its words should never leak into the world of things the prompt is about. Together they make the reading the compiler does a little more legible, which is exactly what you want when that reading now follows you into your own editor.

Field note

0.5.0 is a reach release, not a language release: two changes, and the headline is a tooling one. The language server exposes checks that already existed rather than adding a new gate, and hue families is a paint refinement plus one small world-model correctness fix. It fires only what it can prove, the same as always, and there are no benchmark or adoption numbers to report. If npx typeglish check gives you a different verdict on a file that used to pass, it is almost certainly the no-minting fix reading a command more precisely. The full changelog lives on GitHub. For the coverage lineage the paint sits on, read the 0.3.0 notes.

FAQQuestions about 0.5.0

What shipped in 0.5.0?
Two things: the language server as a first-class command (typeglish lsp), serving diagnostics, semantic tokens, hover, completion, and rename over stdio to any LSP editor; and hue families in the paint - a word's colour now names its English class - alongside a world-model fix so the compiler no longer mints objects out of $-sigil commands.
Does the language server work in my editor?
If your editor speaks LSP, yes. typeglish lsp talks the protocol over stdio, so Neovim, Emacs, Zed, Helix, and VS Code can all drive it. It is the same core service the playground uses, so the squiggle while you type is the same verdict typeglish check returns in CI, not an approximation.
What are hue families, and does a word's colour mean something?
It does. The paint is organized by English word class: nouns, verbs, adjectives, adverbs, articles, and quantifiers each read as a family of colour, so the colour of a painted word tells you the class the compiler assigned it. The language server emits those as semantic tokens, so the same class-by-colour reading reaches any LSP editor.
Does upgrading change how my existing files check?
For most files, no. The language server is new surface, not a new gate. The one behaviour change is the no-minting fix: a $-command's words can no longer be mistaken for entities. Run npx typeglish check after upgrading to confirm.
∿ washed up Jul 23, 2026 ∿