Skip to content

core: add persisted user-default settings foundation - #4

Merged
codewiththiha merged 1 commit into
mainfrom
feature/settings-foundation
Aug 4, 2026
Merged

core: add persisted user-default settings foundation#4
codewiththiha merged 1 commit into
mainfrom
feature/settings-foundation

Conversation

@codewiththiha

Copy link
Copy Markdown
Owner

Adds the settings module to vmate-core (UserSettings struct persisted as JSON in ~/.config/vmate-cli/settings.json, with load/save/resolvers for scan max/limit/timeout and connect timeout/cooldown/retry-count/stability-grace, applying explicit flag -> persisted -> built-in default), the global --save-defaults flag, and Settings.save_defaults plumbing.

Foundation that follow-up branches wire into scan and connect.

Add a vmate-core settings module that persists user-chosen defaults for
scan/connect tunables to ~/.config/vmate-cli/settings.json. A missing or
corrupt file resolves to the built-in defaults, and each tunable resolves as
explicit flag -> persisted setting -> built-in default.

Also add the global --save-defaults CLI flag and the save_defaults field on
the vmate-cli runtime Settings so later branches can persist the explicitly
passed default flags, and document the feature in the README.
@codewiththiha
codewiththiha merged commit fae00f2 into main Aug 4, 2026
@codewiththiha
codewiththiha deleted the feature/settings-foundation branch August 4, 2026 04:18
codewiththiha added a commit that referenced this pull request Aug 4, 2026
- #1 builtin identity: BuiltinConfig::from_path + display_name centralize the
  path-layout parse; export_name and recent route through them (3 inline
  file_stem parses deleted)
- #2 scan pipeline: scan::scan_pipeline shared by scan and all; all.rs keeps
  only the connect half; report format unified
- #3 retry budget: pure RetryBudget type drives the retry/drop rules;
  ConnectService::run consults it instead of inline counters
- #4 settings persist: persist_scan/persist_connect live beside the resolvers
  in UserSettings; command-layer apply helpers deleted
- #5 process teardown: OpenVpnHandle owns kill_graceful; kill_handle deleted;
  the kill registry becomes a per-session ProcessRegistry threaded through
  spawn sites (hides the global, fixes cross-test killing)
- #6a/6b: journal_mode moves to db::pool; ScanProgress reports deltas

Flaky custom_retry_count test fixed (per-session registry + 30s handshake
timeout); full suite now stable across repeated runs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant