- In a battle in progress, whoever is on turn is at the top of the list
with those still to act beneath them. Each combatant whose turn has
passed drops to a "Next Round" section at the bottom, and a new round
puts everyone back.
- All packages at version 1.8.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A dead character, or a monster or NPC at 0 HP, is out of the fight: the
server no longer sends it to players, target marks included, and it has
no turn. Healing or reviving brings it straight back.
- The DM's screen leaves the fallen out too until "Show dead" is ticked,
which lists them in a group of their own, marked hidden.
- Players see dead characters by name in a Fallen box. The player whose
character is on turn in a battle gets "Try revive" there if that
character is on their feet and knows a spell that revives, at a level
they can cast. The dead come back at 1 HP.
- Spells have a "Revives" tick in the campaign's spell list. Revivify and
Raise Dead have it, in the library and in existing campaigns.
- A dead character cannot be added to an encounter until revived.
- All packages at version 1.8.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- In a battle under way, whoever is on turn has no Target button on their
card, and the server refuses a target list that includes them.
- All packages at version 1.7.2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The amount an area attack adds to each target's AC per extra target is
now set per campaign, from 0 (no penalty) to 10. It starts at 2, so
existing campaigns behave as before.
- The DM changes it in the campaign settings; the attack bar and the
targets' cards use it.
- All packages at version 1.7.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- More than one combatant can be marked as a target; the Target button now
adds to the targets instead of moving the mark.
- Several targets make an area attack, which is harder to land: every
target's AC counts as 2 higher for each target beyond the first. The
attack bar shows the AC to beat, and each target's card names the penalty.
- The DM unticks any target the roll missed, then applies one total: split
evenly between those hit (remainder to the first marked), or the full
amount to each. Each share is shown before it is applied.
- The single target column from V1.6.0 becomes a list, carried over by the
migration.
- All packages at version 1.7.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One combatant at a time can be marked as the target with the Target
button on its card. The DM can mark anyone at any time; a player can
while their own character is on turn in a battle.
- The target's card is outlined for everyone and names who is going for it.
- While a target is marked the DM gets an attack bar above the list: who is
attacking whom, the target's AC and HP, the attacker's weapons, spells or
monster attack, and a box to apply damage or healing straight away.
- The target is cleared when the turn or round moves on, when the encounter
begins, ends or is reopened, or when the target is removed.
- All packages at version 1.6.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A character at 0 HP is Dying, Stable or Dead. The tallies live on the
character, so the sheet and the encounter card always agree.
- Death saves are typed in as the d20 showed: 10 or more succeeds, less
fails, a 1 fails twice, a 20 puts the character back up at 1 HP. Three
successes make them stable; three failures kill.
- Damage taken at 0 HP is a failed save and ends stable. A blow that leaves
as much as max HP still to take after reaching 0 kills outright.
- Healing from 0 clears the tallies. The dead cannot be healed; the DM
revives them at 1 HP.
- A player rolls and stabilises for their own character; the DM for anyone,
and only the DM sets tallies by hand or revives.
- The party overview, campaign list and quick stats show the state.
- All packages at version 1.5.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A character's purse holds gold, silver and copper as separate coins:
1 gold = 10 silver = 100 copper. The money log records each entry's coin.
- Spending and giving are paid from the whole purse: coins of the kind
named go first, then the nearest bigger coin is broken (change comes back
in as few coins as possible), then smaller coins are counted out. A
payment is refused only when the whole purse isn't worth enough.
- Exchange converts one coin into another at the fixed worth.
- Encounter rewards and gifts between characters can be in any coin; the
party overview shows the whole purse.
- All packages at version 1.4.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Quests take initiative rolls like battles do; each quest group lists
highest first. The total is roll plus bonus and can exceed 20 (test added).
- Info tooltips are drawn against the viewport, so the party overview
table (or any scrolling container) can't cut them off.
- backend: `npm run deploy` applies migrations and regenerates the Prisma
client in one step; README explains why both are needed on a server.
- All packages at version 1.3.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Hollowcrown: The Rift Between Worlds as its own seed (npm run
seed:hollowcrown), built from the campaign book: pools, 58 monsters,
57 NPCs, 28 locations, 72 encounters with rewards, and DM notes. Shared
seeding logic moved to prisma/seedCampaign.js.
- What players can see: only encounters their own character is in; only
the pool entries their character holds (plus starting options while
building); only locations their character has been to; no invite code;
no gold, inventory or money log of other players' characters. Socket
events carry ids only and campaign rooms are members-only.
- Encounters have a location; while one is in progress its characters are
there, and visits are remembered.
- Campaign setting to show players a health bar only for monsters and NPCs.
- Initiative is entered as the d20 roll (1-20) and the bonus is added;
players can enter their own character's roll.
- Number fields enforce their limits when typing, and the API enforces
the same limits.
- Temp HP shows on HP bars and absorbs damage before real HP.
- All packages at version 1.3.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Campaigns: DM can archive/restore; owner can delete. Archived campaigns
move off the main list and stop accepting invite codes.
- Encounters: DM can archive/restore and delete, and arrange the campaign's
own order; the list can also be sorted by name, status, type or date.
Archived encounters are hidden from players' lists.
- Account page with change password (POST /auth/password).
- Seed is now additive (safe on a live database; --reset for the old wipe)
and builds a fuller Aldenfell: earned weapons, item pool, spells, NPCs,
and 28 battle/quest scenes with descriptions, DM notes and rewards.
- Vite preview host config for the deployed site.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Characters
- Builder: pick-then-Next on every step with live preview, Back button,
plain-language help throughout, and "Suggest for me" for ability scores
- Motivation is picked from a list; new steps for special abilities,
background and appearance, all composed from fixed lists and DM-only
to edit afterwards
- Copy a character to another campaign
- Characters can give gold, weapons, items and spells to each other
- Money tracker: gold only changes through a logged ledger
- Fixes: level/XP/location are DM-only, HP stays within 0..max, physical
dice ability rolls, every die is rolled once
Gear
- DM-managed item pool; weapons, items and spells are handed out by the DM
- Starting-option flag per pool entry
- Gear levels 1-9 per held copy with a damage ladder, growth rate and
starting level; spells gated by spell level with a fixed damage value
- Spell library carries default damage; damage is picked from a list
Encounters
- Battle and NPC quest modes, turn tracking, scene description, DM notes
- NPCs, richer combatant cards, conditions from a list
- Rewards (gold, weapons, items) lined up and awarded, with gold splitting
- Character HP is shared between the sheet and the encounter
- Monster stat blocks and NPC secrets are never sent to players
Other
- Dice roller on every page
- Docs for characters, weapons, spells, items, encounters, monsters and
NPCs, with full lists generated from the data (npm run docs:lists)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Seed now resets the database and seeds the Aldenfell campaign from the
campaign book: admin DM user, default weapons, locations, bestiary,
pre-built encounters, and DM/shared notes
- Default weapon/spell/monster library, character profile fields,
locations and dice mode (new migration)
- Party overview page, pagination, info tips, build preview calc
- Remove stale demo-login hint; notes preserve line breaks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>