Commit Graph

34 Commits

Author SHA1 Message Date
Peter Steinberger
49d24d5b5a fix: config/debug UI overflow (#1715)
Thanks @saipreetham589.

Co-authored-by: SaiPreetham <saipreetham.pesu@gmail.com>
2026-01-25 13:20:59 +00:00
David Gelberg
b96b4fef67 UI: refresh dashboard design system (#1786)
* UI: refresh dashboard design system

- Typography: swap Inter for Space Grotesk (geometric, techy)
- Colors: punchier accent red, add teal secondary, warmer darks
- Cards: better shadows, hover lift effect, increased padding
- Stats: uppercase labels, larger bold values
- Buttons: hover lift micro-interaction, glow on primary
- Status dots: glow effects and subtle pulse animation
- Callouts: gradient backgrounds for depth
- Navigation: active state accent bar indicator
- Layout: more breathing room, bolder page titles

* UI: remove nav active bar indicator

* UI: hide nav scrollbar, remove nav border

* fix: add changelog entry for dashboard refresh (#1786) (thanks @mousberg)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-25 12:29:25 +00:00
Nicolas Zullo
f91e49542d UI: refresh design system with new color palette and icons (#1745)
- Replace orange accent (#f59f4a) with signature red (#ff4d4d)
- Switch from IBM Plex/Unbounded/Work Sans to Inter/JetBrains Mono
- Replace emoji icons with Lucide-style SVG icons throughout
- Add comprehensive CSS design tokens (colors, borders, semantic states)
- Update tool-display.json to use icon names instead of emoji
- Rebuild control-ui dist bundle
2026-01-25 10:04:50 +00:00
Dave Lauer
0c045bf135 feat(compaction): add adaptive chunk sizing, progressive fallback, and UI indicator (#1466)
* fix(ui): allow relative URLs in avatar validation

The isAvatarUrl check only accepted http://, https://, or data: URLs,
but the /avatar/{agentId} endpoint returns relative paths like /avatar/main.
This caused local file avatars to display as text instead of images.

Fixes avatar display for locally configured avatar files.

* fix(gateway): resolve local avatars to URL in HTML injection and RPC

The frontend fix alone wasn't enough because:
1. serveIndexHtml() was injecting the raw avatar filename into HTML
2. agent.identity.get RPC was returning raw filename, overwriting the
   HTML-injected value

Now both paths resolve local file avatars (*.png, *.jpg, etc.) to the
/avatar/{agentId} endpoint URL.

* feat(compaction): add adaptive chunk sizing and progressive fallback

- Add computeAdaptiveChunkRatio() to reduce chunk size for large messages
- Add isOversizedForSummary() to detect messages too large to summarize
- Add summarizeWithFallback() with progressive fallback:
  - Tries full summarization first
  - Falls back to partial summarization excluding oversized messages
  - Notes oversized messages in the summary output
- Add SAFETY_MARGIN (1.2x) buffer for token estimation inaccuracy
- Reduce MIN_CHUNK_RATIO to 0.15 for very large messages

This prevents compaction failures when conversations contain
unusually large tool outputs or responses that exceed the
summarization model's context window.

* feat(ui): add compaction indicator and improve event error handling

Compaction indicator:
- Add CompactionStatus type and handleCompactionEvent() in app-tool-stream.ts
- Show '🧹 Compacting context...' toast while active (with pulse animation)
- Show '🧹 Context compacted' briefly after completion
- Auto-clear toast after 5 seconds
- Add CSS styles for .callout.info, .callout.success, .compaction-indicator

Error handling improvements:
- Wrap onEvent callback in try/catch in gateway.ts to prevent errors
  from breaking the WebSocket message handler
- Wrap handleGatewayEvent in try/catch with console.error logging
  to isolate errors and make them visible in devtools

These changes address UI freezes during heavy agent activity by:
1. Showing users when compaction is happening
2. Preventing uncaught errors from silently breaking the event loop

* fix(control-ui): add agentId to DEFAULT_ASSISTANT_IDENTITY

TypeScript inferred the union type without agentId when falling back to
DEFAULT_ASSISTANT_IDENTITY, causing build errors at control-ui.ts:222-223.
2026-01-23 06:32:30 +00:00
Peter Steinberger
afaea67c36 fix: align chat composer 2026-01-21 07:48:00 +00:00
Peter Steinberger
6a7d2e77b1 feat: route exec approvals via gateway 2026-01-20 13:04:19 +00:00
Tyler Yust
bced00a990 feat: enhance BlueBubbles message actions with support for message editing, reply metadata, and improved effect handling 2026-01-20 12:07:54 +00:00
Peter Steinberger
8ffdb8c9f4 feat(ui): delete sessions from Control UI 2026-01-16 22:33:47 +00:00
Peter Steinberger
6a1c4c57ae fix: sync cron run history selection in control ui 2026-01-15 08:38:21 +00:00
Peter Steinberger
585e9a19d0 style: polish multi-account cards 2026-01-13 02:05:00 +00:00
rahthakor
053199101f test(ui): add tests for chat modules and update for icon refactor
- Add 21 tests for message-normalizer.ts (normalizeMessage, normalizeRoleForGrouping, isToolResultMessage)
- Add 17 tests for tool-helpers.ts (formatToolOutputForSidebar, getTruncatedPreview)
- Update navigation.test.ts to test iconClassForTab instead of deprecated iconForTab
- Skip focus-mode.browser.test.ts (toggle button moved to settings)
- Skip chat-markdown.browser.test.ts (tool card rendering refactored to sidebar)
- Skip bash-tools.test.ts line offset tests (shell env pollution issue)
2026-01-09 19:47:19 +01:00
Daniel Griesser
174aa1ce96 feat(ui): link sessions to chat page
- Session names in the Sessions table are now clickable links
- Clicking navigates to /chat?session=<key> with that session loaded
- Global sessions excluded (not real conversations)
- Added .session-link CSS styling (accent color, underline on hover)
- Chat page reads 'session' query param and cleans URL after applying
2026-01-09 04:05:33 +01:00
Peter Steinberger
93dd78e7fb feat(webchat): queue outgoing messages 2026-01-09 01:30:38 +01:00
Peter Steinberger
ea32001a9d chore: refine control ui links and composer 2026-01-08 12:04:11 +01:00
Peter Steinberger
9fe45ffadf perf(ui): window chat + lazy tool output 2026-01-08 04:33:09 +00:00
Peter Steinberger
01611688f5 feat: add gateway logs tab 2026-01-08 03:44:08 +00:00
Peter Steinberger
94d012617e fix(ui): tighten focus mode spacing 2026-01-06 19:10:06 +00:00
Peter Steinberger
2560bd9d76 fix(control-ui): pad chat composer in focus mode 2026-01-06 08:59:05 +01:00
Peter Steinberger
bb998b2e5a feat(control-ui): add chat focus mode 2026-01-06 08:16:21 +01:00
Peter Steinberger
2ec552fa5d fix(ui): animate reading indicator dots 2026-01-05 17:40:15 +00:00
Peter Steinberger
c717d894ee feat(ui): add chat reading indicator 2026-01-05 16:16:34 +00:00
Peter Steinberger
263fc80975 fix(ui): avoid overlapping guild action buttons 2026-01-05 01:27:13 +01:00
Peter Steinberger
b90e1c0748 fix: make control ui chat scroll page 2026-01-05 00:18:18 +00:00
Peter Steinberger
d81ff928f3 fix(ui): render markdown in chat 2026-01-04 21:51:26 +01:00
Peter Steinberger
38b755935c feat: centralize tool display metadata 2026-01-03 13:18:27 +01:00
Shadow
cdd30c4c3e Discord: update UIs to use the new config 2026-01-03 01:02:22 -06:00
Peter Steinberger
16ba7715e6 style(ui): refresh dashboard theme 2026-01-02 11:22:06 +00:00
Peter Steinberger
3266ad6211 fix: refine web chat session selector 2026-01-02 10:40:24 +01:00
Peter Steinberger
2224e3268b fix: improve web chat scroll and text 2026-01-01 21:09:28 +01:00
Peter Steinberger
870fea4f6d fix: gate web chat/talk on mobile nodes 2025-12-30 22:05:17 +01:00
Peter Steinberger
225b1e72ff feat: add ui theme toggle 2025-12-30 20:25:58 +01:00
Peter Steinberger
a1f102c480 style: tighten chat compose spacing 2025-12-22 19:01:58 +01:00
Peter Steinberger
eebf6e23cb fix(ui): stabilize skills action column 2025-12-21 00:37:29 +00:00
Peter Steinberger
de7265e842 feat(ui): expand control dashboard 2025-12-21 00:34:39 +00:00