Skip to content

feat(projects): organize decks with folders and library search - #107

Merged
Go2Engle merged 1 commit into
mainfrom
feature/project-explorer-folders
Oct 11, 2026
Merged

Go2Engle merged 1 commit into
mainfrom
feature/project-explorer-folders

Conversation

@Go2Engle

Copy link
Copy Markdown
Owner

Summary

Make growing project libraries easier to browse and organize with nested folders, breadcrumbs, library-wide search, and sorting. Users can move decks into folders by dragging or using the destination dropdown, create a destination as they move, and delete completely empty folders.

Dragging keeps mouse-wheel scrolling available and gently scrolls the list when a deck is held near its top or bottom, making offscreen folders reachable. Decks and folders have distinct icons, the library icon is centered, and search has one clear button and one focus outline.

Type of change

  • Feature
  • Bug fix
  • Refactor
  • Documentation
  • Infrastructure/CI

Technical details

  • Discover nested library folders up to eight levels while keeping saved projects and their artwork together. Validate paths and ancestors, reject symlinks and project interiors, and preserve folder structure during library import.
  • Create folders and move complete project directories through the desktop bridge. Allocate unique destinations for naming collisions and update the active project's save location after a move.
  • Delete only physically empty folders with a nonrecursive removal, including checks for hidden files and active save reservations. Expose deletion in folder rows and beside Back to library in the empty-folder view.
  • Add folder breadcrumbs, Show current, All projects, library-wide search, three sort options, and an inline New folder… destination flow with retry support.
  • Use mouse pointer capture for dragging so Chromium continues delivering wheel input. Add stationary edge scrolling, responsive scroll-container selection, drop highlighting, a drag preview, and cleanup on release, Escape, cancellation, or focus loss. Keep Move to folder available for keyboard and touch use.
  • Update the README feature summary, features and installation guides, and explorer screenshots.

Testing performed

npm test
npm run build
npm ci --prefix site
npm test --prefix site
npm run build --prefix site -- --offline
git diff --check
  • All 204 application tests and 17 website tests pass; application and offline website builds pass.
  • Filesystem tests cover nested saves, folder creation and deletion, naming collisions, artwork preservation, imports, invalid paths, symlinks, and nonempty folders.
  • Drag tests cover wheel units, slow and stationary edge scrolling, narrow layouts, delayed animation frames, valid destinations, cancellation, capture loss, focus loss, and ordinary row controls.
  • Browser preview checks use real mouse and wheel gestures with a mocked desktop bridge: scroll to an initially offscreen folder and drop, stop away from the edges, scroll a narrow window, cancel with Escape while keeping the explorer open, and clean up after a failed move. Also verify dropdown folder creation, empty-folder deletion, distinct icons, and the search clear/focus behavior.

Breaking changes

None. Existing projects in the library root remain supported. Already saved projects retain their location until explicitly moved.

Checklist

  • The PR title follows Conventional Commits.
  • I ran npm test and npm run build.
  • I added or updated tests for behavior changes.
  • I updated documentation for user-facing changes.
  • I updated the README feature summary.
  • I did not manually edit release versions or CHANGELOG.md.

@Go2Engle
Go2Engle merged commit cbcfec9 into main Oct 11, 2026
7 checks passed
@Go2Engle
Go2Engle deleted the feature/project-explorer-folders branch October 11, 2026 00:51
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