feat(ifc): integrate advanced settings and consolidate dependency maintenance - #278
Merged
Merged
Conversation
Proves failure before repair and passes real-browser abort-listener and extension-cleanup reentrancy with zero Workers on resolution. No publication.
8 tasks
This was referenced Sep 12, 2026
chore(deps): bump @angular/core from 22.0.7 to 22.1.0 in /apps/component-demo/test/angular-pptx
#270
Closed
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
Consolidate the remaining reviewed PRs on merged #276, without duplicate IFC runtimes or individually incompatible Angular upgrades. No npm publication, release tag, package version bump or automatic issue closure.
configureRuntimehook. Retain the existing post-load hook, optional entry and owned Workers.unmount()from abort/cleanup callbacks returned different Promises and resolved with a Worker still alive. Guard model registration and publish one shared disposal Promise before callbacks execute.Related issue
Refs #267. Supersedes #275, #261, #270, #271 and #274 once this consolidated PR passes its current checks and merges. The original PR commits are not represented as merged.
Credit for the advanced configuration direction: @p4535992, #275 (comment).
Change classification
Verification
Exact reviewed head:
5a37e3b2132cd1afdfda8a9f9605cc51f44ade87. Runtime repair is0b84e9d5dec5344b990511558c07013d2e1e98e0; the last commit records its evidence.pnpm install --frozen-lockfile --filter @flyfish-group/file-viewer-open-source --filter @file-viewer/renderer-3d...— Passed.pnpm verify:github-governance— Passed.pnpm verify:public-release-facts— Passed.pnpm --filter @file-viewer/core build— Passed.pnpm --filter @file-viewer/geometry-engine build— Passed.pnpm --filter @file-viewer/renderer-3d build— Passed.pnpm --filter @file-viewer/renderer-3d verify:ifc— Passed, including six settings tests against the real upstream importer.pnpm --filter @file-viewer/renderer-3d verify:ifc-browser /tmp/ifc-samples— Passed with original models, real Worker settings, picking, late hooks, failure cleanup and reentrant disposal.pnpm --filter @file-viewer/thumbnail test— Passed in dependency qualification.node --test tests/ifc-settings.test.mjs— Passed against actual cold-installed tarballs.node tests/verify-ifc-browser.mjs /tmp/ifc-samples— Passed against the cold-installed distribution and its generated Workers, using unchanged assertions.Qualification evidence:
Final-head Public CI: https://github.com/flyfish-dev/file-viewer/actions/runs/34680927047.
Final-head Security: https://github.com/flyfish-dev/file-viewer/actions/runs/34680927058.
These and the latest PR Governance must all complete successfully before merge. Older heads' checks do not substitute for the current head.
Cold installation used the real core, geometry-engine and renderer-3d tarballs with pinned optional peers, without bundler aliases or dependency overrides. The installed asset command generated the actual WASM and both Workers. Package hashes, asset manifest and browser reports are retained in the qualification artifacts.
The lockfile was regenerated and frozen reinstallation passed with identical bytes: Vitest was already overridden and the Angular fixture is outside the workspace. Failed baseline tests are intentionally retained as failure-before-fix evidence, not counted as successful product gates.
Sample / fixture evidence
Unmodified official buildingSMART IFC4 and IFC4.3 source at a pinned revision:
https://github.com/buildingSMART/Certification-datasets/tree/80d976a9b193a26a8e928c3e79bff67af1de68a8
Downloader, fixture paths and SHA-256 checks:
https://github.com/flyfish-dev/file-viewer/blob/5a37e3b2132cd1afdfda8a9f9605cc51f44ade87/packages/renderers/3d/scripts/download-ifc-fixtures.mjs
Actual browser evidence and reproduction guide:
https://github.com/flyfish-dev/file-viewer/tree/5a37e3b2132cd1afdfda8a9f9605cc51f44ade87/docs/regressions/issue-267/advanced
Both ordinary fixtures retain 13 geometric items and 1,143 triangles. Importer
Nameexclusion changes real selected model data; the actual Fragments instance appliesmaxUpdateRate: 80. Every tested teardown reaches zero tracked Workers. CC BY 4.0 attribution remains in IFC.md.Visual evidence
Default scene geometry remains unchanged from the qualified #276 foundation. The advanced test changes selected properties, not the default visual design.
Risk and compatibility
Affected packages/formats: optional renderer-3d IFC entry/importer Worker, nested Angular consumer fixture and thumbnail test tooling. Ordinary Office/3D entries, default settings and runtime dependency count remain unchanged.
Compatibility or migration risk: advanced settings are upstream-version-coupled public data, not executable document metadata. Existing post-load
configureremains supported. Hooks may be async and return synchronous host-resource cleanup; reverse-order cleanup runs once, including late completion after cancellation. Do not dispose adapter-owned objects or replace Worker/lifecycle methods. Configuration bounds are not validation of every upstream numeric option. Self-hosting consumers must regenerate/deploy the matching importer Worker when updating the adapter.Rollback: revert this consolidated squash commit and regenerate IFC assets from the previous adapter. Revert the Angular cohort together. No user-file or persisted-data migration is introduced.
Release handoff: published DOCX was still 0.3.31 at review. After publishing the merged upstream fix, run
pnpm release:prepare-docx <exact-published-version>andpnpm release:verify; review and commit synchronized dependency/Worker/lock metadata before File Viewer publication. Green source CI is not evidence that a future upstream npm version exists.docs/maintenance/pr-issue-review-20260912.mdrecords all seven open issues: #227/#248/#269 need original artifacts, #266/#268 await package delivery/acceptance, #267 is optional visual inspection rather than BIM authoring, and #277 is a separately scoped proposal. No issue closes automatically.Checklist