Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
239 commits
Select commit Hold shift + click to select a range
32a5f79
docs: add ARCHITECTURE_REIMAGINED — target adapter-over-lib design
cyface Apr 17, 2026
6b433a3
feat(refactor): Phase 0 — adapter scaffolding + extension API audit
cyface Apr 17, 2026
a5c82db
docs(progress): record SHA of Phase 0 scaffolding commit
cyface Apr 17, 2026
fddcf04
feat(refactor): vendor @moonloch/dcc-core-lib + sync script (Phase 0 …
cyface Apr 17, 2026
c200938
vendor: sync dcc-core-lib to 0.3.0 (93033cb)
cyface Apr 18, 2026
937f486
vendor: re-sync dcc-core-lib to f78cbdf
cyface Apr 18, 2026
e992c32
feat(adapter): Phase 1 — rollAbilityCheck via dcc-core-lib adapter
cyface Apr 18, 2026
5a9bae6
fix(adapter): correct display total + dispatcher edge cases
cyface Apr 18, 2026
5c1d2b8
test(integration): adapter two-pass flow against real Foundry dice
cyface Apr 18, 2026
415af8a
remove old foundryv14 merge script.
cyface Apr 18, 2026
0cf7e19
vendor: re-sync dcc-core-lib to 0.4.0 (ad55dec)
cyface Apr 18, 2026
0a54241
docs: update session-start prompt for Phase 1 save-throw migration
cyface Apr 18, 2026
5f84565
docs(session-start): cover integration test running explicitly
cyface Apr 18, 2026
3135eae
feat(adapter): Phase 1 — rollSkillCheck via dcc-core-lib adapter
cyface Apr 18, 2026
157b840
feat(adapter): Phase 1 — rollInit via dcc-core-lib adapter (Path A)
cyface Apr 18, 2026
3062fb6
test(e2e): validate Phase 1 dispatcher branches via console logs
cyface Apr 18, 2026
f59877e
docs: close Phase 1, make dispatch logging permanent
cyface Apr 18, 2026
dff31ab
docs(session-start): add Session 1 slice for Phase 2 (spell checks)
cyface Apr 18, 2026
f6f2de1
feat(adapter): Phase 2 session 1 — scaffold rollSpellCheck dispatcher
cyface Apr 18, 2026
54e4459
feat(adapter): Phase 2 session 2 — wizard spell loss via calculateSpe…
cyface Apr 18, 2026
edf3cf5
feat(adapter): Phase 2 session 3 — cleric disapproval via calculateSp…
cyface Apr 18, 2026
72646f5
docs: correct Playwright test count + live-Foundry status in progress.md
cyface Apr 18, 2026
a964865
feat(adapter): Phase 2 session 4 — patron route via calculateSpellCheck
cyface Apr 18, 2026
1bea45d
feat(adapter): Phase 2 session 5 — spellburn + mercurial magic via ca…
cyface Apr 18, 2026
195f3ec
chore: untrack .claude/scheduled_tasks.lock and gitignore it
cyface Apr 18, 2026
67a1bc1
docs(adapter): Phase 2 CLOSE — permanent processSpellCheck + legacy p…
cyface Apr 19, 2026
09cf28f
feat(adapter): Phase 3 session 1 — spellburn dialog-adapter
cyface Apr 19, 2026
3b97d20
feat(adapter): Phase 3 session 2 — first attack-migration slice
cyface Apr 19, 2026
1fd6f0d
feat(adapter): Phase 3 session 3 — hook-translation bridge
cyface Apr 19, 2026
7a76407
docs(adapter): refresh session-start prompt for Phase 3 session 4
cyface Apr 19, 2026
4c75b60
feat(adapter): Phase 3 session 4 — long-range dice-chain translation
cyface Apr 19, 2026
cb992a5
feat(adapter): Phase 3 session 5 — first damage-migration slice
cyface Apr 19, 2026
b0f71a8
docs(adapter): refresh session-start prompt + add refactor-slice rules
cyface Apr 19, 2026
c7c57ba
feat(adapter): Phase 3 session 6 — crit + fumble migration
cyface Apr 19, 2026
5fe2443
fix(adapter): PR #720 review follow-ups — dead-code removal + stale-d…
cyface Apr 19, 2026
ecc9de0
fix(adapter): drop now-unused `die` destructure in `_rollSkillCheckVi…
cyface Apr 19, 2026
901839b
fix(adapter): PR #720 review follow-ups — resilience + observability …
cyface Apr 19, 2026
cefc63b
docs(adapter): clarify pain points + retirement principle + slice bac…
cyface Apr 19, 2026
755f561
feat(adapter): Phase 3 session 7 — NPC damage-bonus adapter route
cyface Apr 19, 2026
9bdb153
docs(ext-api): cross-reference stable surface to §2 pain points
cyface Apr 19, 2026
907cfaf
feat(ext-api): add dcc.registerItemSheet hook (closes §2.5 XCC hack)
cyface Apr 19, 2026
1dc9c49
feat(ext-api): add dcc.registerActorSheet — mirror of registerItemSheet
cyface Apr 19, 2026
4a0b22d
feat(ext-api): add dcc.afterComputeSpellCheck post-hook (retires XCCA…
cyface Apr 19, 2026
91fa9e1
feat(adapter): Phase 3 session 8 — PC magic-weapon-bonus damage adapt…
cyface Apr 19, 2026
58d9621
vendor: sync dcc-core-lib to 0.4.1 (2db7e19)
cyface Apr 19, 2026
0f05fab
feat(adapter): Phase 3 session 9 — backstab adapter route (A2)
cyface Apr 19, 2026
818c92d
feat(adapter): Phase 3 session 10 — deed-die adapter route (A3)
cyface Apr 20, 2026
a519eb1
feat(adapter): Phase 3 session 11 — two-weapon adapter route (A4)
cyface Apr 20, 2026
ddc8acc
fix(adapter): harden A3+A4 paths after PR review
cyface Apr 20, 2026
b428a0d
feat(adapter): Phase 3 session 12 — drop automate gate check (A5)
cyface Apr 20, 2026
39860ab
feat(adapter): Phase 3 session 13 — modifier dialog route (A6)
cyface Apr 20, 2026
5b3f96e
feat(adapter): Phase 3 session 14 — dice-bearing toHit route (A7)
cyface Apr 20, 2026
b40922a
vendor: sync dcc-core-lib to 0.5.0 (17c70e2)
cyface Apr 20, 2026
0227c26
refactor(adapter): Phase 3 session 15 — retire _rollToHitLegacy (D1)
cyface Apr 20, 2026
41766ec
refactor(adapter): Phase 3 session 16 — retire _rollCriticalLegacy + …
cyface Apr 20, 2026
ba96cfe
chore(cruft): C3 — audit + close halfling i18n-localize dispatch remn…
cyface Apr 20, 2026
4bec2c1
docs(adapter): refresh session-start prompt for D2 damage slice
cyface Apr 20, 2026
48fb5fe
feat(adapter): Phase 3 session 17 — route trailing bracket-flavor for…
cyface Apr 20, 2026
e1aab57
feat(adapter): Phase 3 session 18 — accept unparseable formulas as lo…
cyface Apr 20, 2026
b751ae4
vendor: sync dcc-core-lib to 0.6.0 (4b6a063)
cyface Apr 20, 2026
d35261c
feat(adapter): Phase 3 session 19 — retire _rollDamageLegacy (D2 dama…
cyface Apr 20, 2026
bed18aa
chore(cruft): C1 — retire critText/fumbleText compatibility shims
cyface Apr 20, 2026
e9ee8ce
docs(adapter): refresh session-start prompt for post-C1 state
cyface Apr 20, 2026
2110b0b
fix(adapter): subtract save's ability mod before passing to lib
cyface Apr 23, 2026
2f20481
chore: ignore Playwright artifacts at project root
cyface Apr 23, 2026
e2ea8f1
vendor: sync dcc-core-lib to 0.6.0 (8593539) + drop save workaround
cyface Apr 23, 2026
496247d
fix(actor): rollSkillCheck warns on unknown skill instead of crashing
cyface Apr 24, 2026
c71ed7f
fix(actor): rollSpellCheck cleric gate accepts className, not just sh…
cyface Apr 24, 2026
de5b1f8
i18n: add DCC.SkillCheckUnknownSkillWarning translations (cn/de/es/fr…
cyface Apr 24, 2026
9e79459
feat(adapter): reason codes for silent adapter→legacy fallbacks
cyface Apr 24, 2026
a892e69
feat(adapter): partial-failure rollback for _castViaCalculateSpellCheck
cyface Apr 24, 2026
f20316d
chore(cruft): C2 — prune pre-V14 migrations
cyface Apr 24, 2026
ae54b31
fix(migrations): C2 guard regression — treat 0 as fresh world
cyface Apr 24, 2026
f91907c
docs(progress): record C2 review backlog items
cyface Apr 24, 2026
f4f2718
docs(session-start): drop brittle test counts
cyface Apr 24, 2026
9a8e18e
docs(progress): split into phase archives + archive discipline
cyface Apr 24, 2026
d6309c4
feat(adapter): Phase 3 session 21 — D3a patron-taint RAW alignment, r…
cyface Apr 24, 2026
844ff22
feat(adapter): Phase 3 session 22 — D3b-α patron-taint manifestation …
cyface Apr 24, 2026
598e5a6
docs(adapter): Phase 3 session 22 follow-ons — D3b-γ closed, D3b-β au…
cyface Apr 24, 2026
c947e5b
feat(adapter): Phase 3 session 23 — D3c retire dormant SpellFumbleRes…
cyface Apr 24, 2026
c7dd600
chore(vendor): refresh dcc-core-lib sync metadata to 0.8.0 HEAD
cyface Apr 24, 2026
5a32d18
docs(progress): refresh 00-progress after D3 arc closure + vendor met…
cyface Apr 24, 2026
0bbac4d
merge: bring main up through v0.67.2 into refactor/dcc-core-lib-adapter
cyface May 17, 2026
ffcc203
feat(adapter): Phase 3 session 24 — D4 profile-override cross-class s…
cyface May 18, 2026
4a3de40
feat(adapter): Phase 3 session 25 — D4 remainder (naked + forceCrit +…
cyface May 18, 2026
17eab7b
feat(adapter): Phase 3 session 26 — Q7-phase1 generalized roll-modifi…
cyface May 18, 2026
0d4ea2e
chore(adapter): drop unused-var workaround in _rollSkillCheckViaAdapter
cyface May 18, 2026
c88bfce
feat(adapter): Phase 3 session 27 — Q7-phase2 spell-check modifier-di…
cyface May 18, 2026
078d3e1
docs(adapter): close open question #3 — dcc.update hook is dead
cyface May 18, 2026
d051426
docs(adapter): refresh session-handoff state after 2026-05-18 session
cyface May 18, 2026
88417a5
docs(adapter): close open questions #2 (scoped package name) and #4 (…
cyface May 18, 2026
55de719
feat(adapter): Group E session 1 — per-class mercurial-magic table re…
cyface May 18, 2026
d9219b6
feat(adapter): Phase 4 session 1 — halfling vertical kickoff via regi…
cyface May 18, 2026
79e2464
feat(adapter): Phase 4 session 2 — dwarf shieldBash class-mixin extra…
cyface May 18, 2026
81f522b
docs(adapter): flag class-defaults registry as Phase 5 candidate
cyface May 18, 2026
ece3049
docs(adapter): add CLASS_DECOMPOSITION.md — single-source per-class c…
cyface May 18, 2026
b342909
feat(adapter): Phase 4 session 3 — thief class-mixin extraction
cyface May 18, 2026
5bcf2c9
feat(adapter): Phase 4 session 4 — cleric class-mixin + shared built-…
cyface May 18, 2026
3362f8c
feat(adapter): Phase 4 session 5 — warrior class-mixin extraction
cyface May 18, 2026
a154187
feat(adapter): Phase 4 session 6 — wizard + elf class-mixin extractio…
cyface May 18, 2026
306b592
feat(adapter): Phase 4 session 7 — DCCActor.classId accessor
cyface May 18, 2026
e1efa26
feat(adapter): Phase 5 session 1 — registerClassDefaults registry + 7…
cyface May 19, 2026
03e4e0b
feat(adapter): Phase 5 session 2 — registerClassStartingItems registr…
cyface May 19, 2026
352ff96
feat(adapter): Phase 5 session 3 — register link fields on base Playe…
cyface May 19, 2026
23e4f48
feat(adapter): Phase 5 session 4 — registerSheetPart registry + 7 PC …
cyface May 19, 2026
06dc1be
feat(adapter): Phase 5 session 5 — migrate remaining capitalized shee…
cyface May 19, 2026
9419c01
feat(adapter): Phase 6 session 1 — expose registerClassProgression on…
cyface May 19, 2026
bd56b77
feat(adapter): Phase 6 session 2 — load class progressions from level…
cyface May 19, 2026
aea0ad8
feat(adapter): Phase 6 session 3 — registerHomebrewClassForProgressio…
cyface May 20, 2026
90e6ae3
feat(adapter): Phase 6 session 4 — extension-api.spec.js beforeEach h…
cyface May 20, 2026
09b9b92
feat(adapter): Phase 6 session 5 — registerVariant for variant rulese…
cyface May 21, 2026
c8932da
feat(adapter): Phase 7 session 1 — extract Handlebars helpers from dc…
cyface May 21, 2026
7ed6e83
feat(adapter): Phase 7 session 2 — extract macro factories from dcc.js
cyface May 21, 2026
39cd584
feat(adapter): Phase 7 session 3 — extract settings-table hooks from …
cyface May 21, 2026
4f75c3d
chore(lint): clear stale standardjs warnings from Phase 7 extractions
cyface May 21, 2026
7bef6e5
feat(adapter): Phase 7 session 4 — extract processSpellCheck from dcc.js
cyface May 21, 2026
a70d5e0
feat(adapter): Phase 7 session 5 — extract table-loading from dcc.js
cyface May 21, 2026
2973a13
fix(tests): make registerItemSheet test resilient to XCC sibling over…
cyface May 22, 2026
1935372
fix(tests): filter transient network errors in v14-features afterEach
cyface May 22, 2026
fb6d539
feat(adapter): Phase 7 session 6 — extract chat / hook wiring from dc…
cyface May 22, 2026
a8ee93c
feat(adapter): Phase 7 session 7 — split styles/dcc.scss into 18 part…
cyface May 22, 2026
ad5538d
Merge branch 'main' into refactor/dcc-core-lib-adapter
cyface May 27, 2026
9778803
package bumps
cyface May 27, 2026
dcfc394
perf(e2e): worker session reuse — browser suite 840s→354s (2.37×)
cyface May 27, 2026
0bdbcb4
perf(e2e): replace openActorSheet blind 2s sleep with structural wait
cyface May 27, 2026
e3eae15
chore(test): remove dead v12 visual-regression suite
cyface May 27, 2026
1c9924b
refactor(e2e): shared session fixture + rename adapter-dispatch spec
cyface May 27, 2026
fe7a4da
test(e2e): add rolls-ui smoke spec (sheet → roll → chat card)
cyface May 27, 2026
a83d944
test(e2e): widen openActorSheet settle to 1.5s for reliability
cyface May 27, 2026
0e76620
refactor(e2e): split v14-features into active-effects + sheet-ui
cyface May 27, 2026
f381a19
feat(adapter): Phase 7 session 8 — hex-literal → theme-variable migra…
cyface May 28, 2026
89afcad
feat(adapter): Phase 7 session 9 — compendium-walk caching for table …
cyface May 28, 2026
bbadbec
feat(adapter): Phase 7 session 10 — extract buildLibResultFlag + appl…
cyface May 29, 2026
0f605a9
feat(adapter): Phase 7 session 11 — surface migrateWorld per-doc fail…
cyface May 29, 2026
ea84402
feat(adapter): Phase 7 session 12 — consolidate normalizeLibDie / _st…
cyface May 29, 2026
d9fa551
fix(adapter): preserve additive init-die terms through the combat-tra…
cyface May 29, 2026
a19212e
feat(adapter): Phase 7 session 13 — await checkMigrations before dcc.…
cyface May 29, 2026
027c843
feat(adapter): Phase 7 session 14 — render per-modifier breakdown in …
cyface May 29, 2026
08d39d4
feat(adapter): add options.checkLabel for raw spell-check chat flavor
cyface May 29, 2026
3c7a9a0
docs(progress): prune 00-progress.md per its own archive-discipline r…
cyface May 29, 2026
60b8bdd
feat(adapter): Phase 7 session 15 — unify dispatcher gate style + dro…
cyface May 29, 2026
c76a3a9
docs(adapter): mark dcc-crawl-classes + mcc-classes registerActorShee…
cyface May 29, 2026
15a14df
docs(progress): record §2.8 homebrew validation via crawl + mcc migra…
cyface May 30, 2026
1949e1e
fix(scenes): use v14 Level-based createThumbnail on adventure import
cyface May 30, 2026
9636b67
fix(crits): prompt manual look-up when no crit table is available
cyface May 30, 2026
5bd695e
fix(sheets): shrink AC/HP/save font for multi-digit values so they fit
cyface May 31, 2026
ff3b496
fix(sheets): give NPC AC/HP value room so tall digits aren't clipped
cyface May 31, 2026
8044483
fix(sheets): stop stretching non-square PC portraits
cyface May 31, 2026
0784356
fix(sheets): portrait aspect ratio, party rename (#735), AE token ove…
cyface May 31, 2026
be77968
feat(adapter): Phase 7 session 16 — retire _rollSpellCheckLegacy (clo…
cyface May 31, 2026
5b7d929
fix(actor): Config Base Speed now updates the sheet; add Speed Modifi…
cyface May 31, 2026
2f7abc2
fix(migration): parseInt-normalize speed-base seeding for unit-bearin…
cyface May 31, 2026
9fef0ea
Expand allowlist to speed up work.
cyface May 31, 2026
839b9d7
fix(sheets): gate Speed Modifier input on computeSpeed; consistent _s…
cyface May 31, 2026
f9f8afe
feat(sheets): clearer computed-Speed tooltip on label + field; mirror…
cyface May 31, 2026
7b012e7
Expand allowlist to speed up work.
cyface May 31, 2026
a766a29
vendor: sync dcc-core-lib to 0.11.0 (631f250)
cyface May 31, 2026
cb9eae1
feat(adapter): Phase 7 session 17 — spellburn may burn an ability to …
cyface May 31, 2026
2165145
docs(testing): note that unit-test mocks can't see schema-level valid…
cyface May 31, 2026
41bb522
feat(adapter): Phase 7 session 18 — close PR #720 damage _total clamp…
cyface Jun 1, 2026
02a8103
feat(adapter): Phase 7 session 19 — close PR #720 createFoundryRoller…
cyface Jun 1, 2026
c632279
docs(adapter): add sequenced legacy-decommission plan + record error-…
cyface Jun 1, 2026
5668ca7
feat(adapter): Phase 7 session 20 — fail-loud error boundaries around…
cyface Jun 1, 2026
ebf3739
feat(adapter): Phase 7 session 21 — roll-under (Luck) in the adapter …
cyface Jun 1, 2026
4690033
fix(actor): support native V14 token.* active-effect overrides (#736)
cyface Jun 1, 2026
2630d76
fix(skills): NPC skill items inherit the actor action die (useDie:false)
cyface Jun 1, 2026
b67c8e1
feat(adapter): Phase 7 session 22 — modifier dialog for ability + sav…
cyface Jun 1, 2026
99e3978
feat(adapter): Phase 7 session 23 — check-penalty display for ability…
cyface Jun 2, 2026
bb6e4f9
docs(adapter): archive off completed PR #720 backlog items per the gu…
cyface Jun 2, 2026
4c925c5
feat(adapter): Phase 7 session 24 — description-only skill items in t…
cyface Jun 2, 2026
3106ab6
feat(adapter): Phase 7 session 25 — legacy-decom step 5 batch delete …
cyface Jun 2, 2026
9574511
test(adapter): Phase 7 session 26 — data-driven migration-branch cove…
cyface Jun 2, 2026
a8d0fe9
test(adapter): Phase 7 session 27 — renderDisapprovalRoll + renderMer…
cyface Jun 2, 2026
deed5d6
docs(adapter): mark stale roll-dialog.mjs test-coverage gap (Phase 7 …
cyface Jun 2, 2026
e51a825
migration fix
cyface Jun 2, 2026
6042b13
test(adapter): Phase 7 session 28 — dcc-roll.js mock async/sync parit…
cyface Jun 2, 2026
f560514
test(adapter): Phase 7 session 29 — onSpellLost real-cast e2e + force…
cyface Jun 2, 2026
04305e5
test(adapter): Phase 7 session 30 — terms[N] two-pass-divergence boun…
cyface Jun 2, 2026
ca1eec0
test(adapter): Phase 7 session 31 — NPC rollToHit branches (closes th…
cyface Jun 2, 2026
8cbfdc9
docs(adapter): Phase 7 session 32 — doc/comment hygiene (§7/§2.7, dis…
cyface Jun 2, 2026
a161057
docs(adapter): Phase 7 session 33 — programmatic-PC-creation dev guide
cyface Jun 3, 2026
7c6233a
feat(adapter): Phase 7 session 34 — perf cleanups (hoist getActionDic…
cyface Jun 3, 2026
43641c0
docs(adapter): trim 00-progress.md to the archive-discipline length b…
cyface Jun 3, 2026
3812d51
feat(adapter): Phase 7 session 35 — extract monster-classification ta…
cyface Jun 3, 2026
e702dfd
feat(adapter): Phase 7 session 36 — extract default-image tables out …
cyface Jun 3, 2026
0963205
feat(adapter): Phase 7 session 37 — extract dice config tables out of…
cyface Jun 3, 2026
dd44269
feat(adapter): Phase 7 session 38 — extract activeEffectKeys referenc…
cyface Jun 3, 2026
0477ca2
feat(adapter): Phase 7 session 39 — extract actor-importer block out …
cyface Jun 3, 2026
80fc734
pre-release process
cyface Jun 3, 2026
36ad86a
feat(adapter): Phase 7 session 40 — extract container-support block i…
cyface Jun 3, 2026
0967ee8
feat(adapter): Phase 7 session 41 — extract treasure-value/currency b…
cyface Jun 3, 2026
654f23d
feat(adapter): Phase 7 session 42 — extract spell-roll block into ite…
cyface Jun 4, 2026
ba6d679
feat(adapter): Phase 7 session 43 — extract AE summary builders into …
cyface Jun 4, 2026
321a8ad
fix(compendium): hide "Import All" for the ActiveEffect (dcc-effects)…
cyface Jun 5, 2026
d261c31
feat(adapter): Phase 7 session 44 — extract #prepareItems into actor-…
cyface Jun 5, 2026
4e9208b
feat(adapter): Phase 7 session 45 — extract context-field helpers int…
cyface Jun 5, 2026
b602702
feat(adapter): Phase 7 session 46 — extract _onDragStart into actor-s…
cyface Jun 6, 2026
ef523bf
feat(adapter): Phase 7 session 47 — extract drop handlers into actor-…
cyface Jun 8, 2026
adc31ff
feat(adapter): Phase 7 session 48 — extract AE-application engine int…
cyface Jun 8, 2026
9b308e7
feat(adapter): Phase 7 session 49 — extract derived-stat computation …
cyface Jun 8, 2026
20586ba
docs(adapter): record Phase 7 sessions 48-49 (actor.js mixin arc) + r…
cyface Jun 8, 2026
5397b82
feat(adapter): Phase 7 session 50 — extract actor.js roll-input acces…
cyface Jun 8, 2026
b32bca2
docs(adapter): Phase 7 session 51 — resolve §2.1 schema-slimming (Gro…
cyface Jun 8, 2026
b686531
docs(adapter): drop Group E homebrew-vertical candidate — validated b…
cyface Jun 8, 2026
6a9b2e9
chore(cruft): remove unconsumed CONFIG.DCC.activeEffectKeys reference…
cyface Jun 8, 2026
eefeb2d
feat(item): restore rollable treasure values (TreasureValueField)
cyface Jun 8, 2026
1e69c72
fix(treasure): numeric coin-weight totals + await rollValue's update
cyface Jun 8, 2026
5cbd0f9
test(spell-duel): backfill coverage for the untested 805-line module
cyface Jun 8, 2026
30ab0c2
test(parser): cover _applyBirthAugurEffect guard branches
cyface Jun 8, 2026
59b6814
test(migrations): cover migrateWorld orchestration (failure -> unstam…
cyface Jun 8, 2026
7fad900
test(party-sheet): cover membership + member-weapon form round-trip
cyface Jun 8, 2026
2f4efc0
test(chat): cover table-result dual-write + spell-result flags/wiring
cyface Jun 8, 2026
0c46f09
test(rolls): cover currency rollValue + RollModifierDialog formula co…
cyface Jun 8, 2026
b423809
test(coverage): fleeting-luck + init-die parser + deleteDialog cascad…
cyface Jun 8, 2026
95a4454
fix(macros): weapon-macro icon fallback read undefined data.data.weap…
cyface Jun 9, 2026
c278bc1
chore: codebase cleanup — drop debug logs and vendor sourcemap noise
cyface Jun 9, 2026
588d288
refactor(actor): extract spell-check dispatch into rolls-spell-mixin
cyface Jun 10, 2026
6929bb9
refactor(actor): extract weapon-attack dispatch into rolls-weapon-mixin
cyface Jun 10, 2026
9d2afd3
refactor(actor): extract ability/init/save dispatch into rolls-check-…
cyface Jun 10, 2026
ed6b3dc
refactor(actor): extract skill-check dispatch into rolls-skill-mixin
cyface Jun 10, 2026
0b394ab
docs(actor): document roll-dispatch extraction + add e2e composition …
cyface Jun 10, 2026
478f427
test(coverage): add v8 coverage tooling + ratchet thresholds
cyface Jun 10, 2026
3f7ae9b
docs(adapter): define exit criterion for the warnIfDivergent safety net
cyface Jun 10, 2026
8541acd
feat(adapter): Phase 7 session 52 — extract init hook into init-hook.mjs
cyface Jun 10, 2026
1c1d4d5
feat(adapter): Phase 7 session 53 — extract ready hook into ready-hoo…
cyface Jun 10, 2026
26ae9f4
feat(adapter): Phase 7 session 54 — extract getSceneControlButtons in…
cyface Jun 10, 2026
b043c19
docs(adapter): record Phase 7 sessions 52-54 (dcc.js decomposition) +…
cyface Jun 10, 2026
785646e
Merge origin/main (v0.67.7) into refactor/dcc-core-lib-adapter
cyface Jun 10, 2026
0ab2c48
feat(adapter): fire dcc.afterSpellCheckResult + honor suppressPatronT…
cyface Jun 10, 2026
c4be351
chore: set system version to 0.70.0
cyface Jun 10, 2026
7e43312
Merge origin/main (v0.67.8 crit double-display fix) into refactor/dcc…
cyface Jun 12, 2026
9bbc232
docs(adapter): record post-session-54 work + declare backlog drained …
cyface Jun 12, 2026
310839d
feat: port Ability Score Change Log from feature/ability-score-log
cyface Jun 13, 2026
bd67056
Merge branch 'main' into refactor/dcc-core-lib-adapter
cyface Jun 13, 2026
3b72607
refactor: unify spell-like skill checks onto the single adapter path
cyface Jun 14, 2026
a2405ae
chore: restore 0.70.0 version after main-merge revert
cyface Jun 15, 2026
324e645
docs: correct sibling-module paths in CLAUDE.md
cyface Jun 15, 2026
e99f8b3
test(e2e): make the suite resilient to a license stall + a container-…
cyface Jun 15, 2026
7b5a87f
feat(skills): apply Active Effects to skills via a derived otherMod m…
cyface Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,17 @@
"Bash(git pull:*)",
"Bash(git push:*)",
"Bash(mkdir:*)",
"Bash(npm run check)",
"Bash(npm run compare-lang:*)",
"Bash(npm run format:*)",
"Bash(npm run scss:*)",
"Bash(npm run sync-core-lib)",
"Bash(npm run test)",
"Bash(npm run test:integration)",
"Bash(npm run test:unit)",
"Bash(npm run todb)",
"Bash(npm run tojson)",
"Bash(npm test)",
"Bash(python3:*)",
"Bash(rg:*)",
"Bash(sed:*)",
Expand Down
17 changes: 10 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,23 @@ packs/**/MANIFEST*

# Claude local settings
.claude/settings.local.json
.claude/scheduled_tasks.lock
.claude/scheduled_tasks*

# Foundry VTT dev install for integration tests (populated by scripts/setup-foundry-dev.js)
.foundry-dev/

# Playwright MCP temporary files
.playwright-mcp/

# Playwright artifacts when test runner is invoked from project root
# (browser-tests/e2e/.gitignore covers the canonical location)
test-results/
playwright-report/

# Vitest coverage reports (npm run test:coverage)
coverage/

# Environment files with secrets
.env
browser-tests/**/.env
Expand All @@ -84,10 +94,3 @@ browser-tests/**/.env
!docs/**/*.jpeg
!docs/**/*.gif
/.claude/worktrees/

# Playwright artifacts when test runner is invoked from project root
test-results/
playwright-report/

# Vitest coverage reports (npm run test:coverage)
coverage/
3 changes: 2 additions & 1 deletion .idea/runConfigurations/FoundryV14.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 0 additions & 17 deletions .idea/runConfigurations/Run_Foundry_13.xml

This file was deleted.

1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
105 changes: 104 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,114 @@ Quick reference for Claude Code working with the DCC system for FoundryVTT.
- **Translate new keys**: When adding to language files, translate them
- **Tests must pass**: All PRs require passing tests
- **FoundryVTT v14**: Target version (v14-only, ApplicationV2 API)
- **Check dependent modules**: Before PRs, verify no breakage in `../../modules/dcc-qol`, `../../modules/xcc`, `../../mcc-classes`, `../../dcc-crawl-classes`
- **Check dependent modules**: Before PRs, verify no breakage in `../../modules/dcc-qol`, `../../modules/xcc`, `../../modules/mcc-classes`, `../../modules/dcc-crawl-classes`

## Working with dcc-core-lib

We own **`@moonloch/dcc-core-lib`** (scoped npm name — the unscoped
`dcc-core-lib` is **not** published; never `npm install dcc-core-lib`).
The upstream library is at `/Users/timlwhite/WebstormProjects/dcc-core-lib`,
GitHub repo `moonloch/dcc-core-lib`, vendored into this repo at
`module/vendor/dcc-core-lib/`. When the doc/branch/path uses the bare
`dcc-core-lib` token (branch `refactor/dcc-core-lib-adapter`, vendor
directory, repo identifier), it's referring to one of those local
identifiers — the npm package is always the scoped form.

When investigating roll/check/save/combat behavior and the bug appears
to be in the lib (not just an adapter translation issue):

- **Fix it in dcc-core-lib.** Open a PR against `moonloch/dcc-core-lib`
with the fix + a regression test. Do not paper over lib bugs with
adapter-side compensation as a permanent solution. (Short-lived
workarounds in the adapter are OK while the lib PR is in flight,
but the workaround must be removed once the fix lands.)
- **Vendor sync.** The lib's compiled output lives at
`module/vendor/dcc-core-lib/` and is committed to the system repo
(Foundry has no bundler). After the lib PR merges and you've pulled
`main` in the lib checkout, run `npm run sync-core-lib` from the
system repo. The script (`scripts/sync-core-lib.mjs`) builds the
lib via `npm run build`, copies `dist/` into the vendor directory,
and writes `module/vendor/dcc-core-lib/VERSION.json` with the
source commit SHA + timestamp. Override the source path with
`DCC_CORE_LIB_SRC=/path/to/dcc-core-lib npm run sync-core-lib`.
Commit the resulting vendor diff with a message like
`vendor: sync dcc-core-lib to <version> (<sha7>)`.
- **Adapter cleanup follows the sync.** Once the new vendor copy is
in place, remove any temporary adapter workaround you added while
the lib fix was in flight, and update tests that were asserting
the workaround's compensated values back to the natural contract.

## Standing authorizations

These override the default "never commit/push without being asked"
rule. They apply only to the scoped context described.

- **Auto-commit refactor slices on `refactor/dcc-core-lib-adapter`;
push per batch.** When a Phase-N session-M slice is complete (code +
Vitest + docs, Vitest green), **commit** it locally without asking.
Commit-message format matches the established history on this branch:
`feat(adapter): Phase <N> session <M> — <short slice description>`
(optionally followed by a second `docs(adapter): refresh session-start
prompt for Phase <N> session <M>` commit if `docs/01-session-start.md`
was updated). **Push is gated on the full E2E suite** (see the batch
cadence in *Refactor-slice testing requirements* below): commit each
slice in a batch locally, run the full Playwright suite once at the
batch end, and only `git push origin refactor/dcc-core-lib-adapter`
once that run is green. Still pause and ask if: Vitest is failing,
the batch E2E goes red and the cause isn't a one-commit `git revert`,
`git status` shows unexpected untracked files, the pre-commit hook
rewrites code in ways that should be reviewed, or a slice is
incomplete.

## Refactor-slice testing requirements

Apply to every slice on `refactor/dcc-core-lib-adapter`. These are
preconditions for the auto-commit/push authorization above — if any
fail, don't push.

- **Batch cadence (adopted 2026-06-08).** The full Playwright suite
takes ~6–12 min, so it no longer runs after every slice. Instead:
run the **fast Vitest suite (`npm test`, ~3 s) after every slice** —
that is the primary regression net for behaviour-neutral extractions
— commit each slice locally, then run the **full E2E suite once at
the end of the batch** and push only when it is green. This amortizes
the slow E2E across several slices. Because each slice ships its own
slice-specific E2E probe (next bullet) and is its own commit, a red
batch E2E points at the culprit probe and is recoverable with a
single-commit `git revert`. **Prefer fewer, larger, cohesive slices
per batch** (e.g. `actor.js` mixin extractions) over many trivial
ones — that is the better way to amortize the E2E cost.
- **Run the FULL browser-tests/e2e Playwright suite once per batch.**
Not just `adapter-dispatch.spec.js` — also `active-effects.spec.js`,
`sheet-ui.spec.js`, `data-models.spec.js`, and every other spec in
`browser-tests/e2e/`.
Launch via the standard recipe in
`docs/dev/TESTING.md#browser-tests-playwright` (Node 24, fvtt CLI
`installPath=foundry-14` + `dataPath=/Users/timlwhite/FoundryVTT-Next`,
`--world=v14`), then `cd browser-tests/e2e && npm test` (no spec
filter). Report any failure, even if apparently unrelated to the
slice — pre-existing flakes are worth flagging and pin-pointing,
not ignoring.
- **Extend the browser tests each slice.** Every slice must add
at least one new browser-test assertion exercising the new
behavior end-to-end against live Foundry (so a batch E2E failure
localizes to the slice whose probe went red). For dispatch changes,
extend `adapter-dispatch.spec.js` with the new branch. For
data / sheet / chat-template changes, add cases to the appropriate
spec (`active-effects.spec.js`, `sheet-ui.spec.js`,
`data-models.spec.js`, or a new spec file if the surface area
warrants one). The adapter-dispatch
test count has climbed with each session (26 at Phase 3 session 2
close → 33 at session 6 close); that trajectory is expected and
intentional — the suite IS the regression net for the refactor.

## Documentation

### Developer Guides
- [Architecture](docs/dev/ARCHITECTURE.md) - System structure, classes, data model
- [Architecture (reimagined)](docs/dev/ARCHITECTURE_REIMAGINED.md) - 7-phase refactor plan + pain points
- [Class Decomposition](docs/dev/CLASS_DECOMPOSITION.md) - Per-class component map (schema mixin / sheet part / defaults / starting items / lib progression / variant) — read before relocating any class-bound concern
- [Extension API](docs/dev/EXTENSION_API.md) - Stable / internal / dead extension surface
- [Development](docs/dev/DEVELOPMENT.md) - Workflow, commands, code standards
- [Testing](docs/dev/TESTING.md) - Test suite, mocks, coverage
- [Pack Management](docs/dev/PACKS.md) - Compendium JSON/LevelDB workflow
Expand All @@ -49,6 +151,7 @@ Quick reference for Claude Code working with the DCC system for FoundryVTT.
- [V13](docs/dev/V13.md) - ApplicationV2 patterns reference
- [Test Coverage](docs/dev/TEST_COVERAGE.md) - Detailed testing strategy
- [Release Process](docs/dev/RELEASE_PROCESS.md) - How to release
- [Pre-Release Process](docs/dev/PRERELEASE_PROCESS.md) - Foundry-installable test builds off a feature branch (manual, off-`main`)

### User Guides
- [Active Effects](docs/user-guide/Active-Effects.md) - Using effects, attribute keys
Expand Down
Loading
Loading