Lukas
b7406c4b54
Make player character color and icon optional
...
Clicking an already-selected color or icon in the create/edit form now
deselects it. PCs without a color use the default combatant styling;
PCs without an icon show no icon. Domain, application, persistence,
and display layers all updated to handle the optional fields.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 18:01:20 +01:00
Lukas
91703ddebc
Add player character management feature
...
CI / check (push) Successful in 45s
CI / build-image (push) Successful in 18s
Persistent player character templates (name, AC, HP, color, icon) with
full CRUD, bestiary-style search to add PCs to encounters with pre-filled
stats, and color/icon visual distinction in combatant rows. Also stops
the stat block panel from auto-opening when adding a creature.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:11:08 +01:00
Lukas
b39e4923e1
Remove demo combatants and allow empty encounters
...
CI / check (push) Successful in 45s
CI / build-image (push) Successful in 28s
Empty encounters are now valid (INV-1 updated). New sessions start
with zero combatants instead of pre-populated Aria/Brak/Cael.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 10:24:26 +01:00
Lukas
1cf30b3622
Add swipe-to-dismiss gesture for mobile stat block drawer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 22:48:48 +01:00
Lukas
b6e052f198
Overhaul bottom bar: batch add, custom fields, stat block viewer
...
Unify the action bar into a single search input with inline bestiary
dropdown. Clicking a dropdown entry queues it with +/- count controls
and a confirm button; Enter or confirm adds N copies to combat.
When no bestiary match exists, optional Init/AC/MaxHP fields appear
for custom creatures. The eye icon opens a separate search dropdown
to preview stat blocks without leaving the add flow.
Fix batch-add bug where only the last creature got a creatureId by
using store.save() instead of setEncounter() in addFromBestiary.
Prevent dropdown buttons from stealing input focus so Enter confirms
the queued batch.
Remove the now-redundant BestiarySearch component.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 15:27:06 +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
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
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:29:34 +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
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
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 16:29:09 +01:00
Lukas
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
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 13:43:42 +01:00
Lukas
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
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 11:01:07 +01:00
Lukas
e59fd83292
Implement the 018-combatant-concentration feature that adds a per-combatant concentration toggle with Brain icon, purple border accent, and damage pulse animation in the encounter tracker
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 14:41:59 +01:00
Lukas
febe892e15
Implement the 017-combat-conditions feature that adds D&D 5e status conditions to combatants with icon tags, color coding, and a compact toggle picker in the encounter tracker
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 11:29:39 +01:00
Lukas
78c6591973
Implement the 016-combatant-ac feature that adds an optional Armor Class field to combatants with shield icon display and inline editing in the encounter tracker
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 10:41:56 +01:00
Lukas
7d440677be
Implement the 012-turn-navigation feature that adds a RetreatTurn domain operation and relocates turn controls to a navigation bar at the top of the encounter tracker
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 23:11:11 +01:00
Lukas
8185fde0e8
Implement the 009-combatant-hp feature that adds optional max HP and current HP tracking per combatant with +/- controls, direct entry, and persistence
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:18:03 +01:00
Lukas
a9c280a6d6
Implement the 008-persist-encounter feature that saves encounter state to localStorage so it survives page reloads
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 16:24:00 +01:00
Lukas
fea2bfe39d
Implement the 005-set-initiative feature that adds initiative values to combatants with automatic descending sort and active turn preservation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 17:26:41 +01:00
Lukas
a9df826fef
Implement the 004-edit-combatant feature that adds the possibility to change a combatants name
2026-03-04 10:05:13 +01:00
Lukas
aed234de7b
Implement the 003-remove-combatant feature that adds the possibility to remove a combatant from an encounter
2026-03-03 23:46:47 +01:00
Lukas
0de68100c8
Implement the 002-add-combatant feature that adds the possibility to add new combatants to an encounter
2026-03-03 23:12:20 +01:00
Lukas
4c2e0a47e6
T012–T016: Phase 3 application + web shell (use case, ports, React hook, UI, README)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 13:11:33 +01:00