- Agent service (crossbeam channels): TUI never blocks on gRPC I/O.
Chat runs on a background tokio task, events flow back via bounded
crossbeam channel. Designed as a library-friendly internal RPC.
- Virtual viewport: pre-wrap text with textwrap on content/width change,
slice only visible rows for rendering. Paragraph gets no Wrap, no
scroll() — pure O(viewport) per frame.
- Event drain loop: coalesce all queued terminal events before drawing.
Filters MouseEventKind::Moved (crossterm's EnableMouseCapture floods
these via ?1003h any-event tracking). Single redraw per batch.
- Conditional drawing: skip frames when nothing changed (needs_redraw).
- Mouse wheel + PageUp/Down + Home/End scrolling, command history
(Up/Down, persistent to .sunbeam/history), Alt+L debug log overlay.
- Proto: SessionReady now includes history entries + resumed flag.
Session resume loads conversation from Matrix room on reconnect.
- Default model: devstral-small-latest (was devstral-small-2506).
SunbeamClient accessors are now async and resolve auth per-client:
- SSO bearer (get_token) for admin APIs, Matrix, La Suite, OpenSearch
- Gitea PAT (get_gitea_token) for VCS
- None for Prometheus, Loki, S3, LiveKit
Fixes client URLs to match deployed routes: hydra→hydra.{domain},
matrix→messages.{domain}, grafana→metrics.{domain},
prometheus→systemmetrics.{domain}, loki→systemlogs.{domain}.
Removes all ad-hoc token helpers from CLI modules (matrix_with_token,
os_client, people_client, etc). Every dispatch just calls
client.service().await?.
Adds Verb variants: auth, vcs, chat, search, storage, media, mon,
vault, people, docs, meet, drive, mail, cal, find. Each delegates
to the corresponding SDK cli.rs dispatch function.
Removes the legacy `user` command (replaced by `auth identity`).
Renames Get's -o to --kubectl-output to avoid conflict with the
new global -o/--output flag. Enables all SDK features in binary.
Slim binary that depends on sunbeam-sdk for all logic. Replaces 62
crate:: refs with sunbeam_sdk::. Tracing filter updated to include
sunbeam_sdk=info.