Skip to content

feat(move-picker): hover-scroll truncated folder path labels - #411

Merged
maathimself merged 2 commits into
maathimself:mainfrom
Monkey7539:feat/move-picker-hover-scroll
Sep 16, 2026
Merged

maathimself merged 2 commits into
maathimself:mainfrom
Monkey7539:feat/move-picker-hover-scroll

Conversation

@Monkey7539

@Monkey7539 Monkey7539 commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

Optional follow-up to the ancestor-path labels from #402: a deep path like Ice Rentals / Groups / Beacon Hill can still truncate in a 320px picker, leaving no way to read the clipped part. On hover, a label that overflows slides left marquee-style to reveal the remainder, then snaps back on leave. Labels that fit are completely unaffected, and there is no motion on touch devices (no hover).

Rebased onto main now that the labels PR has landed (0f47f06), so this is a single commit that only touches FolderPathLabel.jsx. Still deliberately separate so it can be dropped if the motion isn't wanted.

Changes

  • FolderPathLabel gains hover measurement: while hovered the segments stop flex-shrinking (natural width) so the true overflow can be measured, then the content translates left by exactly the clipped amount. The reveal pace scales with distance (~80px/s, min 0.4s) and a 0.3s delay keeps quick mouse passes over the list from triggering slides.
  • Pure CSS transform animation; no timers or rAF loops. State resets on mouse leave with a short ease-out.

Testing

  • Running in production on my instance: deep three-level paths reveal fully on hover in the context menu, message pane picker, and bulk-move picker; short labels show no motion; sweeping the cursor down the folder list triggers nothing.
  • On the rebased branch: npm run lint clean, npm run build succeeds, full frontend suite passes (1913/1913), and npm audit --omit=dev --audit-level=high passes.

Contributor License Agreement

By submitting this pull request I confirm that:

  • I have read and agree to the Contributor License Agreement.
  • My contribution is my own original work (or I have identified any
    third-party material and confirmed it is compatible with the CLA).
  • I have the right to submit this contribution under the terms of the CLA.

🤖 Generated with Claude Code

@Monkey7539
Monkey7539 force-pushed the feat/move-picker-hover-scroll branch from 19c4aba to 1f4840b Compare September 14, 2026 03:00
Monkey7539 added a commit to Monkey7539/mailflow that referenced this pull request Sep 14, 2026
Brings in v3.4.0/v3.4.1 and the upstream landings of our PRs (maathimself#410,
maathimself#414, maathimself#419, maathimself#420, maathimself#421, maathimself#422, maathimself#425, maathimself#426). Where dev carried pre-review
copies of those fixes, the merged tree now takes upstream's version:
folderDisplay.js and its tests (shared delimiter primitives, dot and
cross-delimiter cases) and the subfolder-create input comment in
Sidebar.jsx.

Kept fork-only work on top: calendar-only invite rendering, the
attachment-only body fix (still open upstream as maathimself#430), hover-scroll
path labels (maathimself#411), the folder-scoped search banner, and the sender
trust strip with attachment risk badges. Removed a duplicate
folderMatchesQuery/FolderPathLabel import that both sides added to
MessagePane.jsx.

Conflicts:
	backend/src/services/imapManager.js
	backend/src/services/imapManager.test.js
	backend/src/services/messageParser.js
	frontend/src/components/FolderPathLabel.jsx
	frontend/src/components/Sidebar.jsx
	frontend/src/locales/*.json
	frontend/src/utils/folderDisplay.js
	frontend/src/utils/folderDisplay.test.js

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Long parent/child labels ellipsize in the pickers with no way to read
the remainder. On hover, when the label overflows, stop shrinking the
segments and slide the text left marquee-style to reveal the clipped
part (pace scales with distance, short delay filters quick passes),
snapping back on leave. Applies to all pickers via FolderPathLabel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@maathimself maathimself left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@maathimself
maathimself merged commit a0412ce into maathimself:main Sep 16, 2026
2 checks passed
@Monkey7539
Monkey7539 deleted the feat/move-picker-hover-scroll branch September 16, 2026 19:46
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