Commit Graph
27 Commits
Author SHA1 Message Date
lzt404 82089faaf1 fix: preserve configuration and credentials during v7-to-v8 upgrades 2026-09-28 12:47:33 +08:00
lzt404 7c5b65a153 fix(config): correct cross-platform paths and v8 config updates
- Extend OAuth directory recovery to Windows and Linux
- Align credential path resolution and log directory selection with the core
- Update v8 TLS and logging fields without requiring a version marker
- Support flow-style YAML mappings and preserve null legacy TLS fields
- Add regression tests for path recovery and config updates
2026-09-28 00:22:03 +08:00
lzt404 c52039dfed fix: handle missing v8 config nodes and normalize alias transaction views
- Default absent optional config nodes to empty values without hiding other errors
- Normalize empty parent mappings to prevent alias save and rollback conflicts
- Add regression tests for missing config, first-time alias creation, and rollback
2026-09-27 20:03:33 +08:00
lzt404 02d5a2d469 feat(linux): add system tray with safe window fallback 2026-09-27 20:03:33 +08:00
lzt404 9c67b9d40c feat(i18n): replace hardcoded Chinese messages with English 2026-09-27 16:33:50 +08:00
lzt404 ae5471642e fix: refresh app updates and apply the bundled core 2026-09-25 22:36:50 +08:00
lzt404 9ff9a6c317 fix(core): stabilize runtime status and separate service readiness 2026-09-19 00:36:18 +08:00
lzt404 050dbddca4 feat(network): auto-detect system proxy and keep user overrides 2026-09-18 18:17:31 +08:00
lzt404 18a9bfbaa9 fix(ui): unify bottom-right notifications and improve dialog interactions
- Move operation feedback into a shared floating stack to prevent layout shifts
- Allow identical errors to reappear after dismissal
- Support keyboard navigation, scrolling, and focus restoration in dialogs
- Add notification interaction regression tests
- Remove code comments throughout the project
2026-09-15 02:39:03 +08:00
lzt404 9042421292 fix(config): prevent API provider loss during alias updates and migration
- Validate provider integrity before saving alias changes
- Reject rendered YAML that differs from the expected configuration
- Abort migration when existing config cannot be read or parsed
- Remove lossy config recovery fallback
- Add regression tests for provider loss, locked files, malformed config, and repeated updates
2026-09-11 16:25:14 +08:00
lzt404 be2461befd fix(core): prevent orphaned Windows core processes from blocking updates
- Stop live core processes before updates, regardless of port availability
- Wait for process termination before replacing files
- Block new core operations and cancel startup during shutdown
- Attach the Windows Job immediately after spawning
- Abort updates and restarts when stopping the core fails
- Add lifecycle and file-lock regression tests; all 33 related tests pass
2026-09-09 12:13:57 +08:00
lzt404 53ef4dc264 fix(core): prevent startup failures after core updates
Atomically replace core files, recover from macOS SIGKILLs, and capture startup output for diagnostics.

Fixes #224
2026-09-08 13:35:08 +08:00
lzt404 08c915b18b fix(linux): prevent core shutdown when worker threads exit
- Spawn Linux core processes on a dedicated, persistent thread instead of temporary background workers.
- Preserve parent-death signaling to stop the core when the GUI exits.
- Keep existing process management and Windows/macOS launch behavior unchanged.
- Add regression tests for launcher thread exit, runtime shutdown, spawn failure recovery, and parent-process termination.
2026-09-06 13:18:44 +08:00
lzt404 9cf3878b28 perf: reduce background overhead and improve UI responsiveness
- Move blocking usage queries and core lifecycle operations to background
  workers, limit concurrency, and prevent overlapping core operations
- Coalesce statistics refreshes and consolidate category aggregations,
  reducing unfiltered analysis queries from 11 to 4
- Cache bundled model prices, reuse management API connections, and reduce
  redundant checks in the usage collector
- Throttle download progress and guide positioning updates, and avoid
  redundant renders when core status is unchanged
- Bound and coalesce configuration watcher events, and reuse a single
  model catalog refresh worker
- Stop scheduling remaining health checks when the dialog closes and
  limit backend health-check concurrency
- Replace overlapping OAuth polling with sequential requests, retry
  backoff, timeouts, and stale callback protection
- Add regression tests and a statistics benchmark script, and move
  performance verification documentation to agent_docs
2026-09-06 01:28:58 +08:00
lzt404 ccbe3a5625 fix(update): retry core downloads across available sources 2026-09-04 01:50:46 +08:00
lzt404 1df1f7808f fix: stabilize download source switching
- serialize app and core version checks to prevent state races
- keep the source selector responsive during background checks
- prevent stale fallback results from overriding recent selections
- style the custom source action and restore the compact selector width
2026-08-26 01:56:46 +08:00
lzt404 6d7da20e4e feat: add customizable download sources with automatic fallback
- support built-in and user-defined GitHub mirror sources
- add a modal for managing custom HTTPS mirror prefixes
- automatically switch sources when version checks fail
- persist the working source and sync the selector in real time
- update translations, configuration migration, and source tests
2026-08-26 01:56:46 +08:00
lzt404 03be4acf93 feat: add multi-source downloads with automatic fallback
- support GitHub, GitCode, gh-proxy, and ghfast sources
- automatically try other sources when version checks fail
- persist the working fallback source and sync the UI immediately
- update translations, configuration migration, and source tests
2026-08-26 01:56:46 +08:00
lzt404 647806386b fix: isolate core processes per installation directory
- Match core processes by their actual executable paths
- Prevent different EasyCLIProxyAPI installations from interfering
- Adopt orphaned core processes from the current cpa-core directory
- Rescan and terminate owned core processes during shutdown
- Enforce a single app instance per installation directory
- Clean up core processes that fail to enter the Windows job object
- Add multi-directory process isolation and instance lock tests
2026-08-26 01:56:46 +08:00
lzt404 32b47575b5 feat: redesign version management and restore core after updates
- Add a dedicated version management page
- Improve app, core, and model catalog status displays
- Preserve the core runtime state during updates
- Automatically restart the core after successful, failed, or cancelled updates
- Add tests for version management and core runtime restoration
2026-08-26 01:56:46 +08:00
lzt404 bb8f23cbc8 feat(version): add manual GitCode download source option
- Add a GitCode source toggle to Version Management
- Persist the preferred download source
- Prefer GitCode for app and core updates with GitHub fallback
- Add localized copy, documentation, and download-order tests
2026-08-26 01:56:46 +08:00
lzt404 2b9ceb11fb Dev (#164)
* chore(release): stop publishing legacy Windows update packages

* feat(agents): support OpenCode Desktop across platforms

Detect CLI and desktop installations on Windows, macOS, and Linux, and add separate launch and restart controls.

Closes #156

* fix(codex): align model display names and show total session count

- preserve runtime model identity in generated catalogs
- count distinct sessions across database and rollout sources
- update session count labels in all supported languages

* fix(codex): keep config and auth files in sync

- generate auth.json for API key configuration
- preserve and validate OAuth credentials
- include auth.json in transactional updates and rollback
- retain compatibility with legacy Codex configuration states

* fix(cpa-gui): update version to 0.2.59 in Cargo files

* fix(codex): preserve OAuth mode after closing configuration

* feat(config): add TLS management and protocol-aware local URLs

- add TLS controls to advanced settings
- persist certificate and private key paths
- restart the core after TLS changes
- switch WebUI, API and management URLs between HTTP and HTTPS
- synchronize agent configurations and detection with the active protocol

* refactor(config): reorganize network, routing, and TLS settings

- split network settings and session routing into separate tabs
- move TLS configuration into network settings
- preserve TLS restart and HTTPS URL synchronization behavior

* feat(config): add independent network settings and custom listen IP

* fix(navigation): allow access to usage records while core is stopped

* refactor(home): show a single API URL based on the configured listen IP

* feat(config): add file pickers for TLS certificate and private key
2026-08-23 17:56:13 +08:00
lzt404 11b1ea23a5 fix(core): preserve installed plugins during core updates
Overlay extracted core files onto the existing installation instead of
replacing the entire cpa-core directory, preserving plugins and user data.
2026-08-15 13:31:58 +08:00
lzt404 dbd97d862f fix(core): show processing state during automatic startup
- track automatic core startup in shared runtime state
- expose the starting state through CoreStatus
- disable core controls while startup is in progress
- clear the processing state after startup succeeds or fails
- add regression tests for startup state handling
2026-08-14 01:37:35 +08:00
lzt404 30fb184384 feat(settings): add automatic core startup preference
- add a default-enabled “Start Core on Launch” setting
- persist the preference in the GUI configuration
- automatically start the CPA core when the app launches
- keep the preference independent from manual core start and stop actions
- add multilingual labels and migration tests
2026-08-14 01:28:52 +08:00
Luis Pater b15d4d1e61 Refactor macOS Dock visibility control to use AppHandle API and clean up related helpers
Closes: #110
2026-08-11 02:21:04 +08:00
lzt404 906f68f566 refactor: modularize backend architecture and test suite
- split Tauri business logic out of main.rs by domain
- separate agent and core configuration submodules
- organize Rust tests by feature with shared test support
- split frontend locale resources
2026-08-10 13:30:45 +08:00