You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extends the large-workbook preview spec with horizontal virtualization, merge-aware row and column windows, and keyboard scrolling to off-screen coordinates. The change keeps ArtifactView generic and adds a 256-column browser regression.
Validated with the Node 24 Studio build and 40-file/243-test Vitest suite, 36 Playwright tests, focused oxlint, and the Homology cross-repository Studio verifier.
Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com>
Copy file name to clipboardExpand all lines: docs/specs/2026-08-24-studio-pdf-fbx-and-large-workbook-previews.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,17 +11,17 @@ Artifact View already dispatches through server-owned adapter and surface bindin
11
11
12
12
- ArtifactView remains a renderer-agnostic dispatcher. It must not inspect PDF, FBX, Office, or Canvas payload details.
13
13
- PDF is a Studio-owned, read-only data surface. The adapter binds the exact catalog revision, exposes only the PDF bytes plus bounded page metadata, and the browser renders pages with PDF.js. PDF JavaScript, form actions, attachments, and external network access are not executed.
14
-
- FBX is a Provider-owned external-hosted surface. The Homology Provider binds the exact catalog revision, parses it with `@homology/diagram-fbx`, and owns the rendered document. Better Harness only validates and mounts the common opaque hosted surface.
15
-
- XLSX remains a Studio-owned read-only data surface. The projection may expose up to the existing populated-cell budget, and the client virtualizes rows so a large sparse worksheet does not create one DOM row for every worksheet row.
14
+
- FBX is a Provider-owned external-hosted surface. The Homology Provider binds the exact catalog revision, parses it with `@homology/diagram-fbx`, and owns the precompiled WebGL document and interaction runtime. Better Harness only validates and mounts the common opaque hosted surface.
15
+
- XLSX remains a Studio-owned read-only data surface. The projection may expose up to the existing populated-cell budget, and the client virtualizes rows and columns so a large sparse worksheet does not create one DOM cell for every worksheet coordinate.
16
16
- Revision, adapter, renderer, hosted-runtime, provider fingerprint, capability, and security-profile identity continue to decide surface retention. Late data from an older revision must not replace the current view.
17
17
18
18
## Acceptance criteria
19
19
20
20
1. A real multipage PDF appears as a native Artifact View with page count, page navigation, zoom, keyboard operation, and virtualized page mounting.
21
21
2. PDF bytes are served only from an immutable revision resource URI. Oversized files, excessive page counts, malformed files, password-protected files, and revision drift fail closed with a browser-safe diagnostic.
22
-
3. A real ASCII or binary FBX appears through the existing external-hosted iframe lane, includes mesh/vertex/polygon metadata, and remains usable without adding an FBX branch to `ArtifactView.tsx` or the Studio surface registry.
22
+
3. A real ASCII or binary FBX appears as an interactive WebGL model through the existing external-hosted iframe lane, includes mesh/vertex/polygon metadata, and remains usable without adding an FBX branch to `ArtifactView.tsx` or the Studio surface registry.
23
23
4. FBX provider activation is explicit and receipt-bound. Ordinary TSX/JSX, Canvas TSX, diagrams, notebooks, Office files, and unknown files retain their existing resolution rules.
24
-
5. XLSX retains populated cells beyond row 200, renders only the visible row window plus overscan, preserves sheet and cell selection across compatible revisions, and supports keyboard navigation to an off-screen row.
24
+
5. XLSX retains populated cells beyond row 200 and column 64, renders only visible row/column windows plus overscan, expands a window when required to preserve a merged cell, preserves revision-scoped sheet/cell state, and supports keyboard navigation to off-screen coordinates.
25
25
6. Unit tests cover model validation, catalog resolution, exact-revision resource reads, fail-closed inputs, provider receipts, and renderer selection. Browser tests cover wide, compact, and narrow layouts with no page errors, console errors, or unintended horizontal page overflow.
26
26
27
27
## Limits and non-goals
@@ -32,7 +32,7 @@ Artifact View already dispatches through server-owned adapter and surface bindin
- Homology `diagram-fbx` build and integration Provider check passed (4 files, 13 tests; pack 1,851,262 bytes / 6,056,207 bytes unpacked / 11 entries), plus the cross-repository `verify:studio` route check.
37
-
- A real three-page PDF, binary FBX, and generated 420-row XLSX returned exact-revision snapshots/resources; PDF and XLSX used native bindings, while FBX used the receipt-bound opaque hosted Provider.
38
-
- Browser inspection at 1440x900, 1024x768, and 390x844 found zero page overflow and zero final console warning/error. PDF rendered real canvases and navigated to page 2; XLSX mounted 37 visible rows and materialized A420 only near the bottom; FBX pan/zoom controls changed scale from 1.0 to 1.2.
- A real three-page PDF, binary FBX, and generated 420-row by 256-column XLSX returned exact-revision snapshots/resources; PDF and XLSX used native bindings, while FBX used the receipt-bound opaque hosted Provider.
38
+
- Browser inspection at 1440x900, 1024x768, and 390x844 found zero page overflow and zero final console warning/error. PDF rendered real canvases and navigated to page 2; XLSX mounted bounded row/column windows and materialized IV4 only at the far horizontal edge; FBX created one WebGL mesh, used the normalized-scene fallback for the minimal binary fixture, and changed its interaction counter after Reset.
0 commit comments