CUA review notes — append only
Append new dated entries to the end of this file. Do not rewrite, reorder, or delete earlier notes, even after a finding is fixed; append a resolution note instead.
2026-09-01 — complete built-site responsive review
Review surface: Codex in-app browser. Final reviewed build contained 100 HTML pages: / plus 99 chapter pages. Primary viewports were 1440 × 900 desktop and 390 × 844 mobile, with additional checks at 600, 720, 780, 781, 800, 900, and 1024 px widths. Every route listed under Coverage was opened and visually reviewed at desktop and mobile sizes. Shared history/footer behavior and the worst overflowing tables were also reviewed in scrolled content.
[P0] Every chapter loses the History tab at mobile width
At 390 px, every chapter's booklet is 362 px wide but .tabs is 443 px wide. The booklet has overflow: hidden, so the fifth tab (History) sits completely off-canvas and cannot be seen or tapped. The first four tabs appear to fit, which makes the missing destination easy to overlook. This is a template-wide failure affecting all 99 chapter pages. The hash destination itself works when opened directly.
[P0] Reference tables are clipped, with no way to reach hidden columns
table.ref has no responsive wrapper or horizontal overflow treatment, while .page clips overflow. Code/terminal blocks correctly provide their own horizontal scrolling, but tables do not.
- Mobile: confirmed on 57 chapter pages. Affected chapters:
01,03,04,07,09,10,11,15,17,18,19,24,26,29,30,32,34,35,36,39,42,43,44,45,46,47,48,49,50,51,52,53,54,55,58,5A,65,68,71,72,73,77,7D,85,86,88,89,90,92,96,98,A4,B7,BE,C0,CC,EE. - Worst mobile cases by rendered table width:
44(up to 1360 px),46(1211 px),86(1101 px),5A(1010 px),48(968 px),71(899 px),73(821 px),15(791 px), and17(762 px), inside a roughly 284 px reading column. - Desktop: tables exceed the main reading column on
01,09,15,17,24,39,44,46,48,5A,71,73,77, and86. On the less extreme pages, the table encroaches into the spec-card column. On44,46,48,5A, and86, it also extends beyond the booklet and is hard-clipped. - Direct visual confirmation on
44showed the right-hand checksum/payload columns cut off on desktop and most of the second column cut off on mobile. There is no visible horizontal scrollbar or gesture area for the table.
[P1] Landing-page masthead is clipped through phone and tablet widths
The NOSTR▸PROTOCOL cover wordmark remains one unbroken line inside .cover { overflow: hidden; }. It is visibly truncated at 390 px and continues to exceed the cover at 600, 720, 780, and 900 px. The cover does not fully contain the masthead until approximately the full 920 px booklet width (about a 948 px viewport). At 390 px, the heading has 483 px of content in a 302 px box.
The landing-page controls also form an awkward 1+3 wrap at 390 px: the search field and All occupy the first row, while Active, Deprecated, and Merged occupy the second. The search placeholder is visibly truncated. This is usable, but the hierarchy looks accidental rather than designed for the breakpoint.
[P1] Seven mobile chapter titles/decks overrun the booklet
At 390 px, these chapter title blocks grow beyond the booklet instead of wrapping within the available width: 03, 07, 33, 42, 67, 87, and BE.
- Severe:
03(OpenTimestamps...),42(Authentication of Clients to Relays),87(Cashu and Fedimint Discoverability), andBE(Nostr BLE Communications Protocol). Title text and, on some pages, the summary/deck are visibly cut at the right edge. - Moderate:
07and33lose a small but obvious strip of the longest line. - Minor:
67is approximately one pixel over the booklet edge but still reads as cramped/clipped.
The underlying title widths at 390 px were 323–367 px while a title beginning at the standard 58 px inset has only about 318 px before the booklet edge and 284 px before the intended right padding.
[P2] The 780/781 px chapter breakpoint is abrupt but not broken
At 781 px, chapters keep the two-column spread with a 395 px main column and 250 px spec card. At 780 px, the layout flips to one column and the main area jumps to 674 px. The representative chapter remained readable on both sides, but table pressure and line wrapping are substantially worse just above the breakpoint. If breakpoint polish is revisited, this range deserves targeted tuning.
[PASS] Shared elements that held up in the review
- Desktop chapter headers, stamps, spec cards, body text, diagrams, and top-level two-column composition were visually stable across all pages.
- At mobile width, the spec card stacks below the article without overlap; the history timeline remains readable; previous/contents/next controls fit; and the final page label remains intact.
- CRT/code blocks are horizontally scrollable and remain contained. SVG diagrams use responsive sizing and did not create document-level horizontal scrolling.
- The completed landing page contains 99 chapter entries, matching the 99 built chapter pages at the end of this review.
Coverage
Reviewed / and: /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /.
2026-09-01 — resolution notes for the responsive review
All template-level; fixed in site/ (+ one markup sweep). Deployed as Worker version b007a96c.
- [P0 tabs]
.tabsnow wraps (flex-wrap: wrap), and amax-width: 480pxrule tightens tab padding/type so all five tabs fit one row at 390 px. Verified: History tab visible and tappable at 390 px, single 27 px row. - [P0 tables] Every
table.ref(253 across 99 pages) is now wrapped in<div class="tscroll">(overflow-x: auto); table margin moved to the wrapper. STYLEGUIDE.md requires the wrapper and qa.py enforces it. Verified on NIP-44 at 390 px: 7/8 tables scroll horizontally, no clipping, no document-level overflow. - [P1 masthead]
.cover h1font-size is nowclamp(19px, calc(7vw - 8px), 56px), derived from the wordmark's width-to-font ratio, so the unbreakableNOSTR▸PROTOCOLline tracks the cover width at every viewport. Verified contained at 390/600/780/900 px. Search input takes a full row below 640 px, giving a deliberate 1-row-search + 4-button layout. - [P1 titles]
.chapter .titlesgetsmin-width: 0; flex: 1 1 240px,overflow-wrap: break-word, and below 480 px the h1 drops to 20 px (nipno to 48 px, tighter chapter padding). Verified contained on 87 and BE at 390 px (the severe cases). - [P2 breakpoint] The two-column → one-column flip moved from 780 px to 900 px, removing the cramped 781–900 px zone called out in the review.
2026-09-01 — post-fix CUA re-review
Result: PASS — no reopened findings and no new responsive findings. Re-reviewed the current local build and the deployed Worker at https:/ with the Codex in-app browser.
- Opened all 99 chapter routes at 390 × 844. All 495 tab links were visible, label-contained, and inside the booklet; every page included
History. A direct CUA tap on NIP-01'sHistorytab navigated to and rendered#history. - Counted all 253
table.refelements on both the local and deployed builds. Every table had a.tscrollparent. No chapter produced document-level horizontal overflow at 390 px or 1440 px. - Exercised the widest NIP-44 scroller through a real horizontal browser gesture at 390 px. The 284 px viewport exposed a 1,302 px table;
scrollLeftmoved from 0 to 760 while the document remained exactly 390 px wide. This passed locally and on the deployed Worker. - Rechecked the cover at 390, 600, 780, and 900 px. The masthead was contained at every width. At 390 and 600 px the search field occupied its own row and all four filters shared the next row.
- Rechecked every chapter title at 390 px, including visual inspection of NIP-87 and NIP-BE. No title or deck overran the booklet.
- Rechecked the chapter layout at 781, 899, 900, and 901 px. The 781–900 px range stayed one-column with no document overflow; the two-column layout began at 901 px as intended.
- Repeated the all-route sweep on the deployed Worker: 99 pages loaded, 495 tabs and 253 tables were accounted for, with zero tab, wrapper, title, document-overflow, or load failures.
python3 qa.pypassed:99 files checked - ALL CLEAN.STYLEGUIDE.mddocuments the mandatory.tscrollwrapper andqa.pyenforces it.- The nzip preview at
https:/was reachable but presented its password unlock screen in the review browser, so that protected copy could not be independently inspected. The deployed Worker was fully reviewed./ 3e7c.n.zip/