Commit Graph

728 Commits

  • fix(openclaw): enable scrolling on config panels
    Add overflow-y-auto to main content area so OpenClaw panels
    (Env, Tools, Agents) can scroll when content exceeds viewport.
  • feat(openclaw): add Env/Tools/Agents config panels
    - Migrate OpenClaw commands from provider.rs to dedicated commands/openclaw.rs
    - Add backend types and read/write for env, tools, agents.defaults sections
    - Create EnvPanel (API key + custom vars KV editor)
    - Create ToolsPanel (profile selector + allow/deny lists)
    - Create AgentsDefaultsPanel (default model + runtime parameters)
    - Extend App.tsx menu bar with Env/Tools/Agents buttons
    - Remove Prompts button for OpenClaw (overlaps with Workspace AGENTS.md)
  • feat(openclaw): extend workspace files with HEARTBEAT/BOOTSTRAP/BOOT
    Add 3 new markdown files to the workspace whitelist and frontend grid:
    - HEARTBEAT.md: activity runlist
    - BOOTSTRAP.md: first-run ritual
    - BOOT.md: gateway restart checklist
    
    Update i18n for all 3 locales (zh, en, ja).
  • feat(openclaw): show only Workspace button in menu bar
    Hide Skills, Prompts, Sessions, and MCP buttons when OpenClaw is active,
    as it only needs Workspace file management functionality.
  • feat(openclaw): add Workspace Files panel for managing bootstrap md files
    Add a dedicated panel to read/write OpenClaw's 6 workspace bootstrap files
    (AGENTS.md, SOUL.md, USER.md, IDENTITY.md, TOOLS.md, MEMORY.md) directly
    from ~/.openclaw/workspace/, with a whitelist-secured backend and Markdown
    editor UI. Also fix prompt auto-import missing OpenCode/OpenClaw and the
    PromptFormPanel filenameMap type exclusion.
  • fix(openclaw): add openclaw to all Record<AppId, T> usages
    Expand McpApps interface, APP_IDS, APP_ICON_MAP, enabledCounts
    initializers, and test mock data to include the openclaw key,
    resolving TypeScript errors after AppId union was extended.
  • perf: remove unnecessary query cache for Tauri local IPC
    Tauri IPC calls are in-process (microsecond latency), so the 5-minute
    staleTime and disabled refetchOnWindowFocus from web app templates are
    counterproductive. Set staleTime to 0 and enable refetchOnWindowFocus
    so external config changes are reflected immediately.
  • feat(openclaw): add default model button and fix sessionsApi export
    - Add "Enable as Default" button to OpenClaw provider cards
    - Place enable button before add/remove button for better UX
    - Disable remove button when provider is set as default
    - Add sessionsApi re-export from api barrel file to fix white screen
    - Add i18n keys for default model feature (zh/en/ja)
  • fix(openclaw,opencode): correct Opus pricing and upgrade to Opus 4.6
    - Fix Opus pricing from $15/$75 (Opus 4 price) to $5/$25 in openclaw presets
    - Upgrade model ID from claude-opus-4-5-20251101 to claude-opus-4-6
    - Update all suggestedDefaults references (fallbacks + modelCatalog)
    - Apply same model upgrade in opencode presets (7 providers)
  • feat(openclaw): register suggested models to allowlist on provider add
    When adding an OpenClaw provider with suggestedDefaults, automatically
    merge its model catalog into the allowlist and set the default model
    if not already configured.
  • fix(openclaw): update button state and toast message after switch
    Add cache invalidation for openclawLiveProviderIds in useSwitchProviderMutation
    to ensure button state updates correctly after adding/removing providers.
    
    Also fix toast message to show "已添加到配置" for OpenClaw (same as OpenCode).
  • feat(openclaw): add providerKey input field with validation
    - Add providerKey input field in ProviderForm for OpenClaw
    - Implement duplicate key detection by querying existing providers
    - Add format validation (lowercase letters, numbers, hyphens only)
    - Disable field in edit mode (key cannot be changed after creation)
    - Update mutations.ts to support OpenClaw providerKey
    - Add i18n translations for zh/en/ja
  • fix(openclaw): pass providerKey in AddProviderDialog submit handler
    The providerKey was only being passed for opencode, causing openclaw
    provider creation to fail with "Provider key is required" error.
  • fix(openclaw): update API protocol values in provider presets
    Update anthropic -> anthropic-messages to match OpenClaw gateway config
  • feat(openclaw): add provider form fields and UI components
    - Add OpenClawFormFields component for provider configuration
    - Add Collapsible UI component (radix-ui dependency)
    - Update ProviderForm with OpenClaw-specific handlers and preset logic
    - Extend OpenClawModel type with reasoning, input, maxTokens fields
    - Exclude OpenClaw from universal provider tab in AddProviderDialog
  • feat(openclaw): add additive mode frontend support
    - Add getOpenClawLiveProviderIds() API for querying live config
    - Update ProviderList to query OpenClaw live IDs
    - Rename isOpenCodeMode to isAdditiveMode (covers OpenCode + OpenClaw)
    - Update ProviderCard shouldAutoQuery and isActiveProvider logic
    - Update App.tsx onRemoveFromConfig and invalidateQueries for OpenClaw
  • feat(openclaw): add agents.defaults config support
    - Add types for default model config (primary + fallbacks)
    - Add types for model catalog/allowlist with aliases
    - Extend OpenClawModelEntry with cost and contextWindow fields
    - Add Tauri commands: get/set_openclaw_default_model, get/set_openclaw_model_catalog
    - Create frontend API (src/lib/api/openclaw.ts)
    - Add suggestedDefaults to provider presets with model metadata
    - Add i18n translations (zh/en/ja) for openclawConfig.*
  • fix(ui): update OpenClaw icon in icon index
    Replace old pixel-art style icon with new gradient lobster icon
    to match the SVG added in 2dad4729.
  • fix(ui): add OpenClaw to app switcher
    Add "openclaw" to ALL_APPS array so OpenClaw appears in the main
    interface app switcher when enabled in visibility settings.
  • fix(tests): add mcp_servers table to v4 migration test fixture
    Also includes OpenClaw icon that was added in previous commits.
  • fix(openclaw): remove MCP/Skills/Prompts support from OpenClaw
    OpenClaw only needs provider management functionality, not MCP, Skills,
    or Prompts features. This commit removes the incorrectly added support:
    
    - Revert SCHEMA_VERSION from 6 to 5 (remove v5->v6 migration)
    - Remove enabled_openclaw field from mcp_servers and skills tables
    - Remove openclaw field from McpApps and SkillApps structs
    - Update DAO queries to exclude enabled_openclaw column
    - Fix frontend components and types to exclude openclaw from MCP/Prompts
    - Update all related test files
  • feat(i18n): add OpenClaw translations
    - Add "openclaw": "OpenClaw" to apps translations in zh.json
    - Add "openclaw": "OpenClaw" to apps translations in en.json
    - Add "openclaw": "OpenClaw" to apps translations in ja.json
  • feat(ui): add OpenClaw support to frontend components
    - Update App.tsx with openclaw visibility and skills fallback
    - Add OpenClaw to AppSwitcher icon and display name maps
    - Update McpFormModal with openclaw in enabled apps
    - Update PromptFormModal/Panel with openclaw filename map
    - Update EndpointSpeedTest with openclaw timeout
    - Update AppVisibilitySettings with openclaw toggle
    - Update test state with openclaw defaults
  • feat(presets): add OpenClaw provider presets
    - Create openclawProviderPresets.ts with provider templates
    - Include Chinese officials (DeepSeek, Zhipu, Qwen, Kimi, MiniMax)
    - Include aggregators (AiHubMix, DMXAPI, OpenRouter, ModelScope)
    - Include third party partners (PackyCode, Cubence, AIGoCode)
    - Include OpenAI Compatible custom template
  • feat(types): add OpenClaw TypeScript type definitions
    - Add OpenClawProviderConfig and OpenClawModel interfaces
    - Add openclaw to McpApps, VisibleApps, ProxyTakeoverStatus
    - Add "openclaw" to AppId union type
    - Add openclaw to SkillApps interface
  • Webdav (#923)
    * feat: WebDAV backup/restore
    
    - Add WebDAV test/backup/restore commands and settings\n- Fix ja i18n missing keys; decode PROPFIND href as UTF-8\n- Stabilize Windows prompt auto-import tests via CC_SWITCH_TEST_HOME
    
    * chore: format and minor cleanups
    
    * fix: update build config
    
    * feat(webdav): unify sync UX and hardening fixes
    
    * fix(webdav): harden sync flow and stabilize sync UX/tests
    
    * fix(webdav): add resource limits to skills.zip extraction
    
    Prevent zip bomb / resource exhaustion by enforcing:
    - MAX_EXTRACT_ENTRIES (10,000 files)
    - MAX_EXTRACT_BYTES (512 MB cumulative)
    
    * refactor(webdav): drop deviceId and display deviceName only
    
    ---------
    
    Co-authored-by: small-lovely-cat <77799160+small-lovely-cat@users.noreply.github.com>
    Co-authored-by: saladday <1203511142@qq.com>
  • feat(proxy): fix thinking rectifiers and resolve clippy warnings (#1005)
    * feat(proxy): align thinking rectifiers and resolve clippy warnings
    
    - add thinking budget rectifier flow with single retry on anthropic budget errors
    
    - align thinking signature rectification behavior with adaptive-safe handling
    
    - expose requestThinkingBudget in settings/ui/i18n and default rectifier config to disabled
    
    - fix clippy warnings in model_mapper format args and RectifierConfig default derive
    
    * fix(proxy): thinking rectifiers
  • feat(omo): improve agent model selection UX and fix lowercase keys (#1004)
    * fix(omo): use lowercase keys for builtin agent definitions
    
    OMO config schema expects all agent keys to be lowercase.
    Updated OMO_BUILTIN_AGENTS keys (Sisyphus → sisyphus, Hephaestus →
    hephaestus, etc.) and aligned Rust test fixtures accordingly.
    
    * feat(omo): add i18n support and tooltips for agent/category descriptions
    
    * feat(omo): add preset model variants for thinking level support
    
    Add OPENCODE_PRESET_MODEL_VARIANTS constant with variant definitions
    for Google, OpenAI, and Anthropic models. The omoModelVariantsMap
    builder now falls back to presets when config-defined variants are
    absent, enabling the variant selector for supported models.
    
    * feat(omo): replace model select with searchable combobox and improve fallback handling
    
    * feat(omo): enrich preset model defaults and metadata fallback
    
    * fix(omo): preserve custom fields and align otherFields import/validation
    
    * fix: resolve omo clippy warnings and include app update
  • fix(ui): only show session manager button for Claude and Codex apps
    Session manager backend only supports Claude and Codex providers.
    Hide the nav button for Gemini/OpenCode with animated transition,
    and auto-fallback to providers view when switching apps.
  • feat(omo): integrate Oh My OpenCode profile management (#972)
    * feat(omo): integrate Oh My OpenCode profile management into Provider system
    
    Adds full-stack OMO support: backend config read/write/import, OMO-specific
    provider CRUD with exclusive switching, frontend profile editor with
    agent/category/model configuration, global config management, and i18n support.
    
    * feat(omo): add model/variant dropdowns from enabled providers
    
    Replace model text inputs with Select dropdowns sourced from enabled
    OpenCode providers, add thinking-level variant selection, and prevent
    auto-enabling newly added OMO providers.
    
    * fix(omo): use standard provider action styles for OMO switch button
    
    * fix(omo): replace hardcoded isZh strings with proper i18n t() calls
  • feat: rename Qwen Coder preset to Bailian (#965)
    - replace Qwen Coder preset with Bailian for Claude and OpenCode
    - add Bailian icon asset and metadata mapping
    - remove Bailian preset default model values
    - rename Claude preset Kimi k2 to Kimi
  • feat(usage): enhance dashboard with auto-refresh control and robust formatting (#942)
    * style: format code and apply clippy lint fixes
    
    * feat(usage): enhance dashboard with auto-refresh control and robust formatting
    
    - Add configurable auto-refresh interval toggle (off/5s/10s/30s/60s) to usage dashboard
    - Extract shared format utilities (fmtUsd, fmtInt, parseFiniteNumber, getLocaleFromLanguage)
    - Refactor request log time filtering to rolling vs fixed mode with validation
    - Use stable serializable query keys instead of filter objects
    - Handle NaN/Infinity safely in number formatting across all usage components
    - Use RFC 3339 date format in backend trend data
  • fix(opencode): reject save when no models configured (#932)
    Add validation to require at least one model before saving an OpenCode
    provider. Shows a localized toast error when models are empty.
  • refactor(terminal): unify terminal selection using global settings
    - Remove terminal selector from Session Manager page
    - Backend now reads terminal preference from global settings
    - Add terminal name mapping (iterm2 → iterm) for compatibility
    - Add WezTerm support to macOS terminal options
    - Add WezTerm translations for zh/en/ja
  • fix(i18n): replace hardcoded Chinese strings in Session Manager
    - Add i18n keys for relative time (justNow, minutesAgo, hoursAgo, daysAgo)
    - Add i18n keys for role labels (roleUser, roleSystem, roleTool)
    - Add i18n keys for UI elements (tocTitle, searchSessions, clickToCopyPath)
    - Update formatRelativeTime and getRoleLabel to accept t function
    - Add useTranslation hook to SessionToc component
  • feat(ui): hide provider test button
    Provider request formats are complex and varied, making it difficult
    to create a unified test mechanism. Users may incorrectly assume
    request format issues indicate provider unavailability.
    
    Code is commented out (not deleted) for easy restoration if needed.
  • refactor(ui): extract shared components and deduplicate MCP/Skills panels (#897)
    * refactor(ui): add tooltips and icons to MCP and Skills panels
    
    * refactor: deduplicate UnifiedSkillsPanel and UnifiedMcpPanel shared code
  • feat: session manger (#867)
    * feat: init session manger
    
    * feat: persist selected app to localStorage
    
    - Save app selection when switching providers
    - Restore last selected app on page load
    
    * feat: persist current view to localStorage
    
    - Save view selection when switching tabs
    - Restore last selected view on page load
    
    * styles: update ui
    
    * feat: Improve macOS Terminal activation and refactor Kitty launch to use  command with user's default shell.
    
    * fix: session view
    
    * feat: toc
    
    * feat: Implement FlexSearch for improved session search functionality.
    
    * feat: Redesign session manager search and filter UI for a more compact and dynamic experience.
    
    * refactor: modularize session manager by extracting components and utility functions into dedicated files.
    
    * feat: Enhance session terminal launching with support for iTerm2, Ghostty, WezTerm, and Alacritty, including UI and custom configuration options.
    
    * feat: Conditionally render terminal selection and resume session buttons only on macOS.
  • fix(skills): handle Windows path separator in installed status matching (#868)
    * fix(skills): handle Windows path separator in installed status matching
    
    Use regex to split directory path by both / and \ to correctly extract
    the install name on Windows, fixing the issue where installed skills
    were not showing as installed in the discovery page filter.
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    * feat(skills): add repository filter to skills discovery page
    
    - Add dropdown to filter skills by repository (owner/name)
    - Extract unique repos from discoverable skills list
    - Add truncate style for long repo names with hover title
    - Add i18n translations for zh/en/ja
    
    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
  • feat(ui): dynamic endpoint hint based on API format selection (#860)
    - Add apiHintOAI i18n key for OpenAI Chat Completions format hint
    - Update ClaudeFormFields to show format-specific endpoint hints
    - When API format is "openai_chat", show OAI-specific hint
    - Maintains consistency between hint and selected API format
    
    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>