tulsi 027aa3f7f2 feat: sidebar polish — resize, ordering, button visibility (#111)
* feat: resizable sidebar with snap-to-collapse

Add drag handle between sidebar and main content for free resizing.
Sidebar snaps to collapsed below 100px threshold, min width 180px,
max 380px. Double-click handle resets to default 240px.

Also: bump session title limit from 40 to 100 chars so titles aren't
pre-truncated in storage, position chat row menu button absolutely
to reclaim horizontal space for titles, and hide the sliding highlight
when sidebar is collapsed.

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

* fix: only bump chat updatedAt when messages are sent

Remove unconditional updatedAt bump from updateSession so metadata
changes (provider, persona, model) don't reorder the sidebar list.
Explicitly pass updatedAt in the message-sending paths instead.

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

* fix: swap visibility of section header vs project row action buttons

Make New Project and New Chat section header buttons always visible
(muted) so users discover them without hover. Make per-project "+"
buttons hover-only to reduce visual noise.

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

* fix: use opacity instead of visibility for project + button

Replace invisible/visible with opacity-0/opacity-100 so E2E tests
can still interact with the button via getByTitle while keeping the
hover-only visual behavior.

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

* fix: address code review — timestamp divergence and resize cleanup

Backend: only bump updated_at when title changes, not on metadata-only
patches (provider, persona, model), preventing local/server timestamp
divergence that caused sidebar reordering after app restart.

Frontend: add window blur listener as fallback cleanup for sidebar
resize, preventing stuck cursor/userSelect if mouseup fires outside
the window.

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

* fix: update sidebar button visibility per feedback

Per morganm's feedback: keep per-project + buttons always visible
since new-chat-in-project is the most common CTA. Switch Recents
new chat icon to IconPlus for consistency. Revert New Project button
to hover-only to reduce confusion with new chat actions.

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-06 16:44:26 -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%