Skip to content

feat(files): browse workspace folders on demand - #824

Merged
rynfar merged 3 commits into
pylonfrom
feat/mobile-lazy-workspace-files-20260924
Sep 27, 2026
Merged

rynfar merged 3 commits into
pylonfrom
feat/mobile-lazy-workspace-files-20260924

Conversation

@rynfar

@rynfar rynfar commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Change

Adapts upstream 21d53ca2eecbf9f1e481454e8084459b422de714 (#11527) to Pylon's existing web and mobile file viewers. A new optional directoryPath request lists one folder's immediate children, including ignored entries, in 1,000-entry pages. The existing omitted-field request and markerless indexed response remain unchanged for older clients and servers. Web and mobile load expanded folders on demand while retaining indexed path search, current preview/editor routes, environment scope, and mutation refresh.

The server resolves the requested directory beneath the workspace real path, excludes .git and symlink children, and keeps projects.listEntries under its existing read authorization. The old RPC payload schema drops the new optional fields; clients identify a new directory response by its directoryPath marker and treat a markerless response as the complete legacy tree.

Scope and limits

This ports file discovery, not a new viewer. The response is bounded to 1,000 children per page and clients stop after 50 pages. Each page still reads and sorts the whole directory; name cursors do not provide a snapshot if files change between pages, so refresh may be needed. Android device verification was unavailable because this host has no Android SDK. An iOS Simulator paired and loaded the isolated project, but the fixture had no existing thread in which to open its Files route; the mobile tree path is covered by focused tests rather than device rendering evidence.

Verification

  • Reconciled with current origin/pylon; final-head CI green.
  • Independent adversarial review found a stale root-cache case after pagination; fixed it and added a regression for a changed paginated root.
  • 42 focused server, contract, and web-hook tests; 5 mobile tree tests; 1 websocket RPC seam test; plus the new paginated-root hook regression. Reconciled WorkspaceEntries, contracts, web hook, and mobile hook suites pass.
  • Scoped contracts, t3, web, and mobile typechecks pass; scoped lint has no errors; changed-file diff check clean.
  • Isolated browser: expanding docs/nested loaded guide.md on demand; after creating new.md, Refresh showed it without losing the expanded directory. Before · Expanded and refreshed.

Owning upstream review: #736. Ledger cursor remains unchanged.

Implementation and reconciliation: GPT-6 Codex in Pylon; independent adversarial review: GPT-6 Sol (low) in Pylon.

@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

Deployment failed for project pylon-marketing with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/pylon-code?upgradeToPro=build-rate-limit

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Sep 24, 2026
@rynfar rynfar changed the title Browse workspace folders on demand in existing file viewers feat(files): browse workspace folders on demand Sep 24, 2026
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 14.0 KiB 14.0 KiB +12 B (+0.1%) 15.1 KiB ✅
Codex Thread snapshot wire 7.3 KiB 7.3 KiB +8 B (+0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.7 KiB 6.7 KiB +4 B (+0.1%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 9 9 0 (0.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB +6 B (+0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.2 KiB 7.3 KiB +15 B (+0.2%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.7 KiB −9 B (−0.1%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 1ced84c · PR result: 5269cd0 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.7 KiB
  • Claude decoded thread snapshot: 116.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

…kspace-files-20260924

# Conflicts:
#	apps/web/src/components/files/FileBrowserPanel.tsx
@vercel

vercel Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
pylon-marketing Ignored Ignored Preview Sep 27, 2026 1:01am UTC

@rynfar
rynfar marked this pull request as ready for review September 27, 2026 01:10
@rynfar
rynfar merged commit de02ed1 into pylon Sep 27, 2026
20 checks passed
@rynfar
rynfar deleted the feat/mobile-lazy-workspace-files-20260924 branch September 27, 2026 01:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant