Commit Graph

95 Commits

Author SHA1 Message Date
Peter Steinberger
d56559a063 refactor(ui): split chat renderers and styles 2026-01-09 20:20:06 +01:00
Peter Steinberger
f3f5c70db6 fix(ui): landing cleanup (#475) (thanks @rahthakor) 2026-01-09 19:53:32 +01: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
Peter Steinberger
ec936f1fe6 refactor(ui): split mobile layout css 2026-01-09 16:49:02 +01:00
Kit
761acc5b7a feat(ui): improve mobile responsiveness
- Add @media (max-width: 600px) breakpoint for mobile-specific styles
- Compact header: smaller title, hidden subtitle, minimal status pill
- Horizontal scrollable nav: all items in one row, swipeable
- Hide redundant page titles on mobile
- Hide docs button on mobile (saves space)
- Smaller theme toggle icons
- Tighter spacing on cards, stats, forms
- Better chat layout: full-width session selector, compact compose
- Single-column log entries on small screens

Desktop layout remains unchanged.

Co-authored-by: Carl Ulsoe <34673973+carlulsoe@users.noreply.github.com>
2026-01-09 16:32:55 +01:00
Peter Steinberger
e8edc4c9ca Merge pull request #569 from bjesuiter/ui-build-default-to-relative-path
fix(ui): default to relative paths for control UI assets
2026-01-09 14:47:46 +00:00
Benjamin Jesuiter
6d73ffa229 fix(ui): default to relative paths for control UI assets
Changes the default base path from "/" to "./" so the control UI works
correctly when served under a custom basePath (e.g., /jbclawd/).

Previously, assets were referenced with absolute paths like /assets/...,
which failed when the UI was served under a subpath. With relative paths
(./assets/...), the browser resolves them relative to the HTML location,
making the UI work regardless of the configured basePath.
2026-01-09 15:32:55 +01:00
Azade
3d40e40589 feat(sessions): expose label in sessions.list and support label lookup in sessions_send
- Add `label` field to session entries and expose it in `sessions.list`
- Display label column in the web UI sessions table
- Support `label` parameter in `sessions_send` for lookup by label instead of sessionKey

- `sessions.patch`: Accept and store `label` field
- `sessions.list`: Return `label` in session entries
- `sessions_spawn`: Pass label through to registry and announce flow
- `sessions_send`: Accept optional `label` param, lookup session by label if sessionKey not provided
- `agent` method: Accept `label` and `spawnedBy` params (stored in session entry)

- Add `label` column to sessions table in web UI

- Changed session store writes to merge with existing entry (`{ ...existing, ...new }`)
  to preserve fields like `label` that might be set separately

We attempted to implement label persistence "properly" by passing the label
through the `agent` call and storing it during session initialization. However,
the auto-reply flow has multiple write points that overwrite the session entry,
and making all of them merge-aware proved unreliable.

The working solution patches the label in the `finally` block of
`runSubagentAnnounceFlow`, after all other session writes complete.
This is a workaround but robust - the patch happens at the very end,
just before potential cleanup.

A future refactor could make session writes consistently merge-based,
which would allow the cleaner approach of setting label at spawn time.

```typescript
// Spawn with label
sessions_spawn({ task: "...", label: "my-worker" })

// Later, find by label
sessions_send({ label: "my-worker", message: "continue..." })

// Or use sessions_list to see labels
sessions_list() // includes label field in response
```
2026-01-09 15:32:49 +01:00
Josh Palmer
9d56b06c98 Adjust UI install for offline pnpm fetch (#568)
* 🤖 codex: make ui build install prod deps for offline pnpm (issue-pnpm-offline)

* 🤖 codex: ensure ui:test installs dev deps (issue-pnpm-offline)
2026-01-09 13:38:46 +01:00
Peter Steinberger
3893707e9c fix: normalize <think> reasoning blocks 2026-01-09 08:30:05 +00:00
Peter Steinberger
e084989795 fix: strip thinking tags in chat UI 2026-01-09 05:24:11 +00:00
Peter Steinberger
4190637974 feat(ui): link sessions to chat page (#471) — thanks @HazAT 2026-01-09 04:07:56 +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
Yurii Chukhlib
72db473ac1 feat(webchat): change Enter key to send message
Changes webchat textarea behavior:
- Enter key now sends message (was Cmd/Ctrl+Enter)
- Shift+Enter allows line breaks
- Updated placeholder text to reflect new behavior

Fixes #411

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 01:30:37 +01:00
Peter Steinberger
afcb6536ee refactor: normalize skills UI status keys 2026-01-08 20:13:24 +00:00
Marc Terns
8f7ba3d349 UI: improve skill install feedback 2026-01-08 20:01:38 +00:00
Peter Steinberger
ea32001a9d chore: refine control ui links and composer 2026-01-08 12:04:11 +01:00
Peter Steinberger
d7fe21a681 fix(ui): start logs at bottom 2026-01-08 11:42:28 +01:00
Peter Steinberger
3e55ab37ce chore(deps): update dependencies 2026-01-08 04:55:14 +00:00
Peter Steinberger
9fe45ffadf perf(ui): window chat + lazy tool output 2026-01-08 04:33:09 +00:00
Peter Steinberger
872b3d152d fix(ui): cap tool output + sync config form 2026-01-08 04:24:58 +00:00
Peter Steinberger
01611688f5 feat: add gateway logs tab 2026-01-08 03:44:08 +00:00
Peter Steinberger
0e6780bbc5 fix(ui): move focus toggle to top bar 2026-01-08 03:47:32 +01:00
Peter Steinberger
3e56b70b6c fix(ui): add Overview connect button (#385, thanks @wizaj) 2026-01-08 01:12:56 +00:00
Peter Steinberger
e7cac22aef feat: add gateway config/update restart flow 2026-01-08 01:30:02 +01:00
Peter Steinberger
672c760713 fix(ui): scrub auth params 2026-01-07 20:20:32 +01:00
Palash Oswal
2c11ba9abf UI: add reconnect + URL password for gateway auth 2026-01-07 20:18:24 +01:00
Peter Steinberger
f6180e2111 feat: add /reasoning reasoning visibility 2026-01-07 06:17:31 +01:00
Peter Steinberger
94d012617e fix(ui): tighten focus mode spacing 2026-01-06 19:10:06 +00:00
Peter Steinberger
882bcaf414 feat: multi-agent routing + multi-account providers 2026-01-06 18:33:37 +00:00
Jefferson Nunn
e12116c4f8 feat(ui): add favicon.ico from Mac app icon (#305) 2026-01-06 10:41:19 -06: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
207220af7b fix(ui): scroll chat to bottom on initial load 2026-01-06 07:49:12 +01:00
Kiran Jd
479342bea0 Merge branch 'main' into fix/chat-scroll-to-bottom 2026-01-06 11:27:57 +05:30
kiranjd
bf7cae0bca fix(ui): scroll chat to bottom on initial load
The chat view was starting at the top showing oldest messages instead of
scrolling to the bottom to show the latest messages (like WhatsApp).

Root causes:
1. scheduleChatScroll() was called without force flag in refreshActiveTab()
2. The scroll was targeting .chat-thread element which has overflow:visible
   and doesn't actually scroll - the window scrolls instead

Fixes:
- Pass force flag (!chatHasAutoScrolled) when loading chat tab
- Wait for Lit updateComplete before scrolling to ensure DOM is ready
- Scroll the window instead of the .chat-thread container
- Use behavior: 'instant' for immediate scroll without animation
2026-01-06 11:23:27 +05:30
Sreekaran Srinath
1d5e80986f fix(ui): add anyOf/oneOf support in config form (#268)
* fix(ui): add anyOf/oneOf support in config form

- Handle literal unions as dropdowns with type preservation
- Handle primitive unions (string|number, boolean|string) as text inputs
- Unwrap single-variant optional types
- Fix enum handler to preserve types via index-based values
- Update normalizeUnion to support primitive unions in schema analysis
- Exclude allOf from union normalization (stays unsupported)

Fields like Thinking Default, Allow From, Memory now render properly
instead of showing 'unsupported schema node' errors.

* UI: fix enum placeholder collision

* Docs: update changelog for PR #268

---------

Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-05 22:50:07 -06:00
Marcus Neves
9572f92a0f Cron: normalize cron.add inputs + align channels (#256)
* fix: harden cron add and align channels

* fix: keep cron tool id params

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 02:09:48 +00:00
Peter Steinberger
a92ec734ec fix: harden config form 2026-01-06 03:05:56 +01:00
Peter Steinberger
a0553861e6 fix(ui): handle slack config snapshot 2026-01-06 01:16:25 +01:00
Peter Steinberger
2ec552fa5d fix(ui): animate reading indicator dots 2026-01-05 17:40:15 +00:00
Peter Steinberger
831b6e1b37 fix(chat): stabilize web UI tool runs 2026-01-05 17:22:29 +00:00
Peter Steinberger
c717d894ee feat(ui): add chat reading indicator 2026-01-05 16:16:34 +00:00
Peter Steinberger
21a3dbcc76 fix(ui): render markdown in tool result cards 2026-01-05 01:27:13 +01: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
eb6cc20820 fix(ui): show chat send errors 2026-01-04 17:12:49 +00:00
Peter Steinberger
c38cf0fc67 fix(ui): allow Control UI chat without node 2026-01-04 17:12:49 +00:00