From 0d01bfa85efdbca4221ba4324080a704cbcfabb0 Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 05:37:43 -0500 Subject: [PATCH 1/6] docs: install the current component showcases from the CLI --- docs/guides/component-preview-8.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/guides/component-preview-8.md b/docs/guides/component-preview-8.md index e3fb4e7..3fc81a6 100644 --- a/docs/guides/component-preview-8.md +++ b/docs/guides/component-preview-8.md @@ -32,8 +32,22 @@ column headers, lists and an image description authored through components. ## Recreate the documents -Unzip the kit, open its `fullbleed-component-showcases-2.6.0a8` folder, activate -your virtual environment and run: +You can download the ZIP above or install the same source kit through Fullbleed's +CLI. In an activated virtual environment, run: + +```sh +python -m pip install "fullbleed==2.6.0a8" +fullbleed new remote component-showcase my-documents --version 0.1.3 +cd my-documents +``` + +An existing stable CLI can also download the template. Template `0.1.3` selects +the source archive; its `requirements.txt` pins engine `2.6.0a8`. The installer +checks the archive's SHA-256 before extracting files into an absent or empty +directory. It does not install dependencies or execute the source. + +If you used the ZIP, open its `fullbleed-component-showcases-2.6.0a8` folder. +From either project folder, with your virtual environment activated, run: ```sh python -m pip install -r requirements.txt From c825aae127fe9e6f0c005c0b2dc399498c5f778f Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 12:56:28 -0500 Subject: [PATCH 2/6] docs: distinguish unreleased page bands from the a8 package --- docs/guides/component-preview-8.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/guides/component-preview-8.md b/docs/guides/component-preview-8.md index 3fc81a6..1c14dc6 100644 --- a/docs/guides/component-preview-8.md +++ b/docs/guides/component-preview-8.md @@ -110,7 +110,9 @@ corpus remains failing, with 25 failed cases and 18 disputed references. Reports checksums, limits and reproduction details are linked from the release. These fixture checks do not establish accessibility for arbitrary documents or -human assistive-technology usability. Running-box measurements do not establish -complete painted-ink fit; transformed content and oversized descendants can -clip. `PageBand` and `PageNumbers` remain design proposals. The preview preserves -the deterministic print-document engine and static HTML export boundaries. +human assistive-technology usability. In the published a8 package, running-box +measurements do not establish complete painted-ink fit; transformed content and +oversized descendants can clip. `PageBand` and `PageNumbers` are implemented in +[unreleased source](https://github.com/fullbleed-engine/fullbleed-official/blob/4379bb4c0ea792b747942d2dc7df12cd40e79150/docs/component-page-bands.md) +and are not included in this published package. The preview preserves the +deterministic print-document engine and static HTML export boundaries. From 982009ce6eb43d0af7d4475bb75df7fe70478784 Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 15:17:47 -0500 Subject: [PATCH 3/6] docs: add the qualified alpha 9 page-band notebook source --- .../component_page_bands.ipynb | 386 ++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 examples/page-band-notebook-alpha9/component_page_bands.ipynb diff --git a/examples/page-band-notebook-alpha9/component_page_bands.ipynb b/examples/page-band-notebook-alpha9/component_page_bands.ipynb new file mode 100644 index 0000000..1d89aec --- /dev/null +++ b/examples/page-band-notebook-alpha9/component_page_bands.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "intro", + "metadata": {}, + "source": [ + "# Your design, on every page\n", + "\n", + "Build a three-page Common Ground report with reusable Python components, a\n", + "styled header, a data table, and finalized page numbers. Edit the values below\n", + "and rerun to make the design your own. No HTML strings are needed for authoring.\n", + "\n", + "This notebook is an opt-in **Fullbleed 2.6.0a9** example. The component API is\n", + "experimental. All content is fictional. Fullbleed and this notebook are MIT licensed.\n", + "\n", + "Use a standard CPU runtime in Colab or a local Jupyter notebook. Run all cells,\n", + "review the page previews, and download your files before leaving the session." + ] + }, + { + "cell_type": "markdown", + "id": "install-help", + "metadata": {}, + "source": [ + "## 1. Install the pinned preview\n", + "\n", + "Fullbleed generates the PDF without a browser or system fonts. The notebook host supplies its display and download interface." + ] + }, + { + "cell_type": "code", + "id": "install-fullbleed", + "metadata": {}, + "source": [ + "%pip install --quiet --only-binary=:all: \"fullbleed==2.6.0a9\"" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "controls-help", + "metadata": {}, + "source": [ + "## 2. Make it yours\n", + "\n", + "Start with the name, headline, accent color, and activity rows. All text values\n", + "remain text, including `<` and `&`. After an edit, rerun this cell and every cell\n", + "below it. Add activity rows to see the page total change after pagination." + ] + }, + { + "cell_type": "code", + "id": "report-controls", + "metadata": {}, + "source": [ + "PROJECT_NAME = \"Common Ground\"\n", + "HEADLINE = \"A season of shared space.\"\n", + "ACCENT = \"#755122\"\n", + "ACTIVITY = [\n", + " (\"Garden mornings\", \"12\", \"84 visits\"),\n", + " (\"Repair afternoons\", \"4\", \"31 items repaired\"),\n", + " (\"Shared meals\", \"3\", \"96 places set\"),\n", + " (\"Seed exchanges\", \"2\", \"47 packets shared\"),\n", + " (\"Welcome walks\", \"6\", \"28 neighbors\"),\n", + "]" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "styles-help", + "metadata": {}, + "source": [ + "## 3. Give the components a shared style\n", + "\n", + "`Theme` supplies inherited text and named colors. `styled(...)` creates reusable\n", + "defaults. `class_name=\"folio\"` below adds a literal class; the `.folio` selector\n", + "in `Document(styles=...)` defines how the page counter looks." + ] + }, + { + "cell_type": "code", + "id": "shared-styles", + "metadata": {}, + "source": [ + "# SPDX-License-Identifier: MIT\n", + "\"\"\"A fictional seasonal brief built from reusable component values.\"\"\"\n", + "from fullbleed.ui.experimental import (\n", + " Box, Column, DataTable, Document, Flow, Heading, Page, PageBand, PageBreak,\n", + " PageNumbers, Paragraph, Row, Stack, Strong, Theme, component, mm, pt, style,\n", + " styled, token,\n", + ")\n", + "\n", + "\n", + "THEME = Theme(\n", + " {\"ink\": \"#183e34\", \"muted\": \"#53665c\", \"paper\": \"#edf2e6\", \"accent\": ACCENT},\n", + " text=style(font_family=\"Inter\", font_size=pt(10), line_height=1.45, color=token(\"ink\")),\n", + ")\n", + "Kicker = styled(Paragraph, font_size=pt(7), font_weight=700, letter_spacing=pt(1),\n", + " text_transform=\"uppercase\", color=token(\"accent\"))\n", + "Title = styled(Heading, font_size=pt(31), line_height=1.08, letter_spacing=pt(-0.8))\n", + "Small = styled(Paragraph, font_size=pt(8), color=token(\"muted\"))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "components-help", + "metadata": {}, + "source": [ + "## 4. Compose reusable pieces\n", + "\n", + "`Brand`, `Metric`, and `NextStep` return ordinary component trees. Named `part`\n", + "values let a caller use `.with_parts(...)` to customize an internal element.\n", + "The same `Brand()` value can be used in a page band or in document content." + ] + }, + { + "cell_type": "code", + "id": "reusable-components", + "metadata": {}, + "source": [ + "@component(parts=(\"name\", \"detail\"))\n", + "def Brand():\n", + " return Stack(\n", + " Paragraph(PROJECT_NAME.upper(), part=\"name\", style=style(font_size=pt(8), font_weight=700, letter_spacing=pt(0.8))),\n", + " Paragraph(\"A neighborhood, growing together.\", part=\"detail\", style=style(font_size=pt(6), color=token(\"muted\"))),\n", + " gap=pt(2),\n", + " )\n", + "\n", + "\n", + "@component(parts=(\"value\", \"label\"))\n", + "def Metric(value, label):\n", + " return Stack(\n", + " Paragraph(value, part=\"value\", style=style(font_size=pt(32), font_weight=700, line_height=1.1)),\n", + " Small(label, part=\"label\"), gap=pt(5),\n", + " )\n", + "\n", + "\n", + "@component(parts=(\"heading\", \"body\"))\n", + "def NextStep(number, title, text):\n", + " return Stack(\n", + " Kicker(number),\n", + " Heading(title, level=3, part=\"heading\", style=style(font_size=pt(16))),\n", + " Paragraph(text, part=\"body\"), gap=pt(6),\n", + " )" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "document-help", + "metadata": {}, + "source": [ + "## 5. Put the report together\n", + "\n", + "`PageBand` places components in left, center, or right margin slots.\n", + "`PageNumbers(total=True)` uses final page counts. Page margins must leave enough\n", + "space for the bands; a fit error identifies the page, slot, and authored source.\n", + "\n", + "The bands repeat as PDF artifacts outside body reading order. Essential identity\n", + "and report information also belong in the body.", + "\n\nThe short lesson box uses `break_inside=\"avoid\"` to keep its heading and body\ntogether when a longer activity table pushes it to the next page." + ] + }, + { + "cell_type": "code", + "id": "compose-document", + "metadata": {}, + "source": [ + "def build_document():\n", + " activity = ACTIVITY\n", + " return Document(\n", + " Flow(\n", + " Kicker(\"Field notes / Autumn 2026\"),\n", + " Title(HEADLINE, level=1),\n", + " Paragraph(\"A small record of what happens when neighbors have a place to meet, make, and lend a hand.\"),\n", + " Box(\n", + " Row(Metric(\"126\", \"neighbors took part\"), Metric(\"21\", \"open sessions\"), gap=pt(18)),\n", + " style=style(background=token(\"paper\"), padding=pt(18)),\n", + " ),\n", + " Heading(\"The place is the invitation\", level=2, style=style(font_size=pt(17))),\n", + " Paragraph(\"We kept the gate open, the table long, and the activities simple. New faces became familiar ones. Practical work made room for conversation.\"),\n", + " Small(f\"{PROJECT_NAME} is a fictional community project. Every figure in this brief is sample data.\"),\n", + " gap=pt(15),\n", + " ),\n", + " PageBreak(),\n", + " Flow(\n", + " Kicker(\"01 / What we made possible\"),\n", + " Title(\"Small actions. Shared results.\", level=2),\n", + " Paragraph(\"The busiest sessions mixed a useful task with time to stay. No specialist knowledge was needed to join in.\"),\n", + " DataTable(\n", + " activity, caption=\"Season activity\", columns=(\n", + " Column(\"Activity\", lambda row: row[0]),\n", + " Column(\"Sessions\", lambda row: row[1], align=\"right\", width=mm(18)),\n", + " Column(\"Participation\", lambda row: row[2], width=mm(37)),\n", + " ),\n", + " ).with_parts(\n", + " caption=style(font_size=pt(9), font_weight=700, margin_bottom=pt(7)),\n", + " header=style(background=token(\"paper\"), font_size=pt(8), color=token(\"ink\")),\n", + " cell=style(font_size=pt(8), padding=pt(8)),\n", + " ),\n", + " Box(\n", + " Kicker(\"A useful lesson\"),\n", + " Paragraph(Strong(\"Make the first step visible. \"), \"A welcome at the gate, a clearly marked tool bench, and a task that takes ten minutes helped people begin.\"),\n", + " style=style(background=token(\"paper\"), padding=pt(15), break_inside=\"avoid\"),\n", + " ),\n", + " Small(\"Visits and participation counts can include the same neighbor more than once. They describe activity, not unique attendance.\"),\n", + " gap=pt(12),\n", + " ),\n", + " PageBreak(),\n", + " Flow(\n", + " Kicker(\"02 / What comes next\"),\n", + " Title(\"Keep the welcome growing.\", level=2),\n", + " Paragraph(\"Three modest commitments will guide the next season. Each has a clear owner and a way for someone new to help.\"),\n", + " NextStep(\"01\", \"Make room at the table\", \"Reserve a few places at every shared meal for neighbors joining for the first time. Publish the menu and access information together.\"),\n", + " NextStep(\"02\", \"Pass on a practical skill\", \"Pair each repair session with a short demonstration. Keep a simple printed guide beside the tools for people who prefer to follow at their own pace.\"),\n", + " NextStep(\"03\", \"Listen before adding more\", \"Ask what made participation easy and what got in the way. Use those answers to choose the next opening hours and activities.\"),\n", + " Small(f\"Prepared by {PROJECT_NAME} / October 2026. This sample is authored with Fullbleed components, including its repeated header and finalized page numbers.\"),\n", + " gap=pt(15),\n", + " ),\n", + " title=f\"{PROJECT_NAME} — Field notes\", lang=\"en-US\", theme=THEME,\n", + " page=Page(\n", + " \"A5\", margin=(mm(20), mm(17), mm(20), mm(17)),\n", + " header=PageBand(left=Brand(), right=Kicker(\"Field notes / 03\").with_style(font_size=pt(6))),\n", + " footer=PageBand(\n", + " left=Small(\"AUTUMN 2026 · SAMPLE DATA\").with_style(font_size=pt(6)),\n", + " right=PageNumbers(total=True, prefix=\"\", separator=\" / \", class_name=\"folio\"),\n", + " ),\n", + " ),\n", + " styles={\".folio\": style(font_size=pt(8), color=token(\"muted\"))},\n", + " )\n", + "\n", + "\n", + "document = build_document()" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "render-help", + "metadata": {}, + "source": [ + "## 6. Render PDF and export HTML\n", + "\n", + "The bundled Inter font is registered explicitly for PDF generation. Styled HTML\n", + "keeps its font-family declaration; a browser host supplies Inter or a fallback.\n", + "Unstyled HTML keeps content and classes while removing generated and inline styles.\n", + "Both exports contain one header/main/footer sequence and explicit `[page]` /\n", + "`[pages]` placeholders. They do not add JavaScript or browser pagination.\n", + "\n", + "The PDF/UA-2 profile and source checks express authoring intent. Review and\n", + "validate your own output; this notebook does not establish arbitrary-document\n", + "accessibility or replace human assistive-technology testing." + ] + }, + { + "cell_type": "code", + "id": "render-export", + "metadata": {}, + "source": [ + "from importlib import metadata, resources\n", + "from pathlib import Path\n", + "from fullbleed.ui.experimental import Renderer\n", + "\n", + "assert metadata.version(\"fullbleed\") == \"2.6.0a9\"\n", + "output = Path(\"output\")\n", + "output.mkdir(exist_ok=True)\n", + "font = resources.files(\"fullbleed_assets\").joinpath(\"fonts/Inter-Variable.ttf\")\n", + "renderer = Renderer(\n", + " font_files=[str(font)], pdf_profile=\"pdfua2\",\n", + " document_timestamp=\"2026-10-19T00:00:00Z\",\n", + ")\n", + "prepared = document.prepare(renderer, a11y_mode=\"raise\")\n", + "pdf_path = output / \"field-notes.pdf\"\n", + "pdf_path.write_bytes(prepared.render_pdf())\n", + "for include_styles, filename in (\n", + " (True, \"field-notes.styled.html\"),\n", + " (False, \"field-notes.unstyled.html\"),\n", + "):\n", + " (output / filename).write_text(\n", + " document.to_html(include_styles=include_styles, a11y_mode=\"raise\"),\n", + " encoding=\"utf-8\", newline=\"\\n\",\n", + " )\n", + "print(f\"Saved {pdf_path} and both HTML exports.\")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "id": "preview", + "metadata": {}, + "source": [ + "from IPython.display import Image, display\n", + "\n", + "preview_paths = []\n", + "for number, png in enumerate(prepared.render_image_pages(dpi=110), start=1):\n", + " path = output / f\"field-notes-page-{number}.png\"\n", + " path.write_bytes(png)\n", + " preview_paths.append(path)\n", + " display(Image(data=png, width=540))\n", + "print(f\"{len(preview_paths)} pages. Review every page before using the document.\")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "download-help", + "metadata": {}, + "source": [ + "## 7. Download the current result\n", + "\n", + "The ZIP contains the PDF, both HTML exports, and this run's page previews. In\n", + "Colab the next cell starts a download; local Jupyter shows a download link.\n", + "The individual files also remain in `output/`. Shorter reruns exclude old,\n", + "longer-run previews from the ZIP." + ] + }, + { + "cell_type": "code", + "id": "download", + "metadata": {}, + "source": [ + "import sys\n", + "from zipfile import ZipFile, ZIP_DEFLATED\n", + "\n", + "bundle_path = output / \"component-field-notes.zip\"\n", + "current_files = [pdf_path, output / \"field-notes.styled.html\",\n", + " output / \"field-notes.unstyled.html\", *preview_paths]\n", + "with ZipFile(bundle_path, \"w\", compression=ZIP_DEFLATED) as bundle:\n", + " for path in current_files:\n", + " bundle.write(path, arcname=path.name)\n", + "\n", + "if \"google.colab\" in sys.modules:\n", + " from google.colab import files\n", + " files.download(str(bundle_path))\n", + "else:\n", + " from IPython.display import FileLink\n", + " display(FileLink(bundle_path.as_posix()))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "next-steps", + "metadata": {}, + "source": [ + "## Keep composing\n", + "\n", + "- [Page-band guide and complete source kit](https://docs.fullbleed.dev/guides/component-preview-9/)\n", + "- [API, fit diagnostics, and limitations](https://github.com/fullbleed-engine/fullbleed-official/blob/v2.6.0a9/docs/component-page-bands.md)\n", + "- [Northstar and Common Ground through both authoring paths](https://docs.fullbleed.dev/guides/showcase-authoring/)\n", + "- [Share a small authoring example](https://github.com/fullbleed-engine/fullbleed-official/discussions/86)\n", + "\n", + "Native streaming output is not atomic. Managed fit checks are conservative.\n", + "Named or facing-page band variants are not part of this preview. Bootstrap\n", + "components and HTML exports remain static." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "colab": { + "name": "component_page_bands.ipynb", + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 9486636cc04533da2d32941f83f7a72de5f8c85f Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 16:42:16 -0500 Subject: [PATCH 4/6] docs: publish the alpha 9 component page-band guide --- .github/workflows/docs.yml | 27 +- .../component-preview-9/field-notes-1.png | Bin 0 -> 75606 bytes .../component-preview-9/field-notes-2.png | Bin 0 -> 89128 bytes .../component-preview-9/field-notes-3.png | Bin 0 -> 114186 bytes .../browser-verification.json | 100 +++ .../component_page_bands.ipynb | 386 ++++++++++ .../verification.json | 691 ++++++++++++++++++ docs/getting-started/component-notebook.md | 5 +- docs/getting-started/page-band-notebook.md | 114 +++ docs/guides/accessible-showcase.md | 4 +- docs/guides/bootstrap-components-preview.md | 4 +- docs/guides/component-preview-8.md | 13 +- docs/guides/component-preview-9.md | 136 ++++ docs/guides/showcase-authoring.md | 4 +- mkdocs.yml | 3 +- tools/check_page_band_notebook_jupyter.py | 236 ++++++ tools/verify_page_band_notebook.py | 203 +++++ 17 files changed, 1912 insertions(+), 14 deletions(-) create mode 100644 docs/assets/component-preview-9/field-notes-1.png create mode 100644 docs/assets/component-preview-9/field-notes-2.png create mode 100644 docs/assets/component-preview-9/field-notes-3.png create mode 100644 docs/assets/page-band-notebook-alpha9/browser-verification.json create mode 100644 docs/assets/page-band-notebook-alpha9/component_page_bands.ipynb create mode 100644 docs/assets/page-band-notebook-alpha9/verification.json create mode 100644 docs/getting-started/page-band-notebook.md create mode 100644 docs/guides/component-preview-9.md create mode 100644 tools/check_page_band_notebook_jupyter.py create mode 100644 tools/verify_page_band_notebook.py diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 132c6dc..e8cd5dc 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -112,6 +112,31 @@ jobs: name: component-notebook-${{ matrix.channel }}-${{ matrix.os }} path: target/component-notebook/ retention-days: 14 + page-band-notebook: + name: Page-band notebook (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v6 + with: + python-version: '3.12' + - run: | + python -m pip install --only-binary=:all: -r tools/component-notebook-browser-requirements.txt + - name: Execute the page-band notebook and inspect PDF, HTML and ZIP files + run: python -I tools/verify_page_band_notebook.py --notebook examples/page-band-notebook-alpha9/component_page_bands.ipynb --out target/page-band-notebook + - name: Edit, run and download the page-band notebook in Jupyter + run: python -I tools/check_page_band_notebook_jupyter.py --reference target/page-band-notebook --out target/page-band-notebook/browser --browser chrome + - uses: actions/upload-artifact@v4 + if: always() + with: + name: page-band-notebook-${{ matrix.os }} + path: target/page-band-notebook/ + retention-days: 14 complete-html: name: Complete HTML guide and download (${{ matrix.os }}) runs-on: ${{ matrix.os }} @@ -1006,7 +1031,7 @@ jobs: path: site deploy: if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' - needs: [build, accessible-showcase, showcase-authoring, component-notebook, complete-html, component-preview, bootstrap-preview, components, node-components, dotnet-components, aspnet, chinese, arabic, markdown, tagged-notice, rust-download, matplotlib, numbered-report, axum, lambda-starter, n8n-workflow, laravel-queue, laravel-platform, streamlit] + needs: [build, accessible-showcase, showcase-authoring, component-notebook, page-band-notebook, complete-html, component-preview, bootstrap-preview, components, node-components, dotnet-components, aspnet, chinese, arabic, markdown, tagged-notice, rust-download, matplotlib, numbered-report, axum, lambda-starter, n8n-workflow, laravel-queue, laravel-platform, streamlit] runs-on: ubuntu-latest permissions: pages: write diff --git a/docs/assets/component-preview-9/field-notes-1.png b/docs/assets/component-preview-9/field-notes-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0fefdc1a9e6ca8644abd380a0806c07f113da3 GIT binary patch literal 75606 zcmdRVWmFtb^d%vX0D%Ar?(XgqAXspBcN;9YLju9w9fG^N2X}WJ++py++5YYMf8YJM z%jrWiLr+b2RlQg5-nutbQCQpHq1qlk>5A*|Ni5QlzvBw1)LO-5dI(dXf9Q-ray`N zMl%Rp(4d8Hf88iJA+Yiw*s9H73?7UxXZJhtJmy32&o|A7rU_=Pg?r#bSVyriFtDXIC^cTu zzKC^xJ8@gDZ_t32n3xeMNogG=aE^|xKE{+Z5OXt7(Z(iWJWO`VoV>@LM1vFVRGT

24zhdYeq35=gH=|Y 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 FngE()92Nio literal 0 HcmV?d00001 diff --git a/docs/assets/component-preview-9/field-notes-2.png b/docs/assets/component-preview-9/field-notes-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0724c699dff8876725ba06cbf6d3fae587435e GIT binary patch literal 89128 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 iW{>C)+24d)q%K;sF!}WUOGL3i-_$3DB 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

3Ir?+`6l|^_(N(wW_ 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%0A|VzH+NjimS?GF0w3VPiW{=bKR> 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 R)bHZqsVQqJl_^?;{xAOjA720f literal 0 HcmV?d00001 diff --git a/docs/assets/component-preview-9/field-notes-3.png b/docs/assets/component-preview-9/field-notes-3.png new file mode 100644 index 0000000000000000000000000000000000000000..f46985a5c24fda85071352661d36ef6dfa93c90a GIT binary patch literal 114186 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ܸZSzB<0Lm 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 z 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

p#lVfHMKb%rJ2Ya$wq#)+ka|tn^Z5QfmDK~ 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", + "HEADLINE": "A place to meet & make.", + "ACCENT": "#763c96", + "ACTIVITY": [ + [ + "Studio & cards", + "16", + "89 visits" + ], + [ + "Repair afternoons", + "4", + "31 items repaired" + ], + [ + "Shared meals", + "3", + "96 places set" + ], + [ + "Seed exchanges", + "2", + "47 packets shared" + ], + [ + "Welcome walks", + "6", + "28 neighbors" + ] + ] + }, + "pdf_sha256": "28cfb6ec8f9f92ac9d4e066e7a24dd1d036b90756ddd4f7fc87af8fd0793f701", + "text_markers": [ + "River ", + "A place to meet & make.", + "Keep the welcome growing.", + "Studio & cards", + "Repair afternoons", + "Shared meals", + "Seed exchanges", + "Welcome walks" + ], + "font_count": 1, + "accent": "#763c96", + "accent_pixels": 2141, + "independent_char_bounds_checked": 1818, + "repeat_pdf_identical": true, + "direct_pdf_identical": true, + "zip_files": [ + "field-notes.pdf", + "field-notes.styled.html", + "field-notes.unstyled.html", + "field-notes-page-1.png", + "field-notes-page-2.png", + "field-notes-page-3.png" + ], + "styled_and_unstyled_html": true, + "finalized_page_counts": true, + "callout_kept_together": true, + "artifact_hashes": { + "field-notes.pdf": "28cfb6ec8f9f92ac9d4e066e7a24dd1d036b90756ddd4f7fc87af8fd0793f701", + "field-notes.styled.html": "5d659c401b1b3be0d64c830a9ab6b6e30e4ffd48c2ef2b7606d92edf8f331979", + "field-notes.unstyled.html": "2dd7badcfd1b2cbe03523d15724b839365c71087bc694f9adbd599c172f1a486", + "field-notes-page-1.png": "5d9a4dfbfdb9d42440a4e26a374063ffe2dee56b373e7ad0cfff659d77485722", + "field-notes-page-2.png": "ab45145ded5f5f6d5f3ad5694caa88e3c06e585d677ea48e47b617bfcd95260f", + "field-notes-page-3.png": "cee354802353e0eaa452923658f33937ed5e7ea858e178c3d738f0f39609b09d" + } + }, + { + "name": "long", + "pages": 8, + "row_count": 72, + "controls": { + "PROJECT_NAME": "Common Ground", + "HEADLINE": "A season of shared space.", + "ACCENT": "#755122", + "ACTIVITY": [ + [ + "Session 01", + "1", + "8 neighbors" + ], + [ + "Session 02", + "2", + "8 neighbors" + ], + [ + "Session 03", + "3", + "8 neighbors" + ], + [ + "Session 04", + "4", + "8 neighbors" + ], + [ + "Session 05", + "5", + "8 neighbors" + ], + [ + "Session 06", + "6", + "8 neighbors" + ], + [ + "Session 07", + "7", + "8 neighbors" + ], + [ + "Session 08", + "8", + "8 neighbors" + ], + [ + "Session 09", + "9", + "8 neighbors" + ], + [ + "Session 10", + "10", + "8 neighbors" + ], + [ + "Session 11", + "11", + "8 neighbors" + ], + [ + "Session 12", + "12", + "8 neighbors" + ], + [ + "Session 13", + "13", + "8 neighbors" + ], + [ + "Session 14", + "14", + "8 neighbors" + ], + [ + "Session 15", + "15", + "8 neighbors" + ], + [ + "Session 16", + "16", + "8 neighbors" + ], + [ + "Session 17", + "17", + "8 neighbors" + ], + [ + "Session 18", + "18", + "8 neighbors" + ], + [ + "Session 19", + "19", + "8 neighbors" + ], + [ + "Session 20", + "20", + "8 neighbors" + ], + [ + "Session 21", + "21", + "8 neighbors" + ], + [ + "Session 22", + "22", + "8 neighbors" + ], + [ + "Session 23", + "23", + "8 neighbors" + ], + [ + "Session 24", + "24", + "8 neighbors" + ], + [ + "Session 25", + "25", + "8 neighbors" + ], + [ + "Session 26", + "26", + "8 neighbors" + ], + [ + "Session 27", + "27", + "8 neighbors" + ], + [ + "Session 28", + "28", + "8 neighbors" + ], + [ + "Session 29", + "29", + "8 neighbors" + ], + [ + "Session 30", + "30", + "8 neighbors" + ], + [ + "Session 31", + "31", + "8 neighbors" + ], + [ + "Session 32", + "32", + "8 neighbors" + ], + [ + "Session 33", + "33", + "8 neighbors" + ], + [ + "Session 34", + "34", + "8 neighbors" + ], + [ + "Session 35", + "35", + "8 neighbors" + ], + [ + "Session 36", + "36", + "8 neighbors" + ], + [ + "Session 37", + "37", + "8 neighbors" + ], + [ + "Session 38", + "38", + "8 neighbors" + ], + [ + "Session 39", + "39", + "8 neighbors" + ], + [ + "Session 40", + "40", + "8 neighbors" + ], + [ + "Session 41", + "41", + "8 neighbors" + ], + [ + "Session 42", + "42", + "8 neighbors" + ], + [ + "Session 43", + "43", + "8 neighbors" + ], + [ + "Session 44", + "44", + "8 neighbors" + ], + [ + "Session 45", + "45", + "8 neighbors" + ], + [ + "Session 46", + "46", + "8 neighbors" + ], + [ + "Session 47", + "47", + "8 neighbors" + ], + [ + "Session 48", + "48", + "8 neighbors" + ], + [ + "Session 49", + "49", + "8 neighbors" + ], + [ + "Session 50", + "50", + "8 neighbors" + ], + [ + "Session 51", + "51", + "8 neighbors" + ], + [ + "Session 52", + "52", + "8 neighbors" + ], + [ + "Session 53", + "53", + "8 neighbors" + ], + [ + "Session 54", + "54", + "8 neighbors" + ], + [ + "Session 55", + "55", + "8 neighbors" + ], + [ + "Session 56", + "56", + "8 neighbors" + ], + [ + "Session 57", + "57", + "8 neighbors" + ], + [ + "Session 58", + "58", + "8 neighbors" + ], + [ + "Session 59", + "59", + "8 neighbors" + ], + [ + "Session 60", + "60", + "8 neighbors" + ], + [ + "Session 61", + "61", + "8 neighbors" + ], + [ + "Session 62", + "62", + "8 neighbors" + ], + [ + "Session 63", + "63", + "8 neighbors" + ], + [ + "Session 64", + "64", + "8 neighbors" + ], + [ + "Session 65", + "65", + "8 neighbors" + ], + [ + "Session 66", + "66", + "8 neighbors" + ], + [ + "Session 67", + "67", + "8 neighbors" + ], + [ + "Session 68", + "68", + "8 neighbors" + ], + [ + "Session 69", + "69", + "8 neighbors" + ], + [ + "Session 70", + "70", + "8 neighbors" + ], + [ + "Session 71", + "71", + "8 neighbors" + ], + [ + "Session 72", + "72", + "8 neighbors" + ] + ] + }, + "pdf_sha256": "acd62ae55466277dff26a25c79d151cc2e641bfbbb73f93ab3f74fbbbd45f46c", + "text_markers": [ + "Common Ground", + "A season of shared space.", + "Keep the welcome growing.", + "Session 01", + "Session 02", + "Session 03", + "Session 04", + "Session 05", + "Session 06", + "Session 07", + "Session 08", + "Session 09", + "Session 10", + "Session 11", + "Session 12", + "Session 13", + "Session 14", + "Session 15", + "Session 16", + "Session 17", + "Session 18", + "Session 19", + "Session 20", + "Session 21", + "Session 22", + "Session 23", + "Session 24", + "Session 25", + "Session 26", + "Session 27", + "Session 28", + "Session 29", + "Session 30", + "Session 31", + "Session 32", + "Session 33", + "Session 34", + "Session 35", + "Session 36", + "Session 37", + "Session 38", + "Session 39", + "Session 40", + "Session 41", + "Session 42", + "Session 43", + "Session 44", + "Session 45", + "Session 46", + "Session 47", + "Session 48", + "Session 49", + "Session 50", + "Session 51", + "Session 52", + "Session 53", + "Session 54", + "Session 55", + "Session 56", + "Session 57", + "Session 58", + "Session 59", + "Session 60", + "Session 61", + "Session 62", + "Session 63", + "Session 64", + "Session 65", + "Session 66", + "Session 67", + "Session 68", + "Session 69", + "Session 70", + "Session 71", + "Session 72" + ], + "font_count": 1, + "accent": "#755122", + "accent_pixels": 3109, + "independent_char_bounds_checked": 3689, + "repeat_pdf_identical": true, + "direct_pdf_identical": true, + "zip_files": [ + "field-notes.pdf", + "field-notes.styled.html", + "field-notes.unstyled.html", + "field-notes-page-1.png", + "field-notes-page-2.png", + "field-notes-page-3.png", + "field-notes-page-4.png", + "field-notes-page-5.png", + "field-notes-page-6.png", + "field-notes-page-7.png", + "field-notes-page-8.png" + ], + "styled_and_unstyled_html": true, + "finalized_page_counts": true, + "callout_kept_together": true, + "artifact_hashes": { + "field-notes.pdf": "acd62ae55466277dff26a25c79d151cc2e641bfbbb73f93ab3f74fbbbd45f46c", + "field-notes.styled.html": "eb0cc12991e953f5b818c194cffdb50a05e2f133e93cfa86f11417bf9f17c87b", + "field-notes.unstyled.html": "b0e68ee4983b4cbe3e791654857742bb72e1b5fc2f3e4eaef0766b9235adbd62", + "field-notes-page-1.png": "74c2e71cc5c4d32171b5397739d5e4e1da91fbfa15155ff1b4dc8a839cc21c82", + "field-notes-page-2.png": "5097d31cc63715cb87f25ddcffe84856cdc328cb0ef950f4792dea4a441d9afe", + "field-notes-page-3.png": "79652b15c7a888337c23562cbe0fc65263d921aae45e7755b91e86b309cc2a3e", + "field-notes-page-4.png": "b97c3eb1a6cd74f043f86f47cd004ecccc738f36913811ba9c1ea4671decc014", + "field-notes-page-5.png": "3e86dd8de2ea14e183b2bdb2aa929ca013403ed4433b1a907cc59b4e009e014a", + "field-notes-page-6.png": "7ded0703778250a4ae2b4eedb4bc9d27c59358854f5536cf6b9938f9fa2567ff", + "field-notes-page-7.png": "ce4d9ad2c5c676197f766be0952f833d219983aeb1bf93e33464e93f93fa15dd", + "field-notes-page-8.png": "50a71a7b28960ffc5aca3707fe4f265b065315b9dd2eab4bb9feeda73b9a6f42" + } + }, + { + "name": "empty-after-long", + "pages": 3, + "row_count": 0, + "controls": { + "PROJECT_NAME": "Common Ground", + "HEADLINE": "A season of shared space.", + "ACCENT": "#755122", + "ACTIVITY": [] + }, + "pdf_sha256": "114f2076f53ef9e30704b94551c8c8ff6aab8ed56c3d2cb1f6e09e662897b942", + "text_markers": [ + "Common Ground", + "A season of shared space.", + "Keep the welcome growing." + ], + "font_count": 1, + "accent": "#755122", + "accent_pixels": 2137, + "independent_char_bounds_checked": 1685, + "repeat_pdf_identical": true, + "direct_pdf_identical": true, + "zip_files": [ + "field-notes.pdf", + "field-notes.styled.html", + "field-notes.unstyled.html", + "field-notes-page-1.png", + "field-notes-page-2.png", + "field-notes-page-3.png" + ], + "styled_and_unstyled_html": true, + "finalized_page_counts": true, + "callout_kept_together": true, + "artifact_hashes": { + "field-notes.pdf": "114f2076f53ef9e30704b94551c8c8ff6aab8ed56c3d2cb1f6e09e662897b942", + "field-notes.styled.html": "79ed8d981685fdfae2ec3b6af66fcd4d0ec11da1395bf4bba2fa03cefe127d2c", + "field-notes.unstyled.html": "3b93493642feb1c4770622561d0ccf1747edb9134d8e2a25a5246a2dd8b35604", + "field-notes-page-1.png": "626217670103c45188dd3c1cf96e2a82ef2add3b1bb00baa6dc19fb150eebea9", + "field-notes-page-2.png": "68578aef1e42fbe276c7225322ffd4710398456e5e13c42994b145936680e599", + "field-notes-page-3.png": "b3ddbd6538cf7e9f7109ca8b185dcc56f4e778808ae38ea9a18582628a432a16" + } + } + ], + "stale_previews_excluded": true, + "checked_at": "2026-10-19T21:25:11.896702+00:00", + "scope": "Jupyter kernel execution, independent saved-PDF inspection, repeat rendering, HTML semantics, and ZIP contents. Browser downloads and hosted Colab are separate checks.", + "source_commit": "982009ce6eb43d0af7d4475bb75df7fe70478784", + "source_path": "examples/page-band-notebook-alpha9/component_page_bands.ipynb", + "publication_status": "Verified with the public Fullbleed 2.6.0a9 wheel; hosted Colab execution is not claimed." +} diff --git a/docs/getting-started/component-notebook.md b/docs/getting-started/component-notebook.md index 57ba7ec..6610618 100644 --- a/docs/getting-started/component-notebook.md +++ b/docs/getting-started/component-notebook.md @@ -5,8 +5,9 @@ description: Edit order data and component styles in Colab or Jupyter, then down # Try Python components in a notebook -!!! info "Current component preview: 2.6.0a8" - [Get the current showcase source kit and verified PDFs](../guides/component-preview-8.md). +!!! info "Current component preview: 2.6.0a9" + [Get the current showcase source kit and verified PDFs](../guides/component-preview-9.md). + [Try the new page-band notebook](page-band-notebook.md) for reusable headers and final page totals. The downloadable kits on this page retain their original version pins and evidence. diff --git a/docs/getting-started/page-band-notebook.md b/docs/getting-started/page-band-notebook.md new file mode 100644 index 0000000..ce756a5 --- /dev/null +++ b/docs/getting-started/page-band-notebook.md @@ -0,0 +1,114 @@ +--- +title: Try reusable page bands in a notebook +description: Edit a complete Python component report in Colab or Jupyter. Customize the theme, repeating header, activity table and finalized page numbers, then download PDF and HTML. +--- + +# Your design, on every page + +Change the name, headline, colors and activity rows in a complete Python report. +The header repeats, the table continues across pages, and the footer uses the +final page total. The notebook includes all the component source, with no +authored HTML strings. + +[Open in Colab](https://colab.research.google.com/github/fullbleed-engine/docs/blob/982009ce6eb43d0af7d4475bb75df7fe70478784/examples/page-band-notebook-alpha9/component_page_bands.ipynb){ .md-button .md-button--primary } +[Download the notebook](../assets/page-band-notebook-alpha9/component_page_bands.ipynb){ .md-button download="component_page_bands.ipynb" } +[View the pinned source](https://github.com/fullbleed-engine/docs/blob/982009ce6eb43d0af7d4475bb75df7fe70478784/examples/page-band-notebook-alpha9/component_page_bands.ipynb){ .md-button } + +!!! info "Opt-in component preview: 2.6.0a9" + The first cell installs `fullbleed==2.6.0a9`. Its API under + `fullbleed.ui.experimental` remains experimental. The + [page-band guide](../guides/component-preview-9.md) includes the source ZIP, + API details, verification scope and current limits. + +[![Common Ground field notes with a reusable brand header, editorial title, two summary metrics and a finalized page count.](../assets/component-preview-9/field-notes-1.png){ width="480" }](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.6.0a9/common-ground-field-notes-pdfua2-2.6.0a9.pdf) + +## Run in Colab + +1. Open the notebook, sign in if prompted, and use a standard CPU runtime. +2. Choose **Runtime > Run all**. Review all three default page previews. +3. Edit `PROJECT_NAME`, `HEADLINE`, `ACCENT` or `ACTIVITY` in step 2. +4. Rerun from that cell through the download cell and save the resulting ZIP. + +The ZIP contains the current PDF, styled HTML, unstyled HTML and every current +page preview. Download it before leaving the hosted session. This example needs +no GPU. Colab's own availability and usage limits apply. + +## Run in local Jupyter + +Download the notebook and open a terminal in its folder. These instructions use +Python 3.11 or later and Jupyter Notebook 7.6.3. + +**Windows (PowerShell):** + +```powershell +py -m venv .venv +.\.venv\Scripts\python.exe -m pip install "notebook==7.6.3" +.\.venv\Scripts\python.exe -m notebook component_page_bands.ipynb +``` + +**macOS or Linux:** + +```sh +python3 -m venv .venv +.venv/bin/python -m pip install "notebook==7.6.3" +.venv/bin/python -m notebook component_page_bands.ipynb +``` + +Wait for the Python kernel to connect, then choose **Run > Run All Cells**. +Review the page previews and click **output/component-field-notes.zip** in +step 7. After an edit, rerun from that cell through the download cell. + +## See how the styles connect + +| What to change | Where to change it | +| --- | --- | +| Name, headline and activity rows | The values in step 2 | +| Shared colors and inherited text | `ACCENT` and `Theme(...)` | +| Reusable typography | `styled(...)` definitions | +| Table caption, header and cells | `DataTable(...).with_parts(...)` | +| Page counter appearance | `class_name="folio"` and the matching `.folio` rule in `Document(styles=...)` | +| Repeated brand and page counts | `PageBand(...)` and `PageNumbers(total=True)` | +| A short callout that should stay together | `style(break_inside="avoid", ...)` on its `Box` | + +The PDF renderer registers the bundled Inter font explicitly. Styled HTML keeps +its font-family declaration; the browser host supplies Inter or a fallback. +Unstyled HTML preserves content and classes for the host's CSS. Both HTML exports +use one header/main/footer sequence and explicit `[page]` / `[pages]` +placeholders. They do not add JavaScript or paginate the browser. + +To try the longer report, replace the activity rows in step 2 with: + +```python +ACTIVITY = [ + (f"Session {number:02d}", str(number), "8 neighbors") + for number in range(1, 73) +] +``` + +The checked long example has eight pages. Set `ACTIVITY = []` and rerun to see +the empty table and a three-page result. Old previews from a longer run stay out +of the new ZIP. + +## What has been checked + +The [execution record](../assets/page-band-notebook-alpha9/verification.json) +covers the default report, edited text and colors, 72 activity rows, and an +empty table after the long run: 3, 3, 8 and 3 pages. Independent PDF readers check +text, character bounds, colors and final page counts. Repeat renders and the +ZIP contents are checked, and all 17 final page previews were visually reviewed. + +The [browser record](../assets/page-band-notebook-alpha9/browser-verification.json) +covers editing cells, running them in local Jupyter, displaying every preview, +and clicking the actual ZIP download. Each downloaded artifact matches its +independently inspected reference. The default PDF reproduces the exact +qualified field-notes specimen. + +These checks cover local Jupyter; they do not execute a hosted Colab session. +The PDF/UA-2 profile and source checks express authoring intent. Validate your +own output and include human assistive-technology review where needed. +Repeated PDF bands are artifacts outside body reading order, so essential +identity and report information also belong in the body. + +The [earlier Bootstrap notebook](component-notebook.md) retains its original +alpha 6 pin and examples. [Share a small authoring example](https://github.com/fullbleed-engine/fullbleed-official/discussions/86) +if a composition or styling task feels awkward; use fictional data. diff --git a/docs/guides/accessible-showcase.md b/docs/guides/accessible-showcase.md index 353f44e..82ab57a 100644 --- a/docs/guides/accessible-showcase.md +++ b/docs/guides/accessible-showcase.md @@ -5,8 +5,8 @@ description: A designed two-page Common Ground guide with Python component sourc # An accessible document, authored with components -!!! info "Current component preview: 2.6.0a8" - [Get the current showcase source kit and verified PDFs](component-preview-8.md). +!!! info "Current component preview: 2.6.0a9" + [Get the current showcase source kit and verified PDFs](component-preview-9.md). The downloadable kits on this page retain their original version pins and evidence. diff --git a/docs/guides/bootstrap-components-preview.md b/docs/guides/bootstrap-components-preview.md index 04c74af..69d07e8 100644 --- a/docs/guides/bootstrap-components-preview.md +++ b/docs/guides/bootstrap-components-preview.md @@ -5,8 +5,8 @@ description: Try an experimental Python component kit with Bootstrap 5.0.0 cards # Bootstrap components, authored in Python -!!! info "Current component preview: 2.6.0a8" - [Get the current showcase source kit and verified PDFs](component-preview-8.md). +!!! info "Current component preview: 2.6.0a9" + [Get the current showcase source kit and verified PDFs](component-preview-9.md). The downloadable kits on this page retain their original version pins and evidence. diff --git a/docs/guides/component-preview-8.md b/docs/guides/component-preview-8.md index 1c14dc6..3e19fea 100644 --- a/docs/guides/component-preview-8.md +++ b/docs/guides/component-preview-8.md @@ -1,10 +1,14 @@ --- -title: Python components — current preview and source showcases +title: Python component alpha 8 and source showcases description: Recreate the Northstar invoice, Common Ground report and accessible community guide with Fullbleed 2.6.0a8. Download the verified source and export PDF or styled and unstyled HTML. --- # Python components: make the design your own +!!! info "Current component preview: 2.6.0a9" + [Get reusable page bands, finalized page numbers and the current source kit](component-preview-9.md). + This page retains the alpha 8 package and its verification record. + Start with a complete invoice, report or community guide. Edit Python functions, data and styles, then generate a PDF and HTML from the same component tree. The **2.6.0a8 preview** includes the page-furniture and running-header fixes from @@ -112,7 +116,8 @@ checksums, limits and reproduction details are linked from the release. These fixture checks do not establish accessibility for arbitrary documents or human assistive-technology usability. In the published a8 package, running-box measurements do not establish complete painted-ink fit; transformed content and -oversized descendants can clip. `PageBand` and `PageNumbers` are implemented in -[unreleased source](https://github.com/fullbleed-engine/fullbleed-official/blob/4379bb4c0ea792b747942d2dc7df12cd40e79150/docs/component-page-bands.md) -and are not included in this published package. The preview preserves the +oversized descendants can clip. `PageBand` and `PageNumbers` are available in +[alpha 9](component-preview-9.md) and are not included in the a8 package. The +[initial implementation source](https://github.com/fullbleed-engine/fullbleed-official/blob/4379bb4c0ea792b747942d2dc7df12cd40e79150/docs/component-page-bands.md) +records their original API qualification. The preview preserves the deterministic print-document engine and static HTML export boundaries. diff --git a/docs/guides/component-preview-9.md b/docs/guides/component-preview-9.md new file mode 100644 index 0000000..4ab4fe3 --- /dev/null +++ b/docs/guides/component-preview-9.md @@ -0,0 +1,136 @@ +--- +title: Reusable PDF headers, footers and page numbers in Python +description: Build a complete report from Python components, including styled headers and finalized page counts. Download the Fullbleed 2.6.0a9 source kit and export PDF or HTML. +--- + +# Reuse your design on every page + +A document's header can use the same brand component as its body. Its footer can +carry a styled page count that updates after pagination. Fullbleed **2.6.0a9** +adds `PageBand` and `PageNumbers` to the experimental Python component API. + +The Common Ground field-notes example combines a shared theme, reusable brand +and metric components, a table, and three numbered pages. Edit its Python +functions and data to make it your own. + +[Download the complete source kit](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.6.0a9/fullbleed-component-showcases-2.6.0a9.zip){ .md-button .md-button--primary } +[Open the field-notes PDF](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.6.0a9/common-ground-field-notes-pdfua2-2.6.0a9.pdf){ .md-button } +[Try the page-band notebook](../getting-started/page-band-notebook.md){ .md-button } + +![Common Ground field notes: a seasonal report with reusable brand header, editorial typography, summary metrics and a finalized page count.](../assets/component-preview-9/field-notes-1.png) + +!!! info "Install the preview explicitly" + Use Python 3.10 or later in a virtual environment. The kit pins + `fullbleed==2.6.0a9`; ordinary `pip install fullbleed` selects the stable + channel. Components under `fullbleed.ui.experimental` may change. + +## Run the report + +Extract the ZIP, open its `fullbleed-component-showcases-2.6.0a9` folder, and run: + +```sh +python -m pip install -r requirements.txt +python component_page_bands/render.py --out output/field-notes --pdf-profile pdfua2 +``` + +Open `output/field-notes/field-notes.pdf`, `field-notes.html`, or +`field-notes-unstyled.html`. The PDF has repeating bands and page values such as +`1 / 3`. HTML has one semantic header, main and footer, with explicit +`[page] / [pages]` placeholders. It does not paginate the browser. + +The content is fictional. Fonts come from the pinned package or the source kit; +PDF generation does not need a browser or system fonts. Choose `--pdf-profile +tagged` for ordinary tagged PDF, or `pdfua1` for the other accessible profile. + +## Give the margins reusable components + +This complete example creates a PDF with a branded header and a numbered footer: + +```python +from importlib.resources import files +from pathlib import Path +from fullbleed.ui.experimental import ( + Document, Heading, Page, PageBand, PageNumbers, Paragraph, Renderer, + Theme, component, mm, pt, style, +) + +@component +def Brand(name): + return Paragraph(name, style=style(font_size=pt(8), font_weight=700)) + +document = Document( + Heading("Project summary", level=1), + Paragraph("Prepared by Northstar Studio."), + title="Project summary", + lang="en-US", + theme=Theme(text=style(font_family="Inter", font_size=pt(10))), + page=Page( + "A4", margin=mm(20), + header=PageBand(left=Brand("NORTHSTAR STUDIO")), + footer=PageBand(right=PageNumbers(total=True, class_name="folio")), + ), + styles={".folio": style(font_size=pt(8), color="#53665c")}, +) +font = files("fullbleed_assets").joinpath("fonts/Inter-Variable.ttf") +renderer = Renderer(font_files=[str(font)]) +Path("summary.pdf").write_bytes(document.render_pdf(renderer)) +Path("summary.html").write_text(document.to_html(include_styles=True), encoding="utf-8") +Path("summary.unstyled.html").write_text(document.to_html(include_styles=False), encoding="utf-8") +``` + +`class_name="folio"` adds the literal class. The matching `.folio` rule in +`Document(styles=...)` supplies its appearance. Components also accept `style=`; +`.with_style(...)` customizes their root and `.with_parts(...)` customizes named +internal elements. In the complete report, `Brand`, `Metric` and `NextStep` +expose parts, and `styled(...)` defines reusable typography. + +`Page` reserves the margins. A band does not enlarge them automatically. It +accepts `left`, `center` and `right` slots, with `first_page` and `blank_pages` +policies. A `PageNumbers` value occupies its own slot. Managed bands report +layout or conservative paint-bound failures with the page, slot and authoring +source. Register fonts explicitly so those checks can use the actual glyphs. + +See the [page-band API and limits](https://github.com/fullbleed-engine/fullbleed-official/blob/v2.6.0a9/docs/component-page-bands.md) +for per-record numbering, fit diagnostics, styling precedence and export behavior. + +## Keep both authoring paths + +The same kit also includes the existing Northstar invoice, Common Ground +report and authored accessible community guide: + +```sh +python design_showcase/compare_authoring.py --out output/paired +python accessible_showcase/render.py --out output/accessible-ua1 +python accessible_showcase/render.py --pdf-profile pdfua2 --out output/accessible-ua2 +``` + +Northstar and the report each include component and HTML/CSS sources for the +same design. The paired command compares the rendered pages and writes styled +and unstyled HTML. The guide demonstrates headings, captioned tables, column +headers, lists and image descriptions. Bootstrap components remain static, +including HTML export; no Bootstrap JavaScript is included. + +The [paired-authoring walkthrough](showcase-authoring.md), +[accessible-guide walkthrough](accessible-showcase.md), and +[Bootstrap catalog](bootstrap-components-preview.md) retain their versioned +examples. The [alpha 8 guide](component-preview-8.md) documents the earlier package, +which does not include `PageBand` or `PageNumbers`. + +## Verification and scope + +The [release evidence](https://github.com/fullbleed-engine/fullbleed-official/releases/tag/v2.6.0a9) +links source provenance, checksums, saved-output comparisons and independent +PDF/UA validator reports. The source ZIP is tested after extraction using a +fresh public package installation. + +The component source retains 1,480 native tests, 11 doctests and 970 Python +tests. Its 33-case page-band matrix includes per-record numbering, styled +number comparisons, first/blank-page policies and rejected inputs. Earlier +saved-PDF fixtures and the designed showcases retain their reviewed output. +The complete CSS comparison retains its 25 failed cases and 18 disputed references. + +Repeated bands are artifacts outside the PDF body reading order. Keep essential +identity and report details in the body as well. Profile selection and passing +specimens do not establish accessibility for arbitrary documents or human +assistive-technology usability. Fit checks are conservative; named/facing-page +band variants are outside this API. Native streaming output is not atomic. diff --git a/docs/guides/showcase-authoring.md b/docs/guides/showcase-authoring.md index c07958e..5ff8311 100644 --- a/docs/guides/showcase-authoring.md +++ b/docs/guides/showcase-authoring.md @@ -5,8 +5,8 @@ description: Build the Northstar invoice and Common Ground report with HTML/CSS # One design, two authoring paths -!!! info "Current component preview: 2.6.0a8" - [Get the current showcase source kit and verified PDFs](component-preview-8.md). +!!! info "Current component preview: 2.6.0a9" + [Get the current showcase source kit and verified PDFs](component-preview-9.md). The downloadable kits on this page retain their original version pins and evidence. diff --git a/mkdocs.yml b/mkdocs.yml index cc5f211..79abaf7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -77,6 +77,7 @@ nav: - Python installation: getting-started/installation.md - Python notebook: getting-started/notebook.md - Component notebook: getting-started/component-notebook.md + - Page-band notebook: getting-started/page-band-notebook.md - Use WooCommerce: guides/woocommerce.md - Python fonts and previews: getting-started/first-pdf.md - Examples and downloads: examples.md @@ -125,7 +126,7 @@ nav: - Engine architecture: engine/overview.md - Evaluate: - Component design preview: guides/component-design-preview.md - - Current component preview: guides/component-preview-8.md + - Current component preview: guides/component-preview-9.md - Bootstrap component alpha: guides/bootstrap-components-preview.md - Compare Python PDF libraries: guides/comparison.md - Three-renderer comparison: guides/renderer-comparison.md diff --git a/tools/check_page_band_notebook_jupyter.py b/tools/check_page_band_notebook_jupyter.py new file mode 100644 index 0000000..11e969d --- /dev/null +++ b/tools/check_page_band_notebook_jupyter.py @@ -0,0 +1,236 @@ +"""Edit and run the notebook in a browser, then verify actual ZIP downloads. + +Run verify_component_notebook.py first and supply its --out as --reference. +The reference supplies independently inspected PDF/HTML/PNG bytes. A private +loopback Jupyter server and a separate headless browser are stopped on exit. +""" +from __future__ import annotations + +import argparse +import ast +import base64 +from copy import deepcopy +from datetime import datetime, timezone +from hashlib import sha256 +import importlib.metadata +import json +import os +from pathlib import Path +import platform +import secrets +import shutil +import socket +import subprocess +import sys +import tempfile +import time +import urllib.error +import urllib.request +from urllib.parse import urlsplit +from zipfile import ZipFile + +from playwright.sync_api import expect, sync_playwright + +ROOT = Path(__file__).resolve().parents[1] + + +def write(path, value): + path.write_text(json.dumps(value, indent=2) + "\n", encoding="utf-8", newline="\n") + + +def check_browser(page, context, source, work, out, reference, token): + source_cells = {c["id"]: "".join(c["source"]) for c in source["cells"] if c["cell_type"] == "code"} + assert len(source_cells) == 8 + downloads = [] + context.on("page", lambda child: child.on("download", lambda item: downloads.append(item))) + page.on("download", lambda item: downloads.append(item)) + reports = [] + write(out / "startup-progress.json", dict(stage="waiting-for-run-menu")) + page.get_by_role("menuitem", name="Run", exact=True).wait_for(timeout=60000) + write(out / "startup-progress.json", dict(stage="waiting-for-cell-editors")) + expect(page.get_by_role("textbox")).to_have_count(8) + # The editor can finish loading before its first kernel connection. The + # observed first attempt marked cells trusted but executed none of them. + write(out / "startup-progress.json", dict(stage="waiting-for-kernel-ready")) + expect(page.get_by_role("progressbar", name="Kernel status")).to_have_attribute("aria-valuenow", "100", timeout=60000) + write(out / "startup-progress.json", dict(stage="recording-ready-snapshot")) + (out / "ready-to-run.txt").write_text(page.locator("body").aria_snapshot().replace(token, "[redacted]"), encoding="utf-8") + for index, expected in enumerate(reference["cases"]): + name = expected["name"] + destination = out / name + destination.mkdir() + if index: + text = "\n".join(key + " = " + repr(value) for key, value in expected["controls"].items()) + editor = page.get_by_role("textbox").nth(1) + editor.scroll_into_view_if_needed() + editor.fill(text) + assert "\n".join(editor.locator("div.cm-line").all_text_contents()) == text + page.get_by_role("menuitem", name="Run", exact=True).click() + page.get_by_role("menuitem", name="Run All Cells", exact=True).click() + page.get_by_text(f"[{(index + 1) * 8}]:", exact=True).wait_for(timeout=180000) + expect(page.get_by_role("progressbar", name="Kernel status")).to_have_attribute("aria-valuenow", "100", timeout=30000) + link = page.get_by_role("link", name="output/component-field-notes.zip", exact=True) + link.wait_for() + href_path = urlsplit(link.get_attribute("href")).path + assert href_path == "/files/output/component-field-notes.zip", href_path + page.get_by_role("button", name="Save and create checkpoint (Ctrl+S)", exact=True).click() + downloads.clear() + link.click() + deadline = time.monotonic() + 15 + while not downloads and time.monotonic() < deadline: + page.wait_for_timeout(100) + assert len(downloads) == 1, "Expected the actual browser ZIP download" + download = downloads[0] + assert download.suggested_filename == "component-field-notes.zip" and download.failure() is None + archive = destination / download.suggested_filename + download.save_as(archive) + hashes = {} + with ZipFile(archive) as bundle: + assert bundle.testzip() is None + assert len(bundle.namelist()) == len(set(bundle.namelist())) + assert set(bundle.namelist()) == set(expected["zip_files"]) + for filename in bundle.namelist(): + content = bundle.read(filename) + assert sha256(content).hexdigest() == expected["artifact_hashes"][filename], (name, filename) + assert content == (work / "output" / filename).read_bytes() + hashes[filename] = sha256(content).hexdigest() + previews = page.get_by_role("feed", name="Cells").get_by_role("img") + assert previews.count() == expected["pages"] + for number in range(expected["pages"]): + preview = previews.nth(number) + preview.scroll_into_view_if_needed() + image = preview.evaluate("img => ({complete: img.complete, width: img.naturalWidth, src: img.src})") + assert image["complete"] and image["width"] > 0 and image["src"].startswith("data:image/png;base64,") + assert sha256(base64.b64decode(image["src"].split(",", 1)[1])).hexdigest() == hashes[f"field-notes-page-{number + 1}.png"] + preview.screenshot(path=str(destination / f"visible-preview-{number + 1}.png")) + link.scroll_into_view_if_needed() + page.screenshot(path=str(destination / "notebook-download.png")) + (destination / "notebook.txt").write_text(page.locator("body").aria_snapshot().replace(token, "[redacted]"), encoding="utf-8") + report = dict(name=name, pages=expected["pages"], actual_browser_download=True, + filename=download.suggested_filename, href_path=href_path, + zip_sha256=sha256(archive.read_bytes()).hexdigest(), artifact_hashes=hashes, + matches_independent_reference=True, visible_previews_match_download=True) + write(destination / "verification.json", report) + reports.append(report) + print(json.dumps(dict(case=name, pages=expected["pages"], browser_download=True)), flush=True) + assert (work / "output/field-notes-page-4.png").exists() + assert "field-notes-page-4.png" not in reports[-1]["artifact_hashes"] + return reports + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--reference", type=Path, required=True) + parser.add_argument("--out", type=Path, required=True) + parser.add_argument("--browser", choices=("chrome", "chromium"), default="chrome") + args = parser.parse_args() + out = args.out.resolve() + assert not out.exists(), "Use a new output directory to retain earlier evidence" + reference = json.loads((args.reference / "verification.json").read_text(encoding="utf-8")) + source_path = Path(reference["notebook"]) + assert reference["ok"] and reference["install_cell_executed"] + assert source_path.name == "component_page_bands.ipynb" + assert sha256(source_path.read_bytes()).hexdigest() == reference["notebook_sha256"] + source = json.loads(source_path.read_text(encoding="utf-8")) + assert all(not c["outputs"] and c["execution_count"] is None for c in source["cells"] if c["cell_type"] == "code") + out.mkdir(parents=True) + work = out / "work" + work.mkdir() + shutil.copyfile(source_path, work / source_path.name) + if reference["local_install_override"]: + wheel = Path(reference["local_wheel"]["path"]) + assert sha256(wheel.read_bytes()).hexdigest() == reference["local_wheel"]["sha256"] + install = next(cell for cell in source["cells"] if cell["id"] == "install-fullbleed") + install["source"] = ['%pip install --quiet --no-index --no-deps "' + wheel.as_posix() + '"'] + (work / source_path.name).write_text(json.dumps(source, ensure_ascii=False, indent=1) + "\n", encoding="utf-8") + environment = {k: v for k, v in os.environ.items() if not k.startswith(("JUPYTER_", "IPYTHON"))} + token = secrets.token_urlsafe(32) + environment.update(JUPYTER_TOKEN=token, PYTHONUTF8="1") + with tempfile.TemporaryDirectory(prefix="fullbleed-notebook-browser-") as private: + private = Path(private) + for key, name in (("JUPYTER_CONFIG_DIR", "config"), ("JUPYTER_DATA_DIR", "data"), + ("JUPYTER_RUNTIME_DIR", "runtime"), ("IPYTHONDIR", "ipython")): + (private / name).mkdir() + environment[key] = str(private / name) + with socket.socket() as sock: + sock.bind(("127.0.0.1", 0)) + port = sock.getsockname()[1] + base = f"http://127.0.0.1:{port}" + with (private / "server.log").open("w", encoding="utf-8") as log: + server = subprocess.Popen([sys.executable, "-m", "notebook", "--no-browser", "--ServerApp.ip=127.0.0.1", + f"--ServerApp.port={port}", "--ServerApp.port_retries=0", f"--ServerApp.root_dir={work}", + "--ServerApp.shutdown_no_activity_timeout=600"], cwd=work, env=environment, + stdout=log, stderr=subprocess.STDOUT, + creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0) + try: + deadline = time.monotonic() + 60 + while True: + assert server.poll() is None, "The private Jupyter server exited" + try: + request = urllib.request.Request(base + "/api/status", headers={"Authorization": "token " + token}) + with urllib.request.urlopen(request, timeout=2) as response: + assert response.status == 200 + break + except (urllib.error.URLError, TimeoutError): + if time.monotonic() >= deadline: + raise RuntimeError("Private Jupyter server did not become ready") from None + time.sleep(0.2) + with sync_playwright() as p: + options = {"channel": "chrome"} if args.browser == "chrome" else {} + browser = p.chromium.launch(**options) + try: + context = browser.new_context(viewport={"width": 1440, "height": 1000}, accept_downloads=True) + page = context.new_page() + page_events = [] + page.on("crash", lambda: page_events.append("page-crash")) + page.on("pageerror", lambda error: page_events.append(str(error).replace(token, "[redacted]"))) + page.goto(base + "/tree?token=" + token, wait_until="domcontentloaded") + page.goto(base + "/notebooks/" + source_path.name, wait_until="domcontentloaded") + try: + cases = check_browser(page, context, source, work, out, reference, token) + except Exception as error: + failure = dict(ok=False, type=type(error).__name__, + error=str(error).replace(token, "[redacted]"), page_events=page_events, + url=page.url.replace(token, "[redacted]"), capture_errors=[]) + write(out / "failure.json", failure) + for capture in ("screenshot", "snapshot"): + try: + if capture == "screenshot": + page.screenshot(path=str(out / "failure.png"), timeout=5000, animations="disabled") + else: + (out / "failure.txt").write_text(page.locator("body").aria_snapshot(timeout=5000).replace(token, "[redacted]"), encoding="utf-8") + except Exception as capture_error: + failure["capture_errors"].append(dict(capture=capture, error=str(capture_error).replace(token, "[redacted]"))) + write(out / "failure.json", failure) + raise + browser_version = browser.version + finally: + browser.close() + finally: + if server.poll() is None: + try: + request = urllib.request.Request(base + "/api/shutdown", data=b"", method="POST", + headers={"Authorization": "token " + token}) + with urllib.request.urlopen(request, timeout=10): + pass + server.wait(timeout=30) + except (urllib.error.URLError, TimeoutError, subprocess.TimeoutExpired): + server.terminate() + server.wait(timeout=15) + write(out / "server-stopped.json", dict(stopped=server.poll() is not None, returncode=server.returncode)) + log.flush() + sanitized = (private / "server.log").read_text(encoding="utf-8", errors="replace").replace(token, "[redacted]") + (out / "server.log").write_text(sanitized, encoding="utf-8") + report = dict(ok=True, checked_at=datetime.now(timezone.utc).isoformat(), + notebook_sha256=reference["notebook_sha256"], runtime_version=importlib.metadata.version("fullbleed"), + system=platform.system(), python=platform.python_version(), browser=browser_version, + tools={name: importlib.metadata.version(name) for name in ("notebook", "jupyter_server", "ipykernel", "playwright")}, + cases=cases, stale_previews_excluded=True, local_install_override=reference["local_install_override"], + scope="Local Jupyter Notebook editing, execution, finalized counters, displayed previews and actual browser ZIP downloads. The receipt identifies any local-wheel install override. Hosted Colab is not tested.") + assert report["runtime_version"] == reference["runtime_version"] + write(out / "verification.json", report) + print(json.dumps(dict(ok=True, cases=len(cases), pages=sum(c["pages"] for c in cases)))) + + +if __name__ == "__main__": + main() diff --git a/tools/verify_page_band_notebook.py b/tools/verify_page_band_notebook.py new file mode 100644 index 0000000..6e034b3 --- /dev/null +++ b/tools/verify_page_band_notebook.py @@ -0,0 +1,203 @@ +"""Execute the authored notebook and inspect its saved PDF, HTML, previews and ZIP.""" +from __future__ import annotations +from argparse import ArgumentParser +from copy import deepcopy +from datetime import datetime, timezone +from hashlib import sha256 +from html.parser import HTMLParser +from pathlib import Path +from zipfile import ZipFile +import json +import shutil +import sys + +import nbformat +from nbclient import NotebookClient +from jupyter_client import AsyncKernelManager +from jupyter_client.kernelspec import KernelSpecManager +from pypdf import PdfReader +import pypdfium2 as pdfium + +VERSION = '2.6.0a9' +DEFAULT_PDF = 'eb8f7c2b4fb5e123feb46a99e0521a7ab04181c0847c675076fe759e2d4bbf94' +def save(path, value): + path.write_text(json.dumps(value, indent=2) + '\n', encoding='utf-8', newline='\n') +def normalize(text): + return ' '.join(text.split()) +def compact(text): + # pypdf splits tracked headings into one-character lines; PDFium below + # independently checks word-level extraction from the same saved PDF. + return ''.join(text.split()) +class Markup(HTMLParser): + def __init__(self, source): + super().__init__(convert_charrefs=True) + self.elements, self.text = [], [] + self.feed(source) + def handle_starttag(self, tag, attrs): + self.elements.append((tag, dict(attrs))) + def handle_data(self, text): + self.text.append(text) +def execute(notebook, work, destination, kernel_dir): + notebook.cells.append(nbformat.v4.new_code_cell(''' +import fullbleed, importlib.metadata, json +assert prepared.render_pdf() == pdf_path.read_bytes(), "Repeat rendering differs" +assert document.render_pdf(renderer, a11y_mode="raise") == pdf_path.read_bytes(), "Direct rendering differs" +Path("notebook-runtime.json").write_text(json.dumps({ + "version": importlib.metadata.version("fullbleed"), + "inspection": dict(fullbleed.inspect_pdf(str(pdf_path))), + "repeat_pdf_identical": True, + "direct_pdf_identical": True, + "preview_count": len(preview_paths), +}), encoding="utf-8") +''')) + name = 'page-band-notebook-check' + client = NotebookClient(notebook, km=AsyncKernelManager(kernel_name=name, + kernel_spec_manager=KernelSpecManager(kernel_dirs=[str(kernel_dir)])), timeout=300, + kernel_name=name, resources={'metadata':{'path':str(work)}}) + try: + client.execute(cleanup_kc=True) + finally: + nbformat.write(notebook, destination / 'executed.ipynb') +def check(work, destination, name, controls): + output = work / 'output' + runtime = json.loads((work / 'notebook-runtime.json').read_text(encoding='utf-8')) + inspection = runtime['inspection'] + assert runtime['version'] == VERSION + assert not inspection.get('warnings') and not inspection.get('composition', {}).get('issues') + assert inspection['profile']['embedded_font_count'] >= 1 + pdf_path = output / 'field-notes.pdf' + reader = PdfReader(pdf_path) + texts = [normalize(page.extract_text() or '') for page in reader.pages] + pages = len(texts) + assert pages == inspection['page_count'] == runtime['preview_count'] + assert (pages > 3 if name == 'long' else pages == 3), (name, pages) + markers = [controls['PROJECT_NAME'], controls['HEADLINE'], 'Keep the welcome growing.'] + markers += [str(row[0]) for row in controls['ACTIVITY']] + text = normalize(' '.join(texts)) + assert all(compact(marker) in compact(text) for marker in markers), (name, markers) + assert all(f'{index} / {pages}' in text for index, text in enumerate(texts, 1)), (name, texts) + assert all(compact(controls['PROJECT_NAME'].upper()) in compact(text) for text in texts), (name, 'repeating header') + for filename, styled in [('field-notes.styled.html', True), ('field-notes.unstyled.html', False)]: + parsed = Markup((output / filename).read_text(encoding='utf-8')) + tags = [tag for tag, attrs in parsed.elements] + assert all(tags.count(tag) == 1 for tag in ('header', 'main', 'footer')) + assert 'script' not in tags and not any(key.lower().startswith('on') for _, attrs in parsed.elements for key in attrs) + assert 'studio' not in tags and 'notebooks' not in tags + assert any('folio' in attrs.get('class', '').split() for _, attrs in parsed.elements) + html_text = normalize(' '.join(parsed.text)) + assert all(normalize(marker) in html_text for marker in markers), (name, filename) + assert '[page]' in html_text and '[pages]' in html_text + assert ('style' in tags) == styled + if not styled: + assert not any('style' in attrs or (tag == 'link' and attrs.get('rel') == 'stylesheet') for tag, attrs in parsed.elements) + previews = [f'field-notes-page-{index}.png' for index in range(1, pages + 1)] + expected = ['field-notes.pdf', 'field-notes.styled.html', 'field-notes.unstyled.html', *previews] + bundle_path = output / 'component-field-notes.zip' + with ZipFile(bundle_path) as bundle: + assert bundle.testzip() is None and len(bundle.namelist()) == len(set(bundle.namelist())) + assert set(bundle.namelist()) == set(expected) + assert all(bundle.read(filename) == (output / filename).read_bytes() for filename in expected) + for filename in [*expected, bundle_path.name]: + shutil.copyfile(output / filename, destination / filename) + accent = tuple(int(controls['ACCENT'][index:index+2], 16) for index in (1, 3, 5)) + color_pixels = characters = 0 + independent_texts = [] + document = pdfium.PdfDocument(pdf_path) + try: + assert len(document) == pages + for index in range(pages): + page = document[index] + textpage = page.get_textpage() + independent_texts.append(normalize(textpage.get_text_range())) + width, height = page.get_size() + for number in range(textpage.count_chars()): + char = textpage.get_text_range(number, 1) + if not char or char.isspace(): + continue + x0, y0, x1, y1 = textpage.get_charbox(number) + assert x0 >= -0.5 and y0 >= -0.5 and x1 <= width + 0.5 and y1 <= height + 0.5, (name, index + 1, char) + characters += 1 + bitmap = page.render(scale=110 / 72) + image = bitmap.to_pil().convert('RGB') + color_pixels += sum(pixel == accent for pixel in image.get_flattened_data()) + image.save(destination / f'pdfium-page-{index + 1}.png') + image.close(); bitmap.close(); textpage.close(); page.close() + finally: + document.close() + independent_text = normalize(' '.join(independent_texts)) + assert all(normalize(marker) in independent_text for marker in markers) + assert all(f'{index} / {pages}' in text for index, text in enumerate(independent_texts, 1)) + assert all(controls['PROJECT_NAME'].upper() in text for text in independent_texts) + lesson_page, = [text for text in independent_texts if 'AUSEFULLESSON' in compact(text)] + assert 'Make the first step visible.' in lesson_page, (name, 'Lesson heading separated from its body') + assert color_pixels > 30, (name, color_pixels) + result = dict(name=name, pages=pages, row_count=len(controls['ACTIVITY']), controls=controls, + pdf_sha256=sha256(pdf_path.read_bytes()).hexdigest(), text_markers=markers, + font_count=inspection['profile']['embedded_font_count'], accent=controls['ACCENT'], accent_pixels=color_pixels, + independent_char_bounds_checked=characters, repeat_pdf_identical=True, direct_pdf_identical=True, + zip_files=expected, styled_and_unstyled_html=True, finalized_page_counts=True, callout_kept_together=True, + artifact_hashes={filename:sha256((destination / filename).read_bytes()).hexdigest() for filename in expected}) + if name == 'default': + assert result['pdf_sha256'] == DEFAULT_PDF, 'Notebook default differs from the qualified source-kit PDF; inspect before claiming reproduction.' + result['qualified_field_notes_pdf_reproduced'] = True + save(destination / 'verification.json', result) + save(destination / 'inspection.json', inspection) + return result +def main(): + parser = ArgumentParser(description=__doc__) + parser.add_argument('--notebook', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + parser.add_argument('--local-wheel', type=Path, help='Local qualification only: substitute this verified wheel for the public install cell.') + args = parser.parse_args() + out = args.out.resolve() + out.mkdir(parents=True, exist_ok=False) + source_path = args.notebook.resolve() + source = nbformat.read(source_path, as_version=4) + nbformat.validate(source) + assert all(not cell.outputs and cell.execution_count is None for cell in source.cells if cell.cell_type == 'code') + assert len({cell.id for cell in source.cells}) == len(source.cells) + default = {} + exec(next(cell.source for cell in source.cells if cell.id == 'report-controls'), {}, default) + edited = deepcopy(default) + edited.update(PROJECT_NAME='River ', HEADLINE='A place to meet & make.', ACCENT='#763c96') + edited['ACTIVITY'][0] = ('Studio & cards', '16', '89 visits') + long = deepcopy(default) + long['ACTIVITY'] = [(f'Session {number:02d}', str(number), '8 neighbors') for number in range(1, 73)] + empty = deepcopy(default) + empty['ACTIVITY'] = [] + work = out / 'work' + work.mkdir() + kernel = out / 'kernelspec/page-band-notebook-check' + kernel.mkdir(parents=True) + save(kernel / 'kernel.json', dict(argv=[sys.executable, '-I', '-m', 'ipykernel_launcher', '-f', '{connection_file}'], + display_name='Page-band notebook check', language='python')) + reports = [] + for index, (name, controls) in enumerate((('default', default), ('edited', edited), ('long', long), ('empty-after-long', empty))): + notebook = deepcopy(source) + for cell in notebook.cells: + if cell.id == 'install-fullbleed': + if index: + cell.metadata.setdefault('tags', []).append('skip-execution') + elif args.local_wheel: + assert args.local_wheel.is_file() + cell.source = '%pip install --quiet --no-index --no-deps "' + args.local_wheel.resolve().as_posix() + '"' + if cell.id == 'report-controls' and index: + cell.source = '\n'.join(key + ' = ' + repr(value) for key, value in controls.items()) + destination = out / name + destination.mkdir() + execute(notebook, work, destination, kernel.parent) + reports.append(check(work, destination, name, controls)) + print(json.dumps(dict(case=name, pages=reports[-1]['pages'], ok=True)), flush=True) + assert len({row['pdf_sha256'] for row in reports}) == 4 + assert (work / 'output/field-notes-page-4.png').exists() + assert 'field-notes-page-4.png' not in reports[-1]['zip_files'] + record = dict(ok=True, notebook=str(source_path), notebook_sha256=sha256(source_path.read_bytes()).hexdigest(), + runtime_version=VERSION, install_cell_executed=True, public_install_cell=not bool(args.local_wheel), + local_install_override=bool(args.local_wheel), cases=reports, stale_previews_excluded=True, + local_wheel=(dict(path=str(args.local_wheel.resolve()), sha256=sha256(args.local_wheel.read_bytes()).hexdigest()) if args.local_wheel else None), + checked_at=datetime.now(timezone.utc).isoformat(), + scope='Jupyter kernel execution, independent saved-PDF inspection, repeat rendering, HTML semantics, and ZIP contents. Browser downloads and hosted Colab are separate checks.') + save(out / 'verification.json', record) + print(json.dumps(dict(ok=True, cases=len(reports), pages=sum(row['pages'] for row in reports))), flush=True) +if __name__ == '__main__': + main() From c0b6f951ada3a3dd8536853c182fed9d89c25e99 Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 16:56:59 -0500 Subject: [PATCH 5/6] Wait for notebook editors and kernel readiness before browser execution --- tools/check_component_notebook_jupyter.py | 32 +++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/check_component_notebook_jupyter.py b/tools/check_component_notebook_jupyter.py index e6859f2..ac97f9d 100644 --- a/tools/check_component_notebook_jupyter.py +++ b/tools/check_component_notebook_jupyter.py @@ -46,8 +46,15 @@ def check_browser(page, context, source, work, out, reference, token): context.on("page", lambda child: child.on("download", lambda item: downloads.append(item))) page.on("download", lambda item: downloads.append(item)) reports = [] + write(out / "startup-progress.json", dict(stage="waiting-for-run-menu")) page.get_by_role("menuitem", name="Run", exact=True).wait_for(timeout=60000) - expect(page.get_by_role("textbox")).to_have_count(7) + # The Run menu appears before Jupyter finishes creating the cell editors. + # A loaded Windows runner exceeded Playwright's default five-second wait. + write(out / "startup-progress.json", dict(stage="waiting-for-cell-editors")) + expect(page.get_by_role("textbox")).to_have_count(7, timeout=60000) + write(out / "startup-progress.json", dict(stage="waiting-for-kernel-ready")) + expect(page.get_by_role("progressbar", name="Kernel status")).to_have_attribute("aria-valuenow", "100", timeout=60000) + write(out / "startup-progress.json", dict(stage="ready-to-run")) for index, name in enumerate(("default", "edited", "long", "empty-after-long")): destination = out / name destination.mkdir() @@ -183,9 +190,30 @@ def main(): try: context = browser.new_context(viewport={"width": 1440, "height": 1000}, accept_downloads=True) page = context.new_page() + page_events = [] + page.on("crash", lambda: page_events.append("page-crash")) + page.on("pageerror", lambda error: page_events.append(str(error).replace(token, "[redacted]"))) page.goto(base + "/tree?token=" + token, wait_until="domcontentloaded") page.goto(base + "/notebooks/" + source_path.name, wait_until="domcontentloaded") - cases = check_browser(page, context, source, work, out, reference, token) + try: + cases = check_browser(page, context, source, work, out, reference, token) + except Exception as error: + # Save the original failure before browser captures or + # process cleanup can raise their own exceptions. + failure = dict(ok=False, type=type(error).__name__, + error=str(error).replace(token, "[redacted]"), page_events=page_events, + url=page.url.replace(token, "[redacted]"), capture_errors=[]) + write(out / "failure.json", failure) + for capture in ("screenshot", "snapshot"): + try: + if capture == "screenshot": + page.screenshot(path=str(out / "failure.png"), timeout=5000, animations="disabled") + else: + (out / "failure.txt").write_text(page.locator("body").aria_snapshot(timeout=5000).replace(token, "[redacted]"), encoding="utf-8") + except Exception as capture_error: + failure["capture_errors"].append(dict(capture=capture, error=str(capture_error).replace(token, "[redacted]"))) + write(out / "failure.json", failure) + raise browser_version = browser.version finally: browser.close() From ba6a8bb4f5c700beeb37348d956d5f56de1acf97 Mon Sep 17 00:00:00 2001 From: krflol Date: Mon, 19 Oct 2026 18:40:11 -0500 Subject: [PATCH 6/6] docs: verify the stable CSS corpus and preserve prior evidence URLs --- README.md | 15 ++ docs/assets/css-corpus/explorer-v2.css | 46 +++++ docs/assets/css-corpus/explorer-v2.js | 207 +++++++++++++++++++++ docs/assets/css-corpus/history/2.5.22.json | 21 +++ docs/assets/css-corpus/published.json | 22 +-- docs/css-coverage.md | 21 +-- docs/guides/comparison.md | 4 +- docs/guides/css-corpus.md | 78 ++++++-- docs/guides/css-explorer.md | 18 +- docs/guides/renderer-comparison.md | 2 +- tools/check_css_explorer.py | 97 +++++++++- tools/prepare_css_corpus_site.py | 18 +- tools/sync_reference.py | 7 +- 13 files changed, 502 insertions(+), 54 deletions(-) create mode 100644 docs/assets/css-corpus/explorer-v2.css create mode 100644 docs/assets/css-corpus/explorer-v2.js create mode 100644 docs/assets/css-corpus/history/2.5.22.json diff --git a/README.md b/README.md index 88612dd..23298fb 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,21 @@ published-wheel identity, complete inventory and original file manifest before copying PDFs and previews into the built site. Large evidence files stay in release storage. Pass `--archive /path/to/verified.zip` to use a local copy. After another MkDocs build, run the preparation step again before serving `site`. +Earlier published manifests live in `docs/assets/css-corpus/history/`. The same +preparation command verifies and materializes them too, preserving their versioned +PDF, image, and index URLs when the current explorer advances. Keep the historical +manifest bytes unchanged; the browser check verifies old PASS, FAIL, and disputed +PDF URLs alongside the current interactive results. +The package selector uses the generated `versions.json` inventory. Shared case +URLs include `version=...`, and changing versions preserves the selected case +and filters so readers can inspect the same fixture across retained releases. +Its markup loads `explorer-v2.js` and `explorer-v2.css`; keep the original +`explorer.js` and `explorer.css` unchanged so cached earlier pages retain a +compatible script and stylesheet during deployment. +The new script loads after its markup and before the theme script. This lets it +migrate legacy `q` fixture links to `query` before the theme can open its global +search overlay. Keep the mobile shared-link and download checks when changing +this loading order. With Playwright 1.63.0, its Chrome browser, and pypdf 6.19.0 installed, run `python tools/check_css_explorer.py --site site --out output/css-explorer-ui`. diff --git a/docs/assets/css-corpus/explorer-v2.css b/docs/assets/css-corpus/explorer-v2.css new file mode 100644 index 0000000..f70f11d --- /dev/null +++ b/docs/assets/css-corpus/explorer-v2.css @@ -0,0 +1,46 @@ +.css-explorer { margin: 1.5rem 0; } +.css-explorer [hidden] { display: none !important; } +.css-explorer input, .css-explorer select, .css-explorer button { + font: inherit; color: var(--md-default-fg-color); background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--light); border-radius: .2rem; padding: .5rem; +} +.css-explorer button { cursor: pointer; font-weight: 600; } +.css-explorer button:disabled { opacity: .45; cursor: default; } +.css-explorer :focus-visible { outline: 3px solid var(--md-accent-fg-color); outline-offset: 3px; } +.ce-version { max-width: 18rem; margin: .75rem 0; } +.ce-version label { display: block; font-size: .72rem; font-weight: 600; } +.ce-version select { display: block; width: 100%; min-width: 0; margin-top: .3rem; min-height: 2.3rem; } +.ce-filters { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: .7rem; } +.ce-filters label { min-width: 0; font-size: .72rem; font-weight: 600; } +.ce-filters input, .ce-filters select { display: block; width: 100%; margin-top: .3rem; min-height: 2.3rem; } +.ce-counts { display: flex; flex-wrap: wrap; gap: .5rem 1rem; padding: .6rem 0; border-bottom: 1px solid var(--md-default-fg-color--lightest); } +.ce-result { padding: .8rem 0; border-bottom: 1px solid var(--md-default-fg-color--lightest); } +.ce-result button { text-align: left; padding: 0; color: var(--md-typeset-a-color); border: 0; background: transparent; overflow-wrap: anywhere; } +.ce-result p { margin: .3rem 0; font-size: .75rem; } +.ce-meta { display: flex; flex-wrap: wrap; gap: .4rem .8rem; font-size: .65rem; } +.ce-verdict { font-weight: 700; } +.ce-verdict[data-verdict="FAIL"] { color: #b52338; } +.ce-verdict[data-verdict="PASS"] { color: #166454; } +.ce-verdict[data-verdict="REFERENCE-DISPUTED"] { color: #845000; } +[data-md-color-scheme="slate"] .ce-verdict[data-verdict="FAIL"] { color: #ff9da9; } +[data-md-color-scheme="slate"] .ce-verdict[data-verdict="PASS"] { color: #8ed9be; } +[data-md-color-scheme="slate"] .ce-verdict[data-verdict="REFERENCE-DISPUTED"] { color: #f2c27b; } +.ce-pagination { display: flex; align-items: center; justify-content: space-between; gap: .7rem; margin: 1rem 0; font-size: .75rem; } +.ce-detail { margin: 1.2rem 0; padding: 1rem; border: 1px solid var(--md-default-fg-color--light); border-radius: .3rem; background: var(--md-code-bg-color); overflow-wrap: anywhere; scroll-margin-top: 4rem; } +.ce-detail h2 { margin-top: 0; font-size: 1.1rem; } +.ce-detail h3 { font-size: .8rem; } +.ce-detail p { font-size: .75rem; } +.ce-detail details { border-color: var(--md-default-fg-color--lightest); box-shadow: none; } +.ce-detail summary { background: transparent; } +.ce-detail summary::before { background-color: var(--md-typeset-a-color); } +.ce-links { display: flex; flex-wrap: wrap; gap: .6rem 1rem; } +.ce-images { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; } +.ce-images figure { min-width: 0; margin: 0; } +.ce-images figcaption { font-size: .65rem; text-align: left; margin: .4rem 0; } +.ce-images img { display: block; width: 100%; height: auto; border: 1px solid var(--md-default-fg-color--light); background: white; } +.ce-error { border-left: 3px solid #b52338; padding-left: .7rem; } +@media (max-width: 700px) { + .ce-filters { grid-template-columns: 1fr; } + .ce-images { grid-template-columns: 1fr; } + .ce-detail { padding: .6rem; scroll-margin-top: 6rem; } +} diff --git a/docs/assets/css-corpus/explorer-v2.js b/docs/assets/css-corpus/explorer-v2.js new file mode 100644 index 0000000..db5dc38 --- /dev/null +++ b/docs/assets/css-corpus/explorer-v2.js @@ -0,0 +1,207 @@ +(() => { + 'use strict'; + const root = document.getElementById('css-explorer'); + if (!root) return; + // Old fixture links used the theme's global-search parameter. Migrate it + // before the theme starts so a shared mobile link leaves the PDF accessible. + const initialUrl = new URL(location.href); + if (initialUrl.searchParams.has('q')) { + if (!initialUrl.searchParams.has('query')) initialUrl.searchParams.set('query', initialUrl.searchParams.get('q')); + initialUrl.searchParams.delete('q'); + history.replaceState(null, '', initialUrl); + } + const find = (id) => document.getElementById(`ce-${id}`); + const create = (tag, text, className) => { + const element = document.createElement(tag); + if (text !== undefined) element.textContent = text; + if (className) element.className = className; + return element; + }; + const versionsUrl = new URL(root.dataset.versions, location.href); + let indexUrl; + const perPage = 12; + const verdicts = ['PASS', 'FAIL', 'REFERENCE-DISPUTED']; + let data, fixtures, selected, pageNumber = 0; + const badge = (status) => { + const element = create('span', status, 'ce-verdict'); + element.dataset.verdict = status; + return element; + }; + const assetUrl = (path) => { + if (!/^(?:pdfs|refs|out)\/[a-z0-9_-]+\/[a-z0-9_.-]+\.(?:pdf|png)$/.test(path)) throw new Error('Invalid evidence path'); + return new URL(path, indexUrl).href; + }; + const link = (title, href, download = false) => { + const element = create('a', title); + element.href = href; + if (download) element.download = ''; + return element; + }; + const saveUrl = (push = false) => { + const url = new URL(location.href); + for (const [key, value] of [['version', data.version], ['query', find('search').value], ['category', find('category').value], + ['verdict', find('verdict').value], ['case', selected || '']]) { + if (value) url.searchParams.set(key, value); else url.searchParams.delete(key); + } + history[push ? 'pushState' : 'replaceState'](null, '', url); + }; + function showDetail(key, focus = false) { + const detail = find('detail'); + detail.replaceChildren(); + const fixture = fixtures.get(key); + if (!fixture) { detail.hidden = true; selected = null; return; } + selected = key; + detail.hidden = false; + const title = create('h2', fixture.id); + title.id = 'ce-detail-title'; + detail.append(title, badge(fixture.status), create('p', fixture.description)); + const difference = Number(fixture.differencePercent).toFixed(4); + detail.append(create('p', `${fixture.category} · ${fixture.feature} · Above-floor page difference: ${difference}%`)); + detail.append(create('p', `Reference renderer: ${fixture.referenceRenderer}. Reference metadata: ${fixture.referenceStatus}.`)); + if (fixture.diagnosis) detail.append(create('p', `Comparator diagnosis: ${fixture.diagnosis}`)); + const links = create('p', undefined, 'ce-links'); + links.append(link('Download Fullbleed PDF', assetUrl(fixture.pdf), true), link('View HTML/CSS fixture', fixture.sourceUrl)); + const share = link('Link to this case', location.href); + const shareUrl = new URL(location.href); + shareUrl.searchParams.set('case', key); + share.href = shareUrl.href; + links.append(share); + detail.append(links); + if (fixture.referenceNote) { + const note = create('details'); + note.append(create('summary', 'Upstream reference review note'), create('p', fixture.referenceNote)); + detail.append(note); + } + const digest = create('details'); + digest.append(create('summary', 'PDF checksum'), create('p', `SHA-256: ${fixture.pdfSha256}`)); + detail.append(digest); + fixture.pages.forEach((page, index) => { + detail.append(create('h3', `Page ${index + 1}`)); + const images = create('div', undefined, 'ce-images'); + for (const [key, label] of [['reference', `${fixture.referenceRenderer} reference`], ['candidate', `Fullbleed ${data.version}`]]) { + const figure = create('figure'); + figure.append(create('figcaption', label)); + if (page[key]) { + const url = assetUrl(page[key]); + const anchor = link('', url); + anchor.setAttribute('aria-label', `Open full-size ${label}, page ${index + 1}`); + const image = document.createElement('img'); + image.src = url; + image.alt = `${label}, ${fixture.id}, page ${index + 1}`; + image.loading = 'lazy'; + image.addEventListener('error', () => { image.replaceWith(create('p', 'This preview could not load. Use the PDF or complete report.')); }); + anchor.append(image); + figure.append(anchor); + } else figure.append(create('p', 'No page on this side of the comparison.')); + images.append(figure); + } + detail.append(images); + }); + if (focus) { detail.focus({preventScroll: true}); detail.scrollIntoView({block: 'start', behavior: 'auto'}); } + } + function renderResults() { + const query = find('search').value.trim().toLowerCase(); + const category = find('category').value; + const verdict = find('verdict').value; + const filtered = data.fixtures.filter((f) => (!category || f.category === category) && (!verdict || f.status === verdict) + && `${f.key} ${f.feature} ${f.description}`.toLowerCase().includes(query)); + const pages = Math.max(1, Math.ceil(filtered.length / perPage)); + pageNumber = Math.min(pageNumber, pages - 1); + const start = pageNumber * perPage; + find('results-status').textContent = filtered.length ? `${filtered.length.toLocaleString()} matching fixtures. Showing ${start + 1}–${Math.min(start + perPage, filtered.length)}.` : 'No fixtures match these filters. Try a broader term or another verdict.'; + const results = find('results'); + results.replaceChildren(); + for (const fixture of filtered.slice(start, start + perPage)) { + const article = create('article', undefined, 'ce-result'); + const button = create('button', fixture.id); + button.type = 'button'; + button.setAttribute('aria-label', `Inspect ${fixture.id}`); + button.addEventListener('click', () => { selected = fixture.key; saveUrl(true); showDetail(fixture.key, true); }); + const metadata = create('p', undefined, 'ce-meta'); + metadata.append(badge(fixture.status), create('span', fixture.category), create('span', `${fixture.pages.length} page${fixture.pages.length === 1 ? '' : 's'}`)); + article.append(button, metadata, create('p', fixture.description)); + results.append(article); + } + find('previous').disabled = pageNumber === 0; + find('next').disabled = pageNumber >= pages - 1; + find('page').textContent = `Page ${pageNumber + 1} of ${pages}`; + } + function restoreUrl() { + const params = new URL(location.href).searchParams; + if (params.get('version') !== data.version) { location.reload(); return; } + find('search').value = params.get('query') || ''; + find('category').value = params.get('category') || ''; + find('verdict').value = params.get('verdict') || ''; + if (find('category').selectedIndex < 0) find('category').value = ''; + if (find('verdict').selectedIndex < 0) find('verdict').value = ''; + pageNumber = 0; + renderResults(); + showDetail(params.get('case')); + } + async function start() { + const versionsResponse = await fetch(versionsUrl); + if (!versionsResponse.ok) throw new Error('Package versions unavailable'); + const versions = await versionsResponse.json(); + if (versions.schema !== 'fullbleed.css-explorer-versions.v1' || !Array.isArray(versions.versions) + || !versions.versions.length || versions.versions.some(v => typeof v !== 'string' || !/^\d+\.\d+\.\d+$/.test(v)) + || new Set(versions.versions).size !== versions.versions.length || !versions.versions.includes(versions.current)) { + throw new Error('Invalid package version inventory'); + } + const requested = new URL(location.href).searchParams.get('version'); + const version = versions.versions.includes(requested) ? requested : versions.current; + indexUrl = new URL(`${version}/index.json`, versionsUrl); + for (const value of versions.versions) { + const option = create('option', `${value}${value === versions.current ? ' (current)' : ' (historical)'}`); + option.value = value; + find('version').append(option); + } + find('version').value = version; + const response = await fetch(indexUrl); + if (!response.ok) throw new Error('Fixture index unavailable'); + data = await response.json(); + if (data.schema !== 'fullbleed.css-explorer.v1' || data.packageSource !== 'published' || data.version !== version + || !Array.isArray(data.fixtures) || data.fixtures.length !== data.total) throw new Error('Invalid fixture index'); + fixtures = new Map(data.fixtures.map((f) => [f.key, f])); + if (fixtures.size !== data.total || data.fixtures.some((f) => !verdicts.includes(f.status))) throw new Error('Invalid verdict inventory'); + for (const status of verdicts) { + const count = data.fixtures.filter((f) => f.status === status).length; + if (data.counts[status] !== count) throw new Error('Inconsistent verdict counts'); + const span = create('span'); + span.append(badge(status), document.createTextNode(` ${count.toLocaleString()}`)); + find('counts').append(span); + } + for (const category of [...new Set(data.fixtures.map((f) => f.category))].sort()) { + const option = create('option', category); + option.value = category; + find('category').append(option); + } + find('provenance').append(link('Complete evidence ZIP', data.archiveUrl), + link('Raw comparison JSON', new URL('report.json', indexUrl).href), + link('Run and wheel record', new URL('fullbleed-run.json', indexUrl).href)); + const changeFilter = () => { pageNumber = 0; selected = null; saveUrl(); showDetail(null); renderResults(); }; + find('search').addEventListener('input', changeFilter); + find('category').addEventListener('change', changeFilter); + find('verdict').addEventListener('change', changeFilter); + find('version').addEventListener('change', () => { + const url = new URL(location.href); + url.searchParams.set('version', find('version').value); + location.assign(url.href); + }); + for (const [name, direction] of [['previous', -1], ['next', 1]]) find(name).addEventListener('click', () => { + pageNumber += direction; renderResults(); find('results-status').scrollIntoView({block: 'center'}); + }); + addEventListener('popstate', restoreUrl); + find('loading').textContent = `${data.total.toLocaleString()} fixtures · published Fullbleed ${data.version} · full comparison gate ${data.gatePassed ? 'passed' : 'failed'}`; + find('controls').hidden = false; + const normalized = new URL(location.href); + normalized.searchParams.set('version', data.version); + history.replaceState(null, '', normalized); + restoreUrl(); + saveUrl(); + } + start().catch(() => { + find('loading').textContent = 'The fixture browser could not load. Follow the evidence guide link above to download the complete report.'; + find('loading').classList.add('ce-error'); + find('controls').hidden = true; + }); +})(); diff --git a/docs/assets/css-corpus/history/2.5.22.json b/docs/assets/css-corpus/history/2.5.22.json new file mode 100644 index 0000000..e1ca6a8 --- /dev/null +++ b/docs/assets/css-corpus/history/2.5.22.json @@ -0,0 +1,21 @@ +{ + "schema": "fullbleed.css-corpus-publication.v1", + "packageSource": "published", + "version": "2.5.22", + "archiveUrl": "https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.22/fullbleed-2.5.22-published-css-corpus.zip", + "archiveSha256": "31e0072d40c77bcbb56dd73da91f0c9ab614d11d44a5ab5f8b6873f72da5c1e7", + "archiveBytes": 60212323, + "wheelSha256": "b48954edd2c1adbb17011e07f4ad4e6cc416f4d88ff7f072dcd9bc31a8b1b0e9", + "wheelFilename": "fullbleed-2.5.22-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "upstreamCommit": "0d1e53b6d8174d0a5059a8696c24e62759381f6d", + "invocationId": "fullbleed-f76772e29a594e7884800598a61c2410", + "overall": { + "score_pct": 98.48, + "pass": 1619, + "fail": 25, + "reference_disputed": 18, + "total": 1662 + }, + "gatePassed": false, + "runUrl": "https://github.com/fullbleed-engine/fullbleed-official/actions/runs/38600917475" +} diff --git a/docs/assets/css-corpus/published.json b/docs/assets/css-corpus/published.json index e1ca6a8..2043e7f 100644 --- a/docs/assets/css-corpus/published.json +++ b/docs/assets/css-corpus/published.json @@ -1,21 +1,21 @@ { "schema": "fullbleed.css-corpus-publication.v1", "packageSource": "published", - "version": "2.5.22", - "archiveUrl": "https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.22/fullbleed-2.5.22-published-css-corpus.zip", - "archiveSha256": "31e0072d40c77bcbb56dd73da91f0c9ab614d11d44a5ab5f8b6873f72da5c1e7", - "archiveBytes": 60212323, - "wheelSha256": "b48954edd2c1adbb17011e07f4ad4e6cc416f4d88ff7f072dcd9bc31a8b1b0e9", - "wheelFilename": "fullbleed-2.5.22-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "version": "2.5.34", + "archiveUrl": "https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.34/fullbleed-2.5.34-published-css-corpus.zip", + "archiveSha256": "86a6ead53b6e0ec947ea3cc3c8a4d2fd1d371756749293bd23cfd80cea3e34bc", + "archiveBytes": 60230681, + "wheelSha256": "17b75f0448fa731a0d5e875e1f40f14652579962aeb23f43a85d2fc554a5b28f", + "wheelFilename": "fullbleed-2.5.34-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", "upstreamCommit": "0d1e53b6d8174d0a5059a8696c24e62759381f6d", - "invocationId": "fullbleed-f76772e29a594e7884800598a61c2410", + "invocationId": "fullbleed-ec9e3de34cbd470db971777862a68680", "overall": { - "score_pct": 98.48, - "pass": 1619, - "fail": 25, + "score_pct": 98.54, + "pass": 1620, + "fail": 24, "reference_disputed": 18, "total": 1662 }, "gatePassed": false, - "runUrl": "https://github.com/fullbleed-engine/fullbleed-official/actions/runs/38600917475" + "runUrl": "https://github.com/fullbleed-engine/fullbleed-official/actions/runs/39337511855" } diff --git a/docs/css-coverage.md b/docs/css-coverage.md index 0a412a7..001a675 100644 --- a/docs/css-coverage.md +++ b/docs/css-coverage.md @@ -1,16 +1,15 @@ # CSS Coverage and Parity Status -The [latest reviewed source comparison](guides/css-corpus.md#latest-reviewed-source-inset-shadow-corrections) -reports **1,620 PASS, 24 FAIL and 18 REFERENCE-DISPUTED** across 1,662 fixtures. -Its overall conclusion remains **failure**, with the clipping classification and -rounded-blur difference retained. This source check does not by itself verify a -downloaded release package. - -Browse the [published 2.5.22 CSS results](guides/css-explorer.md) to search all -1,662 fixtures and inspect actual PDFs, reference images, failures and disputes. -That explorer deliberately retains its exact wheel and evidence pin; it is not -the newer source result. The [method and evidence](guides/css-corpus.md) identify -both runs. Earlier zero-failure reports below are historical, not the current gate. +The [current stable published-wheel comparison](guides/css-corpus.md#current-stable-published-wheel-corpus-2534) +tests **Fullbleed 2.5.34** and reports **1,620 PASS, 24 FAIL and 18 REFERENCE-DISPUTED** +across 1,662 fixtures. Its overall conclusion remains **failure**. The exact PyPI +wheel, report, PDFs, images and manifest verification are retained. + +[Browse the actual results](guides/css-explorer.md), or read the +[method, package identity and historical comparisons](guides/css-corpus.md). +The [component alpha source result](guides/css-corpus.md#component-alpha-source-comparison-260a9) +is recorded separately and has different verdict totals. Earlier zero-failure +reports below are historical; none establishes complete CSS conformance. Reference imported from [v2.5.22](https://github.com/fullbleed-engine/fullbleed-official/blob/e41c1b4b4395c9bd3c024935c926ba46cb791440/docs/css-coverage.md). Check the installed runtime for your exact version. diff --git a/docs/guides/comparison.md b/docs/guides/comparison.md index 4ff6ee7..f66dad7 100644 --- a/docs/guides/comparison.md +++ b/docs/guides/comparison.md @@ -109,8 +109,8 @@ Start with the integration closest to your application: - [Variable-data documents](bank-statements.md), for compiled fixed and reflowing workflows. For the current CSS evidence, [browse all 1,662 fixtures](css-explorer.md) from -the published Fullbleed **2.5.22** Linux wheel. The recorded results include -**25 FAIL** and **18 REFERENCE-DISPUTED** cases; the unchanged upstream gate +the published Fullbleed **2.5.34** Linux wheel. The recorded results include +**24 FAIL** and **18 REFERENCE-DISPUTED** cases; the unchanged upstream gate fails. Inspect the relevant cases and test your own templates. A CSS comparison does not establish PDF/A, PDF/UA, or PDF/X conformance. diff --git a/docs/guides/css-corpus.md b/docs/guides/css-corpus.md index d048cc9..09d3ef2 100644 --- a/docs/guides/css-corpus.md +++ b/docs/guides/css-corpus.md @@ -1,10 +1,58 @@ --- title: Fullbleed CSS comparison on the IronPress corpus -description: Inspect the latest reviewed source results and browse all 1,662 fixtures tested with the published Fullbleed 2.5.22 wheel, including PDFs, reference images, failures and disputes. +description: Browse all 1,662 fixtures tested with the published Fullbleed 2.5.34 wheel. Inspect exact package evidence, source comparisons, PDFs, failures and disputed references. --- # Inspect the CSS comparison -## Latest reviewed source: inset-shadow corrections +## Current stable published-wheel corpus: 2.5.34 + +[Browse every fixture](css-explorer.md){ .md-button .md-button--primary } + +The complete October 19, 2026 run tests the **published Fullbleed 2.5.34 Linux +wheel** against all 1,662 fixtures at pinned IronPress revision +`0d1e53b6d8174d0a5059a8696c24e62759381f6d`. It records +**1,620 PASS, 24 FAIL and 18 REFERENCE-DISPUTED**. The unchanged +comparison gate **fails**; its original reasons, failed cases and disputed +references remain in the report. + +The wheel was downloaded from PyPI, and its SHA-256 matches PyPI's file record. +All **1,662 candidate PDFs** and all **5,489 compared PDF/PNG files** match the +[reviewed 2.5.34 source run](https://github.com/fullbleed-engine/fullbleed-official/actions/runs/39208485335) +byte for byte. Fixture verdicts, raw and above-floor differences, reference +metadata and raster fingerprints also match. The downloadable summary records +the complete manifest verification and the exact scope of that comparison. + +[Complete published-wheel evidence (57.4 MiB)](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.34/fullbleed-2.5.34-published-css-corpus.zip) +· [Structured verification](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.34/fullbleed-2.5.34-published-css-summary.json) +· [SHA-256 checksums](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.5.34/fullbleed-2.5.34-published-css-SHA256SUMS.txt) +· [Workflow run](https://github.com/fullbleed-engine/fullbleed-official/actions/runs/39337511855) +· [Explorer build pin](../assets/css-corpus/published.json) + +Extract the ZIP once and open `ironpress-evidence/current/reports/index.html` +for the offline report. The upstream report calls its candidate “ironpress”; +the candidate renderer in this run is Fullbleed. The online explorer preserves +the original candidate/reference images, tested PDFs and fixture classifications. + +These results apply to this exact Linux wheel, explicit assets and pinned +comparison policy. They do not establish complete CSS support, arbitrary website +rendering, or PDF standards conformance. The historical runs below keep their +original versions and results. + +## Component alpha source comparison: 2.6.0a9 + +The [alpha 9 source run](https://github.com/fullbleed-engine/fullbleed-official/actions/runs/39310439709) +tests commit `18154ba3003ead91be7ce324e302201942848a96` against the same 1,662 +fixtures. It records **1,619 PASS, 25 FAIL and 18 REFERENCE-DISPUTED** and retains +the failed gate. This is a separate **source-built wheel** result; it is not the +stable 2.5.34 result or a complete corpus check of the downloaded alpha package. + +[Download the unchanged alpha source evidence](https://github.com/fullbleed-engine/fullbleed-official/releases/download/v2.6.0a9/fullbleed-css-corpus-2.6.0a9.zip) +or read the [alpha guide and its qualification limits](component-preview-9.md). +The current interactive explorer uses the published stable wheel above. + + + +## Historical source comparison: inset-shadow corrections The [inset-shadow fix in PR #92](https://github.com/fullbleed-engine/fullbleed-official/pull/92) was checked against the complete pinned 1,662-fixture corpus on October 16, 2026. @@ -27,19 +75,21 @@ Chrome print. These differences and the failed verdict are retained in the No comparator reference or threshold was changed. This is **source verification**, not a complete corpus run against a downloaded -2.5.28 package. The online explorer below continues to show the exact published -2.5.22 wheel identified in its build pin. Older zero-failure reports are -historical; they do not describe the current corpus result or establish complete -CSS conformance. +2.5.28 package. The current explorer shows the published 2.5.34 wheel identified +above; the historical 2.5.22 package record is retained below. Older zero-failure +reports do not describe the current corpus result or establish complete CSS +conformance. -## Latest complete published-wheel corpus: 2.5.22 + -[Browse every fixture](css-explorer.md){ .md-button .md-button--primary } +## Historical published-wheel corpus: 2.5.22 -Search by CSS feature, category or verdict, compare the printed pages, and -download the actual PDF without extracting an archive. +[Browse the historical 2.5.22 results](css-explorer.md?version=2.5.22) or use the +complete archive below and its retained +[versioned fixture index](https://docs.fullbleed.dev/assets/css-corpus/2.5.22/index.json). Existing versioned +PDF and preview URLs retain their original bytes. The complete October 14, 2026 run tests the **published Fullbleed 2.5.22 Linux wheel** against the same pinned 1,662-fixture corpus. It records **1,619 PASS, @@ -58,10 +108,10 @@ also match. The downloaded wheel's SHA-256 matches PyPI's published file record. For the original offline report, extract this ZIP once and open `ironpress-evidence/current/reports/index.html`. The upstream report labels its -candidate “ironpress”; that candidate is Fullbleed in this run. The online -browser presents the same original PDF and preview bytes, verdicts and reference -notes. It does not change the comparator's policy or promote disputed cases to -passes. +candidate “ironpress”; that candidate is Fullbleed in this run. The retained +versioned files preserve the original PDF and preview bytes, verdicts and reference +notes. Neither this record nor the current explorer changes the comparator's +policy or promotes disputed cases to passes. These results apply to the exact Linux wheel, explicit assets, pinned references and comparison policy. They do not establish complete CSS support, arbitrary diff --git a/docs/guides/css-explorer.md b/docs/guides/css-explorer.md index 5ebb0f4..3cb925a 100644 --- a/docs/guides/css-explorer.md +++ b/docs/guides/css-explorer.md @@ -1,6 +1,6 @@ --- title: Browse Fullbleed's CSS comparison results -description: Search all 1,662 CSS fixtures tested with the published Fullbleed 2.5.22 wheel. Inspect original verdicts, reference images and generated PDFs, including failures and disputed references. +description: Search all 1,662 CSS fixtures tested with the published Fullbleed 2.5.34 wheel. Inspect original verdicts, reference images and generated PDFs, including failures and disputed references. hide: - toc --- @@ -8,19 +8,25 @@ hide: # See what the CSS tests render Find a layout or CSS feature, compare the printed pages, and download the actual -Fullbleed PDF. This is a maintainer-run comparison of the **published Fullbleed -2.5.22 Linux wheel** against the pinned, independent IronPress corpus. +Fullbleed PDF. The default view shows a maintainer-run comparison of the **published Fullbleed +2.5.34 Linux wheel** against the pinned, independent IronPress corpus. + +Choose a package version to inspect its own results. Shared case links keep the +selected version, filters and fixture. You can also [open the historical 2.5.22 +results](css-explorer.md?version=2.5.22) or read their +[evidence record](css-corpus.md#latest-published-wheel-2522). **The comparison gate fails.** Passing fixtures meet the comparator's policy; they do not establish complete CSS support or pixel-identical output. Failures and disputed references retain their original labels. [Read the method and limits](css-corpus.md). - -

+ +

Loading the fixture index…

- + diff --git a/docs/guides/renderer-comparison.md b/docs/guides/renderer-comparison.md index d5707f7..28bde42 100644 --- a/docs/guides/renderer-comparison.md +++ b/docs/guides/renderer-comparison.md @@ -98,4 +98,4 @@ The merged revision above contains the same benchmark files as the measured sour Fullbleed is a print-document engine. A browser remains relevant when JavaScript or live browser layout is the required behavior. See [Choose a PDF library](comparison.md) for that distinction and [CSS coverage](../css-coverage.md) for Fullbleed's tested surface. Three small fixtures on one host cannot establish a universal speed, memory, or quality ranking. -For a larger fixture-level comparison, [browse the published Fullbleed 2.5.22 results on the pinned IronPress CSS corpus](css-explorer.md). That run uses different inputs, versions, and comparison rules; evaluate its results separately from these application-document timings. The [corpus evidence guide](css-corpus.md) retains the failures, disputed references, and earlier release results. +For a larger fixture-level comparison, [browse the published Fullbleed 2.5.34 results on the pinned IronPress CSS corpus](css-explorer.md). That run uses different inputs, versions, and comparison rules; evaluate its results separately from these application-document timings. The [corpus evidence guide](css-corpus.md) retains the failures, disputed references, and earlier release results. diff --git a/tools/check_css_explorer.py b/tools/check_css_explorer.py index 11b626e..b8861af 100644 --- a/tools/check_css_explorer.py +++ b/tools/check_css_explorer.py @@ -7,7 +7,7 @@ from pathlib import Path import re import threading -from urllib.parse import quote, unquote, urlsplit +from urllib.parse import parse_qs, quote, unquote, urlsplit from playwright.sync_api import expect, sync_playwright from pypdf import PdfReader @@ -27,6 +27,7 @@ def main(): index_bytes = (root / index_path).read_bytes() index = json.loads(index_bytes) fixtures = {row['key']: row for row in index['fixtures']} + historical_indices = [] checks, errors, downloads = [], [], [] prefix = '/nested/docs/' @@ -63,7 +64,7 @@ def check(name, passed): url = base + 'guides/css-explorer/' result = {'startedAt': datetime.now(timezone.utc).isoformat(), 'url': url, 'version': index['version'], 'archiveSha256': publication['archiveSha256'], - 'checks': checks, 'downloads': downloads, 'errors': errors} + 'checks': checks, 'downloads': downloads, 'historicalDownloads': [], 'errors': errors} try: with sync_playwright() as pw: browser = pw.chromium.launch(**({'channel': 'chrome'} if args.browser == 'chrome' else {})) @@ -74,10 +75,34 @@ def check(name, passed): try: response = context.request.get(base + index_path) check('served index preserves all verified bytes', response.ok and response.body() == index_bytes) + for asset in ('explorer.js', 'explorer.css'): + asset_path = 'assets/css-corpus/' + asset + response = context.request.get(base + asset_path) + check('legacy browser asset URL remains available unchanged: ' + asset, + response.ok and response.body() == (root / asset_path).read_bytes()) + for config_path in sorted((root / 'assets/css-corpus/history').glob('*.json')): + historical = json.loads(config_path.read_text(encoding='utf-8')) + historical_prefix = f"assets/css-corpus/{historical['version']}/" + historical_bytes = (root / historical_prefix / 'index.json').read_bytes() + response = context.request.get(base + historical_prefix + 'index.json') + check('historical index remains byte-identical: ' + historical['version'], + response.ok and response.body() == historical_bytes) + historical_index = json.loads(historical_bytes) + assert historical_index['version'] == historical['version'] + assert historical_index['archiveUrl'] == historical['archiveUrl'] + historical_indices.append((historical, historical_index)) + for verdict in ('PASS', 'FAIL', 'REFERENCE-DISPUTED'): + fixture = next(row for row in historical_index['fixtures'] if row['status'] == verdict) + response = context.request.get(base + historical_prefix + fixture['pdf']) + check(f"historical {verdict} PDF URL preserves its bytes: {historical['version']}", + response.ok and sha256(response.body()).hexdigest() == fixture['pdfSha256']) page.goto(url, wait_until='domcontentloaded') expect(page.locator('#ce-controls')).to_be_visible() expect(page.locator('#ce-loading')).to_contain_text('1,662 fixtures') expect(page.locator('#ce-loading')).to_contain_text('full comparison gate failed') + expect(page.get_by_label('Package version', exact=True)).to_have_value(index['version']) + check('current package is explicit in the selectable version and shared URL', + parse_qs(urlsplit(page.url).query).get('version') == [index['version']]) for verdict, count in index['counts'].items(): expect(page.locator('#ce-counts')).to_contain_text(f'{verdict} {count:,}') check('all original verdict totals and failed gate are visible', True) @@ -91,7 +116,7 @@ def check(name, passed): page.locator('#ce-previous').click() expect(page.locator('.ce-result button').first).to_have_text(first) page.evaluate('scrollTo(0, 0)') - page.screenshot(path=str(out / 'desktop.png')) + page.screenshot(path=str(out / 'desktop.png'), animations='disabled') page.locator('#ce-verdict').select_option('FAIL') expect(page.locator('#ce-results-status')).to_contain_text(f"{index['counts']['FAIL']} matching fixtures") @@ -149,7 +174,7 @@ def download(key): page.wait_for_function('(img) => img.complete && img.naturalWidth > 0', arg=item.element_handle()) check('both original page previews load in a real browser', images.count() == 2) page.locator('#ce-detail').evaluate('(el) => el.scrollIntoView({block: "start"})') - page.screenshot(path=str(out / 'desktop-detail.png')) + page.screenshot(path=str(out / 'desktop-detail.png'), animations='disabled') page.get_by_title('Switch to dark mode', exact=True).click() expect(page.locator('body')).to_have_attribute('data-md-color-scheme', 'slate') expect(page.get_by_role('link', name='Download Fullbleed PDF')).to_have_css('color', 'rgb(142, 222, 195)') @@ -172,12 +197,67 @@ def download(key): expect(page.locator('#ce-results-status')).to_contain_text('No fixtures match') expect(page.locator('#ce-detail')).to_be_hidden() check('empty results clear selection without interpreting input as HTML', page.locator('#css-explorer img').count() == 0) - page.goto(url + '?category=unknown&verdict=unknown&case=unknown', wait_until='domcontentloaded') + page.goto(url + '?version=unknown&category=unknown&verdict=unknown&case=unknown', wait_until='domcontentloaded') expect(page.locator('#ce-controls')).to_be_visible() expect(page.locator('#ce-category')).to_have_value('') expect(page.locator('#ce-verdict')).to_have_value('') expect(page.locator('#ce-detail')).to_be_hidden() check('invalid shared filters fall back to all fixtures', page.locator('.ce-result').count() == 12) + expect(page.get_by_label('Package version', exact=True)).to_have_value(index['version']) + check('unsupported package versions normalize to the current published version', + parse_qs(urlsplit(page.url).query).get('version') == [index['version']]) + + for historical, historical_index in historical_indices: + changed = next((row for row in historical_index['fixtures'] + if row['status'] != fixtures[row['key']]['status']), historical_index['fixtures'][0]) + selected_url = (url + '?case=' + quote(changed['key']) + '&category=' + quote(changed['category']) + + '&q=' + quote(changed['id']) + '&version=' + quote(index['version'])) + page.goto(selected_url, wait_until='domcontentloaded') + expect(page.locator('#ce-detail .ce-verdict')).to_have_text(fixtures[changed['key']]['status']) + query = parse_qs(urlsplit(page.url).query) + check('legacy fixture search links migrate without opening site search: ' + historical['version'], + query.get('query') == [changed['id']] and 'q' not in query + and not page.locator('#__search').is_checked()) + page.get_by_label('Package version', exact=True).select_option(historical['version']) + expect(page.locator('#ce-loading')).to_contain_text('published Fullbleed ' + historical['version']) + expect(page.locator('#ce-detail-title')).to_have_text(changed['id']) + expect(page.locator('#ce-search')).to_have_value(changed['id']) + expect(page.locator('#ce-category')).to_have_value(changed['category']) + expect(page.locator('#ce-detail .ce-verdict')).to_have_text(changed['status']) + for verdict, count in historical_index['counts'].items(): + expect(page.locator('#ce-counts')).to_contain_text(f'{verdict} {count:,}') + expect(page.get_by_role('link', name='Complete evidence ZIP')).to_have_attribute('href', historical['archiveUrl']) + shared = page.get_by_role('link', name='Link to this case').get_attribute('href') + check('switching package versions preserves the selected case and filters: ' + historical['version'], + parse_qs(urlsplit(shared).query).get('version') == [historical['version']]) + page.reload(wait_until='domcontentloaded') + expect(page.locator('#ce-loading')).to_contain_text('published Fullbleed ' + historical['version']) + expect(page.locator('#ce-detail .ce-verdict')).to_have_text(changed['status']) + check('shared historical selection survives reload: ' + historical['version'], page.url == shared) + check('shared historical link leaves mobile site search closed: ' + historical['version'], + not page.locator('#__search').is_checked()) + with page.expect_download() as pending: + page.get_by_role('link', name='Download Fullbleed PDF').click() + target = out / f"historical-{historical['version']}-{changed['id']}.pdf" + pending.value.save_as(target) + digest = sha256(target.read_bytes()).hexdigest() + pages = len(PdfReader(target).pages) + check('selected historical PDF downloads the original package bytes: ' + historical['version'], + digest == changed['pdfSha256'] and pages == sum(bool(p['candidate']) for p in changed['pages'])) + result['historicalDownloads'].append({'version': historical['version'], 'key': changed['key'], + 'sha256': digest, 'pages': pages, 'file': target.name}) + page.locator('#ce-detail').evaluate('(el) => el.scrollIntoView({block: "start"})') + page.screenshot(path=str(out / f"historical-{historical['version']}.png"), animations='disabled') + top = page.get_by_role('button', name='Back to top', exact=True) + check('historical heading clears the mobile floating navigation: ' + historical['version'], + not top.is_visible() or page.locator('#ce-detail-title').bounding_box()['y'] + >= top.bounding_box()['y'] + top.bounding_box()['height']) + page.go_back(wait_until='domcontentloaded') + expect(page.locator('#ce-loading')).to_contain_text('published Fullbleed ' + index['version']) + expect(page.locator('#ce-detail-title')).to_have_text(changed['id']) + expect(page.locator('#ce-detail .ce-verdict')).to_have_text(fixtures[changed['key']]['status']) + check('browser Back restores the previous package and case: ' + historical['version'], + parse_qs(urlsplit(page.url).query).get('version') == [index['version']]) unequal = next(row for row in index['fixtures'] if any(not p['candidate'] or not p['reference'] for p in row['pages'])) @@ -200,6 +280,13 @@ def download(key): expect(page.locator('#ce-controls')).to_be_hidden() expect(page.get_by_role('link', name='Read the method and limits')).to_be_visible() check('index outage preserves a useful evidence-guide fallback', True) + page.unroute('**/' + index_path) + page.route('**/assets/css-corpus/versions.json*', lambda route: route.fulfill(status=503, body='Unavailable')) + page.reload(wait_until='domcontentloaded') + expect(page.locator('#ce-loading')).to_contain_text('The fixture browser could not load') + expect(page.locator('#ce-controls')).to_be_hidden() + expect(page.get_by_role('link', name='Read the method and limits')).to_be_visible() + check('version inventory outage preserves the evidence-guide fallback', True) check('no uncaught browser errors', not errors) result['passed'] = True except Exception: diff --git a/tools/prepare_css_corpus_site.py b/tools/prepare_css_corpus_site.py index a4afbab..872a7f1 100644 --- a/tools/prepare_css_corpus_site.py +++ b/tools/prepare_css_corpus_site.py @@ -130,7 +130,7 @@ def verified(name): summary = {'schema': 'fullbleed.css-explorer-build.v1', 'archiveSha256': config['archiveSha256'], 'counts': expected, 'fixtures': len(fixtures), 'files': written, 'scope': 'Presentation copy of verified published-wheel evidence. Original fixture verdicts, reference metadata, images and PDF bytes are preserved.'} - (output / 'site-manifest.json').write_text(json.dumps(summary, indent=2) + '\n', encoding='utf-8') + (output / 'site-manifest.json').write_text(json.dumps(summary, indent=2) + '\n', encoding='utf-8', newline='\n') print(json.dumps({'fixtures': len(fixtures), 'counts': expected, 'files': len(written), 'bytes': sum(item['bytes'] for item in written.values()), 'gatePassed': provenance['gate_passed']})) @@ -141,4 +141,20 @@ def verified(name): parser.add_argument('--config', type=Path, default=ROOT / 'docs/assets/css-corpus/published.json') parser.add_argument('--archive', type=Path) args = parser.parse_args() + # Previously published evidence URLs must continue to resolve when the + # current explorer advances to another package. Each historical manifest + # retains its own immutable archive and is checked just like the current one. + historical = sorted((args.config.parent / 'history').glob('*.json')) + versions = set() + for config_path in [*historical, args.config]: + config = json.loads(config_path.read_text(encoding='utf-8')) + assert config['version'] not in versions, f'Duplicate published evidence version: {config["version"]}' + versions.add(config['version']) + for config_path in historical: + prepare(args.site, config_path) prepare(args.site, args.config, args.archive) + current = json.loads(args.config.read_text(encoding='utf-8'))['version'] + inventory = {'schema': 'fullbleed.css-explorer-versions.v1', 'current': current, + 'versions': [current, *[json.loads(path.read_text(encoding='utf-8'))['version'] for path in historical]]} + (args.site / 'assets/css-corpus/versions.json').write_text( + json.dumps(inventory, indent=2) + '\n', encoding='utf-8', newline='\n') diff --git a/tools/sync_reference.py b/tools/sync_reference.py index 8a1e030..35f70bd 100644 --- a/tools/sync_reference.py +++ b/tools/sync_reference.py @@ -30,9 +30,10 @@ "regular and bold Noto Sans Arabic files with a font manifest and glyph checks." ), "css-coverage.md": ( - "See the [complete 1,662-fixture CSS comparison and release follow-ups]" - "(guides/css-corpus.md), including the published 2.5.14 baseline, " - "the reviewed 2.5.22 source candidate, remaining failures, PDFs, images, and hashes. " + "See the [current published-wheel comparison and release follow-ups]" + "(guides/css-corpus.md), or [browse every fixture](guides/css-explorer.md). " + "Those pages identify the exact tested package, remaining failures, disputed " + "references, PDFs, images, and hashes. " "The imported reference below preserves earlier version-specific reports." ), "guides/performance.md": (