Lukas
3f6140303d
Upgrade knip 5 to 6
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 10:09:56 +01:00
Lukas
fd30278474
Upgrade jsdom 28 to 29
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 10:09:11 +01:00
Lukas
278c06221f
Upgrade Vite 8, plugin-react 6, Vitest 4
...
Vite 6→8 (Rolldown/Oxc), @vitejs/plugin-react 4→6 (Babel-free), Vitest 3→4 (AST coverage)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:41:14 +01:00
Lukas
722e8cc627
Update patch/minor dev dependencies
...
Biome 2.4.7→2.4.8, Tailwind 4.2.1→4.2.2, oxlint 1.55→1.56, oxlint-tsgolint 0.16→0.17.1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:17:26 +01:00
Lukas
4be816d10f
Add test coverage for 5 components: HpAdjustPopover, ConditionPicker, CombatantRow, ActionBar, SourceManager
...
Adds aria-label attributes to HP placeholder and source delete buttons
for both accessibility and testability.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 15:53:01 +01:00
Lukas
c94c30e459
Add oxlint for type-aware linting that Biome cannot cover
...
Install oxlint with tsgolint for TypeScript type information. Enable
rules for unnecessary type assertions, deprecated API usage, preferring
replaceAll over replace with global regex, and String.raw for escaped
backslashes. Fix all violations: remove redundant as-casts, replace
deprecated FormEvent with SubmitEvent, convert replace(/g) to
replaceAll, and use String.raw in escapeRegExp. Add oxlint to the
pnpm check gate alongside Biome.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 14:41:30 +01:00
Lukas
36768d3aa1
Upgrade Biome to 2.4.7 and enable 54 additional lint rules
...
Add rules covering bug prevention (noLeakedRender, noFloatingPromises,
noImportCycles, noReactForwardRef), security (noScriptUrl, noAlert),
performance (noAwaitInLoops, useTopLevelRegex), and code style
(noNestedTernary, useGlobalThis, useNullishCoalescing, useSortedClasses,
plus ~40 more). Fix all violations: extract top-level regex constants,
guard React && renders with boolean coercion, refactor nested ternaries,
replace window with globalThis, sort Tailwind classes, and introduce
expectDomainError test helper to eliminate conditional expects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 14:25:09 +01:00
Lukas
c75d148d1e
Fix high-severity undici vulnerability via pnpm override
...
Override undici to >=7.24.0 to resolve GHSA-v9p9-hfj2-hcw8
(WebSocket 64-bit length overflow). The vulnerable version was
pulled in transitively via jsdom@28.1.0.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 13:02:03 +01:00
Lukas
0747d044f3
Implement the 032-inline-confirm-buttons feature that replaces single-click destructive actions with a reusable ConfirmButton component providing inline two-step confirmation (click to arm, click to execute), applied to the remove combatant and clear encounter buttons, with CSS scale pulse animation, 5-second auto-revert, click-outside/Escape/blur dismissal, full keyboard accessibility, and 13 unit tests via @testing-library/react
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 09:51:21 +01:00
Lukas
69363d4f7d
Implement the 031-quality-gates-hygiene feature that strengthens automated quality gates by adding pnpm audit to the check script, v8 coverage thresholds with per-directory auto-ratchet (domain 96%, adapters 71%, persistence 87%), Biome cognitive complexity enforcement (max 15), and keyboard accessibility for the combatant row, while cleaning up all blanket biome-ignore comments, refactoring 5 overly complex functions into smaller helpers, and codifying the early-enforcement principle in the constitution and CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 00:52:29 +01:00
Lukas
91120d7c82
Implement the 029-on-demand-bestiary feature that replaces the bundled XMM bestiary JSON with a compact search index (~350KB) and on-demand source loading, where users explicitly provide a URL or upload a JSON file to fetch full stat block data per source, which is then normalized and cached in IndexedDB (with in-memory fallback) so creature stat blocks load instantly on subsequent visits while keeping the app bundle small and never auto-fetching copyrighted content
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:46:13 +01:00
Lukas
2793a66672
Implement the 015-add-jscpd-gate feature that adds copy-paste detection to the quality gate using jscpd with a 5% duplication threshold integrated into pnpm check
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 00:13:32 +01:00
Lukas
1c40bf7889
Implement the 010-ui-baseline feature that establishes a modern UI using Tailwind CSS v4 and shadcn/ui-style components for the encounter screen
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 18:36:39 +01:00
Lukas
c4a90c9982
Implement the 007-add-knip feature that adds Knip unused code detection to the quality gate and as a standalone command
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 12:24:27 +01:00
Lukas
0bbd6f27f9
Implement the 006-pre-commit-gate feature that enforces a pre-commit quality gate using Lefthook to run pnpm check before every commit
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 11:44:44 +01:00
Lukas
7dd4abb12a
T001–T006: Phase 1 setup (workspace, Biome, TS, Vitest, layer boundary enforcement)
2026-03-03 12:55:19 +01:00