mirror of
https://github.com/hanzoai/app.git
synced 2026-11-01 11:57:40 +00:00
wip/rooms-recents
A right-click on a conversation's row opens its menu at the cursor, and the
row's ⋯ (shown on hover, focus, the open row and while its menu is open, in
the age's place) opens the same items from the keyboard: Pin or Unpin, Rename,
Archive or Unarchive, and Delete, which asks first. Each is PATCH or DELETE on
/v1/agents/chat/conversations/{id} through @hanzo/ai 0.6.23 (hanzoai/agent
v1.0.12), and every list of conversations on the page reads again after one
(thread.tsx useThreadList), so the column, the shell and the header agree.
Pinned conversations list first under Pinned in every view; Chat's Status shows
the Active ones or the Archived ones apart. The header's star and the shell's
Starred band read the server's pin instead, so there is one pin and it follows
the person; the browser's starred-threads set is left alone, unread.
Not @hanzo/ui/product/menu's ContextMenu: its panel portals under gui's
pointer-events: none host and takes no click; gui's ContextMenu does.
Claude-Session: https://claude.ai/code/session_01SCPMGSQsLNF2YtHFL4bwyp
@hanzo/rooms
The Hanzo workspace — Home, Chat, Inbox, Contacts, Meet, Cal, Drive, Board, Work, Bots and the frame that holds them — as one package that every surface imports.
import { configure, Rooms } from '@hanzo/rooms'
import { Room } from '@hanzo/rooms/Room'
import { CalScheduler } from '@hanzo/rooms/CalScheduler'
configure({ site: '', home: '/home', signUp: '/signup' })
<Rooms router={router} search={search} path={pathname} route={route} Link={Link}>
<Room mode="cal"><CalScheduler /></Room>
</Rooms>
configure() names the host's addresses (where its own pages live, the
gateway and IAM, the plan catalogue to paint first). <Rooms> carries what
moves: the router, the query, the path, the route and the link component. The rooms
import nothing from a host, and their look comes from @hanzo/appearance and
@hanzo/design through @hanzo/ui.
Languages
TypeScript
99.8%
JavaScript
0.2%