Skip to content

All boards view, bug fixes, multi-board folder detection#40

Open
e-kotov wants to merge 21 commits intocdevroe:mainfrom
e-kotov:feature/unified-view
Open

All boards view, bug fixes, multi-board folder detection#40
e-kotov wants to merge 21 commits intocdevroe:mainfrom
e-kotov:feature/unified-view

Conversation

@e-kotov
Copy link
Copy Markdown

@e-kotov e-kotov commented Apr 9, 2026

This PR adds:

  • new all boards view that allows to view and manage tasks between all active boards in one view. See video.

  • fixes bugs where dragging items between lists sometimes got stuck and resulted in ghost items in between lists

  • adds ability to open a folder of boards. See video

Recording.2026-04-09_17-59-14.mp4

e-kotov added 21 commits April 9, 2026 12:29
- Add 'All Boards' tab when 2+ boards are open
- Aggregate cards and lists from all open boards in Kanban, Calendar, and Week views
- Merge labels across boards for consistent filtering
- Relax permissions to allow cross-board card moves
- Styling for unified view elements
- Disable board-specific settings/archive in unified view
- Show board name on Kanban cards in unified mode
- Add board name badges to temporal cards (calendar/week) in unified mode
- Styling for board indicators
- Do not automatically prepend 'All Boards' tab when multiple boards are open.
- Add an 'All Boards' button next to the 'Add Board' button.
- Treat '__unified__' as a regular tab in 'openBoards' state to fix the Sortable drag duplication bug and allow native tab closure.
- Filter out the '__unified__' path globally when doing file system operations over 'openBoards'.
…rectly

- Fix ReferenceError: sender is not defined in moveCard/moveList IPC handlers
- Update authorizeTrustedBoardRootForSender to handle '__unified__' path
- Derive real board root in recordCardListMove IPC handler when in Unified view
- Clean up unnecessary awaits in createListElement.js
- Preserve card's original board when dragging between lists in Unified view
- Implement 'drag card to board tab' to move cards between boards
- Visual feedback for tab drop targets
- Reordering in Unified view only affects cards from the same board
- Use elementFromPoint hit-testing in onEnd to detect drops on tabs (fixes issue where native drop event didn't fire due to Sortable's forceFallback)
- Use mouseover/mouseout for tab highlighting during card drag
- Ensure drop-target highlight is cleared on drag end
- Remove pointer-events: none from tab buttons (restores clicking tabs)
- Add pointer-events: none to drag ghost element (fixes hit-testing tabs underneath)
- Improve coordinate detection for elementFromPoint hit-test
- Use resolved targetListPath for reordering in Unified view (fixes cards jumping to leftmost board)
- Hide/remove card immediately when dropping on a tab to prevent 'stuck' visual state
- Switch to target board after dropping card on its tab
- Add safety checks for card paths in reordering loop
- Use hover class tracking (.board-tab--drop-target) for drop detection instead of elementFromPoint
- Ensure tab icons and buttons don't block tab switching clicks
- Fix visual stuck card when dragging between boards
- Use global mousemove listener for reliable tab highlighting during drag
- Ensure board preservation in Unified view by resolving or creating lists on card's original board
- Fixed visual 'stuck' card when moving between boards
- Removed duplicated code in createListElement.js
- Fixed reordering bug in Unified view that skipped the moved card
- Improved drag-to-tab reliability using global state tracking (__activeBoardDropTarget)
- Ensure drop target state is fully cleared on drag end
- Add auto-list creation if dragging to a column that doesn't exist on the card's board
- Fix double-hyphen filename bug during reordering
- Implement reliable tab drop detection using window.__activeBoardDropTarget
- Add extensive safety checks for null/missing event data in onEnd
- Ensure dropping a card on its own board tab works as a navigation shortcut
…oves

- Fix race condition where drag state (__activeBoardDropTarget) was cleared before async move handler could read it.
- Update createBoardCardSortableOptions to correctly handle and await async onEnd handlers.
- Support cross-device board moves in main.js by falling back to copy+unlink if rename fails with EXDEV.
- Ensure board tab highlight persists during drag to prevent race conditions during drop
- Add pointer-events: none to all Sortable helper classes to prevent hit-test interference
- Use dual detection (variable + CSS class) for reliable tab drop identification
- Fixed filename re-indexing logic to preserve correct board structure
- Use mouseenter/mouseleave with pointer-events protection for tab drops
- Add try/catch hardening around all IPC file operations in onEnd
- Disable recordCardListMove for cross-board moves to avoid path validation errors
- Improve list resolution and reordering logic in Unified view
- Use getBoundingClientRect manual hit-testing in onEnd for 100% reliable tab drop detection
- Handle __unified__ path in main.js board root validation
- Add try/catch blocks to prevent UI hangs on IPC failures
- Robust filename re-indexing logic to prevent path corruption
- Clean up redundant listeners and improve visual feedback
@cdevroe
Copy link
Copy Markdown
Owner

cdevroe commented Apr 9, 2026

@e-kotov This is excellent! I will take a close look at this. I'm anxious to see how Calendar and This Week views (and the Archive modal) work within the "All Boards" tab. Also the Board Settings.

@e-kotov
Copy link
Copy Markdown
Author

e-kotov commented Apr 9, 2026

I'm anxious to see how Calendar and This Week views (and the Archive modal)

Tbh, I have not tested these extensively, but they seem to work.

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.

2 participants