Studio provides Simplified Chinese and English interface modes. New browser profiles start in Chinese; the top-bar language switch persists the selected locale locally. Localized labels never replace TermSpec enum values, stable IDs, language tags, or canonical pack content.
TermKit Studio is the official local-first editor for canonical terminology repositories. It is a React/Vite static application served by the local FastAPI process. Release wheels include a source-map-free production build; Bun is only needed when developing Studio itself.
cd apps/studio && bun install --frozen-lockfile && bun run build && cd ../..
uv run termkit studio path/to/packOpening a repository parses its canonical source, migrates
.termkit/workspace.sqlite, indexes canonical records and preserves local
draft/review state. Canonical YAML/JSONL changes only when a ChangeSet is applied.
Cross-record validation failures open Studio in recovery mode so diagnostics remain available. Structurally unparseable records still fail closed. Release builds remain disabled by the validation gate until the source is valid.
The workspaces are grouped by intent rather than Python subsystems:
- Drafts — all active ChangeSets, semantic preview, submit, rebase and discard;
- Concepts — paged faceted search, virtualized records and autosaved editing;
- Candidates — context, provenance and reconciliation decisions;
- Review — ordered semantic diff and dimension-specific approvals;
- Sources — rights, authority, identity and usage visibility;
- Relations — hierarchy-first browsing and governed relation drafts;
- Exchange — mapping, preview, reconciliation and import ChangeSet;
- Runtime — explainable resolve/check and
.termdbcompilation; - Releases — validation, deterministic build and archive verification.
Editing autosaves the complete operation set with one atomic request; submitting creates a ReviewTask. The visible saved state always refers to the local workspace draft, not canonical files. Review approval does not itself modify canonical source. Apply is a separate, explicit action after all required dimensions pass.
Studio has no hosted security boundary. Keep it on loopback unless a separately designed authentication layer is provided.