- Add analyze_sessions backend command that scans all agent sessions,
classifies them as empty/low_value/valuable based on message count,
age, and file size
- Add delete_sessions_by_ids command with support for both sessions
and sessions_archive directories
- Add preview_session command to view full session message content
- Doctor page now has Analyze button (primary color) showing two-level
view: agent summary with category badges, expandable session details
with checkboxes for batch deletion
- Session IDs are clickable to preview conversation content in a dialog
- Delete/Deselect buttons placed next to clean buttons for easy access
- Optimistic UI updates on deletion without requiring re-analysis
- All heavy I/O commands run via spawn_blocking to avoid UI freezes
- Add Doctor route to App navigation sidebar
- Hide Memory section from Doctor page
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
- Extract shared CreateAgentDialog with progressive disclosure (independent agent expands identity/persona fields)
- Redesign Channels page: self-contained, groups all channel types (Discord, Telegram, Feishu, QBot) with per-group refresh
- Add skeleton loading states for Home page agents and backups
- Replace Chat Sheet overlay with inline aside panel that pushes main content
- Add RecipeCard compact mode for Home page, with visible tag backgrounds
- Upgrade toast system to support multi-toast stacking with close buttons
- Unify SelectTrigger heights to size="sm" across all pages
- Add "Done" button to Cook completion card
- Replace ~25 silent .catch(() => {}) with console.error or user-visible feedback
- Fix create_agent to inherit default workspace for non-independent agents
- Register list_channels_minimal backend command for frontend access
- Remove unused globalLoading state and refreshDiscord from App.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 30s timeout to gateway restart command to prevent UI from hanging indefinitely
- Change delete_agent to reset bindings to "main" instead of removing them, preventing loss of channel binding entries
- Add health status grace period: show "Checking..." badge while gateway is restarting, retry every 2s up to 5 times before showing "Unhealthy"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show "Gateway restarted successfully" or error after Apply Changes,
and "Changes discarded" after Discard. Toast auto-dismisses after 3s.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
create_agent, bind_channel, setup_identity all modify openclaw.json
and need a gateway restart. Previously the hint only showed when
config_patch steps ran.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously checked if the entire resolved arg was empty, which missed
cases like patchTemplate where {{persona}} resolves to empty but the
overall JSON string is not empty. Now checks each {{param}} reference
individually — if any referenced param is empty, the step is skipped.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- model_profile Select value changed from provider/model string to
profile ID (backend expects ID, not display string)
- renderArgs no longer converts empty string to false; only explicit
"true"/"false" become booleans. Fixes name/emoji being passed as
boolean false to setup_agent_identity
- Boolean params default to "false" instead of empty string
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Model is required with a default of "use global default". Adds
defaultValue support to RecipeParam so params can have initial values.
Model profile selector now includes a "Use global default" option.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The button was rendered outside Cook.tsx in the App shell. Cook.tsx
already has a back arrow in the title area.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add "Create independent agent" checkbox that toggles visibility of
name/emoji/persona fields. Params with dependsOn are hidden when the
referenced boolean is unchecked, and their steps are auto-skipped.
Template substitution now converts "true"/"false" to native booleans.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Make name, emoji, persona params optional in dedicated-channel-agent
- Auto-skip steps whose template args resolve to empty strings
- Move "Back to Recipes" to a back arrow next to the title
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show step count instead of impactCategory, simplify Recipes.tsx
state management, fix chat.ts preview_change tool.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4-phase wizard: fill params → confirm steps → execute → done.
Supports retry/skip on failure, shows step status in real-time.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace patchTemplate/impactCategory/impactSummary with steps-based
recipe format. Remove preview_apply/apply_recipe commands, add
apply_config_patch for inline merge patches.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Chat as collapsible right-side Sheet drawer, accessible from all pages
- Replace default-model-switch recipe with setup-agent identity recipe
- Add setup_agent_identity backend command (writes IDENTITY.md)
- Add "agent" param type to ParamForm for agent picker dropdown
- Custom action support in Cook flow (non-config-patch recipes)
- Profile save/delete in Settings now syncs to other pages via configVersion
- Move Backups section from Doctor to Settings
- Hide Doctor tab from sidebar navigation
- History preview now opens in Dialog instead of inline at page bottom
- Simplify History.tsx from useReducer to useState
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Radix Popover-based ComboboxField didn't work in Tauri's webview
(clicks had no effect). Replaced with a plain Input + absolute-
positioned dropdown list that uses only standard DOM events — no
Radix Portal, no cmdk dependency, no asChild composition issues.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The ComboboxField's Button inside the <form> defaulted to
type="submit", causing form submission on click. Added explicit
type="button" so it opens the dropdown instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix Home showing "Update available" when versions are identical
by adding frontend guard (latest !== installed)
- Add Rust backup commands: backup_before_upgrade copies openclaw dir
(excluding sessions/archive) to .clawpal/backups/{timestamp}/,
list_backups, restore_from_backup, delete_backup
- Home: add "Backup & Upgrade" button next to "View update" that
creates a backup then opens the releases page
- Doctor: add "Backups" section listing available backups with
Show, Restore (with confirmation), and Delete (with confirmation)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Doctor: wrap all memory/session clear buttons with AlertDialog
confirmation, destructive red styling, and "Show" folder buttons
- Doctor: add loading state ("Refreshing...") to Refresh button
- Settings: wrap profile Delete buttons with AlertDialog confirmation
- Settings: fix provider combobox not using cached catalog — prevent
empty CLI refresh result from overwriting cached data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace custom dark navy color palette with shadcn default light theme
- Remove all custom --color-* CSS variables and use semantic classes
- Remove Chat Model section from Settings (no longer needed)
- Replace native <datalist> with Combobox (Popover + Command) for
provider/model selection in Settings
- Add shadcn command, popover, and dialog components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline styles and old CSS class references with Tailwind
utilities and shadcn Card, Badge, Button, Input, and Label components.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>