zz_

f1f62250 ยท zzmq.dev@gmail.com/zz

Commit

f1f62250e3e45bb39640abfc69a97b8e50a749ff

zz top: login/logout hotkey + identity indicator; scroll position indicators; consistent enter/claim Four pieces of direct feedback: 1. zz top now shows [you@example.com] or [anon] flush right in the header, with "l" toggling login/logout -- login opens the same OAuth flow `zz login` uses (cli/commands/login.ts now takes `quiet: true` and returns the username, so it doesn't print into the alt-screen buffer and the TUI can show it). TabView.tsx gained a generic `headerRight` slot for this (deliberately generic -- WorkApp uses TabView too and has no identity concept to show). Gated on !exploreEditing so typing "l" into Explore's search box never triggers it. Verified live end to end, including that the hotkey performs a real credential change (confirmed the actual ~/.zz/credentials.json file), not just a display toggle. 2. Scroll position was invisible: a single arrow-key scroll moved the window by exactly one line, correctly, but with nothing to confirm it -- adjacent blank/similar lines made it look like scrolling was doing nothing. Every scrollable frame (AssistApp's chat view and detail view, TabView's own LiveLog) now shows an always-visible "showing X-Y of Z" indicator, not just once you've scrolled back -- LaneList/LadderView already had this convention, LiveLog and AssistApp's two views now match it. 3. The picker's enter key sometimes viewed a detail screen and sometimes claimed outright, depending on which screen you were already on -- confusing. Enter now means exactly one thing everywhere in that flow (view detail); "c" is the only way to claim, from the detail view only. 4. Native mouse click-and-drag selection and mouse-wheel-scroll-to- the-app both need the same terminal mouse-reporting mode enabled, so only one can be the default without a modifier key -- user chose to keep wheel scroll. Added an explicit "option/shift-drag: copy" hint to the footer in both AssistApp and TabView (previously undocumented, so easy to miss); ctrl+y remains the guaranteed keyboard alternative either way. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q8tksS4bucUkJguqksSVYR

Troy Howard <thoward37@gmail.com> -- 2026-10-13T18:55:20.000Z

Tree at this commit