feat: workspaces own their sessions; desktop parity; sidebar and settings cleanup
Workspace sessions (docs/plans/desktop-parity, phases 1-5 and 7): - sessions.lane_id: a workspace lists only the sessions its panes held, stamped by bindRunSession (first writer wins, nested `claude -p` excluded); GET /api/sessions?lane=&archived= - session row state dot, double-click rename, archive (sessions.archived_at, hides only); the activity bar's duplicate Sessions tab removed - Fork beside Resume (--fork-session, Claude only), Ctrl/Cmd+click a live session opens it in a second pane, a diff line's comment is pasted into the workspace's last-focused pane (lib/panePaste.ts) dashboard_runs stability: - a pane's previous run is archived as <pane>@<started_at> instead of being overwritten by INSERT OR REPLACE - a run is flagged abandoned only once its tmux session is gone, at boot and on the run-heal beat (panes outlive a server restart) UI: - sidebar: no footer, language or theme block; small collapse button in the brand corner; version + update check in the connection details modal, a status-bar dot while a release is out; language in Settings -> General - one Switch component for every switch, the themed Checkbox for every checkbox (no native checkboxes) Also: AI Tools catalog trimmed to 10 built-ins (custom-file prompt modes tested through fixtures), and the workspace plans under docs/plans/ (the multi-user server plan lives in the AgentHub-Server repo).
This commit is contained in:
+5
-7
@@ -132,9 +132,7 @@ classDiagram
|
||||
+t(key, params)
|
||||
}
|
||||
|
||||
class SidebarLanguageSwitch {
|
||||
+SUPPORTED_LANGUAGES
|
||||
+normalizeLanguage()
|
||||
class SettingsLanguagePicker {
|
||||
+changeLanguage()
|
||||
}
|
||||
|
||||
@@ -149,7 +147,7 @@ classDiagram
|
||||
I18nConfig --> NamespaceResource
|
||||
ReactComponent --> I18nConfig
|
||||
ReactComponent --> NamespaceResource
|
||||
SidebarLanguageSwitch --> I18nConfig
|
||||
SettingsLanguagePicker --> I18nConfig
|
||||
FormatUtils --> I18nConfig
|
||||
```
|
||||
|
||||
@@ -157,7 +155,7 @@ classDiagram
|
||||
|
||||
## 4) Language Detection and Switching Flow
|
||||
|
||||
The sidebar language controls call `i18n.changeLanguage()` and UI updates reactively through `useTranslation`.
|
||||
The language picker in Settings → General (`client/src/pages/Settings.tsx`, a `SettingsSegmented` of English / Tiếng Việt, found by the settings search too) calls `i18n.changeLanguage()` and UI updates reactively through `useTranslation`. The sidebar has no language control.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
@@ -239,7 +237,7 @@ npm run test:client
|
||||
| Locale fallback | Unknown locales fall back to `en` | `vi-VN` resolves to `vi` |
|
||||
| Terminology consistency | Canonical terms stay stable | `Agent`/`Subagent` expectations |
|
||||
| Date/number formatting | Locale-specific output shape | `en-US`, `vi-VN` formatting |
|
||||
| Runtime switching | UI rerenders without reload | Sidebar language toggle |
|
||||
| Runtime switching | UI rerenders without reload | Settings → General language picker |
|
||||
|
||||
---
|
||||
|
||||
@@ -284,7 +282,7 @@ gantt
|
||||
### Operational checklist
|
||||
- [ ] Confirm all namespaces exist for `en` and `vi`
|
||||
- [ ] Confirm key parity across all locale JSON files
|
||||
- [ ] Confirm language switching works in collapsed and expanded sidebar modes
|
||||
- [ ] Confirm language switching from Settings → General re-renders the whole app
|
||||
- [ ] Confirm fallback behavior for region tags (e.g., `vi-VN`, `en-US`)
|
||||
- [ ] Confirm date/time/currency formatting for all supported languages
|
||||
- [ ] Confirm client tests pass before release
|
||||
|
||||
Reference in New Issue
Block a user