Commit Graph
69 Commits
Author SHA1 Message Date
lzt404 0c37f4d1bb feat(providers): add Devin OAuth and quota support
- Add Devin login to standard and simplified modes
- Support credentials, model aliases, and exclusions
- Display daily and weekly quotas with reset times
- Validate callbacks and prevent stale login updates
- Add translations, theme support, and integration tests
2026-09-15 02:39:03 +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 739c6e1711 feat(theme): support system appearance across desktop platforms
- Use Tauri native theme APIs with Linux desktop preference support
- Fall back to WebView theme detection for startup and browser preview
- Add a follow-system option to both standard and beginner modes
- Persist preferences and handle resume events and async race conditions
- Add translations and theme behavior and UI regression tests
2026-09-11 16:25:14 +08:00
lzt404 9ba87748f8 fix(agents): display resolved DeepSeek Harness context window values
- Read context limits from the core catalog and configuration
- Show numeric values with their source instead of automatic placeholders
- Preserve manual overrides and support resetting to inherited values
2026-09-11 16:25:14 +08:00
lzt404 4d8d549e04 feat(agents): add configurable DeepSeek Harness model catalog
- Separate default model selection from catalog configuration
- Use API metadata with per-model and provider overrides
- Expose documented capability, reasoning, protocol, and request settings
- Preserve customizations with conflict detection and transactional rollback
2026-09-11 16:25:14 +08:00
lzt404 145b585c3f fix(agents): detect ZCode in custom Windows install locations
- Discover installation paths from registry entries and shortcuts
- Handle installer records without InstallLocation
- Avoid launching the desktop app when version metadata is unavailable
- Add regression tests for path resolution and version detection
2026-09-11 16:25:14 +08:00
lzt404 9d0baa4c69 feat(agents): simplify configuration UI and expand restart support
- Add configuration management tabs to full and easy modes
- Share run controls and feedback while preserving drafts and Claude settings
- Support desktop app restarts and Harness Web restarts with original parameters
- Improve responsive layouts, keyboard navigation, and localization
- Add UI regression and isolated process restart tests
2026-09-11 16:25:14 +08:00
lzt404 6b5d88cf9b fix: preserve legacy Claude alias sources during reconfiguration
Resolve model sources before replacing role aliases and support legacy
API and OAuth configurations that retain only aliased model entries.

Add regression coverage for source priority, disabled providers,
cross-role updates, and transaction rollback.
2026-09-11 16:25:14 +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 88ea6f1c9a fix(agents): rebuild desktop routes from enabled providers
Do not treat managed aliases under disabled providers as usable Desktop routes. Match each route against its source on an enabled provider, skip disabled sources when creating aliases, and exclude disabled mappings when identifying direct aliases.

Validation: four regression tests fail before the fix and pass afterward; cargo test --locked (456 passed); cargo check --locked. After migrating the two affected live routes to the existing enabled source, Haiku and Opus messages requests both returned HTTP 200.
2026-09-11 16:25:14 +08:00
lzt404 ade2d50a69 fix(aliases): clear raw options when deleting and recreating aliases
Use one cleanup path for override and override-raw across model and Fast alias creation and deletion. Remove supported effort and service-tier keys while preserving unrelated parameters, selector conditions, other protocols, and grouped models.

Validation: cargo test --locked alias_ (72 passed), including raw High/Fast deletion followed by Low/non-Fast recreation, orphaned raw rules, conditional grouped rules, and all supported effort keys.
2026-09-11 16:25:14 +08:00
lzt404 a57c81e4e1 fix(aliases): preserve payload rules for surviving channels
Scope payload cleanup to the selected OAuth protocol and retain rules still used by surviving OAuth aliases, API mappings, or real models. Preserve protocol-free shared rules while any matching mapping survives, and limit creation cleanup to its source protocol.

Validation: cargo test --locked tests::alias_delete (6 passed), including Codex/Claude collisions, wildcard selectors, same-protocol OAuth channels, and API mappings.
2026-09-11 16:25:14 +08:00
lzt404 e84e576d1d fix(aliases): delete API aliases without reasoning overrides
Determine deletability from the actual provider model mapping instead of requiring an effort payload rule. Keep source models and unrelated aliases intact.

Validation: cargo test --locked tests::alias_delete (3 passed), covering all four API provider sections, removing every option in the editor, and real-model name collisions.
2026-09-11 16:25:14 +08:00
lzt404 69cc19679c fix(agents): restore desktop core routes with configuration history
Include CPA model aliases in Desktop history previews and revision checks. Restore routes and local history through a serialized transaction, rolling core changes back when local restoration fails. Reject legacy fixed-route snapshots without mapping metadata.

Validation: cargo test --locked tests::alias_save (13 passed), including successful route restoration, stale previews, local conflicts, core write failure, and rollback.
2026-09-11 16:25:14 +08:00
lzt404 0a019ad1d7 fix(tests): isolate agent configuration paths from user environment
Ignore inherited client configuration paths in test builds and enforce temporary-home boundaries for history fixtures.

Validation: 435 Rust tests pass, including a child-process regression with inherited client environment overrides.
2026-09-11 16:25:14 +08:00
lzt404 36d3181475 fix(aliases): prevent stale edits and preserve payload rules
- Validate configuration revisions and reject ambiguous model mappings
- Preserve raw overrides, conditions, and unchanged settings
- Serialize saves and restore configuration after write failures
- Add regression coverage and remove comments from affected files
2026-09-11 16:25:14 +08:00
lzt404 7c9b8897ed fix(aliases): preserve configuration when editing model aliases
Resolve existing aliases from their configuration, preserve metadata and unrelated payload parameters, and keep shared rules intact when renaming or changing sources.

Fix dialog feedback, keyboard focus, and narrow layouts. Add regression coverage for alias edits and browser interactions.
2026-09-11 16:25:14 +08:00
FakeTrader ee223424af feat(aliases): support editing model aliases 2026-09-11 16:25:14 +08:00
lzt404 7acc0e9c74 feat(agents): improve configuration workflow and add history recovery
- Update configuration files directly while preserving custom settings
- Add versioned backups, restore previews, and managed-field recovery
- Detect first-time setup, outdated configuration, and invalid files
- Add conflict detection and rollback for multi-file updates
- Simplify configuration actions and clarify OAuth mode
- Add backend and UI regression coverage
2026-09-11 16:25:14 +08:00
lzt404 898cf080d3 fix(core): retry Windows file replacements blocked by transient locks
- Retry errors 5, 32, 33, and 1175 up to five times with exponential backoff
- Preserve the final error and avoid retrying partial replacement failures
- Add eight regression tests covering transient and persistent file locks

Closes #241
2026-09-09 14:59:23 +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 70ed5bc7f2 feat(agents): update DeepSeek Harness integration for current DSH
- write credentials using the versioned refs schema
- repair misplaced EasyCLIProxyAPI credential keys
- add Web, Headless, ACP, SDK and custom profile launch options
- track and safely stop managed DSH process trees
- detect occupied Web ports before launch
- add localized UI and regression tests

Fixes #207
2026-09-08 19:39:34 +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 08ee8ca8d3 fix(zcode): remove incompatible npm provider field
Stop writing the OpenCode-specific npm field and clean up values
left by earlier versions when synchronizing ZCode configuration.
Add regression coverage for both app and CLI configs.

Closes #231
2026-09-08 13:35:08 +08:00
lzt404 34cab99a0a fix(agents): detect the correct Codex App version on Windows 2026-09-06 19:02:49 +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 3f03158f5e fix(codex): align fallback metadata and remove stale models automatically
- Align fallback defaults and instruction structure with upstream Codex while preserving Fast availability for all models
- Stop forcing fallback reasoning levels or inferring original-image support
- Sync managed catalogs on model refresh, configuration changes, and every 30 seconds
- Remove unavailable models, replace missing defaults, and handle empty-list recovery
- Preserve existing configuration on request failures or invalid responses
- Serialize refreshes, update UI model lists, and preserve backups across restarts
- Add regression coverage for fallback compatibility, stale-model cleanup, and configuration recovery
2026-09-05 18:05:57 +08:00
lzt404 ccbe3a5625 fix(update): retry core downloads across available sources 2026-09-04 01:50:46 +08:00
lzt404 bf6177e15a fix(codex): preserve OAuth configuration across updates
- preserve the active Codex OAuth mode in legacy configuration paths
- retain unsaved OAuth selection when navigating between clients
- add regression coverage to prevent OAuth credentials from being overwritten
2026-09-04 01:50:46 +08:00
lzt404 e3551f0e3c feat(config): complete logging and diagnostics management
- persist and migrate CPA logging settings with validation and rollback
- add logging controls, commercial-mode restart, and log-folder access
- streamline diagnostics UI and update localized copy
- move test-only catalog helper to eliminate dead-code warnings
2026-09-04 01:50:45 +08:00
lzt404 2c40691240 feat(settings): add request log diagnostics toggle
- add log diagnostics card under basic settings
- persist and synchronize CPA request-log configuration
- support configuration migration and rollback on save failure
- add localized UI copy and responsive styles
- add tests for request-log parsing and YAML merging
2026-09-04 01:50:45 +08:00
lzt404 cff6a21974 feat(model-aliases): restore Fast service-tier option
- enable Fast for Codex API, OpenAI-compatible, and Codex OAuth sources
- apply service_tier=priority as an independent payload override
- support Fast-only and reasoning-effort combinations
- disable Fast until a supported model source is selected
2026-09-03 02:44:48 +08:00
lzt404 708a834e24 Dev (#198)
* fix(gitignore): add .codex to ignored files

* feat(settings): add configurable default terminal for CLI agents

- Add default terminal selector under Advanced Settings > Software Settings
- Detect available terminals across macOS, Windows, and Linux
- Persist and migrate the default-terminal configuration
- Apply the selected terminal when launching CLI agents
- Add localized labels and regression tests

Fixes #179

* feat(easy-mode): improve API onboarding and agent configuration flow

- Fix management API 404 errors when saving API providers
- Simplify the model list and support custom model IDs
- Adjust API field order and default provider selection
- Reuse the full agent configuration page and restore agent detection

* refactor(agents): simplify embedded beginner mode UI

* style(easy-mode): align onboarding heading typography

* fix(easy-mode): refine API onboarding actions and notifications

- Reveal model selection and save actions only after fetching models
- Move the API save success toast to the bottom-right corner
- Auto-dismiss the success notification after a short delay
- Remove icons from the model fetch and save buttons

* feat(easy-mode): refine guided setup flow and spotlight positioning

- Enforce completion of each selection, input, and configuration step
- Align OAuth, API access, and agent setup guidance with actual UI actions
- Prevent guidance cards from overlapping highlighted areas
- Improve bilingual step descriptions and completion states

* feat(easy-mode): refine onboarding flow and navigation controls

- Enforce accurate step validation for OAuth and API setup
- Select all fetched API models by default
- Prevent guide cards from overlapping highlighted areas
- Improve onboarding copy and remove unnecessary dashboard actions
- Reposition and highlight guide and exit controls

* fix(usage): filter control messages and repair unknown records

- filter empty, null, refresh, and support_refresh messages before persistence
- require request_id for usage records
- repair Claude cache token accounting
- delete historical unknown records
- show deleted record count in usage management

* fix(ui): improve auth file and core install notifications

- show auth file operation notices as auto-dismiss toasts
- prevent duplicate core install completion notifications
- close the install dialog automatically after successful installation
- bump core version to 7.2.146

* fix(ui): improve responsive layouts and core install notifications

- add workspace container breakpoints for management and usage pages
- make the usage table fill the available viewport height
- reduce unnecessary blank space in usage records
- silence automatic bundled core install completion notifications
- deduplicate manual core install completion feedback

* chore(version): update core version to 7.2.147

* fix(management): bypass system proxy for local Core requests

* fix(claude-desktop): support Claude OAuth model aliases

- Resolve Claude Desktop model sources from all OAuth definitions
- Write managed aliases to the matching OAuth channel
- Preserve alias metadata and add regression coverage

* test(claude-desktop): cover xAI OAuth model aliases

* feat(config): add disable cooling toggle to retry settings

* feat(config): add disable cooling toggle and refine settings layout

* fix(dependencies): update cpa-gui version to 0.2.69
2026-09-02 16:59:09 +08:00
lzt404 79b50b7a2b feat(settings): add configurable default terminal for CLI agents
- Add default terminal selector under Advanced Settings > Software Settings
- Detect available terminals across macOS, Windows, and Linux
- Persist and migrate the default-terminal configuration
- Apply the selected terminal when launching CLI agents
- Add localized labels and regression tests

Fixes #179
2026-08-30 18:48:01 +08:00
lzt404 50df18067b fix(agent): propagate discovered PATH to agent subprocesses
Prioritize the agent executable directory while preserving discovered
search paths for Pi package operations and CLI version probes.

Add coverage for PATH ordering and downstream command resolution.
2026-08-26 22:46:23 +08:00
lzt404 8c80ce1151 fix(model-alias): apply reasoning effort overrides by model source
- Decouple reasoning effort from the Fast service tier
- Generate native override parameters for each provider
- Validate efforts against the model’s supported levels
- Preserve complete reasoning capabilities on configured models
- Add coverage for multi-provider alias overrides
2026-08-26 01:56:46 +08:00
lzt404 58e58df374 fix(usage): align table width and reduce default window size
- stretch the usage table to match card width
- set the default window size to 1280 × 800
- migrate the legacy default window dimensions
- add coverage for window size migration
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 68da51bae0 Dev (#172)
* 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

* fix(usage): distinguish client cancellations from request failures

- persist usage failure status and response details
- classify HTTP 499 and canceled contexts separately
- exclude canceled requests from failure statistics
- add canceled filtering and failure details to the usage UI
- migrate and backfill existing usage records

* feat(ui): revamp usage records and improve app interactions

- redesign usage records dashboard, filters, charts, and pricing views
- add resizable centered columns with persisted widths
- expose OpenCode desktop launch and restart actions
- suppress the API access enabled success notice

* feat(agents): persist applied configurations across app restarts

- preserve applied agent configs and managed Claude aliases on exit
- keep explicit close actions restoring original configurations
- add Codex restart persistence regression coverage
- bump desktop version to 0.2.61

* fix(model-aliases): support provider-aware OAuth aliases

- map OAuth aliases to their correct provider channels
- support Antigravity aliases with force mapping
- read and delete aliases by their exact OAuth channel
- refresh the runtime model registry after alias changes
- restrict Fast aliases to GPT models from OpenAI-compatible or Codex sources

* docs(readme): add APIMart sponsorship sections

- add English and Chinese sponsor descriptions
- add localized APIMart banner images
2026-08-24 17:16:00 +08:00
lzt404 3d44eba492 Dev (#166)
* 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

* fix(usage): distinguish client cancellations from request failures

- persist usage failure status and response details
- classify HTTP 499 and canceled contexts separately
- exclude canceled requests from failure statistics
- add canceled filtering and failure details to the usage UI
- migrate and backfill existing usage records

* feat(ui): revamp usage records and improve app interactions

- redesign usage records dashboard, filters, charts, and pricing views
- add resizable centered columns with persisted widths
- expose OpenCode desktop launch and restart actions
- suppress the API access enabled success notice

* feat(agents): persist applied configurations across app restarts

- preserve applied agent configs and managed Claude aliases on exit
- keep explicit close actions restoring original configurations
- add Codex restart persistence regression coverage
- bump desktop version to 0.2.61
2026-08-23 23:20:40 +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 d0bd5a890a Dev (#162)
* 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
2026-08-23 16:19:03 +08:00
lzt404 93fe5baa54 Dev (#160)
* 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
2026-08-22 23:58:05 +08:00
lzt404andFake Trader 57c5f5d774 Dev (#157)
* fix(macos): restore main window on application reopen (#148)

Handle macOS RunEvent::Reopen when no window is visible. Fixes #147.

* fix(version): update core version to 7.2.138

* fix(macos): persist OAuth credentials across DMG upgrades

Migrate app-bundle auth directories to Application Support before updating configuration and prevent future bundle-local OAuth storage.

Fixes #153

* fix(kernel): stop the core before updating

* fix(i18n): use consistent stop terminology for core controls

* fix(opencode): support macOS JSONC configuration detection

Closes #156

---------

Co-authored-by: Fake Trader <9635792+faketrader@users.noreply.github.com>
2026-08-22 15:39:28 +08:00
lzt404andFake Trader c3f1c6e52c Dev (#154)
* fix(macos): restore main window on application reopen (#148)

Handle macOS RunEvent::Reopen when no window is visible. Fixes #147.

* fix(version): update core version to 7.2.138

* fix(macos): persist OAuth credentials across DMG upgrades

Migrate app-bundle auth directories to Application Support before updating configuration and prevent future bundle-local OAuth storage.

Fixes #153

---------

Co-authored-by: Fake Trader <9635792+faketrader@users.noreply.github.com>
2026-08-22 01:50:21 +08:00
lzt404 3ec3d18136 fix(update): repair signed macOS auto-update flow
Closes #143
2026-08-21 17:28:05 +08:00