Repository navigation
fix(web-full): generate and validate packaged asset manifest - #346
Merged
Merged
Conversation
Build portable metadata from the final sanitized asset tree and fail for missing required resources. Add focused regression coverage to the existing Public CI build.
wybaby168
marked this pull request as ready for review
October 7, 2026 19:03
7 of 8 tasks
wybaby168
added a commit
that referenced
this pull request
Oct 9, 2026
* fix: restore intermediate stabilization contracts Combine current-base PRs #348, #346, #349 and #347 and preserve newer main changes while restoring reviewed renderer and package boundaries. Prepared and validated by Codex <codex@openai.com> in an independent cloud workspace. Local candidate: 7f478f7e0ea01aa9a596a2cc7c054913fe46b892. Exact validated tree: 3524dfa. Connector publication controls remote author metadata. No npm release or compatibility-floor change. * fix(docs): update Next security patch cohort Pin Next and its matching env/SWC cohort to16.3.8 to resolve six current docs-site advisories. Preserve unrelated dependencies and compatibility floors. Validated by Codex in the independent cloud: frozen install, full and production official audits, docs build/type-check, cohort tests and governance. Existing ignored Vue2 low finding remains explicit. Local validated commit accf4a6e01a818bb75de1d43666ca30b76c2a09c; exact tree285cc92f0dc18b7aa5abc7ab10fce451a8ca616b. Connector controls remote author metadata. * fix(ci): install required CJK vertical fonts The actual Chromium font-table gate reproduced zero-height vertical glyphs from WenQuanYi. Install the reviewed Noto CJK prerequisite and retain its physical font cohort as evidence; keep all glyph bounds and advance assertions unchanged. Local workflow formatting/governance passed. Original failed pixels and geometry retained from run37718395780. Local commit249c3700c91b71693b0e8b9a70c1658e4aaa715f; exact tree320792ed4bcbfbf09ea9992d76b61cbb605a9679. No renderer/runtime source change. * fix(text): adapt single-byte encoding support to current renderers Selectively adapt PR #326 without importing its historical dependency or Markdown implementation. Preserve BOM/UTF-16/strict UTF-8 auto precedence and the default GB18030 fallback; expose six explicit single-byte labels and text.fallbackEncoding throughout current text rendering, including LRC. Use single-byte offsets for virtual line segments and search. Add charset, public type, precedence, exact-offset and real-browser regression gates to the standard test chain, retaining browser artifacts in Public CI. Validated locally: 53 focused tests, 35 text package tests, core and all 34 renderer builds/type-checks, governance, docs, browser fixtures and bundle. Chromium/WebKit execution is pending on GitHub-hosted CI; local browser launch was not attempted. No dependency, release or compatibility-floor change. Co-authored-by: 4gray <fourgray@proton.me> Prepared as local commit 1809ec12042523f0c7158263c6dab39150ab01c5; published through the authorized connector with identical tree ecabf9c. * docs(dicom): explain application installation policy Document the application-owned dependency overrides, current default versus constrained audit results, existing transitive Node requirement, CLI Full selection and workspace license-snapshot boundary. Link both installation guides to the shipped policy. Six Markdown files only; runtime, package dependencies, engines and workflows are unchanged. Validation: JSON examples and links, release facts, 114-page documentation production build, and final wording diff checks. Prepared and reviewed from local Codex commit 892b058791a0c3493d763e85c8550c1793985f19; remote tree is identical. * test(release): verify packed DICOM browsers and normal DOCX migration Add isolated packed DICOM browser evidence with contamination controls and repair transactional preparation for an ordinary versioned DOCX dependency. Preserve rendering assertions and verify registry package integrity after migration. Locally validated source tree: 0fe8d63 Local source commit: 303dfe3d780e8e1beb10af78feef4ec4726c6ecf * test(dicom): retain the asserted browser pixel sample Keep the exact measurement that satisfied the rendering poll and independently enforce the retained report thresholds. Add negative controls for an intervening blank read and blank retained evidence while preserving the original hosted discrepancy. Validated source tree: b506193 Local source commit: cd3fcf5cdd7f97d609064738b9dbf0195ce508d4 * Adopt published DOCX and verify browser runtime and full asset delivery Use ordinary published DOCX 0.3.34 and remove its transitional patch. Bundle DICOM and Mermaid runtime inputs with exact license and file identities; verify cold installed consumers, rendered screenshots, compressed DICOM syntaxes, visible mathematics, and cleanup in Chromium and WebKit. Retain the complete Full renderer set while using exact-version CAD and drawing asset dependencies to meet the CDN unpacked-size limit. Validate complete offline copying and actual DWG/Draw.io rendering. Add independent Linux browser evidence gates and project all licensed DICOM test fixtures. This is a source review candidate. Aggregate versions remain unfrozen, Linux validation is pending, and the traditional PPT publisher binding is unresolved. Source commit: 8d6531781b5d193c84fd94008bc462a755346f44 * Build capability dependencies before their renderer consumers Schedule renderer and capability workspaces together through pnpm's dependency order instead of building all renderers before capabilities. A clean drawing build now waits for the Mermaid engine and its declarations. Remove the redundant later capability batch from the root build. Validation: a fresh isolated checkout with independent frozen dependencies and empty affected dist/build-info directories passed the normal root build and standalone type checks. Text completed before Mermaid, and Mermaid completed before drawing started. All 17 DICOM and 104 Mermaid output files match the passed browser evidence byte-for-byte; 11 projection checks and two clean-build contracts passed. Source commit: 7f6e90984f04b76aa95af92b5c6e4f72440064f3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fresh Web Full builds can copy complete runtime assets yet omit
flyfish-viewer-assets.json, so the packed standalone copy CLI fails with ENOENT. Validate the final sanitized asset tree and generate a fresh portable manifest before writing its package descriptor. Missing sources and required assets now fail the build, including when stale dist files exist.This is a three-file packaging repair based on current main
eb842206323f19793ce71836c116d54f461f849e, after #343 was merged. It adds five regression controls and runs them after the existing Public CI build. Workflow triggers and runtime-selection conditions are preserved. It neither incorporates nor replaces the separate dependency and consumer-fixture changes in #339/#342.Related issue
N/A: packaging regression found during independent packed-consumer verification; no separate issue closure.
Change classification
Verification
Fresh current-main source verification in an independent Linux cloud, Node 24.20.0, with NODE_PATH/NODE_OPTIONS cleared:
node --test packages/components/web-full/test/asset-manifest.test.mjs— Passed: all five controls. All five fail on unchanged current-main code. The web Node helper and current core asset declarations were freshly compiled from blob-verified current-main source.node --check packages/components/web-full/scripts/build-iife.mjsand the new test — Passed.prettier --config .github/prettier-governance.json --check .github/workflows/public-ci.yml— Passed.The focused test stubs Vite only; actual copy, sanitization, PPT integrity and asset-manifest implementations execute. It covers manifest-free bootstrap, stale metadata, missing PDF worker, stale dist WASM, and absent asset sources, plus unchanged source/binary bytes.
Earlier independent full-package evidence for the same build-script fix: real main/AMD and 22 renderer bundles; the existing sanitizer; a real 2,961-file archive; all 27 renderer groups copied outside the workspace with all 2,916 payload hashes matching; missing packed PDF worker fails atomically without changing the target. That archive uses an earlier dependency graph and is historical packaging evidence, not a current-main release candidate.
Current head
d37b9054776751ef2085271d175fd85557ce36dbpassed full Public CI, Security, CodeQL, and PR governance. Public CI completed 51 successful steps; only failure-evidence upload was skipped. The actual full build, five-case manifest gate, type checks, issue regressions, documentation, native browsers, RequireJS, Vite Worker paths and packed Vue/React/Angular consumer checks all ran. The hosted synthetic merge commit has exactly the published head's verified tree. No npm release or merge occurred.The hosted DOCX gate reports
@file-viewer/docx@0.3.33,diagonalCount: 1,nativeHeaderFooter: true,nativeHyperlinkPolicy: trueandpassed: true. This exercises current main's inherited patched 0.3.33 runtime, not the separately prepared native 0.3.34 package, and does not complete the no-patch migration.Security's workspace audit reports one low advisory ignored by the existing policy. The fresh packed-consumer installs separately report 42 affected entries for Vue/React (7 low, 16 moderate, 19 high) and 4 for Angular (2 high, 2 critical). These are installed-package audit counts, not independent exploit counts or production-only results. Passing functional checks is not a vulnerability-free consumer graph; the separate #339/#342 repairs are not included in this branch.
Sample / fixture evidence
N/A: no parser/rendering behavior changes. The new regression generates license-safe local runtime fixtures in temporary directories; existing public runtime fixtures are used by hosted checks.
Visual evidence
N/A: build-time asset metadata and failure behavior only; existing hosted browser gates remain required.
Risk and compatibility
@file-viewer/web-fullpackaging and its public asset manifest, plus the focused Public CI step.Checklist