Use indexed Files and Artifacts views and share bounded previews - #1663
Draft
kyle-compute wants to merge 2 commits into
Draft
kyle-compute wants to merge 2 commits into
kyle-compute wants to merge 2 commits into
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Oddish previewCommit:
Vercel deployment URL: https://oddish-2k4tr4170.oddish.app Plan:
This comment is updated by the PR Preview workflow. |
This was referenced Sep 15, 2026
kyle-compute
force-pushed
the
perf/prepared-file-index-stack
branch
from
September 15, 2026 19:22
24f5225 to
e9bc872
Compare
kyle-compute
force-pushed
the
perf/prepared-file-browser-stack
branch
from
September 15, 2026 19:22
dd2229a to
26075e2
Compare
kyle-compute
force-pushed
the
perf/prepared-file-browser-stack
branch
from
September 15, 2026 19:25
26075e2 to
76e1ef7
Compare
kyle-compute
force-pushed
the
perf/prepared-file-index-stack
branch
from
September 15, 2026 19:49
d0b8403 to
e8de943
Compare
kyle-compute
force-pushed
the
perf/prepared-file-browser-stack
branch
from
September 15, 2026 19:49
76e1ef7 to
3a774e6
Compare
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.
TL;DR
Stack 3/3 replacing #1635. Dashboard #1661 → File index #1662 → File browser #1663. Base:
perf/prepared-file-index-stack. Merge in that order; after a squash merge, rebase and retarget the next PR ontostagingbefore merging it. Draft status is preserved from #1635.Files and Artifacts now request the prepared metadata published by the preceding PR, using 100-entry directory pages and artifact-only listings. The browser retries preparation and uses one shared inventory owner for pagination, activation refresh, and revision-conflict recovery. Reopening a view revalidates even an empty inventory while keeping cached data visible. Matching revisions retain loaded pages; replacement revisions discard old pages and old full-file contents.
Both views share preview requests scoped to account, trial, attempt, revision, and path. A cold trial deep link waits for the inventory revision before downloading one preview. Previews are bounded to 100 KiB; full-file loading remains an explicit action. Binary and full-file URLs carry the same attempt/revision identity. Nested filename encoding preserves path separators and escapes literal filename characters consistently across readers and proxies.
Visited panes retain selection, file/line links keep their existing URL ownership, and hover or keyboard focus preloads drawer modules. Once these callers use indexed reads, this PR removes the old directory-batch storage reader, streamed listings and proxies, inline-preview mode, and duplicated artifact fetch state. Task directory batches now always read the prepared index. The backend additions and backfill from the preceding PR must be deployed first.
Local testing
29 Chromium tests passed with real React components and controlled API responses. Coverage includes account/organization isolation, pagination, delayed version changes, file/line links, reopening empty inventories, shared previews, stale-revision recovery, replacement after full downloads, and a single preview on cold trial deep links. TypeScript, ESLint for the changed file components/helpers, and all 13 selected Node tests passed.
129 combined core tests passed on disposable PostgreSQL 17; both migration stacks upgraded from an empty database. 38 hosted file/authorization tests passed. The authorization fixture that assigns an uncreated
another-orgrow still fails with the same foreign-key error reproduced on unchanged staginge0708f79.The final Git tree is exactly
1cb0d62244dbfdea04b48a21bcd2b430e166a81b, matching source PR #1635 at57e06d7fmerged with staging0203a819. Before updating the stack to that staging commit, its final tree also matched #1635 byte-for-byte. No implementation, tests, or documentation from the source PR were dropped.Core files changed
frontend/src/lib/use-task-file-tree.ts/file-resources.ts— Own inventory freshness, pagination, and shared bounded preview requests.frontend/src/components/task-files-panel.tsx/artifacts-viewer.tsx/trial-detail-panel.tsx— Consume indexed reads, retain selection, and replace stale pages and file contents.frontend/src/lib/file-path.ts/ file proxy routes — Encode nested filenames and forward attempt, revision, and byte bounds consistently.oddish/src/oddish/core/sharing/helpers.py/oddish/src/oddish/db/storage.py— Remove legacy listing paths after their browser callers switch.