feat(sessions): flat search results with optional subsessions - #698
Merged
pascalandr merged 1 commit intoSep 17, 2026
Merged
Conversation
Replace hierarchical search and worktree filtering with flat per-session results. Add a localized Show subsessions switch, disabled by default, so a matching child can appear without an unrelated parent. Each result keeps its own native directory, activity timestamp, worktree badge and selection identity; closing search restores normal browsing hierarchy. Consume native search result identities directly instead of hydrating ancestors just to render a child. Preserve request-authority and deletion fences, and exhaust normal pagination for unqueried flat filters. This supersedes the root-only filter adjustment from 3921ba0. Validated UI typecheck/build, 14 session-tree cases, 65 request-authority cases and a real-component browser regression covering toggle, sorts, combined filters, badges, selection and missing parents. Installed-renderer verification used an existing cross-worktree child and confirmed flat results plus hierarchy restoration without moving sessions. Documented the desktop search wait and retained large-catalogue latency limitation.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/35278869167 Artifacts expire in 7 days.
|
pascalandr
added a commit
that referenced
this pull request
Sep 17, 2026
## Summary Small follow-up to #698: add **Show main sessions** immediately before **Show subsessions**, enabled by default. The two independent controls support main-only, subsession-only, combined and empty results. Controls wrap at narrow widths and labels are translated in all ten locales. Normal browsing retains its hierarchy. ## Validation - UI typecheck passed. - 14 session-tree cases passed. - Existing real-component browser regression extended and passed: defaults, control order, all four combinations, existing filters/sorts/selection and restoring hierarchy with main results disabled. - git diff --check passed. Maintenance note: existing packages/ui/src/components/session-list.tsx is approximately 1040 lines; no size-only refactor included.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to merged #649. Search/filter mode now displays independent, flat session results. A localized Show subsessions switch (off by default) includes matching children without requiring their parents. Each result uses its own native worktree, activity timestamp, name, badge and selection identity. Closing search restores normal hierarchy.
Native search results no longer hydrate ancestors just to render a child. Request-authority/deletion fences remain covered, and unqueried flat filters exhaust normal pagination. This supersedes the temporary root-only filter adjustment published on the former PR branch after #649 merged.
Validation
Maintenance note
Existing touched oversized files: session-list.tsx (~1022 lines), session-api.ts (~1732), session-state.ts (~1307), session-request-authority.test.ts (~2016). No size-only refactor included.