The journal cannot tell an upgrade's prerm removal from an explicit
uninstall, nor restore the previous enablement, so it must not trigger
an automatic reinstall. Upgrades from packages whose prerm removes the
Service are left unrecovered.
Refs #8515
Reinstall a Service removed by a previous prerm only when the old prerm
uninstalls unconditionally, this dpkg run completed a stop job for it,
and its group comes from that same invocation's stdout journal entries.
Hand the evidence to the postinst through a single-use file tied to the
old version and cleared by every preinst.
Refs #8515
Reinstall an existing Service while keeping its enabled, runtime-masked
and active state. Detect, from the journal, a running Service removed by
a previous deb prerm and reinstall it with its recorded group. Package
script output never reaches the app, so leave a /run marker that makes
the app offer a reinstall once when the Service is not ready.
Hold the core lifecycle until the package manager exits, even after the
startup install times out, so no core start overlaps the Service
reinstall; restart the app once a late install succeeds.
Refs #8515
The deb postinst and rpm %post now reinstall the Service in place when an
upgrade finds its systemd unit, reusing the unit's group so package-manager
runs without a sudo/pkexec user keep the same IPC access. First installs and
disabled, masked, or group-less units are left alone; failures warn and exit
0 because neither dpkg nor rpm can restore the previous Service from a failed
postinst.
The in-app updater stops a Service-run core before installing on Linux and
restarts it if the install fails, so the post-update restart does not fail on
the session lost when the Service restarts.
Refs #8515
delete_profile already forces a Core update with the planned profiles when
the current or last profile is removed, and restores state on rejection,
so the frontend enhance_profiles call repeated the same reload.
Assign Copilot once per eligible Renovate PR when current-head lint or
type checks fail. Reuse repository guidance and COPILOT_GITHUB_TOKEN.
Analyze minor dependency version sets separately, deduplicate dispatches,
and publish adoption suggestions without changing code or merge state.
Quote plain hex short-id values before YAML parsing, since a value like 1234e123 becomes a float that cannot be restored. Keep the rewrite only when nothing else changes, and let the editor save check a quoted copy.
- Drop tauri-plugin-process: no frontend or Rust consumer; exit and
restart already go through the exit_app/restart_app commands backed
by AppHandle::exit/restart. Remove the registration and the unused
process:allow-exit capability.
- Replace the glob dev dependency with Node's built-in fs.globSync in
prebuild's service permission step (Node baseline is 26.13.0).
- Remove unused direct Cargo declarations: bitflags and regex (source
and workspace entries), and src-tauri's criterion dev-dependency;
clash-verge-draft keeps criterion for its bench.
- Narrow sysinfo to the network/system features actually consumed.
- Use futures::StreamExt for DelayQueue in the timer and drop the
tokio-stream direct declaration (still transitively present via
clash-verge-service-ipc).
Refresh the tray menu, icon, and tooltip after service operations so restored TUN capability is reflected without changing the saved TUN setting.
Ref: e60285b4ae