Skip to content

v0.249.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 14:04
50ee03e

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 WriteIdentifier's own optionality internally instead of via ownType (#1355) (#1367) (eaf580c)
  • emit-rust: route demand-driven VO arithmetic through the validating constructor (#1270) (#1317) (0726e24)
  • emit-rust: route quantity add/sub/scale through the validating constructor (#1318) (#1322) (cb89ac8)
  • emit-rust: Some(...)-wrap a coerced optional constant-default field in new (#1325) (#1328) (ff725b4)
  • emit-rust: Some(...)-wrap a non-optional conditional branch to match its optional sibling (#1331) (#1334) (dda1796)
  • emit-ts: emit a quantity's scalar divide method (#1269) (#1273) (8c102f7)
  • language: report a diagnostic instead of crashing on an aggregate missing its root clause (#1298) (#1303) (151bf93)
  • semantics: reject binary */÷ between two value-like operands (#1291) (#1306) (81f7483)
  • semantics: reject binary */÷ with an entity-typed operand (#1300) (#1310) (0c94f97)
  • semantics: reject binary +/- between different quantity types (#1266) (#1281) (80449af)
  • semantics: reject binary +/- between differently-typed value objects (#1284) (#1288) (0ba83a0)
  • semantics: reject binary +/- with an entity-typed operand (#1290) (#1297) (62b7cb0)
  • semantics: resolve HasNumericStoredField's declaration context-aware (#1285) (#1295) (ad82277)
  • studio: close the residual races left by the workspace-open guard (#1088) (#1271) (6a624ac)
  • studio: draw the domain-canvas selection ring inset instead of clipped outer box-shadow (#1294) (#1309) (5625b86)
  • studio: eliminate jsonSettingsEditor hover test flake under the full suite (#1233) (#1247) (67f26a8)
  • studio: flip HierarchicalLayout orientation so context-map/event-flow read left-to-right (#1209) (#1283) (d188cff)
  • studio: guard contextMapPanel's post-await tail on !disposed (#1261) (#1305) (b414481)
  • studio: guard domainNavigator's doFetch() post-await tail on unmount (#1308) (#1314) (1f7fc73)
  • studio: keep assistant tool cards stable across turn commit and failed-send rollback (#1133) (#1280) (c3298cb)
  • studio: keep the launcher catalog alive when git log fails (#1277) (5a5719a)
  • studio: make centerDeckController's construction-time reset atomic (#1260) (#1272) (35b4cb0)
  • studio: make the context-map active-context focus ring paint and survive zoom (#1210) (#1292) (d6f23e4)
  • studio: mark applyFileEdit's non-active-buffer safety-net sync dirty on an unconfirmed write (#1089) (#1264) (edf3598)
  • studio: raise launcher fuzzy-match highlight to WCAG-AA contrast (#1161) (#1263) (d4c55de)
  • studio: route saveProjectToDisk's workspace reopen through the shared open-lock (#1279) (26578ee)
  • studio: source beginChangeSetApply's cleanCount from the host, not sticky drift state (#1225) (#1229) (d523dce)
  • studio: wire the context-map hover tooltip onto TooltipHandler and theme it (#1211) (#1299) (666a0e7)

Performance Improvements

  • emit-rust: hoist redundant Then/Else type inference out of WriteReconciledBranch (#1345) (#1359) (aa1c2ad)