v1.4 release QA item
This is the release gate for what automated coverage cannot reach. It sits at the intersection of five changes that landed independently: #71 (reader architecture), #72 (citation jump), #73 (excerpt to note), #65 (workspace shell and IA), and the PDF.js major upgrade to 6.3.289 (#124).
What CI already proves — do not re-check these by hand:
What only a human can see: whether the canvas actually renders content, whether the text-layer selection geometry lines up with the visible glyphs, the real keyboard focus order and focus rings, contrast in both themes, and whether the two coordinate paths still agree after a zoom.
Before you start
|
|
| Run it |
npm run dev is fastest. npm start (electron-vite preview) runs the production bundle from out/. |
| Packaged build |
dist/linux-unpacked/knownote launches directly — but it was built before #65, so rebuild with npm run build:unpack first if you want to check the packaged path. |
| Switch theme |
Settings → Theme Mode (light / dark) |
| Fixtures |
test/fixtures/multipage.pdf (3 pages — use this one for jump + highlight + zoom), sample.pdf (1 short page), and sample.docx / headings.docx / sample.html for the non-PDF text-fallback path |
| Prerequisite |
Importing a source is gated on an embedding model being available. With none configured the + button is disabled and you get "no embedding model configured". Either configure a remote embedding connection or let the built-in local model finish downloading (about 134 MB on first use). |
A. PDF chain — #71 / #72 / #73 × the pdf.js 6.x upgrade
Run in order, in one theme to start:
Why A8 is the one that matters. The normalised bbox → pixel conversion and the text-layer character offsets are two independent coordinate paths. Zoom is the only thing that makes them diverge silently, and it is the step a "does a PDF open" check never reaches. multipage.pdf exists for this: page jump, highlight and scale have to vary together before the mistake shows up.
One concrete thing to watch in A2: the packaged smoke run logs Warning: UnknownErrorException: Ensure that the 'standardFontDataUrl' API parameter is provided. That is a known pdf.js warning about standard font data, and the visible symptom would be substituted or garbled glyphs — so A2 is not a formality, it is the check for it.
B. IA and both themes — #65
The five steps in Light, then the same five in Dark:
B7 is not optional. Both themes share one token ladder, and a missing dark value is exactly the kind of defect lint cannot see. A state that is correct in only one theme fails this item.
Also worth a look while you are in B1: the focus-visible ring should be visible on all four surfaces that accept focus — source rows, citation chips, zone wrappers and drag handles.
This is not a #65 or #124 claim
#65 ships on its own tests and #124 was verified on the packaged app. Neither claims its GUI path has been confirmed by hand until this issue passes. Nothing here is a merge blocker for work already merged — it is a release gate.
v1.4 release QA item
This is the release gate for what automated coverage cannot reach. It sits at the intersection of five changes that landed independently: #71 (reader architecture), #72 (citation jump), #73 (excerpt to note), #65 (workspace shell and IA), and the PDF.js major upgrade to
6.3.289(#124).What CI already proves — do not re-check these by hand:
6.3.289really parses a PDF inside the packaged main process (smoke:packaged, 20/20, including text extraction fromtest/fixtures/sample.pdf)knownote-doc://serves bytes by id and 404s an unknown id — through the Document-layer resolver injected in [Refactor] Introduce only the module seams the v1.4 features actually need (Document / Retrieval / Application) #60, on all three platformsWhat only a human can see: whether the canvas actually renders content, whether the text-layer selection geometry lines up with the visible glyphs, the real keyboard focus order and focus rings, contrast in both themes, and whether the two coordinate paths still agree after a zoom.
Before you start
npm run devis fastest.npm start(electron-vite preview) runs the production bundle fromout/.dist/linux-unpacked/knownotelaunches directly — but it was built before #65, so rebuild withnpm run build:unpackfirst if you want to check the packaged path.test/fixtures/multipage.pdf(3 pages — use this one for jump + highlight + zoom),sample.pdf(1 short page), andsample.docx/headings.docx/sample.htmlfor the non-PDF text-fallback path+button is disabled and you get "no embedding model configured". Either configure a remote embedding connection or let the built-in local model finish downloading (about 134 MB on first use).A. PDF chain — #71 / #72 / #73 × the pdf.js 6.x upgrade
Run in order, in one theme to start:
bboxlands on the correct paragraph — not offset above or below it, and not the whole pageWhy A8 is the one that matters. The normalised
bbox→ pixel conversion and the text-layer character offsets are two independent coordinate paths. Zoom is the only thing that makes them diverge silently, and it is the step a "does a PDF open" check never reaches.multipage.pdfexists for this: page jump, highlight and scale have to vary together before the mistake shows up.One concrete thing to watch in A2: the packaged smoke run logs
Warning: UnknownErrorException: Ensure that the 'standardFontDataUrl' API parameter is provided.That is a known pdf.js warning about standard font data, and the visible symptom would be substituted or garbled glyphs — so A2 is not a formality, it is the check for it.B. IA and both themes — #65
The five steps in Light, then the same five in Dark:
Tab+Enter) with a visible focus ringaria-current), andEscapereturns focus to that chipEscape/ BackCmd/Ctrl+[moves focus into the Library zone andCmd/Ctrl+]into the Notes zone, revealing a collapsed zone firstTabfrom an entered zone moves into that zone's contentB7 is not optional. Both themes share one token ladder, and a missing dark value is exactly the kind of defect lint cannot see. A state that is correct in only one theme fails this item.
Also worth a look while you are in B1: the focus-visible ring should be visible on all four surfaces that accept focus — source rows, citation chips, zone wrappers and drag handles.
This is not a #65 or #124 claim
#65 ships on its own tests and #124 was verified on the packaged app. Neither claims its GUI path has been confirmed by hand until this issue passes. Nothing here is a merge blocker for work already merged — it is a release gate.