Add the agent scaffold, mobile web UI, voice auto-leave, and text notifications

This commit is contained in:
Fisto
2026-09-14 16:38:14 +02:00
parent c7aad7547f
commit eab94132bb
27 changed files with 1521 additions and 73 deletions
+22 -1
View File
@@ -68,7 +68,8 @@ With plain HTTP, `navigator.mediaDevices` only exists on localhost; remote brows
- Console: Tool calls, Events (live SSE), Transcript. The ticker shows the newest event. The
Transcript tab lists captured segments (time, speaker, text, WAV) and updates live.
- Opening a chat fetches the latest 50 messages from Discord into the client cache. The refresh
button by the channel header re-fetches. Live message events read the cache.
button by the channel header re-fetches. Live message events read the cache. Edited messages show
an `edited` marker and replies show `↳ replying to <name>`.
- Attachments render from their Discord CDN links. Images display inline; other files are link
chips. The daemon never downloads or stores attachment bytes.
- Avatars and guild icons load from the Discord CDN with a monogram fallback.
@@ -80,6 +81,26 @@ With plain HTTP, `navigator.mediaDevices` only exists on localhost; remote brows
- Roadmap gaps are shown, not hidden: TTS, transcript, tool-call tracing, favourites, and voice
join/monitor appear as marked placeholders.
## Mobile
At 768px and below the shell becomes the 1c phone layout. One pane shows at a time behind a
four-tab bar (Users, Chat, Call, Activity), with 44px hit targets and the call bar pinned above
the content.
- **Users** is the left rail: guild switcher, channels, voice, and people.
- **Chat** is the centre column: messages, composer, TTS panel.
- **Call** is the live call: the whole right column, with the current call's members listed first
(not only favourites).
- **Activity** is the full agent console (Tool calls, Events, Transcript).
- The Chat tab carries the total DM unread count. The header compresses to one line: scope tabs,
guild picker, health dot and event rate, icon-only Client audio and Settings, and the Takeover
switch.
- The selected tab persists in `localStorage`. Picking a channel from Users switches to Chat;
picking a voice channel switches to Call.
The first draft renders headless at 390x844. Remaining gaps against 1c: the transcript and the TTS
box live in Chat, not Call, and the connection stats are not chips yet.
## DMs and favourites
- The **DM** scope tab shows all cached DMs in the rail and the conversation in the centre.