Commit Graph

765 Commits

Author SHA1 Message Date
Jason c06dd53dca docs(changelog): add macOS tray template icon entry v3.8.3 2025-12-24 15:16:48 +08:00
Jason caade44cf9 feat(tray): use macOS tray template icon
Cherry-picked from main (f047960)
2025-12-24 14:41:28 +08:00
Jason c5f8ca1df9 chore(release): prepare v3.8.3
- Bump version to 3.8.3 in package.json, Cargo.toml, tauri.conf.json
- Add CHANGELOG entry for v3.8.3 with new features, fixes and changes
2025-12-24 11:33:05 +08:00
Jason 4cdaed56e6 feat(presets): add AiGoCode icon and partner promotion
- Add AiGoCode colored icon (blue body #5B7FFF, purple star #7C6AEF)
- Add original SVG source file for reference
- Add icon metadata with keywords and default color
- Add iconColor to AiGoCode presets for Claude, Codex, and Gemini
- Add partner promotion messages in zh/en/ja locales
2025-12-24 11:06:48 +08:00
Jason 0de1c1356b chore: update GLM partner banner images 2025-12-23 23:25:55 +08:00
Jason 4afa9b07e8 chore(presets): update model versions for provider presets
Claude presets:
- Zhipu GLM: glm-4.6 → glm-4.7
- Z.ai GLM: glm-4.6 → glm-4.7
- ModelScope: GLM-4.6 → GLM-4.7
- MiniMax: MiniMax-M2 → MiniMax-M2.1

Codex presets:
- Azure, AiHubMix, DMXAPI, PackyCode: gpt-5.1-codex → gpt-5.2
- Custom template: gpt-5-codex → gpt-5.2
2025-12-23 22:48:38 +08:00
Jason 21ceb819b9 feat(settings): add option to skip Claude Code first-run confirmation
Add a new setting to automatically skip Claude Code's onboarding screen
by writing hasCompletedOnboarding=true to ~/.claude.json. The setting
defaults to enabled for better user experience.

Cherry-picked from main (ddbff07) with conflict resolution.
2025-12-23 22:39:57 +08:00
Jason 9ea7952246 fix(ui): add padding-top to prevent content being covered by fixed header
Add CONTENT_TOP_OFFSET constant (92px = 28px drag bar + 64px header)
and apply it as paddingTop to the root container, ensuring provider
cards and other content are not obscured by the fixed-position header
and env warning banner.
2025-12-23 22:36:36 +08:00
Jason 77cce44490 chore: update aigocode partner logo 2025-12-23 19:27:28 +08:00
Jason 7846e4b1e4 update readme 2025-12-23 19:27:22 +08:00
Jason ac20a7b13c fix(mcp): skip sync when target CLI app is not installed
Add guard functions to check if Claude/Codex/Gemini CLI has been
initialized before attempting to sync MCP configurations. This prevents
creating unwanted config files in directories that don't exist.

- Claude: check ~/.claude dir OR ~/.claude.json file exists
- Codex: check ~/.codex dir exists
- Gemini: check ~/.gemini dir exists

When the target app is not installed, sync operations now silently
succeed without writing any files, allowing users to manage MCP servers
for apps they actually use without side effects on others.
2025-12-23 19:18:57 +08:00
TinsFox 3330ef5132 fix: azure website link (#407) 2025-12-23 19:18:15 +08:00
Jason 04a43fba7d chore(i18n): remove restart prompt from provider switch notification
Claude Code now supports hot reload, so users no longer need to restart
the terminal after switching providers. Also removes unused `restartClaude`
i18n string.
2025-12-23 19:18:09 +08:00
Jason f2e6ffd2d6 feat(providers): add DMXAPI as official partner
Mark DMXAPI as partner in both Claude and Codex presets with promotion
message for their Claude Code exclusive model 66% OFF offer.
2025-12-23 19:13:44 +08:00
Jason 84a4cd8358 feat(icons): add provider icons for OpenRouter, LongCat, ModelScope, AiHubMix
- Add SVG icons for OpenRouter, LongCat, ModelScope, and AiHubMix
- Register icons in index.ts and metadata.ts with search keywords
- Link icons to corresponding provider presets in claudeProviderPresets.ts
2025-12-23 19:13:37 +08:00
Jason 0ac66e8e37 fix(ui): reduce header spacing and fix layout shift on view switch
- Change right-side button container from min-h-[40px] to h-[32px]
  for more compact header layout
- Remove conditional padding (pt-6/pt-4) from main content area
  to eliminate layout jump during view transitions
2025-12-23 19:06:32 +08:00
Jason bd488f8f26 fix(ui): prevent header layout shift when switching views
Add min-height to right-side button container and ml-auto to add buttons
in MCP/Prompts views to maintain consistent header height and button
position across all views.
2025-12-23 19:05:50 +08:00
Jason 81423001be fix(ui): improve text visibility in dark mode
Replace hardcoded gray color classes with semantic color classes
to fix poor text contrast in dark mode:

- MCP panel: server names, descriptions, tags, app labels
- Prompt panel: prompt names, descriptions, empty states
- Usage footer: timestamps, refresh buttons
- Update badge: close button icon
- API key input: disabled state text
- Env warning banner: source info text

Changes:
- `text-gray-400 dark:text-gray-500` → `text-muted-foreground`
  (fixes reversed dark mode logic)
- `text-gray-500 dark:text-gray-400` → `text-muted-foreground`
- `bg-gray-100 dark:bg-gray-800` → `bg-muted`
2025-12-23 19:05:42 +08:00
Jason dffaf4071d fix(import): refresh all providers immediately after SQL import
- Remove setTimeout delay that could be cancelled on component unmount
- Invalidate all providers cache (not just current app) since import affects all apps
- Call onImportSuccess before sync to ensure UI refresh even if sync fails
- Update i18n: "Data refreshed" (past tense, reflecting immediate action)
2025-12-23 19:05:01 +08:00
Jason 8ce6edfe94 fix(backup): restrict SQL import to CC Switch exported backups only
- Add validation to reject SQL files without CC Switch export header
- Remove redundant sanitize_import_sql (sqlite_* objects already excluded at export time)
- Fix backup filename collision by appending counter suffix
- Update i18n hints to clarify import restriction
2025-12-23 19:04:56 +08:00
YoVinchen de168b860e fix(skill): use directory basename for skill installation path (#358)
Extract last segment from skill directory path to prevent nested directory
issues during install/uninstall operations. For example, "skills/codex" now
correctly installs to "codex" instead of creating nested "skills/codex" path.
2025-12-23 18:48:36 +08:00
Jason 3230b0e094 chore: bump version to 3.8.2 v3.8.2 2025-12-01 22:41:43 +08:00
Jason 2347ac0ee0 fix(config): update DeepSeek default model from Exp to stable version 2025-12-01 22:37:01 +08:00
Jason 58c5468bf6 fix(ui): prevent provider card hover scale from being clipped
Move 1px of horizontal padding from outer container to inner scroll
container, providing buffer space for the hover scale-[1.01] effect
without being cut off by overflow-hidden.
2025-12-01 16:03:20 +08:00
Jason 98084d61aa fix(ui): add independent scroll containers to fix scroll wheel on Linux
Providers page was using DndContext which may interfere with scroll wheel
events on Linux/Ubuntu WebKitGTK. Added independent scroll containers
with `overflow-y-auto` to all main pages, matching the pattern already
used by the MCP panel which works correctly.

Changes:
- App.tsx: Wrap ProviderList in independent scroll container
- SkillsPage: Use consistent h-[calc(100vh-8rem)] layout
- SettingsPage: Add overflow-hidden and overflow-x-hidden for consistency
v3.8.1
2025-12-01 11:28:01 +08:00
Jason a627e1bb50 fix(config): update Codex default model and correct MiniMax URL
- Update Codex preset model from gpt-5-codex to gpt-5.1-codex
- Fix MiniMax English preset URL from minimaxi.io to minimax.io
2025-12-01 11:08:53 +08:00
Jason 04a588694b chore: bump version to 3.8.1 2025-11-30 23:39:05 +08:00
Jason f5f7dfed8c style: apply code formatting fixes
- Fix Prettier formatting in claudeProviderPresets.ts
- Fix cargo fmt trailing blank line in provider/mod.rs
2025-11-30 23:30:27 +08:00
Jason 5888c56f2a fix(config): correct MiniMax apiKeyUrl to minimaxi.com
Update apiKeyUrl domain to match official website URL.
Also update screenshots for all locales (en, ja, zh).
2025-11-30 23:03:09 +08:00
Jason c5cadb73bc fix(config): correct MiniMax apiKeyUrl domain from minimax.io to minimax.com 2025-11-29 23:03:19 +08:00
Jason 17948ee031 docs: update screenshots and add Japanese locale images
- Update README_JA.md to reference Japanese screenshots
- Add Japanese screenshots (main-ja.png, add-ja.png)
- Update English and Chinese screenshots with latest UI
- Remove outdated README_i18n.md documentation
2025-11-29 22:14:11 +08:00
Jason 2643595012 fix(skills): target first span only when hiding select checkmark indicator 2025-11-29 21:36:16 +08:00
Jason 6ac4d1652c fix(skills): use theme-aware glass-card class for light mode compatibility
Replace hardcoded dark mode styles (bg-gray-900/40, border-white/10) with
the unified glass-card class that adapts to both light and dark themes.
2025-11-29 21:18:51 +08:00
Jason 3bf37cf0ff refactor(url): remove automatic trailing slash stripping from base URL inputs
- Remove `.replace(/\/+$/, "")` from all base URL handlers in useBaseUrlState.ts
- Remove trailing slash stripping in useCodexConfigState.ts
- Remove trailing slash normalization in providerConfigUtils.ts setCodexBaseUrl()
- Update i18n hints (en/ja/zh) to instruct users to avoid trailing slashes

This gives users explicit control over URL format rather than silently modifying input.
2025-11-29 20:52:29 +08:00
Jason 526c7406fa fix(ui): persist active provider card highlight when not hovered
The selected provider's visual highlight (background, border, glow)
was being overridden by .glass-card base styles due to CSS specificity.
Add dedicated .glass-card-active class to ensure active state persists.
2025-11-29 20:19:17 +08:00
Jason 9db85dd4dc style(css): consolidate global selector rules and remove duplicates
- Merge three separate `*` selector blocks into one for better maintainability
- Remove duplicate "Glassmorphism Utilities" comment
2025-11-29 20:03:19 +08:00
Jason 0f333d9e5b fix(tailwind): add missing shadcn/ui color mappings for opaque dialog backgrounds
The dialog backgrounds were transparent because Tailwind 3 requires explicit
color mappings in the config to use CSS variables. Added standard shadcn/ui
color mappings (background, foreground, card, primary, etc.) and removed
unnecessary overlayClassName overrides from dialog components.
2025-11-29 19:49:55 +08:00
Jason ba875552a6 style(mcp): align wizard modal with confirm dialog styling
- Use zIndex="alert" and semi-transparent overlay for consistency
- Apply border-b-0/border-t-0 bg-transparent to header/footer
- Replace emerald accent with blue to match app theme
- Use Input component instead of raw input elements
- Simplify button variants (outline for cancel)
2025-11-29 17:41:12 +08:00
Jason 75e7f9d731 chore: remove dead code from MCP and provider modules
- Remove unused `read_mcp_json` from gemini_mcp.rs
- Remove unused `normalize_server_keys` from mcp/claude.rs
- Remove unused `validate_mcp_entry` from mcp/validation.rs
- Remove unused `write_codex_live`, `write_claude_live`, `app_not_found` from services/provider/mod.rs
- Clean up unused imports
2025-11-29 16:24:22 +08:00
Jason 7e6074a9a9 refactor(mcp): modularize MCP and tray menu logic
Split mcp.rs (1135 lines) into focused modules:
- validation.rs: server config validation
- claude.rs: Claude MCP sync/import
- codex.rs: Codex MCP sync (TOML handling)
- gemini.rs: Gemini MCP sync/import

Extract tray menu logic from lib.rs to tray.rs for better separation of concerns.
2025-11-29 10:29:10 +08:00
Jason c229c47c00 fix(auto-launch): use AutoLaunchBuilder for cross-platform compatibility
The auto-launch crate has different API signatures on each platform:
- Windows/Linux: AutoLaunch::new() takes 3 arguments
- macOS: AutoLaunch::new() takes 4 arguments (includes hidden param)

The previous code used #[cfg(not(target_os = "windows"))] which incorrectly
applied macOS's 4-argument signature to Linux, causing build failures.

Switch to AutoLaunchBuilder which handles platform differences internally.
v3.8.0
2025-11-28 22:59:09 +08:00
Jason 6c477a60f9 chore: bump version to v3.8.0 2025-11-28 22:37:32 +08:00
Jason 7eac809689 feat(preset): add MiniMax international version and split promotions
- Add MiniMax en preset with international API endpoint (minimaxi.io)
- Split MiniMax partner promotion into CN and EN versions
- Remove unnecessary icon config from Aliyun and Alibaba Lingma presets
2025-11-28 22:27:23 +08:00
Jason dafa77897b docs: add v3.8.0 release documentation and Japanese README
- Add CHANGELOG entry for v3.8.0
- Update README.md and README_ZH.md with v3.8.0 features
- Add Japanese README (README_JA.md)
- Add release notes in English, Chinese, and Japanese
2025-11-28 21:47:05 +08:00
YoVinchen 0f959112b1 refactor(skill): remove skillsPath configuration (#310)
Remove the skillsPath field from SkillRepo and Skill structs since
recursive scanning now automatically discovers skills in all directories.
Simplify the UI by removing the path input field.
2025-11-28 16:26:28 +08:00
Jason f4c284f86c fix(test): update component tests to match current implementation
- Add JsonEditor mock to McpFormModal tests (component uses CodeMirror
  instead of Textarea)
- Fix assertion for missing command error message
- Update ImportExportSection tests for new button behavior and file
  display format
2025-11-28 16:20:18 +08:00
Jason 3878a16c4f fix: pre-release fixes for code formatting, i18n, and test suite
- Run cargo fmt to fix Rust code formatting (lib.rs)
- Add missing i18n keys: migration.success, agents.title (zh/en/ja)
- Replace hardcoded strings "Agents" and "MCP" with t() calls in App.tsx
- Fix test mocks and assertions:
  - Add providersApi.updateTrayMenu to useSettings.test.tsx mock
  - Update SettingsPage mock path in App.test.tsx
  - Fix toast message assertion in integration/SettingsDialog.test.tsx
  - Add autoSaveSettings to SettingsDialog component test mock
  - Fix loading state test to check spinner instead of title
  - Update import button name matching for selected file state
  - Fix save button test to switch to advanced tab first
  - Remove obsolete cancel button test (button no longer exists)

Test results improved from 99 passed / 17 failed to 104 passed / 11 failed
2025-11-28 15:53:25 +08:00
Jason 00f78e4546 feat(i18n): add Japanese language support
- Add complete Japanese translation file (ja.json)
- Update frontend types and hooks to support "ja" language option
- Add Japanese tray menu texts in Rust backend
- Add Japanese option to language settings component
- Update Zod schema to include Japanese language validation
- Add test case for Japanese language preference
- Update i18n documentation to reflect three-language support
2025-11-28 15:14:39 +08:00
Jason 1ee1e9cb2e refactor(startup): improve first-launch import logic with per-table detection
- Replace global `is_empty_for_first_import()` with independent checks:
  - `is_mcp_table_empty()` for MCP server imports
  - `is_prompts_table_empty()` for prompt imports
  - Skills and providers already have built-in idempotency checks

- Fix misleading logs in provider import:
  - Change `import_default_config` return type from `Result<()>` to `Result<bool>`
  - Return `true` when actually imported, `false` when skipped
  - Only log success message when import actually occurred

- Add idempotency protection to `import_from_file_on_first_launch`

This allows each data type to be independently recovered if deleted,
rather than requiring all tables to be empty for any import to trigger.
2025-11-28 12:05:29 +08:00
YoVinchen 7db4b8d976 feat(skill): implement recursive scanning for skill repositories (#309)
Add recursive directory scanning to discover SKILL.md files in nested
directories. When a SKILL.md is found, treat sibling directories as
functional folders rather than separate skills.
2025-11-28 12:01:20 +08:00