Skip to content

HOLD: Proposal H — unified display page (design doc + mockups only) - #84

Closed
WilfordGrimley wants to merge 2 commits into
masterfrom
claude/proposal-h-display-design-04bam2
Closed

HOLD: Proposal H — unified display page (design doc + mockups only)#84
WilfordGrimley wants to merge 2 commits into
masterfrom
claude/proposal-h-display-design-04bam2

Conversation

@WilfordGrimley

@WilfordGrimley WilfordGrimley commented Jul 18, 2026

Copy link
Copy Markdown

Superseded by #87 — the owner approved a BUILD GO with an accordion-rail amendment; the design doc + mockups (plus that amendment) now ride in with Step 1's own PR (#87) rather than merging standalone, per instruction. No content is lost: everything here is included there.

Survey + design + static HTML mockups for one page that replaces the
"Choose Art" editor and the PDF export step with a live print-sheet
preview (PagePreview/computeLayout, default 4x2 landscape) plus a
persistent card-details rail carrying the existing per-slot instrument
set (candidate picker, confirm affordance, attribute chips, requested-
printing badge, bleed override, artist line, slot actions).

Zero feature code — design doc, five breakpoint mockups, and their
README only. Build not started; awaiting owner review.
Owner amendment: the rail's instruments are collapsible sections built
from the existing AutofillCollapse component (same one PDFGenerator's
settings groups already use), not a flat stack. Always-visible header
(identity, requested-printing badge, Confirm? affordance) sits outside
the accordion as status; Choose Image opens by default, Attributes/
Print Options/Artist/Slot Actions collapse by default.

Updates the design doc's §2 (new amendment subsection + ASCII diagram),
§4.2-4.4 (accordion-aware wording), and §5's component mapping table,
plus all 5 mockups + shared.css to render real open/collapsed accordion
sections instead of a flat instrument stack.
WilfordGrimley added a commit that referenced this pull request Jul 18, 2026
* Add Proposal H: unified display page design doc + mockups (HOLD)

Survey + design + static HTML mockups for one page that replaces the
"Choose Art" editor and the PDF export step with a live print-sheet
preview (PagePreview/computeLayout, default 4x2 landscape) plus a
persistent card-details rail carrying the existing per-slot instrument
set (candidate picker, confirm affordance, attribute chips, requested-
printing badge, bleed override, artist line, slot actions).

Zero feature code — design doc, five breakpoint mockups, and their
README only. Build not started; awaiting owner review.

* Proposal H amendment: rail as an AutofillCollapse accordion

Owner amendment: the rail's instruments are collapsible sections built
from the existing AutofillCollapse component (same one PDFGenerator's
settings groups already use), not a flat stack. Always-visible header
(identity, requested-printing badge, Confirm? affordance) sits outside
the accordion as status; Choose Image opens by default, Attributes/
Print Options/Artist/Slot Actions collapse by default.

Updates the design doc's §2 (new amendment subsection + ASCII diagram),
§4.2-4.4 (accordion-aware wording), and §5's component mapping table,
plus all 5 mockups + shared.css to render real open/collapsed accordion
sections instead of a flat instrument stack.

* Proposal H, Step 1: /display route shell behind a feature flag

New route (docs/proposals/proposal-h-unified-display-page.md's §6
migration plan, step 1), gated off by default via
NEXT_PUBLIC_UNIFIED_DISPLAY_ENABLED:

- Top toolbar: page N of M pagination, Fronts/Backs toggle (reuses
  the existing frontsVisible view setting), a small live subset of
  print settings (paper size, bleed edge, guides) driving the real
  computeLayout() the sheet renders from, and a working link to the
  classic editor's Print tab (full inline export is Step 3).
- Live sheet: PagePreview/computeLayout reused as-is, paginated across
  the whole deck (not just page 1, unlike PDFGenerator's fast preview)
  via a new displayPagination.ts helper that preserves (face, slot)
  identity - CardSelectionModeToPaginator discards that, which this
  page's click-to-select needs. Only the current page's slots are
  resolved to thumbnail URLs; PagePreview gained optional
  onSlotClick/selectedSlotIndex props (unused by existing callers) and
  loading="lazy"/decoding="async" on its <img>.
- Rail: always-visible status header (identity, requested-printing
  badge) + a 5-section AutofillCollapse accordion per the owner's
  amendment (Choose Image open by default, Attributes/Print
  Options/Artist/Slot Actions collapsed), each section a labeled stub
  naming which Step 2 PR fills it in.

Moved the generic `chunk` helper from PDF.tsx to common/utils.ts
(PDF.tsx now re-exports it for its existing callers) - importing
anything from PDF.tsx pulls in @react-pdf/renderer's ESM-only bundle,
which broke Jest for the new pure pagination helper's own test.

Includes the Proposal H design doc + mockups (previously PR #84) per
this task's instruction that they ride in with this step's flag.

Tests: displayPagination.test.ts, featureFlags.test.ts, PagePreview's
new click/selection/lazy-load cases, and tests/DisplayPage.spec.ts (a
real Playwright suite exercising the flagged route end to end - empty
state, live sheet + pagination, slot select, accordion defaults +
reset-on-reselect, Fronts/Backs toggle, Guides toggle). Full existing
Jest suite (315 tests) and a cross-section of PDF/editor Playwright
specs both pass with zero regressions.

* Apply prettier formatting to Step 1's new/changed files

* Fix CI: reformat with the CI-pinned prettier@2.7.1, not a newer local one

PR #87's "Formatting and static type checking" check failed - the
pre-commit-pinned prettier@2.7.1 disagreed with whatever newer
prettier version frontend/node_modules resolved for my earlier
`npx prettier --write` pass (docs/lessons.md's "trust CI history, not
a matching local venv" lesson, prettier edition). Installed pre-commit
and ran its actual prettier hook against every affected file; content
unchanged, only line-wrapping/formatting. Verified idempotent (a
second run reports zero further changes) and re-ran tsc/eslint/jest
(315/315) to confirm no corruption per docs/lessons.md's prettier@2.7.1
non-idempotency entry.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants