113 Commits
Author SHA1 Message Date
Qiu Yuzhou fbd0ab8680 feat: add status bar runtime dots toggle 2026-10-31 17:30:53 +08:00
Qiu Yuzhou 9788ffe484 feat(rules): fix custom rule actions to their scheme 2026-10-30 20:40:20 +08:00
Qiu Yuzhou eca913f2ab style: emphasize system proxy action buttons 2026-10-28 19:05:56 +08:00
Qiu Yuzhou 3e3749e3a6 feat: show runtime status dots in menu bar 2026-10-28 18:56:07 +08:00
Qiu Yuzhou 9ccee1fc53 refactor(servers): simplify latency details 2026-10-27 01:19:35 +08:00
Qiu Yuzhou e9c13c97b1 feat: add About entry to status menu 2026-10-26 19:58:55 +08:00
Qiu Yuzhou 923f004527 feat: add third-party components and licenses window 2026-10-26 19:53:38 +08:00
Qiu Yuzhou 35c74d40c5 feat: bundle offline dependency provenance and license metadata 2026-10-26 19:06:38 +08:00
Qiu Yuzhou 8d1c1260ee fix(l10n): use natural Chinese rule preset label 2026-10-26 02:12:53 +08:00
Qiu Yuzhou f3ba330cf4 refactor: centralize subscription automatic update transitions 2026-10-25 22:06:39 +08:00
Qiu Yuzhou 34caebf322 feat: add GUI-scoped subscription automatic updates (#1516)
* feat: add GUI-scoped subscription automatic updates

* fix: drain newly due subscription updates during a batch

* style: use segmented subscription update pickers
2026-10-25 20:21:06 +08:00
Qiu Yuzhou 0fade3a17a fix: use semantic subscription prompt style 2026-10-25 17:06:42 +08:00
Qiu Yuzhou 171e889a04 fix: align subscription sheet styling 2026-10-25 17:06:42 +08:00
Qiu Yuzhou 813ae99090 style(ui): refine picker presentation 2026-10-25 14:32:12 +08:00
Qiu Yuzhou f6abd4343e feat(rules)!: add isolated routing presets
Add Mainland China proxy routing with independent rule workspaces.
Preserve existing routing choices through equivalent preset mappings.

BREAKING CHANGE: existing custom rules and enablement settings are
not migrated. Recreate them in the appropriate preset.
2026-10-25 14:32:12 +08:00
Qiu Yuzhou c708cd8d19 feat(ui): debounce transient status rows via shared display gate
The home run-control card and the menu-bar status card render the agent
and system-proxy status rows straight from snapshot replacements, so fast
operations (e.g. proxy mode switches) flash transient states like
"applying" before settling.

Add a presentation-layer debounce shared by both surfaces:

- TransientDelayGate: per-stream gate where stable values display
  immediately, transient values (starting/applying/repairing) display
  after 400 ms and are dropped when superseded, and displayed transients
  are held for at least 400 ms.
- StatusDisplayModel: app-level shared model deriving agent and
  system-proxy payloads (row + detail + hint) from workflow snapshots
  through two independent gates; domain facts keep their cadence.
- Wire the model through the composition root into RuntimeControlCard
  and StatusCardView; toggles, approval actions, the difference view and
  target/mode rows keep reading the raw snapshot.
2026-10-24 02:22:39 +08:00
Qiu Yuzhou 2fdcb5ab93 refactor(test): drop source-scanning openWindow guard 2026-10-24 00:50:07 +08:00
Qiu Yuzhou e88eb335b8 refactor(diagnostics): remove status cards 2026-10-23 19:39:53 +08:00
Qiu Yuzhou c3a5cccb09 feat(home): add runtime status dots 2026-10-23 19:31:30 +08:00
Qiu Yuzhou d3faf610c1 feat(diagnostics): add selectable log table 2026-10-23 19:25:33 +08:00
Qiu Yuzhou b6b9349d64 style: resolve SwiftLint violations 2026-10-23 01:10:40 +08:00
Qiu Yuzhou 1a98f0e7f5 feat(plugins): show plugin versions and links 2026-10-21 17:22:50 +08:00
Qiu Yuzhou ad73668732 style(home): emphasize activation action 2026-10-21 16:19:59 +08:00
Qiu Yuzhou 1d85e86b8e feat(diagnostics): unify log lines into one filtered view
Collapse the four definitions of "one log line" into LogLine (timestamp,
level, source, text) with a single renderer and parser. agent.log lines
now carry the uniform prefix, absorbing the ssxng: event marker into the
source column; legacy lines degrade to raw display without rewriting.
Level detection moves into the row model with a classic three-level
taxonomy whose unified-log projection stays unchanged.

The diagnostics log view merges GUI events and the agent.log tail through
DiagnosticLogIntake into one time-ordered list with level and source
filters; the tail window logic moves into the intake and blank lines are
kept for raw fidelity. The report whitelist projection and unified-log
routing are unchanged.
2026-10-20 14:42:51 +08:00
Qiu Yuzhou ba01e305c5 feat(servers): mark groups containing the active target with a hollow bolt
Ancestor groups of the active target now show a hollow bolt beside the
existing filled bolt on the target itself, in the servers tree, the
favorites table and the home target browser; the node detail subtitle
shows "含活动目标". The derivation lives in
CatalogTreeSnapshot.ancestors(of:) so every surface shares one rule
while activeTargetID stays a runtime fact outside the catalog
projection. Groups activated directly keep the filled bolt and leave
their member rows unmarked.
2026-10-20 01:03:54 +08:00
Qiu Yuzhou 003e40d809 refactor(ng2): encrypt proxy listening configuration 2026-10-19 14:31:18 +08:00
Qiu Yuzhou d39b896192 fix(ui): avoid feedback state isolation warnings 2026-10-19 09:51:58 +08:00
Qiu Yuzhou 985153cd56 refactor(rules): separate rule values from storage models 2026-10-19 09:42:38 +08:00
Qiu Yuzhou 507917ab67 refactor(ng2): store secrets directly in server library records 2026-10-18 17:58:30 +08:00
Qiu Yuzhou 6cbef4e57a refactor(connectivity): store test URL in user defaults 2026-10-18 08:31:13 +08:00
Qiu Yuzhou d8a11f7b6b feat: encrypt persistent server library 2026-10-18 07:57:10 +08:00
Qiu Yuzhou 27b91d60e1 refactor(settings): drop listen-settings ghost path and error-type mirrors 2026-10-17 14:34:57 +08:00
Qiu Yuzhou 9cd1bd1961 fix(home): rename terminal proxy command card 2026-10-16 03:40:17 +08:00
Qiu Yuzhou 7bd0cb44cb refactor(ui): share detail feedback timing lifecycle 2026-10-16 01:46:01 +08:00
Qiu Yuzhou 1be0976bc6 feat: show subscription usage in detail properties footer 2026-10-16 01:01:56 +08:00
Qiu Yuzhou d123497fe4 refactor(ui): reorganize server node context menu 2026-10-16 00:31:38 +08:00
Qiu Yuzhou cc0f0a9513 style(home): refine control card presentation 2026-10-16 00:10:15 +08:00
Qiu Yuzhou d3fc15dfdf refactor(ui): remove home quick action card 2026-10-15 23:03:15 +08:00
Qiu Yuzhou 309e81c003 feat(ng2): add icon to subscription update button 2026-10-15 22:36:08 +08:00
Qiu Yuzhou ab5479a7e7 fix(ui): clarify proxy mode server requirement 2026-10-15 22:15:30 +08:00
Qiu Yuzhou 3044ca72d1 feat(settings): redesign connectivity test link row 2026-10-15 21:48:58 +08:00
Qiu Yuzhou 3f900b7b03 fix: remove bulk connectivity test controls 2026-10-15 21:08:29 +08:00
Qiu Yuzhou 4a85cf41f7 feat(localization): cover all app-facing text in Chinese and English 2026-10-15 20:03:37 +08:00
Qiu Yuzhou 8319aa8ca9 fix(servers): separate detail actions into two rows 2026-10-15 19:36:45 +08:00
Qiu Yuzhou 7bf46eb173 feat(settings): add application language selection 2026-10-15 19:07:25 +08:00
Qiu Yuzhou 297fc30c41 feat(connectivity): measure warmed HTTP latency phases 2026-10-15 17:39:13 +08:00
Qiu Yuzhou 82672d6e10 refactor(ui): remove top-level subscriptions page 2026-10-15 00:47:19 +08:00
Qiu Yuzhou ea064a5c8a refactor(servers): remove list sorting 2026-10-15 00:45:52 +08:00
Qiu Yuzhou a8fedace16 fix(servers): show subscription creation in subscription toolbar 2026-10-14 23:30:40 +08:00
Qiu Yuzhou 9bccdf460a feat(servers): manage subscription root links 2026-10-14 23:08:42 +08:00