Redesign review follow-ups R6: the owner's lane 11 pass (10 and 11 Oct, on rc10) #1121
Closed
opened 2026-10-11 19:57:05 +00:00 by claude-bot
·
6 comments
No Branch/Tag specified
main
feat/1328-fill-it-in
feat/1328-fill-frontend
feat/1328-fill-backend
feat/9-foundry-push
fix/9-foundry-live
feat/9-foundry-push-frontend
renovate/celery-5.x
feat/5-foundry-connect
feat/9-foundry-push-backend
feat/9-foundry-push-module
feat/5-foundry-frontend
feat/5-foundry-backend
feat/5-foundry-module
release/v4.8.0-rc1
docs/d341-convert-draft
feat/958-update-to-version
feat/958-convert-sheet
feat/958-pathbuilder-import-frontend
fix/1360-heading-order
feat/958-pathbuilder-import-backend
feat/11-weekly-digest
feat/1341-auto-update
docs/d332-superseded
chore/1345-names-cleanup
feat/1342-mentioned-pages
feat/1328-recipes
fix/1346-pgdg-key
perf/1247-shared-recording-stream
chore/132-gitleaks-allowlist
release/v4.7.1
spike/foundry-module
release/v4.7.1-rc1
docs/decisions-d332-d337
fix/bot-certifi
chore/release-4.7.0
chore/release-4.7.0-rc4
chore/deps-4.7.0
chore/release-4.7.0-rc3
fix/1280-quote-must-say-it
fix/1257-names-row-squeeze
chore/release-4.7.0-rc2
fix/1245-pg-upgrade-count
chore/release-4.7.0-rc1
feat/1257-names-in-prep
feat/1257-be
feat/1257-fe
feat/1257-rating-fixes
design/1328-fill-it-in
feat/1257-name-splits
fix/1326-redis-503
feat/1280-fact-suggestions
feat/1280-be
feat/1280-fe
design/1280-fact-suggestions
feat/1279-infobox
feat/1279-be
feat/1279-fe
feat/1321-shelf-copies
design/1279-infobox
feat/1243-table-find
feat/1257-who-rated
feat/1243-prep-drawer
feat/1243-sheet-pickers
design/1243-browse-in-place
feat/1315-hotwords-default
feat/1242-system-filters
feat/1257-more-name-styles
feat/506-leg3-hotwords
design/1242-system-filters
fix/1302-packs-polish
feat/1241-rules-library
design/1241-rules-library
feat/1245-postgres-18
integ/4.6.2
fix/1263-map-ui-2
fix/1263-map-server
fix/1263-map-ui-1
fix/1261-editor-link-menu
fix/1229-axe-4.14-name-mismatch
renovate/axllent-mailpit-1.x
renovate/eslint-monorepo
renovate/authlib-1.x
chore/release-4.6.0
chore/release-4.6.0-rc2
fix/460-rc2-screens
fix/460-rc2-server
fix/release-prerelease-exit
chore/release-4.6.0-rc1
feat/125-campaign-templates
feat/126-calendar
feat/1181-pictures-and-files
feat/1190-event-people
integ/4.6.0
feat/1191-line-of-the-night
feat/1200-starter-packs
chore/bot-multidict-and-playwright-group
fix/1202-this-week-answered-count
fix/122-124-leftovers
fix/1178-get-routes-that-write
fix/1203-journeys-check-names
design/125-campaign-templates
feat/126-calendar-engine
design/126-in-world-calendar
fix/1189-cited-stamp-in-range
fix/1189-v4-looser-check
fix/1189-richer-beats
fix/1113-export-bind-lists
fix/1154-release-notes-by-file
chore/release-4.5.0
chore/release-4.5.0-rc12
fix/1135-wiki-markup-as-text
fix/demo-usage-cost-in-window
chore/release-4.5.0-rc11
fix/1121-sheet-consistency
fix/1121-sheet-5e-terms-and-card-hp
copy/1122-busiest-pages
fix/1121-relevant-choices
fix/1121-wiki-create-npc-save-sheet-links
fix/1029-menu-stays-on-screen
docs/prototype-transcript-bin-wording
fix/1023-editor-save-row-back-scroll
fix/1020-search-exact-first
fix/1020-table-prep
fix/1020-shell-wordmark-footer-bell
fix/1020-wiki-article-party
fix/872-admin-kept-until-phone-tables
feat/l13-milestone-level-waiting
fix/1000-1001-bell-older-setup-context
fix/999-pronouns-in-prompts
fix/l19-other-class-feats
fix/1010-transcript-window-ordinary-confirm
docs/d254-d269-decisions
fix/702-member-search
fix/680-transcript-bin
fix/993-unidentified-prompts
fix/841-redis-timeouts
fix/990-binned-not-exported
fix/830-export-prep-shelf
fix/deps-audit-2026-10-01
fix/877-title-reads
fix/798-audio-received-at
build/lane11-17-j7
build/lane11-16-levelup
build/lane11-14-seams
build/lane11-14-seed
build/lane11-15-start
build/lane11-13-old-block-out
fix/980-review-r3
build/lane11-12-block
build/lane11-8-packs
fix/demo-seed-canonical-names
build/lane11-11-hot-half
docs/l11-decisions
build/lane11-7-convert
build/lane11-10-editing
fix/npm-audit-brace-expansion
build/lane11-9-sheet-page
fix/bot-pyjwt
build/lane11-6-content
fix/lane11-rank-names
build/lane11-2b-language
build/lane11-4-js-evaluator
build/lane11-3-server
build/lane11-5a-pf2e
build/lane11-5b-5e
feat/design-admin
build/lane11-2-evaluator
build/lane11-1-sheet-pieces
build/lane11-0-drawing
fix/943-quest-objectives-fk
fix/prepsheet-shelf-flake
fix/945-leftovers
build/demo-gm-copy
fix/901-email-landings
build/lane10-8-journeys
build/demo-seed-lanes-8-10
fix/887-gm-own-confirmation
build/lane9-5-j1-admin
fix/918-audience-click
fix/useasync-overtaken
ci/939-critical-path
test/937-backend-suite-speed
chore/claude-orchestration
fix/924-xp-gm-only
fix/session-stale-poll
docs/decisions-d239-d242
fix/930-pypdf
build/lane8-journeys
build/925-quest-editor
fix/894-private-page-pictures
build/lane8-p4-drafts
build/lane8-p7-map
build/lane8-p6-handouts-rules
fix/wiki-fixture-names
build/lane10-d227-test-usage
fix/rsvp-horizon-test-tuesday
fix/media-volume-owner
build/lane8-p3-editor
fix/912-unidentified-rename
build/lane8-p5-party-quests
build/lane8-handout-takeback
build/lane10-pickers
build/lane8-p2-article
build/lane8-6-map
build/lane10-7b-email-pages
build/lane8-5-handouts
build/lane10-7a-test-the-bot-pages
build/lane8-p1-pages
build/lane8-4-quests
build/lane8-2b-feeds
build/lane8-3-parties
build/lane8-2a-links
build/lane10-5-commands
build/lane9-6-seed
build/lane10-4b-reactions
build/lane9-4d-pages
build/lane9-4c-pages
build/lane10-4a-posts
build/lane10-3-email
fix/891-web-fonts
build/lane9-4b-pages
build/lane10-6-test-the-bot
build/lane10-2-notify-out
build/lane8-1-wiki-text
build/lane9-4a-frame
design/lane10-drawings
fix/j6-budget
fix/j5-phone-flake
fix/869-test-leaks
fix/843-record-start-followups
build/lane7-all
build/lane6-all
build/lane9-b2-server
chore/changelog-fragments
docs/decisions-d218
build/lane9-a-owner-overview
fix/rule-card-level-label
fix/834-retention-semantics
fix/o3c-record-without-announcement
docs/decisions-d179
docs/decisions-d131-d170
fix/851-commit-before-response
build/lane6-j3-seed
build/lane9-b1-d67-identity
fix/841-blocking-loop
build/lane9-c-backups-audit
fix/vote-race-and-start-commit
fix/recording-announcement
fix/proposal-read-leak
fix/last-admin-guard
build/lane6-p4c-planning
build/lane6-p4b-margin
build/lane6-p4a-sheet
build/lane5-j4-seed
build/lane6-base
build/lane7-pages-talk
build/lane5-pages
build/lane7-pages-safety
build/lane7-p3-safety
build/lane7-p2-notify
build/lane6-p3-planning
build/lane6-p2-history
build/lane6-p1b-items
build/lane7-p1-threads
build/lane5-p6-faces
build/lane6-p1a-sheet
build/lane5-p5-find
build/lane5-p4a-board
build/lane5-p4b-scenes
build/lane5-p3-live
build/lane5-base
build/lane5-p2-cards
docs/lane5-decisions
build/review-r2-wide
fix/review-r1
build/lane5-p1-scenes
build/demo-seed
build/lane4-journeys-j5
build/lane4-page-review-b
build/lane4-page-review-a
build/lane4-page-read
build/lane4-journeys
build/lane4-page-sess2
build/lane4-page-sess1
build/lane4-notes
build/lane4-discord-on-approval
build/lane4-scheduling
build/lane4-versions
build/760-session-number
build/lane4-decisions
build/797-erase-no-regenerate
build/test-race-audit
build/lane3-completions
build/794-dark-only
build/796-titles-scroll
build/791-retention-anchor
build/a11y-sweep
build/shell-followups
build/retention-preview
build/753-backup-readback
docs/d91-d93
build/lane3-j1
build/ci-harness-paths-selftest
fix/useauth-test-race
build/ci-harness-paths
build/777-ai-settings-read
build/lane3-settings-c
build/lane3-settings-b
build/lane3-j6
build/lane3-sessionform
build/lane3-settings-a
build/lane3-members
build/lane3-thisweek
build/lane3-story
chore/87-align-python-3.12
v4.8.0-rc1
v4.7.1
v4.7.1-rc1
v4.7.0
v4.7.0-rc4
v4.7.0-rc3
v4.7.0-rc2
v4.7.0-rc1
v4.6.2
v4.6.2-rc4
v4.6.2-rc3
v4.6.2-rc2
v4.6.2-rc1
v4.6.1
v4.6.1-rc1
v4.6.0
v4.6.0-rc2
v4.6.0-rc1
v4.5.3
v4.5.3-rc1
v4.5.2
v4.5.2-rc1
v4.5.1
v4.5.1-rc2
v4.5.1-rc1
v4.5.0
v4.5.0-rc12
v4.5.0-rc11
v4.5.0-rc10
v4.5.0-rc9
v4.5.0-rc8
v4.5.0-rc7
v4.5.0-rc6
v4.5.0-rc5
v4.5.0-rc4
v4.5.0-rc3
v4.5.0-rc2
v4.5.0-rc1
v4.4.1
v4.4.0
v4.3.0
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.2
v4.1.1
v4.1.0
v4.0.1
v4.0.0
v3.11.4
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.10.0
v3.9.1
v3.9.0
v3.8.0
v3.7.0
v3.6.1
v3.6.0
v3.5.0
v3.4.1
v3.4.0
v3.3.0
v3.2.0
v3.1.0
v3.0.0
v2.1.0
v2.0.0
v1.1.0
v1.0.0
v0.12.0
v0.11.0
v0.10.0
v0.9.1
v0.3.3
v0.9.0
v0.8.0
v0.3.2
v0.3.1
v0.3.0
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
backend
Issue related to the backend
bot
Issue related to the bot
bug
Something is not working
duplicate
This issue or pull request already exists
enhancement
New feature
frontend
Issue related to the frontend
help wanted
Need some help
invalid
Something is wrong
question
More information is needed
recording
Issue related to the recording system
security
Security hardening / vulnerability work
wontfix
This won't be fixed
No labels
backend
bot
bug
duplicate
enhancement
frontend
help wanted
invalid
question
recording
security
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Quest-Board#1121
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the owner's Redesign Review pass over lane 11 (stat blocks and character sheets, #737) on dev (v4.5.0-rc10), 2026-10-10 about 23:00 UTC and 2026-10-11 about 19:25 to 19:55 UTC. All 20 lane 11 pieces are answered: 13 are fine, 7 need a change. The lane is not signed off; the owner's note on it: "Overall, pretty good. Needs more review to fit in overall."
Also asked by the owner on 2026-10-11, alongside this pass: tighten the text inside Quest Board so it is concise. Scope taken here: the lane 11 surfaces these fixes touch; a whole-app copy pass would be its own issue.
Approach: diagnose each (three read-only investigations running), fix on branches, one PR per independent piece, then rc11 to dev for a re-check before the 4.5.0 final.
Diagnoses and plan (2026-10-11, about 20:30 UTC). Session is being reset; this comment is the handover.
All seven were diagnosed by reading the code (nothing run). Paths are relative to
webapp/.Being built when the session was reset (two delegates, each in its own worktree; check
git ls-remote origin 'fix/1121-*': if a branch is missing or incomplete, rebuild from the spec here)Branch
fix/1121-sheet-5e-terms-and-card-hp: items 1 and 7.frontend/src/ui/Derivation/index.jsx:23-27prints each term aslabel value. pf2e labels are bare ("Dex"); the dnd5e definitions bake the number intolabel_expr(backend/app/sheets/builtin/dnd5e/character.jsonsaves 97-98, skills 174/178, XP 227-228, AC 273-278, initiative 326, passive perception 343, attacks 376-378, spell attack/DC 441-457, formula labels HP 310-315 and carrying capacity 398;dnd5e/creature.json136-137, 214-218, 286-289, 321-324). The fixtures pin the baked labels as correct, and the Tam test asserts only "18". pf2e is not affected.Conditions/AddConditioninfrontend/src/pages/sheet/Hot.jsx(used bypages/table/CardHot.jsx:185),ui/Resource,stepsForduplicated atFields.jsx:110andCardHot.jsx:45,knownConditionsinpages/sheet/hot.js:59-76. Today adding a condition is a text field with a datalist. The full lists exist unused indefinition.tables.conditions(dnd5e 15, pf2e 32 withvalued). Build: (a) a visible pick list from that table, typed name kept below; (b) HP steps −5, −1, +1, +5, one sharedstepsFor; (c) "Full HP" onResourcewhen current < max, sending{path:"hp", op:"set", value:max}(notreset, which drops temporary HP). No backend change expected. Decision D292.Branch
fix/1121-relevant-choices: items 2 and 3.pf2e/character.json:1083-1084) does add the feat (StartCharacter.jsx:365-372,AddFromContent.jsx:128-143,sheet_service.py:1496-1590), but the step never shows it: itsfieldsomitfeats, and the "N on the sheet" count readschosenfrom the definition, while it only exists on the server'ssheet.creation.steps[].choose[].chosen(sheet_creation.py:320-322). Each retry adds a duplicate row with no slot or level. The picker (sheet_service.py:2193-2302) filters by kind only; the Heritage chooser lists every heritage. The mini pack has ancestry feats for humans only, so a correct filter shows a dwarf or elf nothing.level_options/feat_why(sheet_levelup.py:1930-2013,871-904) return other classes' feats disabled (D261) and other ancestries' feats as eligible.fields.category, level, owning trait; heritages byfields.ancestry; a hand-typed ancestry falls back to unfiltered); level up omits other-class and other-ancestry feats and keeps, disabled with the reason, feats that are the right class/ancestry but not takeable yet (told to the owner in chat on 11 Oct; not yet confirmed by them); the apply-time refusal stays; dwarf and elf ancestry feats and an elf heritage added to the mini pack; j7 extended.Not started
Item 4 (bug):
frontend/src/pages/wiki/Editor.jsx:523.create()awaitscreateLoreEntrythen navigates while the form is still dirty (dirty = newDirty && !suggested, 351-359); the blocker inhooks/useUnsavedChangesWarning.jsx:160-166stops the editor's own navigation. Affects every GM "new page → Create" where anything was typed. Fix: acreatedstate indirty, set beforenavigate.Editor.test.jsxmounts underMemoryRouter, where blocking is inert, which is why it was missed: add a case undercreateMemoryRouter+RouterProvider(aspages/CampaignStoryline.test.jsx), and a journey step.Item 5 (gap, with a privacy side effect). The generator returns
name, pronouns, occupation, want, secret, voice_cue(backend/app/services/generation_service.py:1385). Both "Save to the wiki" (frontend/src/pages/prep/tools/ResultActions.jsx:80) and "Save as a page, with a block" (prep/tools/Npcs.jsx:81) post only{entry_type:"npc", title, body: npcText(n)}, one flat blob. The create schema already takespronounsandsidebar_fields(backend/app/routers/campaigns.py:205-223, written at 4246-4258). The secret ("Hides: …") lands in the table-visible body of a page with the default audience, so players can read it. Fix, one shared builder for both buttons:pronouns→ the pronouns field;occupation→sidebar_fields: [{label:"Occupation", value}];want→ body under## Wants;voice_cue→ body under## Personality;secret→ body inside:::gm/## Secrets. Check on dev whether pages already saved this way exposed a secret (Thistle in the GM copy is one).Item 6 (mostly discoverability; the review page's instruction was also wrong). The audience picker shows only in Edit mode on a group with
audience_group(frontend/src/pages/sheet/SheetBody.jsx:485-492); in the built-in definitions that is only pf2e's "Campaign notes" and "Private notes" on the Notes tab (pf2e/character.json:1365-1369), and Edit opens on Stats. No group is called "Level & XP": the GM gets per-field Lock links (EditFields.jsx:51-66, 441). There is no sheet-wide control (the backend honoursfield_visibility["*"],sheet_projection.py:4-8, but no UI sets it); whole-sheet reach is the wiki page's audience. Who plays a character is changed in the page editor'sOwnerManager(pages/wiki/Editor.jsx:331, 942) or on Members & characters; "played by …" on the sheet is plain text (SheetPage.jsx:131). Proposed: for a GM, "played by X" links to the page editor, plus one Edit-mode link to the page's audience and player; ask the owner whether they also want a whole-sheet "Who sees this sheet" picker.After the builds
My review plus an independent review of each branch, PRs (standing permission to open; merging on green as before), rc11 to dev with a reseed, the review page's lane 11 gets re-check pieces, then the owner's re-check and sign-off. Then the prod-copy upgrade rehearsal (authorised, Q164), the 4.5.0 final, and prod only on the owner's say. PR #1120 stays held for 4.5.1.
Not done this session, and due first next session: Build Status and the Redesign Review page have not been updated for this pass.
Progress and the owner's answers (2026-10-11, about 20:20 UTC)
Owner's answers on the Questions page (20:17 to 20:19 UTC):
fix/1121-relevant-choices.Branches:
fix/1121-wiki-create-npc-save-sheet-links(items 4, 5, 6): built, reviewed by me, PR #1123, in CI. A review of the first push found that a generated secret containing:::could close the GM block early; fixed in the builder (oneLine: one line per field, leading#dropped, a leading:::escaped as\:::), with tests against a mirror ofwiki_text.MARKER/_scan. I read the parser: it splits on\nonly, after normalising CR, so the collapse covers it.fix/1121-relevant-choices(items 2, 3): built (86e48942); back with its builder after my review for (1) the picker filtered a single capped page of 100 search results, so with full Player Core it could wrongly come back empty: the narrowing moves into the query or pages until filled; (2) D291 was written into the generatedCATALOGUE.mdinstead ofsources/intro.md; (3) the Q167 answer above.fix/1121-sheet-5e-terms-and-card-hp(items 1, 7): still being built.Existing pages with an exposed NPC secret: dev has one, the owner's test page "Thistle" (read-only count of pages whose body has a line starting "Hides: "). Prod was not checked: the read was refused by the session's permission rules; the owner can allow it or run it.
The sheet pages against the rest of the app (Q168): audit findings, 2026-10-11
Read-only, from the code; nothing rendered. Paths under
webapp/frontend/src/. The sheet is not off-token (0 raw colours inSheet.css/Block.css; raw spacing about level withSessionPage.css). Most of what is distinctive is the drawing (tools/feedback-site/static/prototype/lane9.html) ported faithfully, plus a handful of build-only departures.A. Clear inconsistencies, to fix (branch
fix/1121-sheet-consistency, cut after the three fix branches merge, because it touches the same files).remis styled only inside.charsheet(pages/sheet/Sheet.css:102) but used outside it:BlockSection.jsx:95(the wiki article),pages/table/CardHot.jsx:174,183,ui/Resource/index.jsx:24,44. There "Block: …, definition v…", "HP" and "temp N" render at body size. Move.remtoui/base.cssbeside.muted/.faint.SheetPage.jsx:281Level up,:178Edit). The drawing drops Edit to default then (lane9.html:358).SheetPage.jsx:676-709). The drawing has a second row, save line left and actions right; its CSS exists and is dead (.cs__bar,Sheet.css:15-22). Elsewhere: the article's bordered small buttons plus "More" (wiki/Article.jsx:498,512), the session's "Manage ▾". Restore the second row; Versions, Export… and Make a block… under one "More" menu.Sheet.css:46250px,:163190px) do not grow with the type on wide screens (D110); rems.LevelUp'smin-width: 44px→var(--touch).Sheet.css:463,591,615,626), the 2rem temp field (:516). The rest of the kit goes to--touchunder@media (pointer: coarse); the table card already does (Block.css:218-228)..charsheet .rows(Sheet.css:176-191) is.tbl; hand-written screen-reader-only (:206-217,:1064-1070) vs.sr-only;.sc__doneis.cardwith another radius; Dismiss on errors is a bare icon link (SheetPage.jsx:716-728) vs the ghost small Button used elsewhere;Block.css:130uses a viewport media query where the rule is@container app; three off-scale font sizes inBlock.css.B. Drawn that way: asked of the owner (Q170 to Q172), not changed unprompted
SheetPage.jsx:762-771,.wiz), where the article one click away uses underline tabs. Q170..csg--r-2/--sp-3vs.card--r-3/--sp-4; group titles h2 at--step-0, so the page goes from a 36px h1 straight to 15px). Q171.SheetPage.jsx:731-737) is close to a D20 explanatory callout on a frequent page. Q172.StatRow, no tabular numerals on the sheet, the stat block's tracked capitals (a genre convention), 24px pips (commented as deliberate), the whole-card GM tint vs the GM chip.Needs a render to settle (journeys stack)
The header with a level waiting as GM at 1280; the title row and a 44px bump on the conditions row at 390; column count at 2560; the GM-tinted card in dark at 820; an article with a creature block; a table card with HP.
Merged (owner: "Yes, please merge when green", 2026-10-11): PR #1123 (items 4, 5, 6) and PR #1124 (items 2, 3; head
82fa9ed3, with the level-up scan bounded at 1,000 candidates and the level and already-on-the-sheet checks in the query, after a review flagged the unbounded paging). Both passed all 14 CI jobs.PR #1125 (items 1, 7; D292) passed CI, was brought up to date with main (the D291 and D292 rows both kept in
sources/intro.mdandCATALOGUE.md) and is scheduled to merge when its checks pass again.Part A of the consistency audit is being built on
fix/1121-sheet-consistency(six fixes; based on the #1125 branch). Part B waits on Q170 to Q172.Still owed before rc11: a render check of the changed pages on the journeys stack (nothing in these PRs has been looked at in a browser), and the count of already-saved NPC pages with a readable secret on prod (dev has one, "Thistle").
Done and on dev in v4.5.0-rc11 (2026-10-12, about 01:50 UTC)
Merged: #1123 (items 4, 5, 6), #1124 (items 2, 3; Q167, D291), #1125 (items 1, 7; D292), #1127 (the sheet brought into line: the audit's fixes plus Q170 tabs D293, Q171 group titles D294, Q172 no read-only banner D295). Release PR #1131, tag
v4.5.0-rc11, three images published.#1127, after a render on the journeys stack (35 screenshots, desktop, phone, tablet dark), also fixed what the render showed: a reader outside the party saw empty Attributes and Skills cards and a withheld hero-point pool drawn as full (the server now sends a
withheldlist of field paths, and the page draws no withheld field, no empty card and no empty tab; "Nothing on this sheet is shared with you." when nothing is); the Add a condition dialog was too tall on a phone; "Sailing Lore Lore" (awithout_suffixexpression function in both evaluators, and creation stores the subject without "Lore"). A second render confirmed the three. Left as they are: the sheet's tabs wrap to two rows on a phone, as an article's would with labels this long; a gap under the More row on a sheet with nothing shared; the table card at desktop width keeps HP behind "Show more".Dev: backup
questboard_manual_20261012T014641Z.dump, checkout of the tag, images pulled, every service healthy,/api/metareports 4.5.0-rc11, demo data rebuilt with--reset(which removed the owner's test page "Thistle", the one dev page with a readable Instant NPC secret), no errors in the backend or worker logs after the deploy. The built-indnd5e-character,dnd5e-creatureandpf2e-characterdefinitions were refreshed in place by the deploy (updated 01:49 UTC, no failed fixtures).Not verified: no 5e sheet has been looked at in a browser (the journeys seed has none); the AC line is confirmed by the fixture and a page test only. Prod has not been checked for pages saved by the old Instant NPC path (the read was refused by the session's permission rules).
Waiting on the owner: the re-check pieces on the Redesign Review page (twelve at the end of lane 11) and the lane 11 sign-off. This issue stays open until then.
Signed off. The owner re-checked on dev (v4.5.0-rc11) on 2026-10-12, 16:06 to 16:15 UTC: all twelve
rc11-l11-*pieces are marked "Looks right", and lane 11 is signed off with the note "I think you nailed it. Nice work!". All twelve lanes are now signed off.From the same pass, tracked elsewhere:
rc11-l1-wording): on the #1136 branch.rc9-l9-usage, marked change): the page covers 30 days and the demo seed's costed row sits on The Salt Crown's months-old session, so it can never show. A seed fix is onfix/demo-usage-cost-in-window.Closing: everything in this issue is merged, on dev and accepted.