@@ -7,6 +7,50 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77
88## [ Unreleased]
99
10+ ## [ 0.3.0] — 2026-06-08
11+
12+ gmat-script grows from a parser and formatter into a full editor toolchain: a GMAT field catalogue
13+ reflected from R2026a, a linter that checks scripts against it, a Language Server Protocol server,
14+ and a VS Code extension on the Marketplace and Open VSX. Everything still runs with no GMAT install —
15+ the catalogue ships as data inside the wheel — and the grammar is unchanged, so every byte-for-byte
16+ round-trip from earlier releases still holds.
17+
18+ ### Added
19+
20+ - ** Field catalogue (` gmat_script.catalog ` )** — the semantics GMAT defines but the permissive grammar
21+ deliberately ignores: every resource type, its fields, and each field's type, default, allowed
22+ values, units, and reference target. Reflected from GMAT R2026a through ` gmatpy ` by a
23+ ` tools/gen_catalog.py ` generator and shipped as a version-pinned, provenance-stamped data file
24+ (` data/fields-R2026a.json ` , 102 resource types and 2614 fields) inside the wheel, loaded by
25+ ` load_catalog() ` . Adding another GMAT release is a new data file, not a code change, and nothing
26+ downstream needs a GMAT install (#19 ).
27+ - ** Linter (` gmat-script lint ` )** — a structural checker that reads the field catalogue: it flags
28+ unknown resource fields, enum and type violations, references to undeclared resources, duplicate
29+ names, and more, with inline suppression comments and ` ruff ` -style severities and exit codes. Each
30+ diagnostic carries a rule id, a location, and a message, and the engine is shared verbatim with the
31+ language server (#20 ).
32+ - ** Tree-sitter queries** — ` highlights ` , ` locals ` , and ` tags ` queries packaged with the
33+ ` tree-sitter-gmat ` grammar, giving editors resource / command / field highlighting, scope-aware
34+ local resolution, and a symbol index with no extra setup (#21 ).
35+ - ** Language server (` gmat-script[lsp] ` )** — a ` pygls ` server, launched as ` gmat-script-lsp ` or
36+ ` python -m gmat_script.lsp ` , that brings the catalogue and linter to any LSP-capable editor: hover
37+ docs for a field's type, default, allowed values, and units; live diagnostics as you type;
38+ completion of resource names, the fields valid for the resource under the cursor, and enum values;
39+ go-to-definition and find-all-references; a document outline; and format-on-save via the canonical
40+ formatter (#22 ).
41+ - ** VS Code extension** — ** GMAT Script** , published to the Visual Studio Marketplace and Open VSX.
42+ Bundled TextMate highlighting works the moment it installs; the richer language features come from
43+ the language server (` pip install "gmat-script[lsp]" ` ). ` .script ` and ` .gmf ` files get a file icon,
44+ comment / bracket configuration, and format-on-save on by default (#23 ).
45+ - ** Documentation** — new guide pages for the field catalogue, the linter, the language server, and
46+ the VS Code extension, plus README sections on editor tooling and the GMAT-free catalogue (#25 ).
47+
48+ ### Changed
49+
50+ - ` gmat-script ` (PyPI) and ` tree-sitter-gmat ` (npm) continue to release in version lockstep, now at
51+ 0.3.0. The grammar and generated parser are unchanged since 0.2.0; the npm package is republished
52+ to carry the new editor queries — an expanded ` highlights.scm ` and a new ` locals.scm ` (#21 ).
53+
1054## [ 0.2.0] — 2026-06-08
1155
1256A typed AST overlay over the v0.1 parse tree, a lossless mutation API, a canonical formatter, and a
0 commit comments