* feat: add default workspace feature
- Add useDefaultWorkspace composable for managing default workspaces
- Support multiple default workspaces with chip-based UI
- Add star icon to pin/unpin current workspace as default
- Show default workspace chips with '/' separator
- Implement dropdown menu for overflow workspaces
- Highlight active workspace chip with theme-consistent style
- Add tooltip for full path display in FolderPicker
- Add i18n translations for workspace-related UI elements
Features:
- Store default workspaces globally in localStorage
- Track recent workspace usage for smart selection
- Auto-select most recently used default workspace
- Visual feedback for selected workspace state
- Responsive layout with dynamic visible chip count
* refine default workspace favorite UI
* document default workspace favorite change
---------
Co-authored-by: ramonouyang <ouyangyuanbin@gmail.com>
* fix: preserve archive state in history sessions
* docs: record PR number for archive state fragment
* test: cover api server archive history merge
* fix archive only chat session
---------
Co-authored-by: ekko <fqsy1416@gmail.com>
* feat(jobs): add sort toggle for cron jobs by name or creation time
* feat(jobs): improve sort UI with separator, rename labels, toggle direction, default to name sort
* fix(jobs): use scalar props for sort to fix Vue reactivity on time toggle
* docs: add chat chain change fragment for jobs sort toggle (#1716)
* fix: remove unused onOutlineMessagesLoaded imported from outline-qa branch
* add jobs sort tooltip i18n
---------
Co-authored-by: WenhuaXia <wenhua_xia@163.com>
* fix(goal): increase goal evaluate timeout from 5s to 120s
5s timeout from #1580 is too aggressive for users with remote/slow LLM
services. Goal judge calls silently fail causing goal continuation to
never enqueue, leaving the goal stuck at 1 turn.
Align with auxiliary.goal_judge.timeout default (120s) in config.yaml.
* docs: note goal evaluate timeout change
---------
Co-authored-by: WenhuaXia <wenhua_xia@163.com>
When a run.failed event fires while the assistant message is still
streaming, addAgentErrorMessage previously unconditionally overwrote
the message with an error — losing the assistant reply even if it had
already produced meaningful output. This commonly happened during
Socket.IO disconnects in long tool-use runs.
The fix checks whether the streaming message has substantial content
(>100 chars). If so, it only closes the stream and appends a separate
error message instead of overwriting. For empty/trivial messages,
the original overwrite behavior is preserved since the run failed
before producing useful output.
Fixes#1644
Co-authored-by: Andy365-365 <andy365-365@users.noreply.github.com>