Releases: Atypical-Consulting/Koine
Releases · Atypical-Consulting/Koine
Release list
v0.250.0
0.250.0 (2026-07-11)
Features
- studio: add a Source Control ahead/behind sync readout and push action (#1150) (92fbf20)
- studio: add Source Control Discard all and per-row Discard behind a confirm gate (#1151) (92fbf20)
- studio: clear the studio-shell backlog — 16 grouped shell fixes (#1387) (92fbf20)
- studio: migrate UnsavedIndicator, DiagnosticsStripPanel, and DocsPanelHost to koine-ui (#1244) (92fbf20)
Bug Fixes
- deps: update dependency @anthropic-ai/sdk to ^0.111.0 (#1393) (5f753f1)
- deps: update dependency starlight-blog to ^0.28.0 (#1391) (b703349)
- studio: address branch-wide code-review findings, incl. per-row Discard destroying staged-row edits and git_discard no-op on C-quoted filenames (92fbf20)
- studio: key SortableTable rows on rowLabel to avoid remount-on-sort churn (#1382) (92fbf20)
- studio: make the workspace-open lock impossible to bypass and disable controls in flight (#1275) (92fbf20)
- studio: move Source Control header actions into the shared right-rail header and align panel insets (#1410) (bafbdb2)
- studio: revert-and-close the ADR/Note edit textareas on Escape (#1383) (92fbf20)
- studio: scope the Problems tab count pill to the active context (#1203) (92fbf20)
- studio: shrink .koi-resizer/.koi-resizer-y handles to 1px (#1388) (aa7c64c)
Performance Improvements
v0.249.0
0.249.0 (2026-07-10)
Features
- demo: runnable demos for the TypeScript/Python/PHP/Rust targets (#1073) (#1360) (5443116)
- studio: browse generated output file-by-file via a file tree (#871) (#1339) (990a276)
- studio: Context Map + Problems obey the active-context scope (#1188) (#1200) (f44eb77)
- studio: eager +n/−n line counts on Source Control rows via git numstat (#1152) (#1194) (ad4e62d)
- studio: make the status-bar Context segment a clickable scope picker (#1182) (e92e8bf)
- studio: prototype a host-adapter seam for store-coupled UI panels (#944) (#1235) (c2b8252)
- studio: surface real state-machine transitions in the ⌘K launcher (#1163) (#1195) (7ea254d)
- studio: the left rail obeys the active-context scope (#1188) (#1198) (f96b432)
- studio: the Output rail obeys the active-context scope (ADR 0009) (#1196) (2553d3a)
- studio: wire the launcher's degraded quick actions to real seams (#1165) (#1192) (2e8af3e)
- tooling: harden aggregate-root Id co-rename with context scoping and an authoritative status signal (#565) (#1346) (99aa42c)
Bug Fixes
- deps: update dependency @maxgraph/core to ^0.24.0 (#1205) (52a4811)
- emit-core: reconcile disagreeing ConditionalExpr branches across Java/TS/Kotlin/Python (#1344) (#1348) (f766414)
- emit-core: resolve ScalarOpWalker operands by full type instead of shallow identifier match (#1289) (#1296) (f8c4189)
- emit-php: gate multipliedBy/dividedBy independently off MultiplyFactors/DivideFactors (#1301) (#1302) (6077075)
- emit-rust: borrow compound operands in quantity +/- unit-checked routing (#1268) (#1278) (7ab1590)
- emit-rust: clone non-Copy conditional/let/coalesce branches outside the quantity guard (#1282) (#1287) (41d4d95)
- emit-rust: coerce a value object's constant-default field to its declared Rust type in new (#1319) (#1323) (38197c4)
- emit-rust: coerce a whole mismatched-type conditional operand once (#1293) (#1307) (b24f777)
- emit-rust: coerce an entity's constant-default field to its declared Rust type in new (#1324) (#1327) (3451181)
- emit-rust: coerce and Some(...)-wrap an optional derived member's bare non-optional body (#1329) (#1330) (4ddf2fe)
- emit-rust: emit scalar Mul/Div impls for quantities (#1084) (#1265) (4fb0ec6)
- emit-rust: extend coerceTo dispatch to comparisons, disagreeing branches, and bare operands (#1311) (#1315) (5166c49)
- emit-rust: extend the whole-operand coercion wrap to a bare UnaryExpr operand (#1326) (3fd278c)
- emit-rust: extend the whole-operand coercion wrap to bare MemberAccessExpr/CallExpr operands (#1316) (#1320) (6f27528)
- emit-rust: map-render an optional MemberAccessExpr/CallExpr/UnaryExpr operand coerced toward Decimal instead of wrap-prefixing it (#1354) (#1357) (1b7b4db)
- emit-rust: map-render an optional-Int conditional-branch numeric widen instead of wrap-prefixing it (#1335) (#1338) (de182dd)
- emit-rust: map-render an optional-Int operand coerced toward Decimal in comparisons (#1343) (#1347) (2dfa86d)
- emit-rust: own a .trim() result for an optional-declared String derived member (#1332) (#1337) (908cdfe)
- emit-rust: own and Some(...)-wrap an optional-declared read-model derived String field (#1349) (#1358) (05233e6)
- emit-rust: render .or_else(...) for a CoalesceExpr with an optional right operand (#1333) (#1336) (59e0502)
- emit-rust: resolve Wr...
v0.248.0
0.248.0 (2026-07-07)
Features
- emit-cs: finish W1 handler options — --app-not-found result & --app-handler-result readModel (#1041) (#1139) (f249b14)
- emit: populate DDD kind metadata in the TS/Python/PHP emitters (#1170) (#1172) (5a31a7a)
- studio: add ⌘K Spotlight command launcher, retire command palette (#1143) (#1145) (0cd1534)
- studio: add rstrip hairline separator and widen the tool-window spine to 42px (#1154) (#1166) (2c66a47)
- studio: adopt the hexagon-κ logo across app, README, and website (#1141) (#1144) (92119a1)
- studio: flush center — one spine, flush focus, per-file output rail (#1169) (e21736b)
- studio: rebuild the Source Control panel to the handoff design (#1142) (#1146) (61ae0b8)
- studio: wire the Source Control panel's overflow, caret, and history affordances (#1153) (#1173) (4265353)
Bug Fixes
- studio: drop the koi-space-4 rail inset from the non-Properties right panels (#1155) (9075677)
- studio: make the Output preview pane scroll again (#1177) (81cf976)
- studio: open the domain diagram at its default zoom, keep the % readout truthful (#1159) (30fe0f2)
- studio: stop the toolbar accent bleeding into the emit menu and mark the selected target (#1157) (33c60d4)
- tooling: guard run-ide.ps1 against missing package-lock.json (#1168) (2c65ddb)
v0.247.0
📦 Downloads
This release ships prebuilt executables for the first time — the CLI is self-contained (no .NET runtime required).
Koine CLI (self-contained single file):
- Linux x64 —
koine-v0.247.0-linux-x64.tar.gz - macOS (Apple Silicon) —
koine-v0.247.0-osx-arm64.tar.gz - Windows x64 —
koine-v0.247.0-win-x64.zip - NuGet global tool —
Koine.Cli.0.247.0.nupkg
Koine Studio desktop app:
- macOS (Apple Silicon) —
Koine.Studio_0.247.0_aarch64.dmg - Windows —
Koine.Studio_0.247.0_x64_en-US.msiorKoine.Studio_0.247.0_x64-setup.exe - Linux —
Koine.Studio_0.247.0_amd64.AppImage,Koine.Studio_0.247.0_amd64.deb, orKoine.Studio-0.247.0-1.x86_64.rpm
Installing the unsigned Studio builds. These installers are not yet code-signed, so:
- macOS: right-click the app → Open the first time (Gatekeeper).
- Windows: on the SmartScreen prompt, click More info → Run anyway.
Code-signing & notarization is tracked in #1137.
0.247.0 (2026-07-06)
Features
- studio: chat slice, Preact assistant panel, multi-root-safe agentic edits (#984, #990, #472) (#1119) (1004950)
Bug Fixes
- emit-core: honor explicit qualifier + map-permission in flat-module owner resolution (#1124) (#1128) (9bc7735)
- emit: qualify multi-owner cross-context type references; consolidate shared emitter infra (#1120) (3c37068) — this squash landed four issues: #1091 (ambiguous multi-owner cross-context qualification, with the KOI1419 diagnostic), plus the shared-emitter-infra consolidation: #581 (consolidate the repo-wide
MembersOf/ identifier-char helpers onto the shared #356 helpers), #977 (hoist per-emitter csproj boilerplate into a sharedsrc/Koine.Emit.props), and #902 (migrate the C#/TypeScript/Python emitters to the unifiedNeedsAddoperator-needs model).
v0.246.0
0.246.0 (2026-07-06)
Features
- emit-cs: adoptable application-layer handlers, Mapperly mapping & an ASP.NET api layer (#1036) (fd9b705)
- emit-java: add a dependency-free Java 17 emitter target (#858) (#1069) (c30d837)
- emit-kt: add a Kotlin emitter target (#1066) (#1092) (014c412)
- emit-kt: defensively copy collection members in value objects (#1110) (#1114) (e3a3cc3)
- emit-rust: demand-driven value-object add/subtract for plain value +/- value (#887) (#1062) (991b24e)
- emit-ts: truncate Int fields toward zero on scalar multiply/divide (#938) (#1032) (ab1d8f4)
- studio: add a syntax-tree visualizer panel to the right rail (#890) (#1085) (b32612c)
- studio: add an ESLint gate enforcing frontend safety conventions (#978) (#993) (f676bc8)
- studio: clarify + recover the empty (non-Koine) clone outcome (#1017) (#1058) (f714939)
- studio: preserve syntax-tree roving focus across panel refetch (#1097) (#1100) (ec33ba6)
- studio: recreate the full-bleed Home with resume card, dense recents & Clone (#1005) (#1006) (aca2b5d)
- studio: sticky ancestors band for the virtualized syntax-tree panel (#1106) (#1108) (424ba5d)
- studio: type-check the koine-ui⇄koine-studio DOM-id contract via shared constants (#979) (#999) (83bd203)
- studio: virtualize the syntax-tree panel + raise serializer MaxDepth (#1098) (#1101) (ad2c262)
Bug Fixes
- deps: update dependency @anthropic-ai/sdk to ^0.110.0 (#1013) (1593d89)
- emit-kt: backtick-escape keyword package segments in Kotlin output (#1109) (#1111) (39b70a9)
- emit-php: emit computed Decimal defaults as valid PHP in const-required positions (#971) (#1025) (e999d64)
- emit-php: re-box a bare Int-literal default on a Decimal member (#1030) (#1035) (78fe2d6)
- emit-rust: lift impl Add over Option for optional numeric fields in sum-folded value objects (#970) (#1021) (16441dc)
- emit-rust: route a quantity's plain +/- through unit-checked add/sub (#1068) (#1080) (9a3e02c)
- semantics: catch division by zero nested in conditional/coalesce/let member defaults (#1048) (#1049) (09e1083)
- semantics: fire KOI0217 for narrowing on stored constant defaults, not just derived members (#974) (#1020) (6145507)
- semantics: infer a conditional as its branches' common numeric type so KOI0217 catches a narrowing else (#975) (#1033) (3360648)
- semantics: rebuild KOI1606's zero-divisor walker on ExprWalker for exhaustive Expr coverage (#1056) (#1070) (b1e742b)
- semantics: reject division by zero in a constant-foldable default expression (#1031) (#1045) (cea5948)
- studio: bail in-flight surface loaders after inspectorController dispose (#1002) (#1029) (a7217e3)
- studio: bail refreshContextList() after inspectorController dispose() so a resolving glossary fetch can't write a torn-down controller's state (#1037) (#1047) (c6af3ae)
- studio: guard applyFileEdit dirty-clear against a mid-write keystroke (#1008) (#1050) (619eafc)
- studio: guard applyFileEdit's didSave against a stale write (#1081) (#1087) (8da8b61)
- studio: guard saveActive/saveAllDirty didSave against a mid-write buffer switch (#1009) (#1052) (d1916a3)
- studio: guard saveAllDirty's didSave against a write failure on the active buffer (#1055) (#1078) (cfe04e4)
- studio: gu...
v0.245.0
0.245.0 (2026-07-02)
⚠ BREAKING CHANGES
Features
- demand-generate value-object / scalar division in TS, Python, and Rust emitters (#879) (#933) (5d09c3a)
- design-sync: ship Koine Studio panels as live components via a Preact→React adapter (#913) (3dabd10)
- emit: extract each emitter into its own Koine.Emit.<Target> project (#861) (#968) (9169d5e)
- studio: add an Initialize Repository button to the Source Control panel (#911) (05af580)
- studio: adopt Concept Colors — one DDD concept, one color everywhere (#936) (#941) (dfe7a94)
- studio: default desktop workspace root to Documents/Koine (#915) (#949) (78633da)
- studio: extract Studio's reusable UI into @atypical/koine-ui (#905) (#932) (7011c55)
- studio: redesign the top bar & status bar chrome (chrome v2) (#923) (#924) (8f338a3)
- studio: ship-ready desktop MCP exposure and expandable tool-call cards (#934) (#935) (8fd3cef)
Bug Fixes
- design-sync: drop orphan .d.ts and classify structural tokens (#920) (bb805e4)
- emit-php: parenthesise (new Decimal('n'))->… for a Decimal-literal receiver in WriteAsDecimal (#907) (#963) (cdc2553)
- emit-php: parenthesise WriteAsDecimal fallthrough arm's new-chaining for Int members (#849) (#903) (05579dd)
- emit-rust: coerce a derived member's body to its declared numeric type (#961) (#967) (fc83bcf)
- emit-rust: map over Option for optional numeric fields scaled/divided by a scalar (#960) (#964) (3cf4425)
- emit-rust: scale & divide an Int field by a Decimal scalar via coerce-and-truncate (#937) (#952) (9a1ae00)
- scripts: preserve caller's working directory in ps1 scripts (#912) (cabb776)
- semantics: reject reversed scalar / value-object division (#878) (#906) (2565bec)
- semantics: reject scalar arithmetic on a value object with no numeric field (#939) (#951) (11d2feb)
- studio: gate cold-boot start-intent on lsp.start() to fix "LSP not started" (#955) (d3a6044)
- studio: intermittent Windows CI failure in inspectorController.test.ts (#848) (#904) (bbf54b5)
- studio: key mcp_endpoint cache on the requested port (#947) (#953) (847fcf1)
- studio: paint Concept Colors & semantic tokens over the grammar highlighter (#962) (bd01db0)
- studio: reject the zero-byte placeholder when resolving the bundled koine sidecar (#969) (225bf74)
- studio: repair 30 verified bugs across shell, hosts, editor, AI, and panels (#930) (badb772)
- studio: sync desktop/package version with the Koine release version (#957) (3faf88e)
- website: serve /blog/rss.xml under trailingSlash:always to unblock the docs deploy (#948) (#954) (6c94b1a)
v0.244.0
0.244.0 (2026-07-01)
Features
- gbnf: require whitespace at word-to-word boundaries + character-level engine test (#448) (#896) (27f8309)
- wasm: warm remaining interop handlers (EmitPreview, Completions, WorkspaceSymbols, CodeActions, EmitKoine, ApplyModelEdit) (#464) (#895) (4c732ff)
- wasm: warm remaining interop handlers (EmitPreview, Completions, WorkspaceSymbols, CodeActions, EmitKoine, ApplyModelEdit) (#464) (#895) (e3cc6de)