Releases
v0.251.0
Compare
Sorry, something went wrong.
No results found
Features
cli: confine the Linux scenario child's writes with a Landlock self-exec launcher (#1781 ) (#1784 ) (417bb47 )
cli: warn on koine.config namespace-map keys that match no context (#1255 ) (#1607 ) (f3d4d4d )
emit-common: route factory endpoints through RouteDerivation, emit openapi factory paths (#1747 ) (#1832 ) (32be49a )
emit-cs: bind @route template tokens into the emitted C# handler (#1748 ) (#1753 ) (e339346 )
emit-cs: post-commit domain-event dispatch in the C# Application layer (#1721 ) (#1722 ) (018c1d9 )
emit-java: emit the strategic/CQRS layer (#1090 ) (#1719 ) (a246962 )
emit-java: emit unit of work, pipeline behaviors, and infrastructure composition helper (#1726 ) (#1751 ) (ae62ea5 )
execution: bounded cross-aggregate fan-out in executed scenario runs (#1758 ) (#1790 ) (7c74d1a )
execution: confine the Windows scenario child's filesystem and network (#1780 ) (#1804 ) (a6c3e8d )
execution: OS-level confinement for the scenario execution sandbox (#1759 ) (#1773 ) (f9c7e02 )
lang: @route/@get/@post/@put/@delete/@patch/@auth annotations for commands and queries (#1219 ) (#1734 ) (7522f57 )
lang: give 'publishes' a modelled producer with a 'publish' command clause (#1796 ) (#1816 ) (bb709c6 )
lang: let a create factory carry @route/verb/@auth api annotations (#1846 ) (#1850 ) (9d6b5ed )
skills: bring the socratic-prompts eval suite under version control (#1578 ) (ab1e82c )
studio: CRDT shared document and collaboration session lifecycle (#481 ) (#1803 ) (70abaad )
studio: derive the keybinding conflict-check from the live editor keymap (#431 ) (#1413 ) (7f745e7 )
studio: encrypt collaboration traffic with a pinned-key Noise handshake (#1811 ) (#1820 ) (dfb6b3d )
studio: explorer batch — bulk buffers, rebindable keybindings, and five Preact panel migrations (#1416 ) (a6b087f )
studio: gitignore the model seeded by Open-anyway (#1063 ) (#1659 ) (9a27d13 )
studio: grow useEditableField with transient-session mode + adopt in ExplorerPanel (#1396 ) (a6b087f )
studio: host/relay session broker for real-time collaboration (#481 ) (#1808 ) (aaa873f )
studio: light up Source Control ⋮/caret menus for Discard/Pull/Push/Fetch/Amend/Commit&Push (#1401 ) (#1453 ) (2a809bc )
studio: light up the Domain navigator's behavioural vocabulary and typed context-map relationships (#483 ) (#1730 ) (e3f97df )
studio: migrate EventsPanel, GlossaryPanel, RelationshipsPanel to koine-ui via the ReadableStore host-adapter (#1408 ) (#1458 ) (431ac92 )
studio: opt-in "execute generated code" high-fidelity scenario mode (#236 ) (#1738 ) (fc8cbbd )
studio: Platform collaboration seam and live presence layer (#481 ) (#1786 ) (f788d61 )
studio: raw keybindings.json editor in Advanced settings (#434 ) (#1688 ) (eb9cf6a )
studio: reconcile change-set targetRoot when a root is removed mid-review (#1689 ) (#1695 ) (544895b )
studio: restore per-file DDD-kind tint and line count in the generated tree (#1361 ) (a6b087f )
studio: route model-proposed new files to a chosen root (#1132 ) (#1680 ) (46e8e5b )
studio: scope + global commands in the rebindable keybindings registry (#432 ) (a6b087f )
studio: show workspace-op-gated palette entries as visible-but-disabled (#1407 ) (#1454 ) (b5ef514 )
templates: pair ordering.koi's states block with place/ship/cancel commands (#1381 ) (#1657 ) (a1d1bd9 )
Bug Fixes
ci: assert the Tauri system libraries actually installed (#1580 ) (011c50e )
ci: disable MSBuild node reuse to stop concurrent-worktree dotnet test deadlocks (#1552 ) (#1559 ) (144b2c4 )
ci: eliminate the phantom skipped build-and-test check-run on draft-gated workflows (#1530 ) (#1546 ) (73ed156 )
ci: eliminate the shared-cargo-target-dir false-Ok under concurrent Rust conformance tests (#1777 ) (#1779 ) (99dacf2 )
ci: refresh the apt index before the cold-cache package download (#1579 ) (b414dfd )
cli: attribute a wrapper-nested OutOfMemoryException to the sandbox memory ceiling (#1858 ) (#1864 ) (be646da )
cli: make koine fmt --check agree with templates/ (#1842 ) (#1859 ) (dbd5d9f )
cli: scope WorkspaceIndex.FindReferences by bounded context (#1376 ) (#1428 ) (03f9671 )
compiler: declare the ModelNode/ModelMember record API in PublicAPI.Unshipped.txt (#1474 ) (708f0a7 )
deps: update non-major dependencies (#1576 ) (af823fc )
design-sync: carry the --koi-muted WCAG-AA fix into the design source (#1424 ) (#1441 ) (af7c24c )
emit-core: audit C#/OpenAPI read-model direct field for cross-context bug (#1702 ) (#1707 ) (f258d12 )
emit-core: context-scope bare enum-member qualifiers in the Java, Python and Rust emitters (#1793 ) (#1795 ) (23448c7 )
emit-core: emit a declared identity value object once (#1848 ) (#1869 ) (bc072fd )
emit-core: honor an explicit qualifier in a command's/factory's parameter import (#1716 ) (#1717 ) (319cd63 )
emit-core: honor an explicit qualifier in a repository/service parameter import (#1718 ) (#1741 ) (5dee81d )
emit-core: honor an explicit qualifier in a value object's/entity's own field import (#1712 ) (#1714 ) (12a843b )
emit-core: honor MemberAnalysis.AutoBinds in TS/Python/PHP factory ctor args (#1731 ) (#1743 ) (b1d3682 )
emit-core: make ModelIndex.AllTypes() enumerate every per-context declaration (#1632 ) (#1735 ) (9e31621 )
emit-core: qualify a bare enum member owned by another bounded context (#1799 ) (#1800 ) (271327d )
emit-core: qualify an explicit cross-context enum-type reference (#1802 ) (#1805 ) (6aae179 )
emit-core: reconcile a command transition against the target member's declared type (#1887 ) (#1900 ) (0de4e8f )
emit-core: reconcile a derived member's body against its declared type (#1888 ) (#1894 ) (2b88138 )
emit-core: reconcile a member's default initializer against its declared type (#1880 ) (#1881 ) (cdb446e )
emit-core: reconcile a numeric Int/Decimal mismatch in TypeScript/Python/PHP coalesce operands (#1762 ) (#1766 ) (461c82d )
emit-core: reconcile a result expression and event-payload argument against their declared type (#1866 ) (#1872 ) (9fe7a3d )
emit-core: reconcile a result expression and event-payload argument against their declared type for TS/Python/PHP (#1875 ) (#1877 ) (e3462e8 )
emit-core: resolve ModelIndex.Classify context-aware to fix cross-context misclassification (#1560 ) (#1612 ) (428503a )
emit-core: resolve OperatorNeedsAnalyzer's TypeResolver context-aware (#1642 ) (#1651 ) (4b40eac )
emit-core: resolve PHP/Python read-model direct-field imports against source context (#1701 ) (#1708 ) (d2b3cc5 )
emit-core: resolve TypeResolver.IsValueLike/IsUserType context-aware (#1641 ) (b2b9b4e )
emit-core: restore shadowed outer bindings via a shared LocalScopeStack in the TS/Python/PHP/Java/Kotlin translators (#1497 ) (#1532 ) (608f63f )
emit-core: thread context through emitter TypeMapper Classify calls (#1638 ) (#1679 ) (173c9f7 )
emit-core: thread context through remaining blind ModelIndex.Classify calls (#1700 ) (#1709 ) (bef3609 )
emit-core: widen an Int factory init to Decimal in Kotlin/TS/Python/PHP ctor args (#1732 ) (#1757 ) (5d6728c )
emit-cs: bind enum query criteria correctly in emitted GET endpoints (#1656 ) (#1660 ) (d8eed33 )
emit-cs: emit TryParse on identity value objects for query binding (#1649 ) (#1654 ) (70df8d5 )
emit-cs: inline a derived member's expression inside invariant guards (#1756 ) (#1760 ) (764dc5e )
emit-cs: rename a member-shadowing lambda/let binding for hygienic substitution (#1768 ) (#1812 ) (3db9815 )
emit-java,emit-kotlin,emit-rust: resolve a result clause's bare enum member against the declared return type (#1860 ) (#1868 ) (b51f9b6 )
emit-java: alpha-rename a let binding that shadows a live local (#1536 ) (#1554 ) (8bdcfbc )
emit-java: apply value-object stored-member default initializers (#1635 ) (#1636 ) (9fe7981 )
emit-java: inline a derived member's expression inside invariant guards (#1763 ) (#1772 ) (55867fc )
emit-java: numerically coerce a factory's explicit init against the member's declared type (#1519 ) (#1540 ) (13de1fe )
emit-java: Optional.of-wrap a factory's explicit init of an optional-declared required member (#1518 ) (fb197f8 )
emit-java: Optional.of-wrap an auto-bound parameter binding to an optional-declared required member (#1480 ) (#1521 ) (175ffb9 )
emit-java: Optional.of(...)-lift the result/payload paths toward their target's declared optionality (#1865 ) (#1879 ) (5a0a315 )
emit-java: preserve Optional-shape when a coalesce's fallback is itself optional-typed (#1520 ) (#1545 ) (e127444 )
emit-java: reconcile numeric-type mismatch in coalesce lowering (#1548 ) (#1610 ) (e54d8da )
emit-java: resolve Classify context-aware to fix cross-context misclassification (#1621 ) (#1628 ) (da98639 )
emit-java: thread a sibling-operand enum hint through binary comparisons (#1771 ) (#1778 ) (c1deb32 )
emit-kotlin: reconcile a numeric-type mismatch in coalesce elvis lowering (#1615 ) (#1624 ) (9023aaf )
emit-kotlin: resolve Classify context-aware to fix cross-context misclassification (#1625 ) (#1637 ) (f904c9e )
emit-kotlin: resolve multi-owner cross-context types via shared owner policy (#1130 ) (#1646 ) (45b7df3 )
emit-php: compare entity id by value in equals(), not by PHP object reference (#1377 ) (#1427 ) (afaca1b )
emit-php: reconcile a numeric Int/Decimal mismatch in ternary branches (#1761 ) (#1828 ) (14655c1 )
emit-php: resolve ModelIndex.Classify context-aware at every PHP emitter call site (#1620 ) (#1629 ) (2030529 )
emit-php: thread context into the value-object equals() resolver (#1633 ) (#1647 ) (3f592b9 )
emit-php: truncate bare Int/Int division toward zero via intdiv() (#1587 ) (#1593 ) (38135bd )
emit-php: truncate guarded-optional Int division toward zero via intdiv() (#1598 ) (#1602 ) (3d2b2fd )
emit-py: resolve Classify context-aware in the Python emitter (#1619 ) (#1630 ) (e2c2fd7 )
emit-rust: bind a collection quantifier's lambda by value for Copy elements (#1801 ) (#1833 ) (78a1852 )
emit-rust: close the five remaining optionality/guard emit gaps (#1510 ) (8264f87 )
emit-rust: coerce a factory's explicit init of a required numeric member in BuildFactoryCtorArgs (#1438 ) (#1449 ) (5e65d35 )
emit-rust: coerce a read-model derived field's numeric type mismatch (#1378 ) (#1494 ) (64da45f )
emit-rust: coerce a transition value toward the target field's declared type (#1511 ) (#1516 ) (25e6de7 )
emit-rust: coerce OwnDerived's optional-body numeric mismatch (#1495 ) (#1509 ) (15ccbf4 )
emit-rust: entity's optional-declared defaulted member gains a ctor parameter and honors factory init (#1437 ) (#1459 ) (79c51f3 )
emit-rust: give PushLocal/PopLocal shadow-stack semantics (#1370 ) (#1496 ) (f2183c5 )
emit-rust: inline a derived member's expression inside invariant guards (#1764 ) (#1769 ) (c06cff4 )
emit-rust: map-coerce an Option-typed numerically-mismatched derived/default body in WriteDerived (#1487 ) (#1490 ) (3c1edd1 )
emit-rust: map-coerce an Option-typed numerically-mismatched factory-init value in BuildFactoryCtorArgs (#1468 ) (#1484 ) (373f9c2 )
emit-rust: map-render WriteUnary's Neg/Not when the operand is itself optional (#1372 ) (#1499 ) (ef18497 )
emit-rust: narrow a presence-guarded optional member in a command's invariant re-check (#1489 ) (#1502 ) (e1bacd4 )
emit-rust: own a smart-enum String associated-data read instead of cloning a borrowed &str (#1533 ) (#1555 ) (459fa80 )
emit-rust: reconcile a numeric Int/Decimal mismatch in coalesce operands (#1829 ) (#1831 ) (413902d )
emit-rust: render a non-optional defaulted member as a trailing Option<T> constructor parameter (#1380 ) (#1429 ) (3f5568b )
emit-rust: resolve a quantity value object's explicit qualifier in its own context (#1871 ) (#1892 ) (4bd0a9e )
emit-rust: return optional smart-enum accessors by value instead of by reference (#1508 ) (8264f87 )
emit-rust: return optional-but-Copy-inner accessors by value (#1373 ) (#1507 ) (129ec2f )
emit-rust: run invariant guards before re-wrapping a defaulted optional member (#1472 ) (#1488 ) (30033ce )
emit-rust: Some-wrap a factory's explicit init of an optional-declared required member (#1452 ) (#1464 ) (1a51f15 )
emit-rust: Some-wrap an auto-bound non-optional parameter binding to an optional-declared required member (#1467 ) (#1476 ) (cf7aa06 )
emit-rust: Some(...)-wrap result and emit-payload paths toward their target's declared optionality (#1523 ) (#1539 ) (8489d3c )
emit-rust: value object's non-optional-declared defaulted member becomes a trailing Option<T> constructor parameter (#1436 ) (#1455 ) (a0684b4 )
emit-rust: value object's optional-declared defaulted member gains a ctor parameter (#1463 ) (#1469 ) (c0d1db7 )
emit-ts: inline a derived member's expression inside invariant guards (#1765 ) (#1776 ) (dbdbec1 )
emit-ts: map-widen a guard-narrowed optional Decimal operand in Decimal arithmetic (#1557 ) (#1562 ) (adcb342 )
emit-ts: narrow a postfix when-guarded value before rendering its body (#1604 ) (#1609 ) (d468cdf )
emit-ts: resolve ModelIndex.Classify context-aware in TypeScript emitter (#1622 ) (#1631 ) (77337b2 )
emit-ts: truncate bare Int/Int division toward zero (#1558 ) (#1582 ) (facf6b4 )
emit-ts: truncate guarded-optional Int division toward zero (#1597 ) (#1601 ) (319fbe8 )
emit-ts: widen an Int operand to Decimal in Decimal arithmetic (#1537 ) (#1553 ) (5a75e8c )
execution: name the sandbox memory ceiling whichever stage exhausts it (#1791 ) (#1807 ) (5ed209a )
koine-ui: queue overlapping confirm dialog requests (#1064 ) (#1613 ) (97c4537 )
language: degrade a keyword enum member to a diagnostic instead of an NRE (#1836 ) (#1843 ) (694e6ba )
language: report a let expression with a missing body instead of crashing (#1512 ) (#1514 ) (e583e9c )
semantics,emit-core: resolve a policy's event name in its enclosing context (#1849 ) (#1851 ) (ce09469 )
semantics,emit-core: resolve an emit's event name in its enclosing context (#1834 ) (#1844 ) (a020bf7 )
semantics: context-scope the enum-member indexes so a same-name collision can't widen ambiguity (#1739 ) (#1788 ) (77037cc )
semantics: diagnose a declared identity with a non-hashable field (#1873 ) (#1896 ) (af70a5d )
semantics: narrow same-expression isPresent guards in conditional inference (#1564 ) (#1611 ) (d44684c )
semantics: recognize a compound expression built from narrowed leaves as narrowed (#1563 ) (#1586 ) (aec9098 )
semantics: reject an optional selector type for sum/min/max (#1556 ) (#1561 ) (bf22837 )
semantics: resolve a context-map-permit-visible type in TryGetDeclIn (#1853 ) (#1855 ) (21ad04c )
semantics: resolve bare enum members against explicitly-qualified enums (#1797 ) (#1798 ) (4159779 )
semantics: resolve CheckAggregateSelector's sum/min/max checks context-aware (#1655 ) (#1661 ) (2e19750 )
semantics: resolve CheckMember's enum-qualifier check context-aware (#1634 ) (#1640 ) (b7d3148 )
semantics: resolve ConcreteEnumType's enum checks context-aware (#1644 ) (#1648 ) (6c089ab )
semantics: resolve context-blind flat ModelIndex lookups across the audited call sites (#1870 ) (#1882 ) (c11e29f )
semantics: resolve ReferenceDisciplineAnalyzer's classify calls context-aware (#1664 ) (#1674 ) (a66ee51 )
semantics: resolve residual flat-ModelIndex lookups in context (#1863 ) (#1867 ) (ccc8a6a )
semantics: route remaining ExpressionChecker call sites through EffectiveType (#1614 ) (#1623 ) (ca48e38 )
semantics: scope ModelIndex.PoliciesTriggeredByEvent to the declaring context (#1876 ) (#1878 ) (9898b8a )
semantics: scope scenario fan-out's policy trigger match to the emitting context (#1854 ) (#1874 ) (635d247 )
semantics: stop double-reporting KOI0402 on a wrapping arithmetic node (#1589 ) (#1596 ) (841a3f5 )
semantics: suppress redundant outer diagnostics for an already-reported nested mismatch (#1525 ) (#1549 ) (8972253 )
semantics: thread context through ValidateQuantity's unit-member Classify call (#1711 ) (#1713 ) (beef80c )
semantics: validate Neg/Not operand types instead of accepting anything (#1501 ) (#1517 ) (aa5924c )
semantics: validate unknown member access on Enum receivers and block the Rust EffectiveScope shadow fallthrough (#1498 ) (#1529 ) (6170bce )
skills: flatten paginated comments before selecting the latest plan comment (#1544 ) (#1550 ) (bd419cd )
skills: gate merge-pr on failed/pending checks, not on build-and-test success (#1535 ) (#1541 ) (7c95069 )
skills: repair the broken _shared/preconditions.md link in four skills (#1577 ) (3d75094 )
studio: adopt mid-edit external committedValue on cancel in useCommittableField (#1398 ) (#1446 ) (692ec8c )
studio: align the settings gear with the right-rail icons and seat the rail on a 36px grid (#1426 ) (efebb86 )
studio: deflake the Source Control header-actions portal test in inspectorController.test.ts (#1448 ) (#1466 ) (4caaca4 )
studio: fall back to a Nerd Font for terminal prompt icon glyphs (#1412 ) (#1676 ) (5b685aa )
studio: guard the async recents branch capture against reorder/resurrect (#1016 ) (a6b087f )
studio: guard the domain-index and model-index caches against a stale-build TOCTOU race (#1447 ) (#1456 ) (5e419c3 )
studio: key tool-card identity off a per-turn id instead of message position (#1286 ) (#1645 ) (b27eec9 )
studio: lighten --koi-muted to meet WCAG AA contrast on dark card surfaces (#991 ) (a6b087f )
studio: parse git_status porcelain v2 with -z so quoted paths round-trip (#1400 ) (#1430 ) (112e81d )
studio: polish keyboard-panel styling, a11y, and resolve caching (#1421 ) (#1626 ) (d096a4c )
studio: precache Studio Web SW's real entry JS/CSS chunks so single-visit offline boot works (#1685 ) (#1696 ) (8ce0dcd )
studio: raise launcher .lx-kind/.lx-sub tokens to WCAG-AA contrast (#1672 ) (#1691 ) (b5c1312 )
studio: raise launcher .lx-modepill/.lx-mchip.on tokens to WCAG-AA contrast (#1677 ) (#1698 ) (98d7d2f )
studio: raise the remaining accent-on-accent-tint sites to WCAG-AA contrast (#1704 ) (#1705 ) (2f6700b )
studio: raise the storybook vitest project's Windows test timeout to stop CI flakes (#1693 ) (#1697 ) (2ebf385 )
studio: remove untracked directory rows on Discard via pathspec-scoped git clean -d (#1399 ) (#1461 ) (f0f2c25 )
studio: render real glossary text instead of [object Object] in GlossaryPanel (#1470 ) (#1473 ) (9a5643b )
studio: resolve storybook vitest project's react-dom-shim dependency gap (#1686 ) (#1690 ) (4f342f6 )
studio: reuse busy-port MCP fallback until the port frees (#958 ) (#1669 ) (94c43da )
studio: route saveProjectToDisk through the locked openWorkspace facade (#1404 ) (#1460 ) (913beea )
studio: seat the collapsed left navigator spine on the right rail's 36px grid (#1435 ) (89250b6 )
studio: show an untracked directory row's folder name instead of a blank primary label (#1462 ) (#1465 ) (e69a903 )
studio: show live resolved chords in F1 help overlay (#1627 ) (#1639 ) (adb0050 )
studio: stop nesting the launcher's quick-action button inside role=option (#1673 ) (#1683 ) (eb985e3 )
studio: stop one slow collaboration peer stalling the whole broker (#1822 ) (#1825 ) (525a8e1 )
studio: strip literal NUL bytes from modelTables.ts (#1384 ) (#1524 ) (071fbdf )
studio: use lang-json in the JSON view and quiet expected error-path test logs (#1475 ) (af0b57f )
templates: guard polyglot demo reference/ folders against drift (#1903 ) (#1904 ) (2a2cce1 )
templates: refresh demo/reference and guard against drift (#1841 ) (#1898 ) (0c64ae3 )
website: adapt blog/rss.xml.ts to starlight-blog 0.28's prefix-required RSS handler (#1431 ) (#1434 ) (363b64e )
Performance Improvements
emit-core: infer each ConditionalExpr branch's type once in Java/Kotlin/TypeScript/Python (#1369 ) (#1482 ) (8eca379 )
studio: bulk buffer-set → O(N) workspace open/teardown (#1012 ) (a6b087f )
studio: cache the per-turn DisplayIndex in runEditToolStaging (#1135 ) (#1650 ) (785da9c )
studio: seed the Domain navigator's first-mount fetch (#1397 ) (#1450 ) (c31f4c2 )
studio: share the in-flight glossaryModel fetch with buildDomainIndex (#1405 ) (#1444 ) (7b4efb0 )
studio: unmount the StoreInspector overlay when hidden (#1395 ) (#1445 ) (f7fbd02 )
You can’t perform that action at this time.