tulsi 00b167be07 add session history, search, and smart naming (#113)
* docs: add session management design spec

Covers three features: Session History view, search-as-you-type,
and smart session naming. Defers import/export, fork, and
multi-window.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add session management implementation plan

12-task plan covering smart naming, session history view,
and sidebar search. TDD approach with exact file paths and code.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add userSetName field to session model

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add useSessionAutoTitle hook for AI session naming

Watches for the streaming → idle transition when messageCount === 2 to
auto-generate a session title via the backend LLM. Falls back to the
first 50 characters of the user's message on API failure. Skips sessions
where the user has manually set a title (userSetName).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: wire auto-title hook into ChatView

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add groupSessionsByDate utility

Groups chat sessions into date-labeled buckets (Today, Yesterday, or
formatted date) sorted newest-first within each group. Uses UTC-based
day boundaries for consistent behavior across timezones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add filterSessions utility for search-as-you-type

Case-insensitive text filter that matches against session title,
resolved persona name, resolved project name, and formatted date.
Accepts resolver functions to decouple from store dependencies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add SessionCard component

Presentational card component for displaying session metadata (title,
relative date, message count, persona, project with color dot, working
directory, and archived state). Includes 5 passing tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add SessionHistoryView page component

Full-page session history view with date-grouped cards, search
filtering, archived session loading, and empty states. Composes
SessionCard, SearchBar, groupSessionsByDate, and filterSessions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add Session History route and sidebar nav item

Add "session-history" to AppView type, render SessionHistoryView in
AppShell, and add Session History nav item with History icon to
the sidebar navigation. Bump AppShell file-size limit to 575.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add search-as-you-type to sidebar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: prevent infinite re-render in SessionHistoryView

Zustand selector returning .filter() created a new array reference
on every render, causing React useSyncExternalStore to loop.
Memoize the filtered result instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add card actions and separate archived sessions view

- SessionCard now has dropdown menu with Rename/Archive (or Restore
  for archived sessions), inline title editing on rename
- Archived sessions moved behind an "Archived" toggle button instead
  of being mixed in with active sessions
- SessionHistoryView wired to AppShell's rename and archive handlers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use consistent ghost variant for archived toggle button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use normal font weight on archived toggle button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add ghost-light button variant with normal font weight

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add right padding to session card title to clear menu button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: remove spec and plan docs from PR

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:47:51 -07:00
S
Description
No description provided
Apache-2.0 1.5 GiB
Languages
Rust 63.6%
TypeScript 29.6%
JavaScript 1.7%
Shell 1.6%
Python 1.5%
Other 1.8%