|
149 | 149 | {"id":"bd-bsut","title":"Match Quarto 1 page-navigation default + styling + icons","description":"Tweak prev/next page-navigation behavior in websites to match Quarto 1:\n\n1. Default visibility: Q1 defaults website page-navigation to false (books default to true). Today PageNavGenerateTransform always populates the strip when a sidebar exists, so links appear unbidden in minimal websites. Add config support for top-level / website.page-navigation, default false for websites, with document-level override.\n\n2. Styling: Q1's .page-navigation is display:flex; justify-content:space-between, putting prev on the left and next on the right of one row. Q2 currently emits the markup but has no horizontal layout rule, so each link wraps onto its own row, left-aligned. Port the Q1 SCSS rules.\n\n3. Arrow icons: Q2 emits <i class=\"bi bi-arrow-left-short\"></i> and bi-arrow-right-short, but Bootstrap Icons CSS is not bundled into Q2 output, so the glyphs render blank. Bundle bootstrap-icons (or a minimal subset) and add the <link rel=\"stylesheet\"> to the head.\n\nReference fixture: examples/websites/06-site-metadata. Plan: claude-notes/plans/2026-04-30-page-nav-q1-parity.md.\n\nPhases:\n- Phase 0: tests + fixture, capture current Q2 output for regression baselines\n- Phase 1: project-config gate (page-navigation default false for websites)\n- Phase 2: Q1 .page-navigation flex SCSS\n- Phase 3: bundle Bootstrap Icons + link in head\n- Phase 4: docs (link bd-nf50)","status":"closed","priority":1,"issue_type":"feature","created_at":"2026-04-30T13:14:56.003176Z","created_by":"cscheid","updated_at":"2026-04-30T13:54:01.336227Z","closed_at":"2026-04-30T13:54:01.336080Z","close_reason":"All four phases complete: project-config gate (default off for websites), Q1 page-nav layout SCSS ported, Bootstrap Icons vendored + auto-emitted, docs + examples updated. Full CI verify passes. End-to-end browser screenshot recorded at /tmp/q2-page-nav-after.png shows single-row strip with visible arrow glyphs. Plan: claude-notes/plans/2026-04-30-page-nav-q1-parity.md","source_repo":".","compaction_level":0,"original_size":0} |
150 | 150 | {"id":"bd-but3","title":"Hub-client math rendering blocked by iframe sandbox","description":"bd-w5ov shipped MathJax + KaTeX for HTML output. Live Chromium smoke confirmed correctness on the native CLI render path. However, a post-implementation regression test in hub-client preview shows raw \\(e=mc^2\\) text — math is NOT typesetting there.\n\nRoot cause: the hub-client preview iframe is sandboxed without 'allow-scripts'. Set in DoubleBufferedIframe.tsx:347,355 and MorphIframe.tsx:564 (sandbox='allow-same-origin allow-popups'). iframePostProcessor.ts:149-167 documents that script inlining is disabled for the same reason. No <script> in the iframe executes today, so MathJax/KaTeX CDN loaders never run, and our inline window.MathJax config block also doesn't execute.\n\nThe WASM pipeline IS correctly wired to MathJsStage and meta.math IS populated; the iframe sandbox just drops everything on the floor.\n\nResolution: blocked on the existing (separate) plan to isolate the preview iframe on a subdomain via service workers, which would let us re-enable allow-scripts safely. Once that lands, math typesetting in hub-client should 'just work' with no changes to MathJsStage.\n\nAlternatives considered (not pursued in v1):\n- Add allow-scripts unconditionally — strictly weaker security model; rejected by user.\n- Server-side pre-typesetting (KaTeX renderToString or MathJax Node) on the WASM pipeline — non-trivial and not needed once scripts run.\n- Switch hub-client default to Temml/MathML (no JS runtime needed) — bd-si8b tracks this independently; would not fix MathJax/KaTeX users.\n\nAcceptance: when service-worker iframe isolation is in place, set sandbox='allow-scripts allow-same-origin allow-popups' (and re-enable script handling in iframePostProcessor.ts), then re-run a hub-client smoke against the user's reproducer doc:\n\n---\nformat: html\ntitle: Math maybe?\n---\nHello, world. Will this work? $e=mc^2$.\n\n— and confirm typeset output in the preview.","status":"open","priority":2,"issue_type":"bug","created_at":"2026-05-05T00:11:28.712023Z","created_by":"cscheid","updated_at":"2026-05-05T00:11:28.712023Z","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"bd-but3","depends_on_id":"bd-w5ov","type":"discovered-from","created_at":"2026-05-05T00:11:28.712023Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
151 | 151 | {"id":"bd-bwwv","title":"Navbar sub-row (book-style secondary navbar)","description":"Epic-excluded for MVP but worth tracking. Q1 renders a second row on book sites for chapter/part navigation. Requires ProjectType-specific extension to WebsiteProjectType (or its book successor). See 2026-04-24-websites-phase-3.md §Follow-up beads.","status":"open","priority":4,"issue_type":"feature","created_at":"2026-04-24T19:43:00.017912Z","created_by":"cscheid","updated_at":"2026-04-24T19:43:00.017912Z","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"bd-bwwv","depends_on_id":"bd-fqyg","type":"discovered-from","created_at":"2026-04-24T19:43:00.017912Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
| 152 | +{"id":"bd-c05x6","title":"Plumb SourceInfo into Q-13-4 body-link 'missing document' warnings","description":"Today the Q-13-4 'Body link references missing document' warning is emitted without a source location, so a user running 'q2 render' on a website sees only the missing target — not which file or line introduced the broken link.\n\nExample, running 'cargo run --bin q2 -- render docs/' on this repo's docs site today:\n\n Warning [Q-13-4]: Body link references missing document\n 'authoring/markdown/markdown-basics.qmd' is not in the project index.\n i Check the spelling, or confirm the target file is included in the render set.\n\nThere is no 'at file:row:col' line, even though the body-link rewriter has the full Link node in hand and Link.target_source.url already carries a SourceInfo populated by the parser (crates/pampa/src/pandoc/treesitter_utils/span_link_helpers.rs:109).\n\nbd-qor9a already plumbed source-info into the nav-surface Q-13-* diagnostics (sidebar / navbar / footer / page-nav) via the paired href_source field. bd-hjv5o lists this body-link follow-up as item #1 — 'lightweight follow-up' because resolve_doc_relative_href already takes an Option<SourceInfo> location parameter; the body-link callsite just passes None at crates/quarto-core/src/transforms/link_rewrite.rs:224.\n\nScope:\n\n1. Pass link.target_source.url.clone() to resolve_doc_relative_href in LinkRewriter::visit_inline.\n2. Extend the Q-13-4 unit test (link_rewrite_diagnostic_uses_body_link_label) to assert d.location.is_some() and that the location maps back to the URL substring.\n3. Extend the integration test in crates/quarto-core/tests/link_rewriting_pipeline.rs that exercises Q-13-4 to assert on location.\n4. End-to-end: re-run 'q2 render docs/' and confirm the warning gains an 'at file:row:col' line under each Q-13-4.\n\nOut of scope:\n- Other Q-13-* surfaces (already covered by bd-qor9a).\n- Image href diagnostics (images aren't checked against the index).\n- RawHtml links (no SourceInfo on the URL portion).\n\nPlan: claude-notes/plans/2026-05-20-bd-PLACEHOLDER-body-link-source-location.md","notes":"Plan written at claude-notes/plans/2026-05-20-bd-c05x6-body-link-source-location.md (draft — awaiting user iteration before implementation begins).","status":"closed","priority":3,"issue_type":"task","created_at":"2026-05-21T00:25:11.017118Z","created_by":"cscheid","updated_at":"2026-05-21T00:37:25.978349Z","closed_at":"2026-05-21T00:37:25.978171Z","close_reason":"Implementation complete. link_rewrite.rs:224 now passes link.target_source.url.clone() instead of None to resolve_doc_relative_href, so the Q-13-4 'Body link references missing document' warning carries the link URL's SourceInfo. End-to-end verified on docs/ — Q-13-4 warnings now render with Ariadne source excerpts pointing at the offending .qmd:line:col. Three new/updated tests: link_rewrite_diagnostic_carries_source_location (unit, new), pipeline_body_link_broken_qmd_emits_diagnostic + pipeline_body_link_unresolvable_in_website_warns (integration, extended). cargo xtask verify --skip-hub-build clean (all 12 steps green). Doc-comments on missing_document_warning, resolve_href_for_html, resolve_doc_relative_href updated to reflect post-bd-c05x6 reality. Plan: claude-notes/plans/2026-05-20-bd-c05x6-body-link-source-location.md (all phases checked). Changes uncommitted pending user review.","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"bd-c05x6","depends_on_id":"bd-hjv5o","type":"discovered-from","created_at":"2026-05-21T00:25:11.017118Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
152 | 153 | {"id":"bd-c083","title":"Cargo: upgrade tree-sitter v0.25.10 → v0.26.8","description":"Major upgrade surfaced by cargo-upgrade survey 2026-05-04. Current 0.25.10 is range-pinned in workspace; latest is 0.26.8. Type: pre-1.0 minor (semver-breaking). Review changelog and bump deliberately. See claude-notes/plans/2026-05-04-cargo-upgrade-survey.md and bd-hb8h.","status":"closed","priority":3,"issue_type":"chore","created_at":"2026-05-04T18:15:55.321199Z","created_by":"cscheid","updated_at":"2026-05-04T20:30:44.759296Z","closed_at":"2026-05-04T20:30:44.759137Z","close_reason":"merged: 61b01cd4","source_repo":".","compaction_level":0,"original_size":0,"labels":["cargo","deps"],"dependencies":[{"issue_id":"bd-c083","depends_on_id":"bd-hb8h","type":"discovered-from","created_at":"2026-05-04T18:16:05.692502Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
153 | 154 | {"id":"bd-c3jh","title":"Phase 9 follow-up: GC stale VFS artifacts at session end","description":"When the hub-client preview re-renders, the WASM Pass-2 produces new artifact paths (theme-css fingerprints change when content changes) but the *old* artifacts under /.quarto/project-artifacts/... linger in VFS storage. The new HTML never references them — so they don't poison the page — but they do leak.\n\nGC pass at session-end (or periodically): walk /.quarto/project-artifacts/, drop any entry whose path doesn't appear in a 'live' set (the union of artifact paths from the most-recent project render).\n\nPhase 9 plan §Risks: 'Add a follow-up to GC /.quarto/project-artifacts/... entries with no live references at session end. Not a Phase-9 blocker.'","status":"open","priority":4,"issue_type":"task","created_at":"2026-04-29T00:32:31.194561Z","created_by":"cscheid","updated_at":"2026-04-29T00:32:31.194561Z","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"bd-c3jh","depends_on_id":"bd-0tr6","type":"parent-child","created_at":"2026-04-29T00:32:31.194561Z","created_by":"cscheid","metadata":"{}","thread_id":""},{"issue_id":"bd-c3jh","depends_on_id":"bd-ayj6","type":"discovered-from","created_at":"2026-04-29T00:32:31.194561Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
154 | 155 | {"id":"bd-coffj","title":"q2 preview: Div with class='section' emits <div>, not <section> — breaks Quarto's :has(+ section) margin rules","description":"The native HTML writer (crates/pampa/src/writers/html.rs:1129-1142) emits <section>...</section> for Pandoc Div blocks whose class list contains 'section'; the React Div component in ts-packages/preview-renderer/src/q2-preview/blocks/Div.tsx always emits <div>. Consequence: Quarto theme CSS rules keyed on the <section> tag (e.g. 'main.content > p:has(+ section) { margin-bottom: 2rem }') don't apply to preview, causing visible spacing drift. Concrete repro: the 'This is an extremely basic website' paragraph in the fixture has 17px bottom margin in preview vs 34px in render. Fix: mirror the native writer — emit <section> when classes contains SECTION ('section').","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-05-18T17:53:40.764259Z","created_by":"cscheid","updated_at":"2026-05-18T17:58:07.422417Z","closed_at":"2026-05-18T17:58:07.422276Z","close_reason":"Implementation complete: Pandoc Divs with class='section' now render as <section> in q2 preview, matching the native HTML writer. Visible result: 'This is an extremely basic website' paragraph margin-bottom now 34px (was 17px), matching q2 render exactly. Quarto theme's main.content > p:has(+ section) selector now matches in preview. 2 new SPA tests; 152/152 green; cargo xtask verify 12/12 green.","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"bd-coffj","depends_on_id":"bd-kw93","type":"parent-child","created_at":"2026-05-18T17:53:40.764259Z","created_by":"cscheid","metadata":"{}","thread_id":""}]} |
|
0 commit comments