Skip to content

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 10:45
· 13 commits to release since this release

1.9.0 (2026-08-22)

Features

  • #1078: route crafting-data invalidation by domain (#1222) (cf668f0), closes #1078
  • #1091: define the canonical recipe and component summary projections (#1178) (db6e165), closes #1091
  • #1179: separate world parties from system travel (#1181) (c04788f), closes #1179
  • #1182: rebuild the world parties pane as a card list (#1184) (af58030), closes #1182
  • #1185: add GM downtime preview extension (#1186) (b926bc6), closes #1185
  • #1198: add a player-side companion navigation seam (#1200) (ac3a8ae), closes #1198
  • #1213: give the manager extension panel a layout contract (#1225) (2ba4210), closes #1213
  • #1229: add four decorative tint tokens to the tag palette (#1230) (2e8b7b2), closes #1229
  • #1232: make the recipe storage arrangement a GM control with a reverse conversion (#1236) (e97ae84), closes #1232
  • #1250: let a companion veto a navigation that loses its unsaved work (#1251) (df7435b), closes #1250
  • #1257: gate the world downtime surface behind experimental features (#1259) (ea2f92d), closes #1257
  • #1278: relocate the currency editor to a world tab (#1279) (7aff401), closes #1278
  • #1284: gate the player downtime tabs behind experimental features (#1285) (4dab180), closes #1284
  • checks: let a GM switch the alchemy crafting check off (#1221) (8218f5c)
  • checks: make Checks a rail group of routes with a five-section studio (#1115) (ad48688)
  • checks: one system-level check-modifier catalogue across crafting, salvage and gathering (#1113) (049230b)
  • checks: produce an authored result on a failed check, under a per-activity policy (#1131) (b545f0a)
  • checks: the outcome simulator, the odds histogram and the outcome-band editor (#1123) (27d776a)
  • dev: serve the premium companion from source in the dev server (#1244) (8351da5)
  • manager: bulk delete in the GM Component Studio browser (#1130) (edcb3fb)
  • manager: bulk delete in the GM Recipe Studio browser (#1152) (b43e71a)
  • manager: let a companion drive its own route chrome at runtime (#1248) (f6ac9bc)
  • perf: add a perf profile to the existing Foundry harness (#1142) (88455b9)
  • perf: measure the inventory axis, not just the corpus (#1138) (03dd355)
  • perf: route crafting definitions through a repository seam (#1141) (f65dfbb)
  • travel: move realms and map region links to world scope (#1283) (0ba59c5)
  • ui: widen the curated icon vocabulary to any fiction (#1272) (0866722)
  • view-lab: select surface coverage instead of the whole corpus (#1209) (fe54bb2)

Bug Fixes

  • #1046: make player layout breakpoints reachable (#1180) (2b8e837), closes #1046
  • #1124: draw a real core pack icon on the essence preview's sample component (#1125) (5674315), closes #1124
  • #1127: union ambiguous registry anchors instead of widening to every frame (#1128) (a52304c), closes #1127
  • #1144: report the recipes an essence delete disables (#1159) (f88cef2), closes #1144
  • #1151: reconcile the active Crafting view against the system's visibility mode (#1172) (583afde), closes #1151
  • #1154: title every confirm and name its destructive action (#1161) (bfc0422), closes #1154
  • #1156: omit stated-zero consequences from the component and essence delete dialogs (#1160) (67a5fc7), closes #1156
  • #1157: announce and re-home the keyboard when a bulk selection empties (#1163) (952764e), closes #1157
  • #1167: show the alchemy collision gate the recipe it is gating (#1169) (c459c64), closes #1167
  • #1168: give the prettier-svelte-scope corpus sweep real timeout headroom (#1170) (0917b35), closes #1168
  • #1208: correct tooltip parenting and the roving tabindex in the downtime tabs (#1231) (5856343), closes #1208
  • #1215: stop core's active-button ring on the player nav tab (#1216) (738654e), closes #1215
  • #1224: omit a startup pass whose valid id basis is not known-complete (#1227) (06910ea), closes #1224
  • #1226: gate mutation-time flag cleanup on a known-complete corpus (#1254) (771ad49), closes #1226
  • #1233: make the canonical definition form deterministic on legacy records (#1235) (1784c5b), closes #1233
  • #1238: refuse stored bytes that cannot describe the corpus (#1239) (1b27f3e), closes #1238
  • #972: stop Foundry core recolouring headings inside Fabricate windows (#1150) (6ca21b1), closes #972
  • dev: watch the premium source so its edits actually invalidate (#1246) (81d1645)
  • downtime: stop the preview scrolling past its own content (#1218) (544fb46)
  • inventory: item-sourced tools are invisible to the player inventory, chat, journal and canvas (#1120) (f8f045d)
  • knowledge: stop a recipe deletion destroying learned knowledge for recipes that remain (#1148) (9342975)
  • manager: scroll the rail nav when the window is short (#1122) (dc4f527)
  • ui: measure the icon vocabulary from foundry, name it from free (#1274) (07b8395)
  • ui: size the icon picker's rows to the chip they draw (#1281) (951bb97)
  • ui: stop the manager status switch shrinking out of its card (#1114) (f91d486)

Performance Improvements

Documentation

  • #1147: document success-counting checks and their traps (#1171) (9de8fff), closes #1147
  • adr: narrow ADR 0003's re-testability claim to what is true (#1267) (330b5a7)
  • adr: supersede ADR 0001 with whole-array crafting-definition storage (#1262) (bfd6c72)
  • checks: describe the Checks Studio and correct what the merged stack falsified (#1126) (9587ac7)
  • perf: measure seven persistence backends and record ADR 0001 (#1158) (df0e92d)
  • record ADR 0002 on the fabricate-premium companion architecture (#1197) (787e7bc)

v1.3.0

1.3.0 (2026-07-14)

Features

  • #175: add Compendium Directory bulk-import action for crafting systems (#520) (3cd23b3), closes #175
  • #177: replace legacy mapped/tiered with canonical routed mode (#420) (0ef64fd), closes #177
  • #346: disambiguate same-named crafting systems in pickers (#480) (d58785a), closes #346
  • #387: two-column recipe editor with identity card and knowledge-gated item link (#388) (ce317d0), closes #387
  • #398: rework GM component editor to match recipe and gathering editors (#399) (41aa1f5), closes #398
  • #402: add player filter to hide out-of-reach gathering environments (#517) (33b2c04), closes #402
  • #419: add check-driven tool breakage and an immune tool mode (#460) (016c17b), closes #419
  • #419: recombine tool breakage with forced check outcomes (#464) (0c0eeed), closes #419
  • #424: add 1.6.0 migration removing legacy result-selection providers (#444) (f8cc05f), closes #424
  • #424: canonicalize routed result selection on the check provider (#445) (30b95d8), closes #424
  • #424: route gathering via the system check and remove legacy gathering providers (#446) (de4e73b), closes #424
  • #427: surface recipe, salvage, and gathering resolution-mode cards (#428) (dc84171), closes #427
  • #429: add system-validation aggregator and two-tier visibility gate (#450) (dba4d33), closes #429
  • #429: add the GM system-overview view and system-blocker banner (#452) (64314c3), closes #429
  • #429: migrate recipes on resolution-mode change instead of deleting them (#454) (823b621), closes #429
  • #431: add routed check-mode readiness warnings and stale-tier cleanup (#449) (d14a02d), closes #431
  • #431: evaluate the authored routed crafting check at craft time (#448) (8fe4c77), closes #431
  • #455: append " (broken)" to item name on flagBroken tool breakage (#456) (516cad3), closes #455
  • #468: author component progressive difficulty from the editor inspector (#469) (efa4ae0), closes #468
  • #470: split routed resolution mode into routed-by-ingredients and routed-by-check (#491) (b3c6165), closes #470
  • #492: round-trip the full authoring model in import/export (#524) (f64669a), closes #492
  • #494: add player-facing Journal screen for crafting/gathering/salvage runs (#495) (e2e4fc8), closes #494
  • #511: add Crafting nav group and Books & Scrolls surface (PR-B) (#527) (06b3991), closes #511
  • #511: add per-book recipe-item learn limits (PR-A) (#525) (3c3d8fe), closes #511
  • #514: show recipe category and add category filter in the player recipe browser (#518) (28a0abd), closes #514
  • #532: unify routedByIngredients onto the shared simple crafting check (#531) (4814663), closes #532
  • #543: player-facing alchemy workbench (#545) (296980d), closes #543
  • #544: character prerequisites — definitions, engine, settings UI, learning gate (#546) (a325613), closes #544
  • #549: surface alchemy provider and signature blockers in the recipe Validation tab (#603) (0a75ca4), closes #549
  • #552: player-facing selector for alternative components within an ingredient group (#605) (d34b701), closes #552
  • #561: make tools a first-class registered kind, not a pointer to a component (#571) (1a7ca89), closes #561
  • #567: migrate recipeItemDefinitionId into the per-system roles map (#577) (70731f4), closes #567
  • #570: regenerate component ids on copy-import to close the #556 residual (#574) (984e8a9)
  • #600: re-stamp durable componentId onto name-only owned actor items (#607) (c187da5), closes #600
  • add exploratory-testing seed macro for all crafting modes (#421) (afb66dd)
  • checks tab — crafting check authoring and routed result routing (#430) (4c4477b)
  • crafting: add GM recipe visibility card and per-recipe player restrictions (#507) (f3b676c)
  • crafting: add player Crafting tab for standard resolution modes (#496) (3c97b06)
  • crafting: add player-facing Inventory tab (#501) (6f26b53)
  • crafting: collapse outcome tiers with identical results (#503) (2bc2443)
  • crafting: live-refresh the player app on inventory and system changes (#510) (d38cddf)
  • crafting: prompt to roll checks from the UI with Dice So Nice animation (#497) (12b17ff)
  • currency: add currency unit profiles (#394) (1e37870)
  • drop dead advancedOptionsEnabled flag, restyle system settings UI (#392) (ea6b621)
  • gathering check editor + engine cutover + per-task DC (#437) (5e3b2e5)
  • gathering/recipe default images, environment + recipe editor headers, incomplete recipe shells (#389) (79e1242)
  • i18n: localize the recipe editor destructive-confirm dialogs (#409) (9137b30)
  • make the recipe results tab fully authorable (#415) (e1ff58d)
  • migrate per-task gathering checks to system-level (1.5.0) (#438) (7f98714)
  • model foundation for salvage + gathering check parity (#434) (5dd2832)
  • progressive crafting check (formula + crits, no DC) (#432) (1e67117)
  • rebuild the recipe editor — tabbed authoring, Simple/Complex mode, mixed-type alternatives, staged save (#407) (b6745d6)
  • recipe category selector and multi-step authoring (#406) (bc10e08)
  • recipe editor — tag chips, AND divider, resolution-aware toggles, duration picker redesign (#425) (419a732)
  • salvage routed engine + per-component salvage authoring (#436) (3f601ec)
  • salvage: make salvage an optional system feature (#486) (93fd546)
  • spend currency for currency alternatives at craft time (#413) (915eb8a)
  • truncate selected-card descriptions in GM editor library inspectors (#391) (b804754)
  • ui: add Sovereign theme (ink-navy + sovereign gold) (#541) (60ed3b5)
  • ui: drag-to-reorder progressive recipe results (#481) (c6fdf36)
  • ui: recipe editor quality-of-life improvements (#484) (a28ed57)
  • warn on overlapping ingredient requirements in a recipe (#414) (3577c0a)
  • wire salvage checks (editors all modes + simple/progressive engine) (#435) (d674933)

Bug Fixes

  • #401: stop player gathering card descriptions clipping descenders (#472) (4e23454), closes #401
  • #443: per-die crit, dice-pool, and roll-fulfillment robustness for crafting/salvage checks (#458) (597d0ef), closes #443
  • #457: stop lang-only changes from tripping the check-screenshots gate (#459) (0e8b9c1), closes #457
  • #505: reduce single-step recipe noise in the player Journal (#506) (767282f), closes #505
  • #533: guard against destroying a user's region when deleting a promoted interactable (#591) (cf5c7ad), closes #533
  • #535: uninstall-safe cleanup for fabricate.interactable behaviours (#602) (725f6c6), closes #535
  • #538: suppress cross-system name-fallback inventory duplicates (#580) (f6aaa33), closes #538
  • #539: stamp durable component identity on crafted outputs (#586) (126741e), closes #539
  • #547: reject alchemy signature overlap only on joint satisfiability (#581) (7dcb70d), closes #547
  • #550: localize enable-recipe errors and drop leaked set ids (#594) (d480455), closes #550
  • #551: resolve an image for tag- and currency-matched ingredient tiles (#583) (93b3435)
  • #553: align ingredient tile with the engine's consumed option (#587) (92ea252), closes #553
  • #555: durable recipe-item identity and clone-safe registration (#562) (72d5a76), closes #555
  • #556: resolve component identity via a list-aware per-system roles map (#564) (40bb16c)
  • #557: gate tool usage/breakage on durable-identity matching (#566) (28c3ca4), closes #557
  • #558: route alchemy signature matching through the shared component resolver (#565) (81f44f5), closes #558
  • #572: bucket alchemy submissions once via a shared composed resolver (#575) (3abe1ac), closes #572
  • #578: make the whole alchemy craft path tier-4-aware (#579) (897abad), closes #578
  • #593: authenticate interactable socket senders (GM-gate privileged edges) (#610) (461f29b), closes #593
  • #608: use cross-version-safe icons for the #552 smoke fixture (#612) (1b5f8f1), closes #608
  • #81: enforce ingredient quantity in alchemy signature matching (#475) (757d50b), closes #81
  • #82: bulk-clean learned recipe flags on system deletion (#516) (65acb6f), closes #82
  • #85: abort alchemy misconfiguration before consuming ingredients (#582) (6bd8c44), closes #85
  • #86: evaluate real matched items for GM recipe learning (#478) (f93f678), closes #86
  • #87: keep deleteSystem resilient to per-recipe deletion failures (#474) (b8a1820), closes #87
  • #99: revalidate alchemy signatures on system update (#479) (bad1f01), closes #99
  • checks: a check is usable iff it has a roll formula (#466) (b851fa4)
  • crafting: clamp below-lowest relative routed rolls to the closest tier (#502) (f743741)
  • crafting: consume timed-step components at start (#526) (15f00ae)
  • crafting: evaluate routedByIngredients checks as pass/fail and style result chat cards (#500) (6c4dac6)
  • crafting: only show inventory "Required for" for tools (#504) (47b74c8)
  • crafting: read item-card essence quantities in the component editor (#523) (c445537)
  • crafting: stop limitedUses tools breaking one use early (#542) (8cfca3a)
  • crafting: surface routed-check recipe tier selection in the recipe editor (#515) (2a0b60e)
  • derive the linked recipe-item image preview from the staged draft (#411) (d2a0fea)
  • distinguish "no success outcome tier" in routed recipe routing (#462) (7b90c80)
  • flag unnamed routed outcome tiers + document the shared check model (#441) (483e583)
  • forward FOUNDRY_LICENSE_KEY to the smoke Foundry container (#396) (8c85e38)
  • hide result routing card in simple recipe mode (#440) (8c58329)
  • i18n: code and de-leak structural resolution-mode validation errors (#595) (#609) (fb3f2c8)
  • import items when a compendium folder is dropped onto the import zone (#422) (e84ad5f)
  • import: keep a cloned item distinct from its source component (#467) (305986b)
  • resolve folder drops using v13 uuid drag data (#418) (71ba988)
  • salvage: align routed salvage validation with the authoring UI and runtime (#463) (96a1bc5)
  • scope essence/component deletion to referencing recipes and reconcile alchemy signatures (#400) (176873e)
  • ui: drop quantity from progressive recipe results (#482) (72dddae)
  • ui: make the first ingredient set selectable in Produced by routing (#483) (2ca25ad)
  • ui: stop gathering card descriptions bleeding under the border (#493) (426d90b)
  • ui: surface per-check validation in the Checks Validation tab (#488) (f75de1b)

Performance Improvements

Documentation

  • #534: correct the round-trip guard's escalation-closure claim (#596) (a27b117), closes #534
  • add 'Data Safety' page (#397) (b965872)
  • capture stacked-PR, harness, and Sonar lessons in shared agent config (#417) (f6cd7a2)
  • readme: replace broken foundryshields version badge (#487) (b3f10a0)
  • salvage: reconcile routed-salvage spec and capture session heuristics (#465) (8c3553f)
  • stop review agents posting verdicts as issue/pr comments (#423) (b0cc068)
  • ux: add design-system reference for the fabricate-ux-designer skill (#537) (e71c7e2)

v1.4.0

1.4.0 (2026-07-16)

Features

  • #628: smoke-gate signal split, assetless-release assertion, composite action (Phase 2) (#647) (3f7b9c5), closes #628
  • #643: rebuild the GM recipe browser and editor as the Recipe Studio (#650) (28364ec), closes #643
  • ui: add state-aware icon chips to optional feature cards (#655) (491865f)

Bug Fixes

  • ci: don't fail the smoke run on a transient browser teardown at the end (#654) (0c6e84f)
  • ci: drop ${{ }} template syntax from release-setup input descriptions (#652) (e583399)

Documentation

  • #627: release-and-distribution spec capability + three-channel contributor docs (Phase 4) (#639) (718e5a3), closes #627
  • fold release-work learnings into agent/skill config + fix stale notes (#648) (f04d0dc)
  • refresh the Fabricate colour-themes reference image (#641) (e17c4f5)

v1.5.0

1.5.0 (2026-07-19)

Features

  • #649: make essence a first-class ingredient match type so a requirement can be "component OR essence" (#661) (5431c19), closes #649
  • #651: recipe- and salvage-level "Allow player result re-ordering", default on (#670) (cf5dd32), closes #651
  • #663: item-level backtracking finds an optimal ingredient assignment (#672) (927514b), closes #663
  • #675: add the player salvage surface and redesign the inventory tab (#678) (2ac534c), closes #675
  • #676: rebuild the gm component studio with categories and a reachable salvage toggle (#679) (9d804ed), closes #676
  • #689: redesign the tags & categories screen with tabs, inspector, and cascade-safe delete (#735) (e828a49), closes #689
  • #710: collapse disabled multi-step recipes to an atomic chain with a confirm dialog (#749) (cbecd2e), closes #710
  • #712: surface failure consumption and alchemy behaviour controls (#736) (9af5591), closes #712
  • #714: wire the time requirements toggle and gate timed crafting on it (#742) (9ee84ba), closes #714
  • #745: always show the crafting group and gate the recipe graph on experimental features (#746) (197d866), closes #745

Bug Fixes

  • #611: surface component name, not id, in salvage validation messages (#728) (7f73fe9), closes #611
  • #642: carry the gathering authoring bundle in game.fabricate.exportSystem (#668) (212f3f9), closes #642
  • #657: gate migration + salvage/crafting timed resume to the primary GM (#669) (098c0c4), closes #657
  • #659: populate salvage createdResults componentId from the awarded result (#667) (5f6cefe), closes #659
  • #664: localize the salvage editor and de-duplicate lang keys (#674) (cbea015), closes #664
  • #685: widen the foundry smoke run-phase watchdog headroom (#729) (3eecad7), closes #685
  • #687: uniform award pills and roll totals on result chat cards (#727) (5022e7b), closes #687
  • #699: restore full-fidelity system import (gathering, legacy sources, books, conflicts) (#718) (e6ff16f), closes #699
  • #703: enforce recipe-visibility gates at craft, learn, and drop-learn time (#722) (1fa43dd), closes #703
  • #707: discard misconfigured salvage runs and record alchemy fizzle history (#719) (f2f3b83), closes #707
  • #708: stop echoing inert legacy environment.region in player gathering listing (#720) (31e5209), closes #708
  • #716: guard the hotfix minimum-version and registry-lead 404 musts (#724) (295a586)
  • #721: hide recipe add-cost controls when system currency is disabled (#737) (871e25e), closes #721
  • #725: scope the minimum-success-tier gate to routed-by-check recipes (#741) (92188db), closes #725
  • #726: expand ingredient tag matchers into the inventory used-by index (#731) (4cae5b5), closes #726
  • #733: document-coherent run persistence and cache invalidation across clients (#747) (a1d08a8), closes #733
  • #734: drop step wording from single-step crafting run surfaces (#748) (1593b6f), closes #734
  • #738: show requirements, roll, and consumed items in crafting history detail (#754) (7f4da08), closes #738
  • #740: fill the recipe access tab width with a responsive row grid (#744) (211baf9), closes #740
  • ci: stop promotion pushes authenticating as github-actions[bot] (#660) (dfa4ab1)
  • ci: widen the beta smoke watchdog for slow hosted runners (#756) (2a6fdbc)

Documentation

  • #666: retire the numbered spec-filename cross-reference scheme (#673) (d46e1ce), closes #666
  • #681: correct the features.salvage default to true in the api reference (#743) (6247194), closes #681
  • #690: reconcile canonical specs and domain docs with shipped behaviour (#717) (347133b), closes #690

v1.6.0

1.6.0 (2026-07-25)

Features

  • #767: add unsaved-changes guard and dirty chip to system settings identity form (#804) (6c1efdf), closes #767
  • #768: add icon parity, collapse, and copy to the system overview settings lists (increment 1) (#834) (8224bc3), closes #768
  • #768: add reorder to the system overview settings lists (increment 2) (#835) (d79b4d6), closes #768
  • #770: per-recipe check modifier policies (phase 1) (#843) (bb35617), closes #770
  • #771: folder-aware auto-categorization and tagging on bulk component import (#833) (4612c27), closes #771
  • #773: actor crafting-knowledge deletion primitive and gm reset api (#792) (d187531), closes #773
  • #784: add the Tool Studio library and editor (#854) (e7589c1), closes #784
  • #848: let players cancel a craft in progress, with GM-configurable refund (#870) (66e489b), closes #848
  • #862: tier the executing agent roles across three model tiers (#864) (d265f7a), closes #862

Bug Fixes

  • #763: resolve currency unit display through labels instead of raw ids (#789) (cee43bd)
  • #764: enforce the simple-mode salvage group invariant and surface misconfigured salvage (#783) (eac37e6), closes #764
  • #765: surface multi-step recipe materials and final product in the crafting app (#782) (4bcd81f), closes #765
  • #766: collapse cross-system inventory duplicates into one card per physical stack (#814) (4eba176), closes #766
  • #774: resolve alchemy recipes by most-specific ingredient signature (#841) (9fc2642)
  • #775: provenance-aware pruning of recipes removed from import payloads (#798) (7de1f8b), closes #775
  • #776: batch the import save path and surface progress (#793) (d732a13), closes #776
  • #777: disclose required salvage tools and humanize the blocked-tool message (#799) (a0b71c9)
  • #778: show the recipe's difficulty-tier dc in the crafting browser (#790) (27c0a7b), closes #778
  • #780: stamp durable identity on gathering awards and tool replacements (#795) (a83d8af), closes #780
  • #788: stop the currency sub-unit dropdown leaking the raw unit id (#831) (2b3b54c), closes #788
  • #794: give the import progress reporter a terminal dismiss seam (#811) (fef98f8), closes #794
  • #796: tile the recipe Books & Scrolls tab into an auto-fill grid (#813) (828d851), closes #796
  • #797: bring the Books & Scrolls Validation tab to recipe-tab parity (#815) (002948e), closes #797
  • #800: resolve item descriptions through foundry's enricher at write time (#803) (f18e507)
  • #801: order grouped GM libraries category-major before pagination (#819) (712f48c), closes #801
  • #806: persist browser view-state across an editor round-trip (#822) (c71fe55), closes #806
  • #807: tolerate transient D0 renderer teardown after required captures (#818) (9b8c848), closes #807
  • #808: resolve a default base for screenshots:ui:plan (#821) (a96b13d)
  • #812: show authored essence icons in player crafting (#820) (b7bf78d), closes #812
  • #844: replace the blank recipe-item creation dialog with a drop-zone (#868) (7c1a312), closes #844
  • #845: recipe-editor Duration resets to 'Instant' on returning to Overview (#866) (e1eccae), closes #845
  • #846: show recipe craft duration in the player UI before crafting (#863) (24d5557), closes #846
  • #857: match by-tag ingredients against the resolved component's tags (#865) (d34e270)
  • #858: stack created components onto matching inventory items (#869) (3bb67e2), closes #858
  • #872: expose scope to configured macros (#873) (3d89c33), closes #872

Performance Improvements

  • #148: memoize adminStore item-card projection (#852) (312224f), closes #148
  • #150: defer the gm crafting-system-manager app to a lazy chunk (#851) (c8936b4), closes #150
  • #151: lazily construct essence icon option arrays (#849) (8b0ac14), closes #151
  • #827: per-worktree-stable Foundry smoke container identity (Phase 2) (#830) (b750f91), closes #827

Documentation

  • #757: bring the public site and readme in line with shipped capability (#758) (eaf911c), closes #757
  • #757: refresh the module description to match shipped scope (#759) (476885f), closes #757
  • #765: multi-step presentation docs and dead lang key cleanup (#786) (d4e7dbf), closes #765
  • #765: scope the multi-step preview note to Simple mode only (#787) (241e969), closes #765
  • #777: document the required-tools salvage disclosure (#802) (1de01e4), closes #777
  • #809: reconcile crafting-systems.md resolution-modes table and currency framing (#837) (80294e0), closes #809
  • agents: correct stale primary-gm gate notes (#781) (cf9baa9)
  • agents: weave session lessons into the shared skills and harness docs (#760) (911d000)

v1.7.0

1.7.0 (2026-08-05)

Features

  • #1010: add bulk editing to the GM Recipe Studio (#1013) (32e199c), closes #1010
  • #772: multi-select bulk edit of component tags and categories (#898) (7654d8c), closes #772
  • #785: add the GM Knowledge surface for owned recipe-item copies and learned recipes (#876) (1de40b7), closes #785
  • #855: crafting-check playerPicks modifier policy (phase 2) (#856) (15c757e), closes #855
  • #917: unified requirement slot rail with a player-allocated shared essence pool (#930) (32b7cd6), closes #917
  • view-lab: full-window PR screenshot evidence in real harvested Foundry chrome (#951) (80e4a19)

Bug Fixes

  • #403: freeze accrual anchors on a backward world-time tick (#897) (661ee79), closes #403
  • #772: open the bulk edit category popup dark, like every other select (#916) (22e877b), closes #772
  • #877: match the import report to the folder-mapping dialog (#879) (17940fb), closes #877
  • #878: rework the tags & categories icon fields, tabs and layout (#880) (173eab8), closes #878
  • #884: stop a recipe borrowing a containing book image (#889) (363ace6), closes #884
  • #887: retire the recipe-item image borrow from the systems resolvers (#980) (84c6134), closes #887
  • #890: make the manager inspector read node capacity from config (#988) (f40b37b), closes #890
  • #896: seed a null respawn anchor instead of reading it as world time zero (#938) (d229db5), closes #896
  • #901: move blind run secrets to a GM-written world setting (#991) (5741c65), closes #901
  • #902: record the currency spend that settled, not the one planned (#945) (603e33e), closes #902
  • #904: carry dcOverride through gathering task composition (#943) (d0fee7d), closes #904
  • #919: surface failed saves in the manager editor toolbars (#931) (6d4ed12), closes #919
  • #921: make the biome colour popover dismissable from its own trigger (#989) (8496ac0), closes #921
  • #924: fail the build on svelte compiler warnings and clear the seven (#940) (18c1bbf), closes #924
  • #941: give the contents-wrapper checkbox a visible focus indicator (#986) (e2d392a), closes #941
  • #946: close the format:check argv hole with an executed corpus guard (#985) (ea618c5)
  • #966: unstick a timed craft of a recipe the crafter cannot see (#967) (42a4724), closes #966
  • #970: scope the startup cleanup to owned actors and isolate its failures (#971) (4bd5136), closes #970
  • #976: resolve item-sourced tools by their display snapshot (#977) (fa710a6)
  • #978: stop the recipe editor persisting a derived recipeItemId (#979) (ec22814), closes #978
  • #987: budget the rc smoke walk from measurement, not estimate (#990) (878d62f), closes #987
  • #993: stop foundry nue tours blocking the smoke sidebar (#994) (e6665cf), closes #993
  • #996: make the phase E overlay check diagnostic, not a gate (#997) (015c7cc), closes #996
  • #999: resolve interactable containment without a rendered canvas (#1003) (ae2c9d2)
  • gathering: route player-reachable world-state writes through the active GM (#983) (82cc87f)

Performance Improvements

Documentation

  • agents: bind the coordinator checkout to its own worktree (#939) (8d2b72c)
  • agents: record the verification, evidence and cascade lessons (#895) (42d7089)
  • make the driver's ready transition explicit (#1008) (2a8e064)
  • use the new Fabricate logo as the repository preview image (#1012) (3611f4b)

v1.8.0

1.8.0 (2026-08-10)

Features

  • #1019: name the tripped condition when screenshot collection refuses a summary (#1065) (bf0d57b), closes #1019
  • #1036: redesign the essence library and editor as the Essence Studio (#1037) (7c801c0), closes #1036
  • #1055: make recipe picks a combination rule with a system-owned pick cap (#1061) (ff3d696), closes #1055
  • checks: retire the @craftingmod placeholder so check modifiers apply automatically (#1104) (6c5893a)
  • config: configurable player-character actor types and item stack-quantity path (#1031) (3f32d03)
  • crafting: bulk salvage in the player inventory app (#1044) (ad640c0)

Bug Fixes

  • #1015: pin the bulk edit apply action and lift its muted copy to AA (#1063) (c49d8af), closes #1015
  • #1027: tell the player when a gather succeeded but found nothing (#1028) (3b7a9a5), closes #1027
  • #1029: block a routed gather whose success tier routes nowhere (#1030) (8ce77b0), closes #1029
  • #1048: relabel the light-theme coverage cases and correct the theme-inheritance claim (#1057) (6510237), closes #1048
  • #1049: anchor view lab capture selection to file content (#1051) (43d81cd), closes #1049
  • #1099: size the actor-type picker and set raw ids apart from labels (#1101) (a74de6a), closes #1099
  • #1108: give the Simple results view's failure card its own spacing (#1109) (70cbe38), closes #1108
  • add the situational bonus to the rolled total (#1022) (3f2d21d)
  • ui: centre the component-source remove overlay vertically (#1112) (73e4b4b)

Documentation

  • #1088: correct Foundry notes and comments pinned to V14-only behaviour (#1100) (4750d95), closes #1088
  • #1107: correct the tester-path-secret rotation claim in the release-and-distribution spec and CONTRIBUTING (#1110) (6a4157e), closes #1107