v0.47.0 — Character sheet fixes
A consolidation release. v0.46.0 shipped Edit Mode for System 8; this one closes the items that release left unticked, replaces the UI-Overhaul-era artwork editor with the spec'd modal, and clears two pieces of dead weight — an unreachable soft-delete tier and a projection backlog with no way to drain it.
Main article: Character Sheet Overhaul · task list: todo-v2.md · sheet spec: phase-1-character-sheet.md
Undelete UI
- [x] Add a UI to un-soft-delete characters, maps, etc.
- For this release, add the route
/undelete, which shows all undeletable assets. - In a future release we'll integrate the elements of this UI into the campaigns list page, maps list page, etc.
- For this release, add the route
Admin: Data
- [x] Add a page at
/admin/datawhich shows characters that haven't been projected yet, with a button for each to manually trigger projections, and a button to project all. ("Projected" here means server-side power-action derivation — thePOST /api/characters/:id/derive-power-actionsbackfill added in v0.46.0.)
Character Sheet Overhaul — finish System 8 Edit Mode
Items bucketed [0.46.0] in todo-v2.md that did
not land in that release.
- [x] 1e.4 — Delete dead styles in
retroVTT.css. Four blocks, 195 lines, no consumers. - [x] N9 — marked done. Its list was complete; the one omission (an Add picker for Attacks) was answered by Phase A. Unticked by oversight in 0.46.0.
- [x] CC-1 leakage guard, red on
mainsince 0.46.0.sheetLayout.tscarried both banned patterns in one line of prose, explaining that the platform does not branch on the system. The guard reads raw source deliberately.
⛔ Blocked and moved to 0.48.0 — 1e.2 and 1e.3. Both end in retiring the classic sheet: 1e.2 finishes
with "remove the newCharacterSheet feature flag", and 1e.3 deletes the sheet that flag reaches. This
same release adds "Show classic character sheet" to the ... menu, which is a decision to keep it
reachable for at least one more release. Shipping a menu item that promises the classic sheet while
deleting its last route would be incoherent, so they wait together. Both items now live in the
Next Version: v0.48.0 section of CHANGELOG.md.
Character Sheet UI
- [x] Remove the logic that resizes the character context when switching to Build mode. Only the user manually resizing the sidebar should change its size.
- [x] Add "Show classic character sheet" to the
...menu. - [x] Hide the Classic|New toggle in the character sidebar and remove the line containing it.
- [x] Move the
...and "Focus Camera on Token" buttons onto the same row as the Build toggle and the link-status badge. - [x] Hide the vertical strip of controlled characters on the far-left edge of the UI, repositioning the character sidebar to the left edge of the viewport.
New Character page
- [x]
/campaign/:id/characters/newhas no call-to-action. Add a Create button that creates the character and a Cancel button that reverts to history -1, following the style guide's button rules.
Deferred out of this release
Hide the Modifiers section was deferred 2026-08-07 on complexity — "Modifiers" is System 8's CS-1.5
derived-stat panel, rendered by the generic <DerivedPanelSection>, so there is no way to hide it
without either over-reaching or putting system vocabulary into platform code. The item and its full
reasoning moved to the Next Version: v0.48.0 section of CHANGELOG.md.
Artwork modal rework (Phase 1d)
Implement Section 0 of phase-1-character-sheet.md in full — the spec is authoritative over the UI-Overhaul-era editor it replaces.
- [x] 1d.1 — Modal shell + slide mechanic, including the circular "Edit Portrait" pencil button embedded in the top right of the sheet portrait.
- [x] 1d.2 — Source art strip, with the two-column layout and drag-to-assign onto the Token and Portrait drop zones.
- [x] 1d.3 — Source Art Editor sub-modal (Upload from Device / Google Image Search / Paste Image URL / Choose From Library).
- [x] 1d.4 — Tokenization sub-modal.
- [x] 1d.5 — Portrait art sub-modal.