V1.11.1: HP and money are the DM's to change

- A player can no longer heal or hurt their own character: the Damage,
  Heal and Temp HP controls on the sheet are the DM's, and the server
  refuses the change from anyone else. Players still roll their own
  death saves.
- A player can no longer add money to their own purse or write it off:
  recording a gain or a spend is the DM's, in any coin or in cash, on
  the sheet and on the server.
- Players still exchange gold, silver and copper on the sheet, give
  money to another character, and buy from or change money with an NPC.
- All packages at version 1.11.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 09:05:24 +02:00
co-authored by Claude Opus 5.5
parent 0124e3bc53
commit b82084276a
8 changed files with 85 additions and 66 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
"version": "1.11.0",
"version": "1.11.1",
"type": "module",
"scripts": {
"dev": "vite",
+16 -16
View File
@@ -485,7 +485,8 @@ export function CharacterSheetPage() {
onError={(err) => setFormError(extractErrorMessage(err))}
/>
{canEdit && (
{/* HP is the DM's to change; a player reads it. */}
{isDM && (
<div className="flex-row mt-sm flex-wrap">
<NumberInput
min={1}
@@ -515,20 +516,18 @@ export function CharacterSheetPage() {
/>
</label>
{/* Armor is an equipped item now; this is the DM's own adjustment on top. */}
{isDM && (
<label className="flex-row gap-sm" title="Added to AC on top of what equipped gear gives. Can be negative.">
Extra AC (DM) <InfoTip term="ARMOR_BONUS" />
<NumberInput
key={`armor:${character.armorBonus}`}
min={-30}
max={30}
keepValue
defaultValue={character.armorBonus}
style={{ width: 70 }}
onBlur={(e) => patchCharacter.mutate({ armorBonus: Number(e.target.value) })}
/>
</label>
)}
<label className="flex-row gap-sm" title="Added to AC on top of what equipped gear gives. Can be negative.">
Extra AC (DM) <InfoTip term="ARMOR_BONUS" />
<NumberInput
key={`armor:${character.armorBonus}`}
min={-30}
max={30}
keepValue
defaultValue={character.armorBonus}
style={{ width: 70 }}
onBlur={(e) => patchCharacter.mutate({ armorBonus: Number(e.target.value) })}
/>
</label>
</div>
)}
@@ -867,7 +866,8 @@ export function CharacterSheetPage() {
change for you: if you are short of a coin, a bigger one is broken. Cash ($) is kept apart: it is never
exchanged for coins.
</p>
{canEdit && (
{/* Recording a gain or a spend is the DM's; a player gives, buys and exchanges. */}
{isDM && (
<div className="flex-row flex-wrap">
<NumberInput
min={1}