Candidate and release validation receipts
Askr v0.14.0 release — published 2026-11-03
The Human accepted the candidate and authorized v0.14.0 publication on 2026-11-03. It combines the previously interrupted v0.13.4 UI stability work with issues #28–31; v0.13.4 was not a separate release. Semantic state: ACCEPTED. Delivery state: INTEGRATED; publication: PUBLISHED. Issue #27 remains open as enduring design guidance; issues #28–31 were completed with release replies and closed.
| Check | Result |
|---|---|
| Quarto compatibility | ✅ The candidate built on Quarto 1.9.38, 1.10.18 and 1.10.19. |
| Markup and language-selector checks | ✅ Nine static checks covered root and nested attributes. Six deeper checks covered current-language markers with both English and Traditional Chinese project directories. |
| Isolated release render and footer credit | ✅ The isolated full --no-execute build passed for 111 English and 32 Traditional Chinese inputs; the bilingual footer credit identifies v0.14.0. Log: /tmp/askr-014-release-render.log. |
| Version and archive manifests | ✅ Current, new v0.13.3, and older v0.13.2 and v0.3.0 manifests mark v0.14.0 as latest and use the correct archive-local current root. Output contains no _site/archives/. |
| v0.13.3 archive | ✅ The pinned gh-pages snapshot (5bff72779071bd8f1e452d0018644cc741e1a849) contains 245 files and 26,627,319 bytes; all file hashes match. |
| Full Gallery render | ✅ Final quarto render --no-execute completed for 111 English and 32 Traditional Chinese inputs. All 44 rendered extension files matched source in both language outputs; three temporary installed consumers also passed. No scientific notebook or solver execution was performed. Log: /tmp/askr-014-final-render.log. |
| Targeted component renders | ✅ The six final English and Traditional Chinese Callouts, Cards and Figures pages rendered with --no-execute. |
| Final main preview | ✅ On 2026-11-03, frozen candidate output was served over VPN only at Traditional Chinese Figures. The English and Traditional Chinese Gallery pages show the new components. |
| Fresh pages and browser console | ✅ Two fresh pages loaded without console errors. |
| Navigation controls | ✅ Grouped tabsets selected Palace in both groups. On mobile, Pages and Areas opened with Enter and closed with Escape after Bootstrap animation; Search opened and closed with Escape. |
| Language selector | ✅ English and Traditional Chinese links retained their lang/hreflang attributes, and the current-language marker matched the page language. |
| Responsive layout | ✅ At desktop 1280px and tablet 768px, .askr-grid showed two equal columns with a 1rem gap; at mobile 390px it showed one column. Consecutive grids had a 17px desktop gap and 16px mobile gap, with the outer margin remaining 1rem. Independent item heights were preserved. |
| Light/dark label contrast | ✅ In both themes, nested Mermaid edge labels had a readable background and foreground: light background 250 with text 78; dark background 22 with text 212. |
| Tall-figure fit and image viewer | ✅ .askr-figure-fit bounded the figure to 70svh, preserved aspect ratio, and kept the caption outside the image area; ordinary unwrapped images were unchanged. The existing viewer opened the source, zoomed to 125%, and Escape restored focus. |
| Existing component spacing | ✅ Card padding measured 16px on mobile and 21.25px × 25.5px on desktop (1.25rem × 1.5rem at a 17px root size). |
| Independent review | ✅ No actionable findings. |
| Release integration | ✅ Promotion PR #32 merged; main, develop and tag point to ab12c10b61d590c00ce1316f700ed56227027d71. |
| GitHub Release | ✅ v0.14.0 was published on 2026-11-03. |
| Publish and Pages workflows | ✅ Publish run 41588100918 succeeded. Pages run 41588378879 succeeded at 96b6a20f960835efc9b218d20cfcc39034faeca9; the live site is arfiligol.github.io/askr. |
| Fresh tagged installation | ✅ quarto add arfiligol/askr@v0.14.0 --no-prompt installed 44 files matching the tag; the three-page consumer render and nested language-tag check passed. |
| Issue follow-up | ✅ Issues #28–31 each received a completion comment and were closed; #27 remains open. |
Documentation source consolidation
Status: ✅ Local checks completed 2026-10-30.
| Check | Result |
|---|---|
| Archive inventory and identity | ✅ Nine historical sources consolidated under archives/; all 1,925 files match the baseline by SHA-256, and the root version directories are absent. |
| Public routes and full render | ✅ Isolated quarto render --no-execute passed for 111 English and 32 Traditional Chinese inputs after explicitly excluding archives/ from resources. Rendered _site/v*/ files match the baseline except for regenerated askr-versions.json; manifest version labels match the root, with no duplicate _site/archives/. |
| README links and consumer render | ✅ Live documentation links resolve to rendered pages; a minimal README configuration and index rendered in a temporary installed-namespace consumer. |
Earlier UI stability evidence — work carried into v0.14.0
These detailed UI stability receipts were first collected for the interrupted v0.13.4 work. That work was included in v0.14.0; the records below preserve the evidence for those checks. The Human accepted the work, and the release was published and deployed on 2026-11-03 as recorded above.
The Human previously reported page drops and jitter and preferred a short loading wait over an unstable layout. The current source includes the font-readiness race guard and has no cross-document fade or transition option. The tested viewport traces show stable geometry after reveal. The final bilingual build, consumer render, and browser checks passed; the subsequent Human acceptance and release are recorded above.
| Check | Result |
|---|---|
| JavaScript and stylesheet checks | ✅ node --check passed for extracted inline JavaScript; Quarto compiled the SCSS during render. |
| Current bilingual build | ✅ quarto render --no-execute passed for 111 English and 32 Traditional Chinese inputs; all 44 rendered extension files matched current source byte-for-byte. Log: /tmp/askr-layout-final-render.log. |
| Current consumer render | ✅ Two-page consumer --no-execute render passed; log: /tmp/askr-layout-consumer-render.log. |
| Native navigation and console | ✅ Fresh no-fade browser path Prose→Code→Mathematics→Back showed ready=stable on each page, empty console, and no ViewTransition errors. |
| Desktop geometry | ✅ At 1170px, first frame was 97ms with title 94px, main 81px, sidebar 64px; first reveal was 149ms with stable title 130px, main 117px, sidebar 100px. No later geometry change. Trace: /tmp/askr-layout-desktop-frames.json. |
| Mobile geometry | ✅ At 390px, first frame was 652ms with title 107px, main 80px, Pages Y=11.4px; first reveal was 753ms with stable title 158px, main 131px, Pages Y=71.7px. No later geometry change. Trace: /tmp/askr-layout-mobile-frames.json; screenshot: /tmp/askr-layout-mobile-light.png. |
| Traditional Chinese tablet geometry | ✅ At 896px in dark mode, first frame was 527ms with title 112.5px; first reveal was 719ms with stable title 153.5px, main 123px, Pages Y=57.1px. No later geometry change. Trace: /tmp/askr-layout-tablet-frames.json; screenshot: /tmp/askr-layout-tablet-dark.png. |
| Mobile Areas and Pages | ✅ Rapid Areas→Pages settled with Pages only; Escape closed it. |
| Headerless standalone document and anchor | ✅ The headerless document remained reason=stable and visible. For #quote, native smooth scrolling occurred while content was hidden; history return showed content again. Exact scroll position was not measured. |
| Fail-open and no-JavaScript | ✅ An intentionally incoherent padding fixture displayed Loading and released on timeout. With scripts stripped, Prose remained visible. |
| Callout keyboard control | ✅ Enter and Space toggled it; the title remained readable. |
| AEDT controls | ✅ Both groups selected and their content synchronized. |
| Viewers | ✅ Image zoom remained at 125% through modal and inline return, with focus restored. Chart iframe navigation 1→2→1 returned focus to Expand. Search found the image viewer and ten documentation results. |
| Language and Logout | ✅ Version selector Escape behavior and configured language root links were inspected. Logout fixture exposed only its configured href; no authentication flow was exercised. |
| Copy behavior fixtures | ✅ Secure-loopback copy showed Copied! and reset. An injected permission denial showed a permission message and actual manual source; a missing source showed only the unavailable-source message and no textarea. With Clipboard API unavailable, secure loopback showed the manual-copy message, while VPN HTTP showed the insecure-context message and HTTPS guidance. The code button on the same missing-API fixture showed Copied! through the existing execCommand path. |
| Git delivery | ✅ Integrated and released as v0.14.0; exact main, tag and deployment identities are recorded above. |
| Human acceptance | ✅ The Human accepted and authorized publication on 2026-11-03; see the release receipt above. |
| Release and publication | ✅ Published and deployed as v0.14.0 on 2026-11-03; see the release receipt above. |
Limits and follow-up
The browser clipboard showed Copied!, but actual paste was not verified in this turn because the CUA virtual clipboard was empty. Prior source-payload evidence remains separate from this observation. Controlled fixtures verified the secure-context and unavailable-API messages, but the CUA API sometimes allowed actual copying over HTTP; the real HTTP clipboard outcome remains inconclusive. Reduced-motion behavior was checked in source/configuration, but the OS preference was not toggled, so runtime suppression remains unverified.
These frame measurements are observations for the tested viewport and routes, not universal performance guarantees.
The iframe/Plotly message reproduced in the minimal fixture documented at /tmp/askr-observer-repro/README.md, without Askr or Quarto; public source hashes matched. The exact runtime stack is unavailable, so the cause remains unresolved. This does not establish a browser bug or a fix. Native full-page navigation still reloads HTML. The requested behavior is listed in the current section of PLAN.md.
Askr v0.13.3 — Page List current-page highlight — 2026-10-28
Semantic state: ACCEPTED. Delivery state: CANDIDATE. The Human authorized publication of the accepted Page List highlight.
| Check | Result |
|---|---|
| Human scope | ✅ Highlight only the current Page List item with a theme-aware tint and semibold label. |
| v0.13.2 archive source | ✅ Published Pages commit ccac30acfab164ff2f8ba4db9be7efef7d5beb1a. |
| Archive contents | ✅ 244 files, 26,612,518 bytes copied to v0.13.2/; .nojekyll and nested version directories excluded, matching prior archive layout. |
| Archive SHA-256 manifest | ✅ 7bd39706a24f6385ec9dd0704e4929970bb6279e37a3940d5a1d4636c2001b67; path list: /tmp/askr-v0132-archive-paths.txt. |
| Archive identity | ✅ All 244 archived files match the published source bytes exactly. |
| Default full-site render | ✅ Passed for 111 English and 32 Traditional Chinese inputs; log: /tmp/askr-v0133-render.log. |
| Light/dark Page List | ✅ The Versions page showed the current item with weight 600, no box shadow, and a 10% link tint in both themes. Screenshots: /tmp/askr-docs-tint-light.png and /tmp/askr-docs-tint-dark.png. |
| Mobile Page List | ✅ Existing review confirmed the native current-page state and 48px row height. |
| Remaining release checks | ⏳ Lead: main CI, fresh consumer installation from the released tag, and publication. |
Askr v0.13.2 — filename code frames and release documentation — 2026-10-28
Semantic state: ACCEPTED. Delivery state: PUBLISHED.
| Check | Result |
|---|---|
| Human scope | ✅ The Human accepted the filename-code visual design and requested publication. |
| Filename code QA | ✅ Existing dark-mode browser review at 390px and 841px confirmed actual Copy/paste, callout collapse, and one shared filename/source frame. |
| Light desktop page | ✅ Lead served the candidate at http://10.20.0.2:4614. At 1280×720, the English Code page had no console errors; document client and scroll widths were both 1265px at innerWidth 1280px. Screenshot: /tmp/askr-v0132-desktop-light.png. |
| Documentation sources | ✅ The native footer guide and bilingual HTML License pages are present from 0beff39; Safari HTTP-preview clipboard guidance is present from 85708df. Copy runtime behavior is unchanged. |
| v0.13.1 archive | ✅ Root verified 241 files (26,374,137 bytes) from deployed gh-pages commit bff50282f12d71dfb9ebaa34f8c6979160230452; hashes match. |
| Gallery render | ✅ Clean render completed for 111 English and 32 Traditional Chinese inputs. |
| Publish workflow | ✅ Main Publish run 40632894264 succeeded at 46e01384169b40b4c583ea7501331e12f51cc0ab; Pages run 40633143930 deployed ccac30acfab164ff2f8ba4db9be7efef7d5beb1a. |
| Fresh install | ✅ quarto add arfiligol/askr@v0.13.2 --no-prompt installed 43 extension files byte-identical to the tag; consumer render passed. |
| Public site | ✅ English and Traditional Chinese Code and License pages returned HTTP 200. Root, /v0.13.1/ and /v0.3.0/ manifests identified 0.13.2 as latest. Actual Copy feedback and the single code frame were confirmed. |
Askr v0.13.1 — Copy source spacing hotfix — 2026-10-27
| Check | Result |
|---|---|
| Authorization | ✅ The Human authorized a v0.13.1 spacing hotfix with a preserved v0.13.0 documentation snapshot. |
| Exact release render | ✅ Tree cda42f4298b5e36673f7ee735bef63a53062b49b passed the default clean render: 110 English and 31 Traditional Chinese inputs; log /tmp/askr-v0131-render.log. |
| Source spacing and Copy | ✅ On the VPN-served Gallery at 896×984, all five native code blocks had equal 18px top/bottom padding and their right edges remained at 481px, before the Copy button at 509px. The old 3rem rule measured 51px at 1280px without a leading source newline. Temporary consumer padding was 17px on desktop and 16px at mobile 390px; page client/scroll widths both measured 390px. Long code scrolled inside its 248px viewport over 2537px content. Code showed Copy → Copied! → Copy. Screenshots: /tmp/askr-v0131-gallery-after.png and /tmp/askr-v0131-spacing-mobile.png. |
| Product diff review | ✅ The Lead reviewed only the stylesheet correction and extension version metadata; JavaScript and copy-source payloads were unchanged. |
| v0.13.0 archive | ✅ The Lead preserved 241 files (26,363,129 bytes) from actual published Pages source af627893692ffb4093eafe5664ecd8f367dee81d, excluding nested archives and .nojekyll. All source hashes matched; output differed only in the generated version-selector manifest. |
| Release delivery | ⏳ Lead: main CI, fresh tag installation and public-site verification. |
Native announcement support — v0.12.1 release candidate — 2026-10-26
✅ 2026-10-26: Quarto 1.10.18 rendered a clean published v0.12.0 tree plus the announcement changes, and the Lead inspected Chromium at desktop, tablet and mobile sizes in light and dark themes. The Human authorized the v0.12.1 release on 2026-10-26.
| Check | Result |
|---|---|
| Full v0.12.1 release render | ✅ Default quarto render exited 0 for the exact staged tree 1f62f924ca643296044786916e9d1beafbe6ad90, exported to /var/folders/_1/cyvvhpp52r99jn06g5sfdpmm0000gn/T/askr-v0121-release.o1ewblev: 108 English and 29 Traditional Chinese inputs. The existing two Gallery figure cells and one arithmetic cell ran in each language; no solver ran. Only the known Traditional Chinese translation and local Jupyter warnings remained. |
| Independent consumer | ✅ Four installed-namespace fixtures, each with two pages, rendered with --no-execute: long Chinese above-navbar notice with icon; long English below-navbar notice with dismissal; text-only dismissible notice; and no announcement. |
| Bilingual Gallery | ✅ Non-executing render passed for 108 English and 29 Traditional Chinese inputs. The temporary staging initially omitted shared bibliography/image files; staging was corrected to match the existing build helper, then the render passed. No scientific computation ran. |
| Original overlap and correction | ✅ The original mobile Pages button occupied y=11–43px while the announcement occupied y=0–41px. With the corrected 81px wrapped notice, Pages starts at y=92.6px, the header is 135.6px high, and body padding is 136px. |
| Responsive layout | ✅ Desktop 1440×900 and the default approximately 1280px viewport, tablet 768×1024, and mobile 390×844 were inspected in light/dark themes. At 390px, document scroll width was 375px with no horizontal overflow. The below-navbar fixture kept Pages at y=11.4px; the no-announcement fixture retained the same position. |
| Navigation and offsets | ✅ Pages/sidebar opened and closed; Areas opened below the full header at y=135.6px and Escape left no residual overlay. Native anchor offset tracked the 105.5px header at 105px, and the destination heading remained visible after scrolling. |
| Dismissal and keyboard | ✅ Enter and Space dismissed the notice and returned focus to the navbar brand. Header height then measured 54.4px with 54px body padding; reload retained native dismissal. The text-only notice’s close control had a visible 3px focus outline. |
| Header transitions | ✅ Computed styles confirmed 0.15s ease-in-out color, background, border and shadow transitions on Pages, Areas, Search, version, theme, language, GitHub and Logout controls, plus the announcement surface. Language opened and closed with Escape at 390px; scroll width remained 375px. The reduced-motion media rule was checked in source; the operating-system setting was not changed. |
| Search icon transition | ✅ Real-pointer hover reproduced the dark-theme mismatch before the fix: control rgb(143, 183, 168), SVG rgb(235, 235, 236). After the fix, control/icon/SVG matched at rgb(235, 235, 236) normally and rgb(143, 183, 168) on dark hover; light hover matched at rgb(79, 117, 107), including mobile 390px with 375px scroll width. The visible color transition is 150ms ease-in-out. Search opened its native overlay, 公告 returned four results, and Escape closed it; native focus then rested on the body. English/Chinese guides rendered with --no-execute, and console warnings/errors were empty. Screenshots: /tmp/askr-search-hover-dark.png and /tmp/askr-search-hover-light.png. |
| Refined-theme recheck | ✅ The root guide, Traditional Chinese guide and above-navbar Chinese fixture rendered successfully after the Header transition refinement. The notice changed from a dark tinted surface with foreground 212 to a light tinted surface with foreground 78 when the theme changed. Earlier full-render results remain applicable to unchanged content. |
| Browser console | ✅ No warnings or errors in the fixtures or the Traditional Chinese guide. |
| Preview and screenshots | ✅ Traditional Chinese preview and English preview. Screenshots: /tmp/askr-announcement-gallery-desktop-light.png and /tmp/askr-announcement-after-mobile-dark.png. |
⏳ Lead: complete main CI, the GitHub Release, Pages deployment and a fresh v0.12.1 tag installation. Publication remains pending; local checks above cover the announcement and Header scope without the separate Copy changes.
Native Card component — v0.12.0 release candidate — 2026-10-25
Semantic state: CONVERGING. Delivery state: CANDIDATE; the Human-authorized v0.12.0 release endpoint is not complete. ✅ The Lead completed the Card-only source/consumer renders, Chromium review, and full bilingual site render. The published v0.11.0 package remains unchanged; the previous Copy follow-up is not included in this release.
| Check | Result |
|---|---|
| Full release render | ✅ Quarto 1.10.18 rendered exact staged tree 54c88d895ba09961c1854a3974e99c69cbe21875, exported to /tmp/askr-v012-release.fhPRES; quarto render exited 0 with 107 English and 28 Traditional Chinese inputs. The existing two figure cells and one arithmetic cell ran in each language; no solver or model science ran. Known zh-TW translation warnings and the local Jupyter transport warning remained; no new failure. |
| Card-only source render | ✅ Quarto 1.10.18 rendered the English and Traditional Chinese Cards pages plus their linked Usage pages with --no-execute; exit 0. The Card-only source was exported to /tmp/askr-cards-candidate.YE3RxS, excluding the previous Copy WIP. Quarto emitted the known Could not load translations zh-TW/Abstract warning. |
| Installed-layout consumer render | ✅ A prospective Card-only tree was copied to _extensions/arfiligol/askr in /tmp/askr-cards-consumer.acFLjq; Quarto rendered its two pages with --no-execute; exit 0. This used the installed folder layout and does not record quarto add or a released package. |
| v0.11.0 archive source | ✅ The snapshot came from the actual published Pages tree 6f2d18f69143aa8de635f9cb9f40f7b4c2375ea9; all 226 file blobs match byte-for-byte, including existing generated whitespace. Nested v0.10.0, v0.9.0, and v0.3.0 archives were excluded. The Lead retained archive bytes; the authored release diff check passed without normalizing the snapshot. |
| Browser layouts | ✅ Chromium review at 1280×720 and 390×844 in light and dark themes. Browser console warnings and errors were empty. At 390px, page scrollWidth was 375px; cards were 323px wide with 321px scroll width and 16px padding; the title font size was 17.6px. |
| Typography and spacing | ✅ H3 and H4 retained weight 700; card headings were absent from the page TOC. Desktop body padding measured 21.25px × 25.5px (1.25rem × 1.5rem); title font size was 21.25px. Heading color was rgb(43, 43, 43) in light mode and rgb(235, 235, 236) in dark mode. The last paragraph margin was 0; spacing between multiple paragraphs remained. |
| Keyboard and navigation | ✅ Tab reached the card title with a visible focus outline and offset; Enter navigated to destination.html. An independent body link navigated to destination.html#details. On the Chinese Gallery page, Enter on the long title opened zh-TW/usage/navigation.html; Back returned to the card page. Short and long titles remained visible. |
| Review artifact | ✅ Chinese Cards preview. Screenshots: /tmp/askr-cards-gallery-light.png and /tmp/askr-cards-mobile-dark.png. |
| Release checks | ⏳ Main PR/CI, installation validation from the v0.12.0 release tag, Pages publication, and deployment/readback remain with the Lead. |
| Not run in this scope | ⚠️ Physical-touch, Safari and Firefox review; notebook/scientific execution; and new tests. |
Askr v0.11.0 Mermaid viewer — published 2026-10-21
Status: ✅ Published as v0.11.0. The observations below record that release’s viewer and source-copy layout; the later shared text-copy feedback is recorded in the separate candidate above. Quarto 1.10.18 rendered the isolated consumer /tmp/askr-mermaid-candidate.oHLMZj with the extension under the installed _extensions/arfiligol/askr layout.
| Check | Result |
|---|---|
| Wide native graph | ✅ index.qmd rendered a wide Mermaid graph with HTML line breaks and CJK labels; the unwrapped native graph also rendered without Askr controls in static HTML |
| Actual wide input shape | ✅ private-diagram.qmd rendered the authorized source shape in the temporary consumer only; private source text is not part of this repository |
| Native source handling | ✅ Static HTML retains Quarto’s native <pre class="mermaid mermaid-js"> inside the marked wrapper; Askr adds no static source copy, disclosure or viewer button. Runtime code captures that block at DOMContentLoaded, before Quarto’s window-load Mermaid renderer replaces it with SVG |
| Failure behavior | ✅ A malformed wrapper and a native wrapper with lightbox: false each failed the temporary render with the assigned error |
| Modal viewer | ✅ In Chromium, the wide native graph stayed visible; the modal showed its labels and arrows at 481×97px, zoomed to 125%, panned by pointer drag, and Fit plus Escape restored focus to View diagram. Console warnings/errors were empty |
| Copy | ✅ After activating Copy, a trusted browser click read the clipboard and matched the captured source: 85 characters |
| Dark-mode styling | ✅ The modal SVG retains the native graph’s authored colors; Askr does not recolor diagram styles |
| Targeted Gallery renders | ✅ Quarto 1.10.18 rendered English and Traditional Chinese Figures and Usage pages; the two existing small chart cells ran on both Figures pages. Existing Traditional Chinese warnings about native translations and path configuration were unrelated to Mermaid |
| Wide-graph browser review | ✅ The public eight-node subgraph with HTML labels opened in the modal. Zoom changed from 100% to 156% on desktop and 244% at 390×844; Escape restored focus to the viewer button. Dark mode retained visible labels |
| Existing image viewer | ✅ The ordinary “View this figure” control continued to open the expected native image caption |
| Local ZIP installation | ✅ Quarto 1.10.18 installed /tmp/askr-mermaid-install-M46w8k/askr-local.zip in an isolated consumer at _extensions/askr; the installed tree matched the source. Quarto’s local ZIP installer normalizes the folder name, so the same temporary copy was moved to _extensions/arfiligol/askr, the GitHub-install layout expected by bundled asset references. The minimal opt-in page then rendered, and its HTML contained the marked wrapper and native Mermaid block. The initial render before this temporary relocation could not resolve the namespaced font paths |
| Full project render | ✅ The first full render stopped at PLAN.md (103/106) because Quarto treated the fenced Mermaid example as executable code. Replacing it with a link to the canonical Usage example and inline API names fixed the document; quarto render PLAN.md passed. The Lead’s full Quarto 1.10.18 rerun exited 0 with 106 English and 27 Traditional Chinese pages; all three small cells executed in each site. Existing Traditional Chinese translation warnings remain known |
| Frozen v0.10.0 archive | ✅ The 225-file source snapshot matches the docs-owner receipt at bc16822; rendered archive output differs from the source only at generated askr-versions.json |
| Archive version selector | ✅ On the local archived Figures page, the header marks 0.10.0 current; the menu shows 0.11.0 Latest plus 0.10.0, 0.9.0 and 0.3.0. Selecting Latest reaches the v0.11.0 root in the local preview |
The published v0.11.0 implementation also preserves local SVG fragment references while serializing computed styles and explicit viewBox dimensions. JavaScript syntax validation passed with Node. No durable tests, dependencies or fixtures were added. The shared text-copy follow-up is separate from this release; the Lead’s browser review is recorded above.
Documentation version archive correction — 2026-10-21
Status: ✅ The full bilingual render, archive metadata generation and local archive browser review completed. No extension runtime or installed version changed.
| Check | Result |
|---|---|
| 0.9.0 source identity | ✅ The 154-file root snapshot matches Pages tree 32b83b78756c09dbcf7fd378996cd1170cfdbc48; the prior nested 0.3.0 payload is represented separately at top-level v0.3.0/. |
| Frozen 0.3.0 selector | ✅ Generated output manifest gives each version an /askr/ origin-root path and a fixed homepage href; the frozen HTML and source manifest remain unchanged. Lead observed the archive header mark 0.3.0 as current and its Latest link reach the actual 0.10.0 root. |
| 0.9.0 selector | ✅ Generated manifest uses only ./ as a root for its current-version marker; fixed archive-relative homepage hrefs route to /askr/, /askr/v0.9.0/ and /askr/v0.3.0/. The selector’s raw root-length sorting cannot prefer the 0.10.0 parent root. |
| Rendered archive outputs | ✅ Quarto 1.10.18 rendered 106 English and 27 Traditional Chinese pages; all three shared cells executed in both sites. Each archive output differs from its source snapshot only at askr-versions.json. |
| Search and routes | ✅ Candidate indexes contain 212 English and 88 Chinese entries, without archive or opposite-language routes. |
| Archive navigation | ✅ On a local /askr/ mount, the nested 0.3.0 Figures page marks 0.3.0 current and Latest reaches the actual 0.10.0 root. The nested 0.9.0 Figures page marks 0.9.0 current; its 0.3.0 link reaches the 0.3.0 homepage. From current Usage, selecting 0.9.0 for a page absent in that archive falls back to the 0.9.0 homepage. At 390×844 in dark mode, the v0.3.0 selector shows 0.3.0 current, 0.10.0 Latest and readable 0.9.0 without horizontal overflow; selecting 0.9.0 reaches its actual home with header 0.9.0. |
0.10.0 bilingual publication package — 2026-10-21
Status: ✅ Published as v0.10.0. Quarto 1.10.18 rendered both sites from the root build; the release, Pages deployment and installation handoff are complete. This receipt retains the candidate render and browser observations.
| Observation | Result |
|---|---|
| Corrected full root/child render | ✅ 106 English and 27 Traditional Chinese pages rendered; each site executed all three shared cells |
| Static links | ✅ All 27 Chinese pages have zero broken links after cross-site destinations were made explicit |
| Search indexes | ✅ 211 English and 89 Chinese entries; the English index has no Chinese-route links; 標題列語言選擇器 appears zero times in English and once in Chinese |
| Bilingual browser behavior | ✅ Lead observed English-to-Chinese language navigation, four distinct Pages sidebars, two Chinese search results on the Chinese site, and the Figures image/button viewer with close-focus restoration. All images loaded; browser console warnings/errors were empty. |
| Phone browser behavior | ✅ At 390×844 on the Chinese homepage, switched to dark mode, opened Language without overflow, and selected English to reach the actual English root with Language: English; console log was empty. |
| Publication delivery | ✅ v0.10.0 release and Pages deployment completed; Pages tree commit 1593ff6fe067656d29fb322dbd72fcba0c9f5645; main workflow 39580828917 and Pages workflow 39581100819 succeeded; installation handoff complete |
The first render exposed project-relative rewriting of root-prefixed Markdown and sidebar destinations. Those cross-site links were made explicit, then the full build and static-link inspection were repeated. Quarto emitted its native zh-TW Abstract translation warnings; the site used Quarto’s native Chinese UI without a global Pandoc translation override.
The selector runtime observations below came from the earlier independent temporary consumer and remain separate from these bilingual Gallery results.
Prior optional Header language selector runtime observations — 2026-10-21
State at observation: CONVERGING / LOCAL CANDIDATE. Quarto 1.10.18 rendered the Usage page usage/languages.qmd and the independent consumer /tmp/askr-language-selector.7erYU7. The Lead observed the configured consumer in Chromium at desktop and phone sizes; acceptance and publication remain separate outcomes.
| Observation | Result |
|---|---|
| Usage page | ✅ quarto render usage/languages.qmd rendered _site/usage/languages.html |
| Unconfigured consumer | ✅ Rendered all three local pages; generated HTML contains no askr-language-config template or language button, while retaining Search, theme and Areas controls |
| Configured consumer | ✅ quarto render --profile configured rendered all three local routes into _site; the generated inert template contains the square language trigger, accessible name/title, two current-tab links with lang/hreflang, and a current marker with aria-current="true" |
| Relative-host rejection | ✅ --profile invalid-relative failed during rendering for //other.example.org/en/ |
| Unsafe-scheme rejection | ✅ --profile invalid-unsafe failed during rendering for javascript:alert(1) |
| Escaping probe | ✅ --profile escaped rendered to _site-escaped; labels and URL query ampersands are HTML-escaped, and the script-like label is emitted as text |
| Browser behavior | ✅ Lead observed configured 1440×900 light and 390×844 light/dark layouts, menu navigation, keyboard/focus, outside close, Areas independence, Search/Pages controls and resize while open |
The temporary consumer has actual local Chinese and English routes at /zh-TW/ and /en/, plus a native Pages sidebar, Guide/Reference navbar, Search and theme toggle. Quarto emitted its existing zh-TW Abstract translation warnings; all valid renders completed. Invalid destination cases failed at the Askr render-time validator as intended.
Lead browser observations — Quarto 1.10.18, Chromium, 2026-10-21
| Surface | Actual observation |
|---|---|
| Header fit | Page and viewport widths are 1440/1440px and 390/390px. The language trigger is square and matches the theme control (35.65px desktop, 31.62px phone). The phone menu remains within the viewport at x=147.98–339.98px; trigger bounds are x=308.37–339.98px. |
| Placement | The selector remains in .quarto-navbar-tools, outside #navbarCollapse; current-language text/check marker and aria-current are present in the menu. |
| Menu keyboard | ArrowDown focuses the first item; a second ArrowDown focuses English. Enter navigates to the actual /en/ page. Escape closes the menu and restores focus to #askr-language-toggle. |
| Link navigation | An ordinary click on 繁體中文 navigates to the actual /zh-TW/ page. Links use normal current-tab navigation. |
| Outside close and theme | Clicking the theme control closes the menu and switches to dark mode. |
| Areas | Opening Areas then selecting Language closes Areas, clears its glass overlay and opens the language menu; after animation, Areas remains closed. |
| Search and Pages | Search opens and Cancel closes it. The Pages toggle changes aria-expanded between true and false. |
| Resize while open | Resizing from 390px to 1440px leaves the menu usable and within bounds; Areas is closed and its overlay is clear. |
| Page and console | The consumer shows its actual page content without an overlay; no console warnings or errors were observed. The unconfigured profile had no Language control. |
Screenshots: /tmp/askr-language-desktop-light.png and /tmp/askr-language-phone-dark.png. The consumer deliberately keeps current: zh-TW while visiting /en/; Askr does not infer the current language from the URL. Authors set current for each language project’s pages. Physical touch, Safari, Firefox and a JavaScript-disabled browser were not observed.
Pre-publication candidate source SHA-256 values, recorded during that render:
| Path | SHA-256 |
|---|---|
_extensions/askr/_extension.yml |
26f787f47ecbb52f5cc25281e2d0583f81a4920f88d5a143477ba649069c9019 |
_extensions/askr/language-config.lua |
b055d913629ae8b046fe906cf2ffd21589000d56194c20d0440f2f744f1f09fb |
_extensions/askr/language-controls.html |
faa052b213794c3846c8acf3ac1afe4a6cb33092a7612d02a12542ea23ced7ec |
_extensions/askr/theme-color.html |
9ae287033486f47e922dad3ed6bf9740107d4b7a4a6a71c3699b764506ef7cad |
_extensions/askr/qdk.scss |
0cc4dc4d7310be7a1a6fd47c7520dcc24d89c85141e25529c35237e890036c70 |
usage/languages.qmd |
b528e8297a82cb121833c92968bfde24633e34e9d42c359f3fa467f94c31eaf7 |
README.md |
0dfac4ab6197a2ec75f663123bba5f0e9d4e72a37f42b0adfc1ac3c850bc3a6c |
CHANGELOG.md |
2592b3c56f35333cf590cd3141e725f38001bcea162866df885253d6d2cebff6 |
PLAN.md |
0ae597a4b826830fcf31e159ca96fbba536a8b244ad5cb82312016b12211237b |
_quarto.yml |
6064b49827550718d98bcbf7ec0e5551fcc8d9c4349bdfc5bbb8d22df2160e0a |
These results cover the scoped source renders and Chromium observations above. They predate the bilingual-site build and later publication authorization; they do not establish the current root/child build, CI, deployment or LCDH adoption.
0.9.0 Lead browser observations — 2026-10-21
State: CONVERGING / LOCAL CANDIDATE. The Lead observed the rendered temporary consumer in Chromium at desktop, tablet and phone viewport sizes. The independent floating-sidebar input is /tmp/askr-floating-090.gFJTQX; it contains only one sidebar and its rendered body has the native floating class. Other cases use /tmp/askr-reading-090.aPzO0O. No durable tests, gallery fixtures, consumer repository, root pins or infrastructure changes are part of these observations.
| Surface | Actual observation |
|---|---|
| Normal/wide measure | At 1440px, docked, absent and independently rendered floating sidebars each give 630px normal / 780px wide body measure |
| Wide responsive scaling | At 1920px, the floating wide-profile body paragraph measures 858px; page width 1905px remains inside the viewport |
| Native width escapes | Floating at 1440px: body-outset/page/screen-inset measure 787.59/1209.98/1373px normal, 937.59/1359.98/1373px wide |
| Responsive wide layout | At 992px, body 513px with 200px sidebar and 200px TOC, without overlap; at 768px body 500px; at 390px body 323px and page 375px |
| Phone tables | Symbol term/meaning columns measure 64/259px and long tokens wrap. An eight-column 526px table stays inside a 323px region |
| Numeric table utility | Tabular numerals apply while author-selected alignment is preserved |
| Keyboard table scroll | Actual ArrowRight changes region scrollLeft to 40px after animation; page horizontal scroll remains 0 |
| Equation Copy | Enter copies original x=\alpha+\beta to the clipboard. Copied! returns to Copy; at phone size, button bottom 384.5px precedes equation-number top 387.48px |
| Reader mode | Activating the toggle changes the native reader class and preserves the 780px body measure |
| Page facts | Configured order, wrapping approximately 200-character value, native author and date are present |
| Semantic blocks | All eight native environments retain their native content and receive styling: 3px theorem-like border, 2px proof border; title colors differ appropriately in light/dark |
| Mermaid | Late-rendered SVG has viewBox/native width 896px, retains that width after a theme change and scrolls locally |
| Console | No warnings or errors observed |
The Lead measured these contrast ratios from actual computed colors:
| Text surface | Light | Dark |
|---|---|---|
| Muted text | 5.04:1 | 6.91:1 |
| Link hover | 4.85:1 | 8.18:1 |
| Note title | 5.74:1 | 9.05:1 |
| Tip title | 5.25:1 | 9.48:1 |
| Important title | 6.84:1 | 9.83:1 |
| Warning title | 5.40:1 | 9.42:1 |
| Caution title | 6.39:1 | 9.80:1 |
The final compiled-token audit compared all 113 public --qdk-* properties in each theme with source expectations and found zero mismatches. Borders compile to #e5e5e5 in light and #393639 in dark.
The final current-source compatibility matrix passed all eight renders across Quarto 1.10.18 and 1.10.19: each version rendered four normal-profile pages, four wide-profile pages, one independent floating normal page and one independent floating wide page. The full Gallery render on Quarto 1.10.18 completed all 105 inputs, including both Figures Python cells and the Notebook Python cell.
Final Sass SHA-256: qdk.scss 9724faa57ae241848b96018c00bd5c50a66ac67de2a4dac12faa033d7059b4ca; qdk-dark.scss d60c887126dbcd7d04ddfdcab792c779d8dea7c3bce1827573bb3b6d0d566f69. Capture/config/runtime hashes remain those listed in the integration receipt below. A later change invalidates the corresponding source, rendering or runtime observation; these results do not claim a future publication or CI execution.
Search retains native Quarto equation text. Askr’s data-attribute source and runtime-created controls add no duplicate TeX or source-label text to the index. Browser observations cover Chromium viewport behavior; actual touch input, Safari and Firefox were not observed. Publication, CI and synchronization remain separate delivery work.
0.9.0 reading integration — 2026-10-21
State: CONVERGING / LOCAL CANDIDATE. This receipt covers the integration worker’s scoped Quarto/source observations; the Lead records compiled-token, browser, compatibility and publication observations separately. No durable tests, new gallery fixtures, consumer or root changes were made.
Input: temporary consumer /tmp/askr-reading-090.aPzO0O, copied extension under the installed _extensions/arfiligol/askr layout, Quarto 1.10.18. Its index.qmd contains labelled/unlabelled equations, display math in a tight-list Plain, wrapping-div/native-attribute exclusions, hostile literal page-fact text, native author/date, a captionless pipe table and Mermaid. Additional external pages provide normal/wide, docked/floating/absent-sidebars and reader-mode observations for the Lead; these are temporary inputs, not maintained product fixtures.
| Observation | Result |
|---|---|
Scoped index.qmd render |
✅ Rendered _site/index.html; native @eq-label resolves to Equation 1 and eq-skip remains Equation 2 |
| Original-source capture | ✅ Three data-askr-tex attributes: labelled formula, unlabelled formula, tight-list display; native numbering tags are absent from captured source |
| Per-equation exclusions | ✅ Wrapping .no-math-copy and trailing native equation .no-math-copy both omit copy-source attributes while retaining rendered equations |
| Page facts | ✅ Configured order retained; literal <script>…</script> and & escaped in the facts template; native author/date remain in title HTML |
| Search source | ✅ search.json contains no LaTeX source, copy controls or duplicate data-attribute payload; Quarto retains its native equation text |
| Site/page opt-out render | ✅ --profile copy-off rendered six inputs; site-disabled index and flat page-disabled equation have no copy attributes; flat page-enabled equation has one |
| Actual browser behavior / styling | ✅ Recorded in the Lead browser observations above, using the final candidate and independent floating-sidebar input |
Source SHA-256 at execution: math-copy.lua f243ee39d6b2795418390e53f675ab8c77052fff4e0ba4485a8c233fd49360ae; math-copy.html eef80d12320268417f06f8e567cedde0cd89c419ee990dc8b0623e61a58ef95c; reading.lua 6d5738ec43bf6ee04c65304cf029d073ebac63650be337e8f9a16e86da9751d0; reading.js 10373c297a467567d26bd82c2ed1ef58c0e4ed4edfaeb3fa22056e2a49a5fc1c. Rendered index SHA-256: a6a2e27224c60d3e4f4dbf7f5397b9d359346661d343506abc3db24667b033f3; search SHA-256: dbf9be1f416930669358e17051808659a333ffd8914c3af42d35f8a4f6ce9a40. Changes to these capture/config/runtime files invalidate their associated observations. This scoped render used the pre-style-update Sass copy and does not establish candidate palette or grid behavior.
0.8.0 publication package — 2026-10-10
Human authorized publication of the dual-mode viewer candidate below. Release metadata, install tag, selector and Changelog identify 0.8.0. The viewer runtime is unchanged by the publication package; prior interactive receipts remain prior observations, not a fresh execution. Fresh release renders, exact-diff inspection, Git whitespace, main/Release/Pages identity and public viewing are delivery obligations. The touchscreen, no-JavaScript and delayed-network observation limitations remain explicit. No durable tests, consumers or root pins are assigned. Semantic state CONVERGING; delivery endpoint published and child checkout synced. Fresh quarto render --execute-daemon 0 completed all 105 inputs, including both Figures Python cells and Notebook output. Exact publication-diff and whitespace inspection found no private consumer content or new external viewer dependency.
Dual-mode image viewer — local candidate, 2026-10-10
Human-assigned scope: replace the active GLightbox interface with one Askr camera engine, inline/modal entry points, Gallery/Usage and local preview. Base b79fec30ff7b256ab07170c7c338b9e488d38fae; package metadata remains 0.7.0. CONVERGING / LOCAL CANDIDATE. No commit, push, release, consumer repository, root pins, infrastructure or durable tests were changed.
Quarto 1.10.18 rendered Figures with both actual Python3 cells and rendered Image viewer Usage. The rendered Figures HTML and extension contain no GLightbox dependency or initialization. README, PLAN and Unreleased Changelog describe the replacement, rather than a second active viewer.
Observed behavior
- In the in-app browser, PNG/JPEG images, an existing-figure button and a source-only button opened the same modal interface without page navigation. SVG loaded as an image (24 x 24 public Askr icon), not injected SVG markup.
- Inline PNG zoomed to 125%, expanded at 125%, and returned at 156% after another zoom. Its expand button regained focus. The independent SVG viewer remained at 100%. Resizing retained relative Fit zoom; stage heights were 420px at desktop width and 320px at phone width.
- Actual pointer drag moved the PNG by 80px horizontally and 40px vertically; a wheel action over the focused stage changed zoom. Keyboard arrows panned, Fit reset the camera, and modal close/Escape returned focus to the entry.
- Fullscreen used the viewer section. First Escape exited fullscreen while keeping the dialog open; second Escape closed it. Dragging out toward the backdrop did not close the dialog; a separate backdrop click did.
- Desktop 1280 x 900, tablet 768 x 1024 and phone 390 x 844 layouts were inspected, including light/dark chrome. The phone modal kept its toolbar, caption and close control within the viewport. PNG pixels stayed unchanged.
- PNG/JPEG gallery navigation changed caption/source and reset Fit. A separate consumer with loop disabled disabled navigation at its endpoints. Its missing third image showed a readable failure and Retry, while Previous and Close remained usable. Returning to JPEG loaded the matching source/caption.
- Rapid Previous/Next actions ended on the selected JPEG, not an older load. Gallery error/warning logs were empty; deliberate missing-image failures were exercised only in the temporary consumer.
- A nested version-directory consumer resolved relative PNG/SVG paths and opened its target button. Whole-page lightbox false produced no interactive anchors/viewers. Excluded and navigation images stayed static/linked. Explicit-image settings without automatic matching preserved .lightbox and source-only shortcode entry points.
- Invalid target, disabled-page shortcode, duplicate inline target and explicit unsupported effect each caused a render error. Non-HTML GFM output retained the figure, a normal target link and a normal SVG image for inline src.
Installation evidence and remaining observations
An outside-repository consumer installed the local extension with quarto add; its new JS/CSS and filters were copied by the extension installation. Local directory installation uses _extensions/askr, while the pre-existing font configuration expects the GitHub namespace _extensions/arfiligol/askr. The temporary checkout was staged under that expected namespace before rendering; this is not evidence of a published candidate install. The viewer’s current runtime/filter copies were then aligned with the local source.
Native touch/pinch on an actual touchscreen remains unobserved: viewport inspection and mouse drag are not substitutes. JavaScript-disabled browser operation was not exercised; emitted source links/static images and absence of server-rendered controls were inspected. Cache-speed navigation is not a deliberately delayed network race observation. No cross-version or arbitrary large-image performance claim is made. Captions/descriptions are displayed as text; image colors, resolution and scientific meaning are not altered.
Preview: http://127.0.0.1:4572/components/figures.html#inline-interaction. Temporary consumer and diagnostic fixtures remain outside the repository. Screenshots were saved outside the repository for Human visual review.
0.7.0 publication package — 2026-10-09
Human authorized publication after removing Gallery’s descriptive right-side Footer text. Gallery configuration now leaves that region to the single Powered by Askr credit line; consumer-authored content is still preserved. Release metadata, install instructions, document selector and CHANGELOG identify 0.7.0. Prior local-candidate interaction evidence below remains historical, not a new execution; the styling implementation is unchanged. Fresh release renders, corrected Footer observation, exact-diff privacy and whitespace inspection, main/Release/Pages identity and public rendering are the delivery checks. No durable tests, root pins or consumer edits are assigned. The only runtime delta removes Quarto’s whitespace-only placeholder from an unauthored right region before appending credit, avoiding an empty extra line. Fresh Usage/index/release-document renders completed with Quarto 1.10.18. The local Footer shows only Powered by Askr 0.7.0 in its right region.
0.6.1 publication package — 2026-10-06
Human requested the complete release flow. Release metadata, README install tag, inline version manifest and CHANGELOG now identify 0.6.1. Core implementation bytes below are unchanged, so the recorded rendered interaction observations remain applicable; they are not relabeled as a new execution. Release-document renders and a fresh Figures render completed, including both Python3 cells. Exact-diff inspection found no newly included private URLs, images or consumer payloads; Git whitespace inspection completed. No durable tests were added. Develop checkpoint, main promotion, tag/Release and actual Pages observations are delivery obligations; no consumer or root pin is updated by this package.
Adaptive Areas / RequireJS — local candidate, 2026-10-06
Human-assigned scope: local preview, not publication or stabilization. Base bd6e62bd6415df02512969714d97bf6d02777cfb; package version remains 0.6.0; semantic state CONVERGING, delivery LOCAL CANDIDATE. No durable tests, consumer repository, root pins or infrastructure were changed.
Quarto 1.10.18 quarto render . --execute-daemon 0 completed all 104 Gallery inputs, including both Figures Python cells and existing public arithmetic output. Header JavaScript syntax and Git whitespace inspection completed. The separate quarto check jupyter probe encountered a stale default kernel path; the successful actual Python3 Gallery renders are the execution evidence.
Core source SHA-256:
qdk.scss:56f124025080f35e3dfcd492822175baa4f424c6562510f51a232e65b924e9e5theme-color.html:afdb8c2c1c14e088423cbbd8c03b1d01f54a498ba3c2104d321cf5266233d014_quarto.yml:4df6e410fcdf862a360eb9d295d92eaa64f92d1283ac232bb92ccfc6505c3668
Executed Gallery runtime
In the Codex in-app browser, current Figures HTML still includes RequireJS and no longer includes Zenscroll. Error logs were empty on the observed page; the previous anonymous-module mismatch was not reproduced. Both light/dark HTML outputs, the Notebook image and actual Mermaid SVG were present. A Sections link navigated to #diagram. Both image-viewer buttons loaded the public 1600px image in-page; Escape returned focus to their respective entry buttons. The browser resolved native smooth scrolling; compiled CSS contains the reduced-motion auto override and disabled Areas transitions. The OS motion preference itself was not changed.
Header observations
A separate temporary consumer used a generic long title and five Areas, Pages and Search. Separate pages enabled Logout and an inline version manifest. No private consumer text, URL or screenshot was copied into product files. The absent external version manifest in these temporary cases is expected; no-version and inline-manifest behavior use the existing contract.
- 1440px/1920px: full navigation fits without title/control overlap.
- 1024px/1280px: the same navigation becomes an Areas disclosure; Pages stays a desktop sidebar. The vertical Areas panel begins below the Header.
- Version + Logout consumer: observed 1320px/1328px/1332px/1336px used the disclosure; 1340px/1360px/1440px used inline Areas. These are observations, not a fixed breakpoint or product threshold.
- Tablet 768px and phones 390px/320px: shortened titles retain their accessible name and tooltip. Page width matched viewport width; actual control rectangles did not intersect the title slot in the narrow examples.
- Light/dark controls were visually inspected. Pages opened/closed; Search returned real local results; version disclosure opened/closed; theme toggle changed native body mode. Logout reached its configured local receipt, which explicitly does not claim identity-provider logout.
- Areas opened via mouse and Enter. Escape returned to its button. An open-panel resize across the observed fit boundary cleared the panel/overlay, restored visible link focus and released Header freezing. Selecting Design Notes navigated to the real
#notesdestination with the panel and overlay closed.
An intermediate candidate inherited Bootstrap row direction and vertical centering in the fixed panel; final styling explicitly uses a top-aligned column, independent of the Pages breakpoint. There is one navigation tree, no RequireJS suppression, and no new viewer implementation.
Local Gallery: http://127.0.0.1:4572/. Generic long-Header consumer: http://127.0.0.1:4585/. Screenshots remain temporary owner-side observations, not product assets. Public Pages still serves 0.6.0; this candidate is not committed or published.
0.6.0 publication package — 2026-10-06
The Human authorized publishing the reviewed Logout/image-viewer candidate for NCUAS consumer testing. Feature implementation bytes and prior local browser/source-review receipts are unchanged; only release metadata, current version manifest, installation guidance and delivery records change. The new scopes remain CONVERGING. No new tests, root pins, consumer/infrastructure changes, real authentication verification, or physical touch coverage. Existing Pages CI and exact public-route observations are still required delivery evidence and will be recorded after execution, not inferred here. Release-metadata render completed: 103 pages, Quarto 1.10.18, --no-execute, exit 0; the known computational-output specimen warning remains. Exact reviewed feature hashes below are unchanged. Whitespace/diff inspection completed and only scoped source files are staged; generated site files are excluded.
Optional Logout and native image viewer — local candidate, 2026-10-06
State: CONVERGING / LOCAL CANDIDATE, based on 283e4f8dfa7b8f63971ad184480bb7c79c2a2bb9. No publication, version bump, root pin, consumer integration, infrastructure change, or durable test. The 103-page non-executing Gallery render completed on Quarto 1.10.18. The existing missing light/dark computational-output specimen warning remains; the new examples use an already-public static PNG and require no execution.
Actual browser observations at 1440 × 900 and 390 × 844, light and dark: native image and target/src buttons open the original source in the same page; target retains the figure caption and src has no invented caption. Close and Escape return to the triggering image/button and the same reading area (one direct-image observation shifted approximately 2px after native layout unlock). Desktop native click-to-zoom and drag were operated; the enlarged image moved by 150px/90px. Mobile caption foreground and control SVG colors were corrected against the actual native mobile rules and viewed again. Viewport emulation is not a real touchscreen: pinch/swipe and mobile drag remain unobserved, not claimed verified. No independent zoom toolbar or image transformation exists.
An independent temporary consumer in /tmp/askr-viewer-consumer.dhURyQ observed both inline button forms, relative image paths from /v1/, excluded images, normal linked-image navigation, and page-level lightbox: false. Excluded/disabled images did not open a viewer. A deliberately missing rendered asset produced a native empty/loading viewer, not a redirect or fabricated success; closing it returned focus to its button. Missing-image error messaging is native, not an additional Askr error UI. Captured screenshots and diagnostic logs stay in /tmp/askr-viewer-observations.vD9y7l, outside the repository. Desktop native gallery Next changed the current slide and caption to the second entry; close restored the original button. Native mobile previous/next controls are offscreen in favor of touch gestures; touch gallery navigation is therefore not claimed observed. Final Gallery console observations contained no errors or warnings.
Logout absent/present was observed in the temporary consumer, never enabled in the public Gallery. Desktop and narrow mobile light/dark Header controls used matching geometry with no overlaps. The accessible name/tooltip and HTTPS URL were inspected; a keyboard-activated root-path link navigated the same tab to an explicitly non-authenticated observation page. From /v1/ it still resolves at the domain root. This proves navigation only, not any Authentik logout.
Invalid target, excluded target, mutually exclusive arguments, Lightbox-off conflict, and unsafe protocol-relative Logout destination each failed rendering. Valid non-HTML GFM output retained ordinary image/figure links; invalid shortcode arguments also failed non-HTML rendering. Review found that Quarto’s Lua error() logger did not itself abort rendering: shortcode/config errors now use real assertions instead of silently omitted error markers. EPUB/non-browser HTML likewise uses ordinary links via the html:js distinction.
Independent correctness/privacy review covered the frozen source candidate; its concrete non-HTML failure finding was corrected. Final read-only delta review confirmed that finding resolved and found no new concrete correctness or privacy defects. Reviewed SHA-256 identities: image-view.lua af6bfd8f3c5e7860e5e7ca68eeef08a02935007837d49cbd05ba18d93ade050f, viewer-config.lua fd3343738727fa36e9710c560c802c55fa17d5b75b4272b40045dcab100488bb, qdk.scss 89b68dd4ceae2eda0f297b3aad27d77cb0ae3b92457e29f46653b423033a0d5b. Reviewer model/effort were unavailable; source review did not repeat owner browser observations or grant acceptance. Real Authentik logout, deployment configuration, NCUAS integration, physical touch gestures, and arbitrary-browser coverage are excluded or unobserved and must not be inferred from these receipts.
0.5.0 engineering candidate — 2026-10-06
Inputs and actual operations
Quarto 1.10.18 rendered the 101-page gallery with quarto render --no-execute. The paired tabsets in components/figures.qmd were operated in an actual browser at 1440 × 900 and 390 × 844, in light and dark modes. This package did not execute notebooks or scientific models. The figures page reports missing light/dark cell outputs under this non-executing render; no fresh scientific-output or full-gallery figure-completeness claim is made.
An independent temporary website installed the candidate extension into _extensions/arfiligol/askr, with its own navigation, paired native backend tabsets, callouts, code, table, styles and external version manifest. It was rendered separately, then served at both a site root and a repository prefix. Its authored previous-version home is a routing specimen, not a fabricated historical release. Temporary inputs and screenshots remain outside this repo.
Grouped-tab state and keyboard behavior
Mouse selection, ArrowLeft/ArrowRight and Home/End were operated in native tabs. Both groups settled on the same visible Palace/AEDT panels, active classes, aria-selected values and tab stops: active true/0, inactive false/-1. Reload restored the native persisted selection, and navigation away followed by browser Back restored matching content and attributes. Native Bootstrap keyboard activation does not invoke Quarto’s click-only group synchronizer; the candidate routes that activation through the native click handler on the next animation frame. The immediate pre-frame state is not a second maintained selection state. Quarto continues to own group storage and panel selection.
Gallery labels measured 16.2px at desktop and 14.4px at mobile, preserving 0.9rem. Selected/unselected weights are 600/400; prose-link emphasis no longer leaks into the inactive controls. Default label block padding remains .35rem. Screenshots showed paired groups in both themes without horizontal document overflow at the observed mobile width.
Version paths and disclosure focus
For the independent consumer, manifest / resolved to the deployment site root rather than origin root. The prefix route /askr/nested/components.html produced /askr/previous/nested/components.html; a root deployment produced /previous/nested/components.html. Query and fragment were preserved in corresponding-page links. Clicking the missing corresponding page received an actual 404 and navigated to the selected version home, /askr/previous/ or /previous/. At the previous home, the disclosure identified the previous version and linked back to the current site home. No product path is hardcoded.
Enter and Space opened the disclosure. Tab moved to its ordinary links; Shift-Tab returned to the trigger. Escape closed it and restored trigger focus. Tab out of the final link and clicking a tab outside closed the disclosure without moving focus back from the outside control. The links are not listbox options; current version uses aria-current.
The gallery’s custom 404 route was source-reviewed and rendered. Its automatic Pages-hosted error-document behavior still needs the authorized public-site observation after release; the temporary static server does not emulate Pages.
Quarto compatibility evidence
Candidate range: stable releases >=1.9.38 <1.11; CI baseline remains 1.10.18. Actually rendered and operated: stable 1.9.38 and 1.10.18, plus diagnostic prerelease 1.10.16. Isolated official macOS archives were used without changing the installed Quarto. SHA-256 matched the official release API:
- 1.9.38:
47089a5020cfb41981ba0d4b46e110edfa608722aea45ef248e14efba6d6b18a - 1.10.16:
3413aaa38f65862ea3af16ef7a0ce41539d89cc9386becdd9f2a3adcf77ada0e
At 1.9.38 and 1.10.16, three-page independent consumers rendered successfully. Browser observations covered grouped-keyboard selection, restored ARIA/tab stops after reload, disclosure, desktop/mobile widths and token overrides, and light/dark canvas/theme-color agreement. Browser Back was also operated on 1.10.16. These observations do not cover every intervening patch.
Official source comparisons found native tabsets.js, panel-tabset.lua and Bootstrap 5.3.1 identical at inspected 1.9.38/1.10.0/1.10.18 boundaries. Relevant intervening changes included 1.10.4 secondary-sidebar logo handling, 1.10.15 URL query/fragment matching, 1.10.16 Sass default parsing and 1.10.17 Pandoc/Sass updates. The 1.10.18 render exercises the later compiler baseline. 1.11 changes theme/navigation controls and is excluded pending investigation. No standing CI matrix, adapter framework or prerelease-support promise is added. Sources: native tabs, tabset markup, 1.10 changes, 1.11 changes.
Review and limits
Independent read-only review covered the reusable implementation, public interfaces and privacy boundaries. It identified copy-control/search-token inconsistencies; owner observations additionally identified font quoting, grid precedence, site-root and table specificity issues. All have been corrected. Final independent delta review found no remaining requirement-backed defects. It reviewed source/receipt correctness and privacy, not a duplicate browser run. Reviewed implementation SHA-256 identities: theme-color.html e834378e207b2f0df667d9d4e9042e17e3fc4fd88bac17336ec6aa690fec3417, qdk.scss 334de632781e7cb1b76a3467b2e6f95b64d788d9d791d99cbcce670970b54b82, qdk-dark.scss 81ce9e5e4f1627f8843835d77b6dbc8a176f05248d0e8353ac656317861069c7. Owner source/diff inspection and scoped non-executing renders also completed. No durable tests, consumer revisions, root pins, historical snapshot mutations, infrastructure changes or new logout feature are part of this package.
0.4.2 grouped-tabset update — 2026-10-06
Quarto 1.10.18 rendered components/figures.qmd without execution. Native grouped tabsets were inspected at 1440 × 900 and 390 × 844: labels measured 16.2px and 14.4px respectively (0.9rem); label vertical padding is .35rem. First/last pane block margins are zero, avoiding duplicated paragraph spacing. Both groups’ visible content follows a Palace/AEDT selection. The native group runtime leaves the second group’s ARIA selection attributes inconsistent with its active classes; that pre-existing runtime issue is not modified here. No durable tests or consumer dependency updates were assigned. The Human requested publication of this visual candidate; no stabilization is claimed.
Date: 2026-09-23. Semantic state: CONVERGING. These observations are technical evidence, not Human acceptance thresholds or visual acceptance.
Toolchain and scope
- Quarto
1.10.18rendered the local gallery. - A temporary, isolated Python 3.13 virtual environment supplied Jupyter only for local gallery validation; it is not a repository or extension dependency.
notebooks/simple-output.ipynbwas executed byjupyter nbconvert --execute --inplace; its saved output isSaved notebook output: [3, 5, 8] -> 16.- No durable tests, CI configuration, release artifacts, or deployment files were added.
Commands and factual results
PATH=/tmp/qdk-render-venv/bin:$PATH quarto render .Succeeded: all gallery pages rendered, including executed notebook-output.qmd; _site/index.html contains #mobile-callout-inspection-target and the rendered output contains the saved notebook result.
The Human-selected Quartz-on-Quarto revision also rendered successfully with the same command: compiled light/dark styles contain the Quartz token values, and the gallery ships local Schibsted Grotesk 400/700 alongside Source Sans 3 body and IBM Plex Mono code faces.
After browser review identified Quarto default-callout specificity leakage, the candidate was rerendered with .callout.callout-style-* shell overrides: compiled CSS confirms the uniform 1px semantic-alpha border, 6.3% semantic shell fill, transparent header, 5px radius, 1rem horizontal shell padding, and Quartz warning #db8942. A browser surface was unavailable to this worker for a replacement screenshot; owner browser review remains the visual receipt.
The gallery’s native titleless/iconless simple callout now renders as title="" plus Quarto’s no-icon DOM class, with no title container; Askr explicitly hides that native no-icon container. Dark navigation surfaces now resolve through --qdk-canvas and --qdk-border; clean-consumer installation and Sass override rendering were rerun successfully.
Nested final children now receive an explicit 1rem bottom margin through a type/appearance-specific selector. Collapsible Quarto headers use .75rem block padding while ordinary headers retain 1rem; title, icon, and chevron are direct flex items with align-self: center. These are authored geometry values verified in compiled CSS and DOM; browser-computed light/dark geometry remains an owner-side visual receipt.
The dark-theme code correction was rerendered in qdk-dark.scss only. Quarto switches theme stylesheets without changing the body class, so its compiled dark-only selectors are intentionally unprefixed: div.sourceCode and source pre resolve to #1f1f22 with a #393639 border and #d4d4d4 plain text. Pandoc comments, keywords/operators, strings/numbers, functions, and builtins/types resolve respectively to #8b949e, #ff7b72, #a5d6ff, #d2a8ff, and #79c0ff. The light stylesheet has no corresponding rules, so the light code palette remains unchanged. Browser-computed values and copy-control icon pixels remain owner-side visual inspection evidence.
The common code-shell rule now assigns the visible border and 5px radius to div.sourceCode (with pre retained as a standalone fallback). For Quarto’s normal nested structure, div.sourceCode > pre.sourceCode and its direct code.sourceCode are explicitly transparent with zero border/radius/shadow; the dark layer applies #393639 only to that outer wrapper. Gallery and clean consumer rendering were rerun after this correction.
The common stylesheet also clears Quarto’s automatic H2 border and bottom padding (including heading pseudo-elements) without depending on the active theme. Explicit hr elements instead render as a 1px top border using --qdk-border; components.qmd demonstrates the opt-in native Markdown sequence of a heading, blank line, and ---. Browser-computed confirmation in both stylesheet modes remains owner-side visual evidence.
The divider hierarchy was rerendered with explicit theme tokens. Light content and layout dividers are respectively rgba(43, 43, 43, .18) and rgba(43, 43, 43, .08); dark values are rgba(212, 212, 212, .24) and rgba(212, 212, 212, .10). The manual hr uses the content token at 1px with opacity: 1; mobile/offcanvas inline-end boundaries stay transparent. The desktop docked sidebar no longer draws a layout-token seam, so the side columns share the article canvas.
The native article-grid defaults now compile from $grid-sidebar-width and $grid-margin-width at 264px, $grid-body-width and $grid-docked-body-width at 630px, and $grid-column-gutter-width at 26px. $sidebar-border is false, so the desktop docked sidebar does not draw a layout seam. Quarto’s docked formula still widens the body by 200px and leaves spare space in a right-hand flexible column, so one qdk.scss rule restates the desktop docked grid from those variables: outer flexible tracks, 264px side columns, 26px gutters, and a 630px measure. #quarto-document-content is a 630px-or-less box with justify-self: center and auto inline margins, so it fills that track and stays centered between the side columns. Navbar rules center the native container and tools as flex items at desktop width; below 992px the collapse keeps Bootstrap’s hidden menu instead of a forced flex row. Links use a 1.25 line-height with .25rem block padding. Article list rhythm is scoped to #quarto-document-content, with the navbar list explicitly reset to zero block margin so Quarto navigation cannot inherit article spacing. Desktop links are .9rem/400 (active 600) against the .98rem/700 brand; mobile links are .85rem. The theme toggle is a 28px control that shows a sun in the light scheme and a moon in the dark scheme, both painted with currentColor. The callout disclosure is a centered chevron in the same color as its title. Post-change browser center/contrast measurements remain owner-side visual evidence.
quarto add <temporary-qdk-extension.zip> --no-prompt
quarto render .Succeeded in a fresh temporary consumer using examples/consumer-override.yml: its compiled stylesheet contains --qdk-link: #2D5E85; the installed extension contains licenses/Askr-MIT.txt and assets/fonts/SourceSans3VF-Upright.ttf.woff2. The Quartz revision additionally confirmed assets/fonts/SchibstedGrotesk-Regular.woff2 and licenses/Schibsted-Grotesk-OFL.txt. Its rendered CSS resolves those local files relative to the installed extension; no CDN is involved.
Asset SHA-256 values and immutable source URLs/revisions are recorded in ASSET_MANIFEST.md and THIRD_PARTY.md. Quarto output contains both native light/dark stylesheet alternatives and the color-scheme toggle script. The gallery now enables Quarto overlay search (search.location: navbar, search.type: overlay) and the theme styles that control. An earlier gallery receipt left search disabled and rendered no search control or search.json.
Pending manual inspection
The consolidated visual review order is Callout, Header, Layout, Divider, Typography, Code, then final light/dark system behavior. This current pass addresses Callout geometry/rhythm only; the remaining entries must be reviewed as a system after their respective candidate changes settle.
Browser inspection remains required for actual desktop/mobile visual behavior, keyboard focus traversal, collapse/copy interaction, and clipping/overflow. Contrast has not been measured; no acceptance threshold is asserted. The loopback preview is http://127.0.0.1:4568/ (Quarto preview service); a 2026-09-23 loopback curl -I returned HTTP/1.1 200 OK with the gallery title.
Quartz’s full additional callout aliases remain an explicit limitation: the candidate faithfully styles Quarto’s five native types, nesting, and collapse; adding the other Quartz authoring names requires a separate public syntax transformer contract.