Commit Graph
16 Commits
Author SHA1 Message Date
DottaandPaperclip ff8c00875d Fix lazy file tree pagination
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:49 +00:00
Dotta 8753d72279 Implement lazy workspace file tree loading 2026-06-09 21:35:49 +00:00
Dotta c5c35e3400 Preserve file viewer sibling browse scope 2026-06-09 21:35:49 +00:00
Dotta 963cbe9a5c Stabilize file viewer folder transitions 2026-06-09 21:35:49 +00:00
DottaandPaperclip a3c82e6a2a Preserve file browser browse state
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:49 +00:00
DottaandPaperclip db0b76e9ee Stabilize file viewer browser pane
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip b130e42d08 Tighten embedded file viewer layout
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip e8bdeadac9 Render file viewer browser as a tree
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip f2b869ecdc Improve file viewer browsing layout
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 3e4dc94d27 Support workspace folder file-browser links
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 1019e011c0 Wire cross-project file refs into viewer UI
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip e8b709e744 Document workspace file resource routes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 64b1f29c6d Complete file resource audit followups
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 63addfa695 Fix file viewer tests after rebase
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 0581aa1256 Rework workspace browser to match PAP-10508 design (PAP-10511)
Addresses UXDesigner review against the approved design spec:

- Placement: move the discovery affordance into a calm action row at the
  bottom of IssueWorkspaceCard ("Browse files…" + "Open file by path…"),
  removing the orphaned button between Artifacts and Tabs. The existing
  top-right toolbar / `g f` entry stays as the secondary affordance.
- Single sheet, two modes: opening a result from browse now shows a
  "← Back to files" affordance (and a separate × close) in the view header,
  with Esc returning to the list. Browse state is URL-backed (`browse=1`,
  `q`) via FileViewerContext (open(...{fromBrowse}), openBrowse, backToFiles).
- Remove the Recent/All toggle: empty query → Recently changed (silent
  fallback to full listing when git change-tracking is unavailable);
  populated query → Files matching. Search field accepts `path:line` and
  Enter opens the highlighted row or the typed path.
- Mobile (<sm) two-line rows (basename / dirname, no timestamp, 44px tap
  targets); desktop single-line with dir-truncate. Recently-changed shows
  relative timestamps; search results omit them to maximise path width.
- Keyboard: listbox/option roles, ↑/↓ + Enter, aria-activedescendant,
  combobox search field.
- Align unavailable copy with describeDenial (remote / cleaned-up);
  debounce 150ms; documented the 100-row cap.
- Stories now render the real FileViewerSheet / IssueWorkspaceCard for
  truthful light+dark, desktop+360px, view-mode, and placement captures.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00
DottaandPaperclip 8569315d74 Add issue-page workspace browse/search UI (PAP-10511)
Adds a discoverable "Browse workspace" control near the issue output/
artifacts area that opens the existing FileViewerSheet. The sheet's empty
state now hosts a WorkspaceFileBrowser: debounced path/name search, a
workspace selector (auto/execution/project) and a recent-changes/all
toggle, backed by the GET /file-resources/list API. Rows show the
workspace label, file kind and size with long-path-safe truncation
(directory truncates, basename stays visible), and clicking a file opens
the viewer via a URL-backed deep link. Distinct calm states cover no
workspace, remote workspace, cleaned-up workspace, and recent-changes
unavailable, plus transport/denied errors.

- WorkspaceFileBrowser component + describeUnavailable reason mapping
- Integrate into FileViewerSheet empty state with manual-path fallback
- "Browse workspace" affordance on the issue page
- Unit tests for list/states/open + Storybook stories for review

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 21:35:48 +00:00