Commit Graph

  • 86768842ff Refactor App.tsx from god component to context-based architecture main Lukas 2026-03-19 14:19:58 +01:00
  • 6584d8d064 Add advantage/disadvantage rolling for initiative Lukas 2026-03-18 09:16:04 +01:00
  • 7f38cbab73 Preserve stat block panel collapsed state on turn advance Lukas 2026-03-17 23:23:52 +01:00
  • 2971898f0c Add dark and light theme with OS preference support 0.9.0 Lukas 2026-03-17 13:20:22 +01:00
  • 43780772f6 Improve bestiary icon UX and auto-update stat block on turn change Lukas 2026-03-17 12:48:38 +01:00
  • 7b3dbe2069 Use ghost buttons for turn navigation to blend with top bar Lukas 2026-03-17 12:18:31 +01:00
  • 827a3978e9 Show toast and open source panel when rolling initiative without loaded source Lukas 2026-03-17 12:11:20 +01:00
  • f024562a7d Auto-open stat block panel when adding first bestiary creature Lukas 2026-03-17 12:03:34 +01:00
  • dfef2194a5 Add subtle radial gradient to app background 0.8.1 Lukas 2026-03-16 14:27:38 +01:00
  • 502adca81b Fix layout shift on turn change and restore concentration border width 0.8.0 Lukas 2026-03-16 13:57:02 +01:00
  • 12e8bf6e69 Constrain rename input width to prevent row layout breakage Lukas 2026-03-16 13:50:48 +01:00
  • 472574ac31 Bump border radius tokens for rounder UI surfaces 0.7.9 Lukas 2026-03-16 13:48:23 +01:00
  • f4a7b53393 Restyle dark theme with blue-tinted palette, card glow, and rounded surfaces Lukas 2026-03-16 13:39:44 +01:00
  • 8aec460ee4 Fix production class extraction by replacing template-literal classNames with cn() 0.7.8 Lukas 2026-03-16 12:56:15 +01:00
  • 6e10238fe0 Add filter input to source manager for searching cached sources by name 0.7.7 Lukas 2026-03-16 12:05:45 +01:00
  • b6e882add2 Add explicit text-foreground to ghost and outline button variants Lukas 2026-03-16 11:57:27 +01:00
  • 7a87d979bf Fix native dialog centering and text color 0.7.6 Lukas 2026-03-16 11:55:18 +01:00
  • 02096bcee6 Fix bottom bar clipping on hosted deployment 0.7.5 Lukas 2026-03-16 11:50:59 +01:00
  • c092192b0e Add _copy field to RawMonster, remove noExplicitAny biome-ignore Lukas 2026-03-16 11:31:34 +01:00
  • 4d1a7c6420 Remove noAwaitInLoops biome-ignore by chaining batches with reduce Lukas 2026-03-16 11:24:31 +01:00
  • 46b444caba Refactor combatant row: single-click rename, book icon for stat blocks Lukas 2026-03-15 16:47:02 +01:00
  • e68145319f Add biome-ignore backpressure script, convert modals to native <dialog> Lukas 2026-03-15 16:21:46 +01:00
  • d64e1f5e4a Add integration tests for App.tsx with accessible HP status labels Lukas 2026-03-15 01:46:32 +01:00
  • ef0b755eec Add coverage thresholds for all tested directories, exclude dist from coverage 0.7.4 Lukas 2026-03-14 16:19:56 +01:00
  • 4be816d10f Add test coverage for 5 components: HpAdjustPopover, ConditionPicker, CombatantRow, ActionBar, SourceManager Lukas 2026-03-14 15:53:01 +01:00
  • e531d82d1b Add test coverage for 3 hooks: useEncounter, usePlayerCharacters, useSidePanelState Lukas 2026-03-14 15:38:51 +01:00
  • 5a262c66cd Add test coverage for all 17 application layer use cases Lukas 2026-03-14 15:31:35 +01:00
  • 32b69f8df1 Use Readonly props and optional chaining/nullish coalescing Lukas 2026-03-14 15:13:39 +01:00
  • 8efba288f7 Use String.raw and RegExp.exec, add prefer-regexp-exec oxlint rule Lukas 2026-03-14 14:55:54 +01:00
  • c94c30e459 Add oxlint for type-aware linting that Biome cannot cover Lukas 2026-03-14 14:41:30 +01:00
  • 36768d3aa1 Upgrade Biome to 2.4.7 and enable 54 additional lint rules Lukas 2026-03-14 14:25:09 +01:00
  • 473f1eaefe Exclude agent plan files from version control 0.7.3 Lukas 2026-03-14 13:10:18 +01:00
  • 971e0ded49 Replace ref+tick workaround with proper state in useBestiary Lukas 2026-03-14 12:54:48 +01:00
  • 36dcfc5076 Use useOptimistic for instant source manager cache clearing Lukas 2026-03-14 12:48:35 +01:00
  • 127ed01064 Add self-review checklist to CLAUDE.md Lukas 2026-03-14 12:47:54 +01:00
  • 179c3658ad Use useDeferredValue for search dropdown rendering Lukas 2026-03-14 12:35:38 +01:00
  • 01f2bb3ff1 Move derived encounter flags into useEncounter() hook Lukas 2026-03-14 12:10:44 +01:00
  • 930301de71 Rename fold/unfold to collapse/expand across panel code Lukas 2026-03-14 12:01:13 +01:00
  • aa806d4fb9 Show bulk import toast when panel is folded Lukas 2026-03-14 11:57:34 +01:00
  • 61bc274715 Extract BulkImportToasts component from App.tsx Lukas 2026-03-14 11:57:03 +01:00
  • 1932e837fb Extract PlayerCharacterSection component from App.tsx Lukas 2026-03-14 11:46:28 +01:00
  • cce87318fb Extract useSidePanelState hook from App.tsx Lukas 2026-03-14 11:20:48 +01:00
  • 3ef2370a34 Replace panel mode booleans with discriminated union Lukas 2026-03-14 11:13:23 +01:00
  • c75d148d1e Fix high-severity undici vulnerability via pnpm override Lukas 2026-03-14 11:13:11 +01:00
  • 63e233bd8d Switch side panel to stat block when advancing turns 0.7.2 Lukas 2026-03-13 19:03:11 +01:00
  • 8c62ec28f2 Rename "Bulk Import" to "Import All Sources" and remove file size mention Lukas 2026-03-13 19:01:03 +01:00
  • 72195e90f6 Show toast when roll-all-initiative skips combatants without loaded sources Lukas 2026-03-13 18:58:25 +01:00
  • 6ac8e67970 Move source manager from combatant area to side panel Lukas 2026-03-13 18:40:28 +01:00
  • a4797d5b15 Unfold side panel when triggering bulk import from overflow menu Lukas 2026-03-13 18:33:05 +01:00
  • d48e39ced4 Fix input not clearing after adding player character from suggestions Lukas 2026-03-13 18:30:24 +01:00
  • b7406c4b54 Make player character color and icon optional Lukas 2026-03-13 18:01:20 +01:00
  • 07cdd4867a Fix custom combatant form disappearing when dismissing suggestions 0.7.1 Lukas 2026-03-13 17:30:17 +01:00
  • 85acb5c185 Migrate icon buttons to Button component and simplify size variants 0.7.0 Lukas 2026-03-13 17:14:44 +01:00
  • f9ef64bb00 Unify hover effects via semantic theme tokens Lukas 2026-03-13 16:58:01 +01:00
  • bd39808000 Declutter action bars: overflow menu, browse toggle, conditional D20 0.6.0 Lukas 2026-03-13 16:31:25 +01:00
  • 75778884bd Hide top bar in empty state and animate it in with first combatant 0.5.2 Lukas 2026-03-13 14:34:02 +01:00
  • 72d4f30e60 Center action bar in empty state for better onboarding UX Lukas 2026-03-13 14:29:51 +01:00
  • 96b37d4bdd Color player character names instead of left border 0.5.1 Lukas 2026-03-13 11:52:09 +01:00
  • 76ca78c169 Improve player modals: Escape to close, trash icon for delete Lukas 2026-03-13 11:51:58 +01:00
  • b0c27b8ab9 Add red hover effect to destructive buttons Lukas 2026-03-13 11:51:34 +01:00
  • 458c277e9f Polish UI: consistent icon buttons, tooltips, modal backdrop close, and top bar layout 0.5.0 Lukas 2026-03-12 18:47:47 +01:00
  • 91703ddebc Add player character management feature 0.4.0 Lukas 2026-03-12 18:11:08 +01:00
  • 768e7a390f Improve empty encounter UX with interactive add button 0.3.0 Lukas 2026-03-12 10:56:56 +01:00
  • 7feaf90eab Add "custom creature" option to bestiary suggestions dropdown Lukas 2026-03-12 10:45:39 +01:00
  • b39e4923e1 Remove demo combatants and allow empty encounters 0.2.0 Lukas 2026-03-12 10:24:26 +01:00
  • 369feb3cc8 Add deploy step to CI workflow to auto-restart container on tag push 0.1.0 Lukas 2026-03-12 10:19:34 +01:00
  • 51bdb799ae Skip lifecycle scripts in Docker build to avoid missing git Lukas 2026-03-12 10:06:49 +01:00
  • 1baddad939 Remove pnpm cache from setup-node to fix Gitea Actions timeout Lukas 2026-03-12 09:52:16 +01:00
  • e701e4dd70 Run build-image job on host to access Docker CLI Lukas 2026-03-12 09:18:51 +01:00
  • e2b0e7d5ee Exclude .pnpm-store from Biome and add .dockerignore Lukas 2026-03-12 00:46:38 +01:00
  • 635e9c0705 Add Dockerfile, nginx config, and Gitea Actions CI workflow Lukas 2026-03-12 00:32:12 +01:00
  • 582a42e62d Change add creature placeholder to "+ Add combatants" Lukas 2026-03-11 22:50:09 +01:00
  • fc43f440aa Toggle pin off when clicking pin on already-pinned creature Lukas 2026-03-11 22:49:00 +01:00
  • 1cf30b3622 Add swipe-to-dismiss gesture for mobile stat block drawer Lukas 2026-03-11 22:48:48 +01:00
  • 2ce0ff50b9 Always show add-condition and delete buttons on touch devices Lukas 2026-03-11 22:37:04 +01:00
  • 96a7b2d00e Remove pencil icon, use cursor-text to signal editable name Lukas 2026-03-11 22:32:56 +01:00
  • 2d8e823eff Replace single-click rename with double-click, pencil icon, and long-press (#6) Lukas 2026-03-11 22:22:21 +01:00
  • 613bb70065 Consolidate 36 per-change specs into 4 feature-level specs and align workflow Lukas 2026-03-11 21:33:27 +01:00
  • b6e052f198 Overhaul bottom bar: batch add, custom fields, stat block viewer Lukas 2026-03-11 15:27:06 +01:00
  • 460c65bf49 Implement stat block panel fold/unfold and pin-to-second-panel Lukas 2026-03-11 14:18:15 +01:00
  • 95cb2edc23 Redesign top bar with dedicated round badge and centered combatant name Lukas 2026-03-11 12:39:57 +01:00
  • 55d322a727 Fix concentration glow clipping at container edges Lukas 2026-03-11 11:54:22 +01:00
  • 0c903bc9a5 Fix ConfirmButton Enter/Space keydown bubbling to parent row handler Lukas 2026-03-11 10:04:27 +01:00
  • 236c3bf64a Add /issue-to-spec and /sync-issue Claude Code skills Lukas 2026-03-11 10:00:47 +01:00
  • 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 Lukas 2026-03-11 09:51:21 +01:00
  • d101906776 Add /write-issue skill for interactive Gitea issue creation Lukas 2026-03-11 01:21:22 +01:00
  • 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 Lukas 2026-03-11 00:52:29 +01:00
  • 47da942b73 Clean up project documentation and constitution for post-MVP maturity Lukas 2026-03-10 23:48:50 +01:00
  • 94d125d9c4 Implement the 030-bulk-import-sources feature that adds a one-click bulk import button to load all bestiary sources at once, with real-time progress feedback in the side panel and a toast notification when the panel is closed, plus completion/failure reporting with auto-dismiss on success and persistent display on partial failure, while also hardening the bestiary normalizer to handle variable stat blocks (spell summons with special AC/HP/CR) and skip malformed monster entries gracefully Lukas 2026-03-10 23:29:34 +01:00
  • c323adc343 Add spec, plan, and tasks for 030-bulk-import-sources feature Lukas 2026-03-10 22:45:37 +01:00
  • 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 Lukas 2026-03-10 22:46:13 +01:00
  • 99d1ba1bcd Implement the 028-semantic-hover-tokens feature that unifies hover colors across all interactive UI components via six CSS custom property tokens (three text, three background) defined in the Tailwind v4 theme, replacing hardcoded hover classes in 9 component files plus the shared Button primitive with semantic token references so all hover colors can be globally reconfigured from one place Lukas 2026-03-10 19:50:22 +01:00
  • f029c1a85b Implement the 027-ui-polish feature that adds six combatant row improvements (inline conditions, row-click stat block, hover-only remove button, AC shield shape, expanded concentration click target, larger d20 icon) plus top bar redesign with icon-only StepBack/StepForward navigation buttons, dark-themed scrollbars, and multiple UX fixes including stat block panel stability during initiative rolls and mobile touch safety for hidden buttons Lukas 2026-03-10 19:00:49 +01:00
  • d5f7b6ee36 Implement the 026-roll-initiative feature that adds d20 roll buttons for bestiary combatants' initiative using a click-to-edit pattern (d20 icon when empty, plain text when set), plus a Roll All button in the top bar that batch-rolls for all unrolled bestiary combatants, with randomness confined to the adapter layer and the domain receiving pre-resolved dice values Lukas 2026-03-10 16:29:09 +01:00
  • 5b0bac880d Implement the 025-display-initiative feature that adds initiative modifier and passive initiative display to creature stat blocks, calculated as DEX modifier + (proficiency multiplier × proficiency bonus) from bestiary data, shown in MM 2024 format on the AC line Lukas 2026-03-10 11:27:46 +01:00
  • c6349928eb Implement the 024-fix-hp-popover-overflow feature that switches the HP adjustment popover from absolute to fixed positioning with viewport-aware clamping so it stays fully visible and causes no horizontal scrollbar, even when the HP display is near the right edge of the viewport Lukas 2026-03-09 16:50:39 +01:00
  • 24198c25f1 Implement the 023-clear-encounter feature that adds a clear encounter button with confirmation dialog to remove all combatants and reset round/turn counters, with the cleared state persisting across page refreshes Lukas 2026-03-09 13:43:42 +01:00
  • 11c4c0237e Implement the 022-fixed-layout-bars feature that pins turn navigation to the top and add-creature bar to the bottom of the encounter tracker with only the combatant list scrolling between them, and auto-scrolls to the active combatant on turn change Lukas 2026-03-09 11:36:59 +01:00
  • fa078be2f9 Implement the 021-bestiary-statblock feature that adds a searchable D&D 2024 Monster Manual creature library with inline autocomplete suggestions, full stat block display in a fixed side panel, auto-numbering of duplicate creature names, HP/AC pre-fill from bestiary data, and automatic stat block display on turn change for wide viewports Lukas 2026-03-09 11:01:07 +01:00
  • 04a4f18f98 Implement the 020-fix-zero-hp-opacity feature that replaces container-level opacity dimming with element-level opacity on individual leaf elements so that HP popover and condition picker render at full opacity for unconscious combatants Lukas 2026-03-06 15:43:27 +01:00