Releases
v1.9.0
Compare
Sorry, something went wrong.
No results found
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
#1074 : cache alchemy signature validation per revision (#1165 ) (245fc0f ), closes #1074
#1075 : page recipe summaries before hydrating crafting detail (#1187 ) (613525a ), closes #1075
#1077 : resolve held books once per visibility pass (#1166 ) (64e85b4 )
#1078 : narrow reload invalidation and preserve container identity (#1193 ) (afda4a1 ), closes #1078
#1080 : add the per-record crafting definition adapter (#1199 ) (1f1231d ), closes #1080
#1080 : measure the B(1) connect-payload crossover (#1194 ) (3107f9d ), closes #1080
#1081 : page-scope GM recipe and component browser projection (#1189 ) (804bf0d ), closes #1081
#1083 : bound solver node cost and skip search for uncontended groups (#1188 ) (f2ef599 ), closes #1083
#1135 : retire reconstructible defaults from the ingredient payload (#1192 ) (a32533f ), closes #1135
#1201 : answer the recipe editor from the retained signature report (#1206 ) (ba2e7cc ), closes #1201
#1202 : answer component id lookups from the retained index (#1214 ) (ee94509 ), closes #1202
#1211 : convert legacy recipe storage into per-record documents (#1245 ) (f4750ac ), closes #1211
#1212 : extract components to per-record storage and bound the cross-class writes (#1249 ) (3b299f7 ), closes #1212
#1228 : thread one unified pass snapshot through every access read (#1237 ) (01197e9 ), closes #1228
#1242 : route the migration recipe corpus through an arrangement-aware seam (#1243 ) (6aa286a ), closes #1242
#1247 : measure the per-record write path so criterion 9 has an instrument (#1253 ) (1cceabe ), closes #1247
#1255 : measure both storage arrangements at 10k recipes and 10k components (#1256 ) (549bad3 ), closes #1255
#1265 : drop the storage-arrangement axis from the foundry harness (#1268 ) (3720d56 ), closes #1265
graph: stop the cycle DFS overflowing and bound the edge expansion (#1164 ) (a3b56ce )
identity: resolve crafting identity through retained per-system indexes (#1153 ) (595c5a9 )
import: bound every bulk import to one corpus write (#1139 ) (f640f22 )
recipes: stop writing the results alias and every rebuildable default (#1136 ) (d342eea )
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
You can’t perform that action at this time.