Skip to content

feat(new-workspace): one row of recent folders with a +N chip on wide screens - #848

Merged
devswha merged 3 commits into
mainfrom
feat/recent-folders-more-chip
Oct 11, 2026
Merged

devswha merged 3 commits into
mainfrom
feat/recent-folders-more-chip

Conversation

@devswha

@devswha devswha commented Oct 11, 2026

Copy link
Copy Markdown
Owner

Why

Follow-up to #844, from the user's review: on a desktop, up to eight recent-folder chips wrapped onto two or three rows. They asked for a tidier layout and picked "one row + a +N chip".

Change

  • New RecentFolderChips (used by NewSessionDialog):
    • phone (≤640px or coarse pointer): unchanged, one row swiped sideways;
    • wider screen: a hidden measuring row gives each chip's width; chipsThatFit keeps as many as fit with room for a +N chip (re-measured on resize and once fonts load). +N opens a RowMenu listing the rest (basename + full path); picking one fills Directory like a chip.
  • RowMenu:
    • variant="paths": wider menu, the path hint shrinks with an ellipsis before the label does;
    • a popover opened from inside an aria-modal surface gets is-over-modal (z-index above --z-modal), so it is no longer drawn behind the dialog.
  • i18n: {n} more recent folders in ko/ja/zh/tr.
  • CHANGELOG: the unreleased fix(new-workspace): leave worktrees and temp folders out of recent folders #844 entry rewritten to describe the final layout.

Tests

  • Unit: chipsThatFit.
  • recent-folders-regression (1440/1920/390 × dark/light): reads what the dialog offers as the visible chips plus the +N menu, in order; asserts a wide screen stays on one row and shows +N with four folders, +N's count matches the list, Escape closes the list and not the dialog, and picks a folder from the menu when its chip is not shown.
  • bun run check fast, ui-regression, deep-link-demo-regression, sidebar-activity-demo-regression pass.
  • Checked by screenshot at 1440px: three chips + +4, the list drawn over the dialog with paths cut before names.

🤖 Generated with Claude Code

… screens

A wider screen wrapped up to eight folder chips over several rows. It
now shows as many as one row holds, measured from the chips' own widths,
and a +N chip whose menu lists the rest with their whole paths; a phone
keeps its swiped row. RowMenu gains a paths variant (a long path gives
way before its label) and draws above the dialog it is opened from.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: devswha/herdr-web-ui/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ec9c8fcc-8ebf-48d1-87e0-aab0d472d2eb

📥 Commits

Reviewing files that changed from the base of the PR and between 718d357 and cd1a078.


📒 Files selected for processing (12)
  • CHANGELOG.md
  • scripts/recent-folders-regression.ts
  • src/components/NewSessionDialog.css
  • src/components/NewSessionDialog.tsx
  • src/components/RecentFolderChips.test.ts
  • src/components/RecentFolderChips.tsx
  • src/components/RowMenu.css
  • src/components/RowMenu.tsx
  • src/lib/i18n.ja.ts
  • src/lib/i18n.ko.ts
  • src/lib/i18n.tr.ts
  • src/lib/i18n.zh.ts

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.



📝 Summary

Summary by CodeRabbit

  • New Features
    • Recent folders appear in a swipeable row on narrow screens and in a row with a “+N” menu on wider screens.
    • Queued messages can be sent automatically, and pane plans are available from the background-task button.
  • Bug Fixes
    • README HTML now renders supported elements; omitted elements stay hidden, and HTML in agent chat messages remains displayed as text.

Walkthrough

The new-workspace dialog now shows recent folders in a responsive row, with an overflow menu on wider screens and horizontal swiping on narrow screens. Regression coverage checks the updated layout and selection behavior. The changelog also records README rendering and pane-plan changes.

Changes

Recent Folder Display

Layer / File(s) Summary
Responsive folder row
src/components/RecentFolderChips.tsx, src/components/NewSessionDialog.css, src/components/RowMenu.tsx, src/components/RowMenu.css
The new component measures available row space and displays fitting folders with a +N menu for the remainder. RowMenu supports path-style items and appears above modal dialogs when opened inside one.
Dialog integration and regression coverage
src/components/NewSessionDialog.tsx, scripts/recent-folders-regression.ts, src/components/RecentFolderChips.test.ts, src/lib/i18n.*.ts, CHANGELOG.md
The dialog uses RecentFolderChips. Regression checks cover menu and chip selection, ordering, pending state, and responsive layout. Tests cover chip fitting, and four translations add the overflow label. The changelog describes the updated folder display.

Other release notes

Layer / File(s) Summary
Changelog updates
CHANGELOG.md
The changelog removes the README rendering fix from the Unreleased section and records the pane-plan change and README HTML-rendering behavior.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: radicor, jiunshinn, infowolfe


Merge Risk: ⚪ Minimal · up to cd1a0

No confirmed issue remains that requires a fix before merge.

Pre-merge checks | Passed 4 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 9 files. (3 skipped: 3… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: displaying recent folders in one row with a +N chip on wide screens.
Description check Passed The description explains the problem, resulting behavior, implementation details, translations, and validation results. It uses a Tests section instead of the template's Validation heading, but it pro…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

Full details: Docstring Coverage

Explanation

Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 9 files. (3 skipped: 3 unsupported.)


  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR


🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devswha and others added 2 commits October 12, 2026 08:07
…chip's focus ring shows whole

Review findings (Codex, pre-merge): the hidden row that measures every
chip was as wide as all of them and scrolled the dialog's body sideways;
it sits in a clipped box the size of the frame now. The chip row clipped
the focus outline of a chip; only chips that fit are drawn, so it clips
nothing. The regression asserts the dialog never scrolls sideways.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@devswha
devswha merged commit 58ee0c6 into main Oct 11, 2026
9 checks passed
@devswha
devswha deleted the feat/recent-folders-more-chip branch October 11, 2026 23:14
devswha added a commit that referenced this pull request Oct 12, 2026
## Change

Release 0.4.8, from main at ca6db6e (20 PRs since v0.4.7: the 0.4.7
mobile walk-through fixes, two contributor PRs and the revived #793).

- `package.json` and `herdr-plugin.toml`: 0.4.8.
- CHANGELOG: `[Unreleased]` becomes `[0.4.8] - 2026-10-12`, with the
compare links. Twelve entries that had no PR link get theirs (#835 #837
#838 #840 #842 #843 #844+#848 #845 #847 #849 #851 #852). A Maintenance
line says the remote-PC runtime is now version 27.
- `release-summaries.json`: 0.4.8 in en/ko/ja/zh/tr (3 new, 6 improved,
8 fixed). The Turkish lines are not checked by a native speaker.
- `REMOTE_BUNDLE_VERSION` 26 -> 27: #836 adds the `pending-hold` server
feature and #787 serves precompressed assets, so `remote-v27` is
published before the app release.

Every PR merged since v0.4.7 is linked in the section: #787 #788 #793
#835 #836 #837 #838 #839 #840 #841 #842 #843 #844 #845 #846 #847 #848
#849 #851 #852.

## Validation

- `bun scripts/release-notes.ts 0.4.8` renders the summaries and the
full changelog (116 lines).
- `bun run check fast`: generated types, typecheck, build and 2800+ unit
tests pass.

## Release

After this merges and its CI on `main` passes: push `remote-v27`, wait
for its release, then run the Release workflow with `0.4.8`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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