Skip to content

In-project folder browser (FolderTile + breadcrumb, #58/#49)#168

Merged
appergb merged 1 commit into
mainfrom
feat/folder-browse
Jun 28, 2026
Merged

In-project folder browser (FolderTile + breadcrumb, #58/#49)#168
appergb merged 1 commit into
mainfrom
feat/folder-browse

Conversation

@appergb

@appergb appergb commented Jun 28, 2026

Copy link
Copy Markdown
Owner

CapCut-style folder navigation in the media panel: child folders as FolderTiles (double-click to enter), breadcrumb + up-one-level, grid filtered by current folder. Backend import_folder already mirrors the tree. Frontend-only; new folderTree/mediaStore tests; web 189/189.

robot Generated with Claude Code

Issue #58/#49. The backend already mirrors a directory tree on
import_folder(recursive) and returns folders + folderId per item; this
wires the frontend to browse it.

- mediaStore: keep the folder tree (was dropping list.folders); refresh
  now loads items + folders.
- MediaPanel: per-level folder navigation driven by the existing
  uiStore.mediaPanelCurrentFolderId cursor. Renders child folders as
  FolderTile (lucide Folder, double-click / Enter to enter) above the
  file cards, a clickable breadcrumb (All / sub… / current) with an
  up-one-level chevron, and a wired search box that matches names
  library-wide. Folder nav applies to the Import view; favorites stays
  flat. Switching main tab or subtab resets the cursor to root.
- folderTree.ts: extracted pure helpers (childFolders / folderTrail /
  normalizeFolderId) with cycle + dangling-parent guards.
- i18n: folder breadcrumb / back / empty strings (zh + en).

MediaCard drag/ghost (onDragStart/setDraggingMedia) left untouched.

Tests: folderTree.test.ts (tree traversal + corrupt-data robustness) and
mediaStore.test.ts (items+folders round-trip). pnpm build + pnpm test
green (26 files, 189 tests).
@appergb appergb merged commit c47b9a0 into main Jun 28, 2026
2 checks passed
@appergb appergb deleted the feat/folder-browse branch June 28, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant