Kumo logoKumo

Sparkle feature parity

A capability-by-capability comparison between Kumo and its reference Sparkle implementation across core, runtime, controller, system proxy, Sub-Store, and UI surfaces.

Kumo tracks Sparkle as a product-capability reference, not as an Electron implementation target. The goal is to keep Kumo native to macOS while reaching equivalent coverage for Mihomo control, system integration, diagnostics, updates, and backup workflows.

Status Legend

  • implemented: usable through shared KumoCoreKit behavior.
  • partial: a visible or persisted surface exists, but parity is incomplete.
  • planned: no complete implementation yet, but the architecture has a place for it.
  • deferred: intentionally postponed until a prerequisite is stable.

Capability Matrix

AreaCapabilityKumo StatusPrimary Kumo OwnerAcceptance Point
CoreLocal Mihomo process start/stop/restartimplementedCoreSupervisorkumo start --json, kumo stop --json, and stale PID recovery work.
CoreManaged Mihomo core installpartialCoreInstallerStable and preview channels can install, verify, cache, and report versions.
CoreStartup readiness statespartialCoreSupervisorUI can distinguish launched, controller ready, providers ready, and failed.
CoreGraceful shutdown with timeout escalationimplementedCoreSupervisorStop attempts graceful termination before force kill, uses a PID file fallback, and persists failures.
RuntimeStructured runtime config mergeimplementedRuntimeConfigBuilderProfile, overrides, and Kumo-owned keys merge with deterministic precedence.
RuntimeConfig cleanup and normalizationplannedRuntimeConfigBuilderEmpty/default Mihomo fields are removed before writing runtime YAML.
ProfilesLocal profile import and editimplementedProfileRepositoryLocal YAML can be imported, edited, selected, and deleted safely.
ProfilesRemote profile refreshimplementedProfileRepositoryRemote subscriptions refresh manually and on due intervals.
ProfilesSubscription metadata retentionpartialProfileRepositoryHeaders persist name, home URL, update interval, user info, UA, and fingerprint.
OverridesOrdered YAML overridespartialOverrideRepositoryGlobal and profile-scoped YAML overrides apply in documented order.
OverridesJavaScript transformsdeferredOverrideRepositoryRequires a reviewed sandbox strategy before enablement.
ControllerProxy groups and selectionimplementedMihomoControllerClientGroups load, filter hidden entries, and allow node selection.
ControllerOutbound mode switchingimplementedKumoAppStore / MihomoControllerClientRule / Global / Direct changes persist locally, PATCH Mihomo /configs, close existing connections, and refresh proxy groups without blocking the Start / Stop toolbar action.
ControllerRules, connections, providers, geo updatespartialMihomoControllerClientInspect and Configure pages expose controller actions without direct UI clients.
ControllerTraffic, memory, logs, and lifecycle eventspartialMihomoControllerClientEvent streams use bounded caches and survive transient disconnects.
CLIStable agent-friendly JSON commandspartialKumoCLIEvery command has --json, stable envelopes, and deterministic exit codes.
System ProxyManual macOS system proxyimplementedSystemProxyControllerDry-run and real commands configure web, secure web, and SOCKS proxy.
System ProxyActive service detection and restoreplannedSystemProxyControllerKumo detects network services and restores previous proxy settings on disable.
System ProxyPAC hosting and guardplannedSystemProxyController / KumoServicePAC and auto-restore run only after service-mode support exists.
ServicePrivileged service backendplannedKumoServiceGUI and CLI can switch backend without public command changes.
ServiceSigned local service requestsplannedKumoServiceRequests use key material, timestamps, nonces, and body hashing.
Sub-StorePersisted configurationimplementedSubStoreManagerStatus, local resource version, backend port, cron settings, proxy mode, LAN mode, and custom backend settings persist.
Sub-StoreLocal lifecycle managementimplementedSubStoreManager / SubStoreSupervisorBundled Node sidecar + sub-store.bundle.js are prepared on demand; Kumo starts, stops, and restarts the backend.
Sub-StoreNative management UIimplementedKumoApp.SubStoreView / SubStoreClientSwiftUI surfaces subscriptions, collections, files, modules, artifacts, archives, tokens, settings, and logs by talking to the backend over HTTP.
ResourcesProxy/rule provider managementpartialMihomoControllerClientProviders list, update, and show useful metadata in Configure.
DiagnosticsConnections and logs inspectionpartialMihomoControllerClient / KumoAppStoreActive/closed connections, close actions, filtering, and live logs are available.
BackupExport/import local stateplannedKumoCoreKitProfiles, overrides, settings, Sub-Store status, and service settings round-trip.
UpdatesApp update channel and installerplannedDistribution layerStable/beta app updates verify signatures and coordinate core/proxy state.
UINative Daily / Inspect / Configure IAimplementedKumoAppAdvanced features remain secondary to the daily connection workflow.
UISparkle-level advanced controlspartialKumoAppStore / ViewsProxies, connections, rules, logs, profiles, and settings reach feature parity.
QualityCoreKit unit testspartialKumoCoreTestsRuntime, profile, override, state, proxy, and controller mapping tests pass.
QualityCLI, service, and UI store testsplannedTestsJSON snapshots, service auth/fallback, and store state transitions are covered.

Implementation Order

  1. Stabilize the structured configuration pipeline and controller contract tests.
  2. Expand runtime supervision and event streams while keeping local process mode as the default.
  3. Add system proxy restore and service-ready abstractions before privileged service installation.
  4. Build Sub-Store, backup, update, and advanced UI features on the stabilized control layer.
  5. Raise release quality with CLI snapshots, service tests, migration tests, and manual QA checklists.

Non-Goals

  • Do not port Sparkle's Electron renderer or giant IPC surface.
  • Do not add JavaScript overrides until sandboxing and audit behavior are explicitly designed.
  • Do not make TUN, PAC guard, or privileged networking part of the primary daily workflow before service mode is ready.

On this page