Changelog
Changelog
All notable changes to Project Super will be documented in this page. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Looking for what’s planned next? See the public Roadmap / Backlog (P0/P1/P2 and longer-term directions).
[Unreleased]
[1.7.0] - 2026-09-27
Added
- Cron runtime cap (
kill_after_secs). Scheduled runs can now be bounded in wall-clock time: when a run exceeds the cap, the supervisor terminates it through the standard graceful path (SIGTERM, then SIGKILL afterstopsecs) and records acron_overtime_killevent; the schedule keeps firing. Overtime kills are not counted as failures, and cron jobs remain exempt from flapping detection. Set per program via stack files,super add/update --kill-after-secs, the API, or the Dashboard cron section.0disables. - Transactional installs with rollback.
install.shstages binaries beside their destinations and promotes them with same-filesystem renames — the previous pair stays in place until both new names are live. Every config/profile write (instance root,env.sh, login hooks,/etcdrop-ins) is journaled for exact restore, and systemd, launchd, and rc.d installs snapshot the prior unit / plist / rc.d state and roll back service, binary, and file changes on any failure. The install smoke injects failures through PATH-localsystemctl/launchctl/servicedoubles and asserts byte-exact restoration.
Changed
- Project Super is production-ready; the public beta is concluded. The public GA checklist is met in full: panic-free handling of malformed config and API input (the remaining startup
expects are removed), transactional OTA and installs, fail-closed security defaults,super doctoroperability, and a versioned REST API / plugin C ABI — withcargo auditclean on the release branch. The free 90-day Super Pro trial continues unchanged.
Security
- Updated
rustlsto 0.23.45 (RUSTSEC-2026-0285, TLS 1.3 handshake message validation).
Fixed
super stopon a cron program now holds the schedule — across daemon restarts. Two defects compounded: the cron tick path never checked the held-stopped flag, so a manually stopped cron program was respawned by the next one-second firing; and the held-stopped mark was in-memory only, so any daemon restart resurrected previously stopped programs. The tick now gates firing admission (and queued firings) on the flag, the flag persists in the snapshot (legacy-format snapshots still load), and every stop/start path — single, group, batch, and the two-phase restart — flushes the state to disk immediately.super startclears the hold and resumes the schedule.- No known panic paths remain outside tests. Remaining startup
expects are gone: signal-handler installation failures (SIGTERM/SIGINT) surface as a startup error instead of panicking inside the shutdown future, an empty[server].auth_secretbails with a clear message, health-probe HTTP client init failures fail the probe instead of the daemon, and a resource-monitor thread spawn failure aborts bootstrap with a diagnostic. Completes the Stability criterion of the production-readiness contract. - Installer honors
--no-starton macOS. The launchd path bootstrapped the job before looking at the flag, andRunAtLoad+KeepAlivestarted superd immediately despite the message claiming otherwise. The daemon plist is now only written; superd starts at the next login/boot, matching the systemd enable-only path and the documented flag semantics. - Installer runs on a pristine FreeBSD base system. Downloads fall back from
curlto basefetch(1), and checksum verification accepts basesha256 -qalongsidesha256sum/shasum; missing-tool errors name the accepted alternatives. The install smoke also passes its fakeservicecommand through the documentedSUPER_INSTALL_SMOKE_SERVICE_CMDvariable (it previously set a name the installer never read) and asserts that--no-startnever registers the launchd job.
[1.6.0] - 2026-09-14
Added
- Program provenance labels (
source). Every program now carries asourcelabel recording the write path that last created or updated it:cli:add,cli:update,stack:<file>(super apply),include:<file>([include]stacks at boot/reload),import:<format>(super import supervisor), or any caller-supplied value on direct API use. Shown in the program detail view —super info(Source:line) and the program detail API (config.source); it is intentionally not part of the list summary. Empty string clears, omit leaves unchanged (max 128 chars, no control characters). Makes “where did this program come from?” answerable during migrations and audits. super import supervisor <file>— import an existingsupervisord.confas a Super stack. Parses INI (comments, line continuations), follows[include] files=(glob + cycle detection), expands%(ENV_…)/%(here)s/%(program_name)s, and maps the shared field vocabulary (commandargs,autorestart,stopwaitsecs,priority,numprocs+%(process_num)02dtemplates,redirect_stderr, …). Everything that cannot map faithfully is reported as a structured warning (rotation-related keys collapse into one warning per program). Safety: imports never prune,--no-startimports everything stopped,--dry-runand--emit-toml <file|-|>work without a daemon. Name collisions are a three-way choice via--on-collision skip|rename|override:skip(default) leaves existing programs untouched,renameimports side by side under{name}-{suffix}(random hex or--collision-suffix <text>, unique against daemon and batch, old→new mapping shown in plan and report — the gray-release path),overrideupdates in place behind a typed confirmation (--yesalone never escalates). The interactive prompt ([y/r/o/N]) offers the same choice when no flag is given. Apply re-checks names after confirmation to avoid mid-prompt races. See Import tool and the CLI reference. A PM2ecosystem.config.jsconverter remains deferred (manual mapping on the PM2 migration page).
Security
- Constant-time Bearer compare for OSS
auth_secretand the security plugin token path. - Corrupt
tokens.jsonrefuses to start (fail-closed) with recovery steps in the FAQ. /metricsrequires Bearer when API auth is enabled (no longer scrape-exempt).- Dashboard session: profile/token mismatch logs out instead of showing a fallback identity.
- Startup warning when
conf/super.tomlis world-readable and containsauth_secret.
Notes
- Workspace 1.6.0; pair with commercial plugin packages
super-plugins-1.6.0-….
[1.5.7] - 2026-09-12
Changed
- Dashboard shell is embedded in OSS
superd. Process overview, logs, stack editor, and related shell pages no longer require theuiplugin. The subscriptionuiplugin now delivers Pro extensions only (Access Tokens UI, Notification Settings including inhibition rules and delivery history, process hot-reload, and matching nav entries). See Dashboard and the feature matrix. - Dashboard slot contract tests in OSS CI.
dashboardrunsnpm test(vitest) before the production build;tests/slots.spec.tsguards slot names,context.processfields, and mount-site:contextshapes. Do not skip or weaken these tests without understanding the plugin UI contract (ui-bridge.d.ts). - OSS core auth is
auth_secret-only under[server]. Non-empty[server].auth_secretenables the single admin Bearer. Non-loopback TCP without a secret (and without thesecurityplugin) refuses to start. Top-levelauth_secretkeys are rejected (no compatibility). Nodata/auth.key, noauth_required/allow_insecure_public_bindknobs. Docker OSS image ships a placeholder under[server](change before public exposure). See Authentication.
Fixed
- Dashboard footer shows Community vs Licensed from runtime
edition(OSS no longer always says Licensed). - Pro UI stylesheet load order: plugin
ui.cssis inserted before the shell CSS so shared utilities like.hiddencannot override hostmd:flexand collapse the desktop nav.
Notes
- Workspace 1.5.7; pair with commercial plugin packages
super-plugins-1.5.7-….
[1.5.6] - 2026-09-07
Fixed
- Batch restart honors dependency order:
super restart @group/restart all(and any multi-target restart) now run as one coordinated two-phase cycle — all targets stop in reverse dependency order, the daemon waits for them to exit, then all targets start in dependency order. Previously each target restarted independently, so a dependent (e.g. an edge proxy) could come back before its dependency was healthy and park inWaitingmid-operation. Groupstart/stopfollow the same ordering;prioritybreaks ties. Single-namerestartkeeps its stop-then-start semantics. See Ordered group operations. - Dependency cycles are rejected up front: configurations that would close a
depends_oncycle (including one formed incrementally across separate updates) are refused at submit time with the cycle members listed, instead of leaving both services stuck inWaitingat runtime. - Flapping no longer fires on dependency waits: start attempts that stop at the
depends_ongate do not count toward flapping; only real spawn attempts do. - Held-stopped dependencies stay stopped: a program stopped with
super stopis not revived by a dependent’s auto-start path. start_period_secsis a grace window: probes run immediately after start; failures inside the window do not count towardmax_failures, and the first success ends the grace early.
Changed
- Positioning and docs: edge / cloud-edge focus (no IoT claim); extension docs corrected for real hook call sites (
before_stopreserved,after_stopon exit + remove,after_startfail-secure). - Roadmap: AI-agent infrastructure under P1;
delay_secsandbefore_stopwire-or-remove under P2; P0 import work sequenced behind aStackFormatparser layer.
Notes
- Workspace 1.5.6; pair with commercial plugin packages
super-plugins-1.5.6-….
[1.5.5] - 2026-09-05
Changed
/go/pro/: primary CTA is Request a free 90-day trial → Portal claim; Afdian checkout is the optional ¥10 / month open-source sponsorship only (no Pro plugins/key).- Pro beta trial lengthened from 1 month to 90 days (Portal claim + public docs). Purchased annual keys keep the 365-day term.
- License upgrade / renew links (
LICENSE_UPGRADE_URL, Dashboard renew CTA fallback) now point to Get Super Pro instead of the feature matrix (matrix remains for edition comparison). - Feature matrix docs link to Get Super Pro for purchase / renew / trial.
- Docker Hub publish: after a successful Release, native
linux/amd64+linux/arm64runners pack prebuilt Release binaries viaDockerfile.pack(no in-imagecargo build, no QEMU) and merge a multi-arch manifest. Localmake dockerstill builds from source. - Get Super Pro documents the Super Pro Portal for existing subscribers.
- CI path-filters jobs by changed paths; docs-only pushes skip OSS CI (deploy-docs only); install-smoke is manual; Release is tag-only.
Notes
- Workspace 1.5.5; pair with commercial plugin packages
super-plugins-1.5.5-….
[1.5.4] - 2026-09-04
Changed
- OTA timeouts are per-program
artifactfields:artifact.download_timeout(default 60s; was[server].download_timeout/ briefly[ota]) andartifact.verify_timeout(default 60s; was[server].ota_verify_timeout/ briefly[ota]). Configure them on the program stack entry, update payload, dashboard, or CLI (--artifact-download-timeout/--artifact-verify-timeout) — not insuper.toml. No compatibility shim.0disables each timeout (download_timeoutstill keeps a 10s connect timeout).
Notes
- Workspace 1.5.4; pair with commercial plugin packages
super-plugins-1.5.4-….
[1.5.3] - 2026-09-04
Added
- OTA
artifact.extract: download.tar.gz/.tgz/.tar/.zip, verify SHA256 of the archive, safely unpack, and stage a single payload binary todestination. - OTA
artifact.restart_policy:immediate(default),manual(commit without restart), andsignal/signal:<hup|int|term|quit|usr1|usr2>(in-place notify; baresignal≡signal:hup). Dashboard hot-reload option defaults tosignal:hup. CLI:--artifact-restart-policy. - OTA
signal*requires health probe:restart_policy=signal*is rejected unless the program has an enabledhealth_check(create/update/stack). Dashboard Create/Edit auto-enables Health Check and blocks submit without it. Startup andsuper checkwarn on legacy snapshot configs that still lack a probe;exec true/://bin/true//usr/bin/trueis accepted but warned as ineffective for hot-reload verify. - OTA verify without health probe: when no live
health_checkis configured (non-signal policies), commit waits forstartsecs(min 1s) so crash-on-start cannot race the synthetic Healthy signal; the verify timeout is auto-extended if shorter than that dwell. tools/scripts/ota-e2e.py: repeatable OTA end-to-end harness (isolatedSUPER_ROOT, covers commit/rollback/extract/policies/WAL recovery).
Changed
- Repo layout: packaging assets live under
packaging/docker/(wasdockerbuild/) andpackaging/contrib/(wascontrib/); demo instance underexamples/demo/(wasexample/);tools/benchmark/andtools/scripts/hold the peer bench suite and install/OTA smoke helpers. Docs siteCNAMEis underdocs/static/. Release tarballs still shipcontrib/at the package root forinstall.sh. - Docker Hub image: official image namespace is
schiplat/super(was briefly published ascontainerpi/super).
Notes
- Workspace 1.5.3; pair with commercial plugin packages
super-plugins-1.5.3-….
[1.5.2] - 2026-09-03
Added
- Out-of-box
install.sh: creates a minimalSUPER_ROOT(/opt/superor~/.super), wires login env (SUPER_ROOT+PATH), and enables an OS service with boot start — systemd (Linux), launchd (macOS), rc.d (FreeBSD). Flags:--root,--user/--system,--no-service,--no-start,--no-init,--base-url(local/CI smoke). Release tarballs shipcontrib/templates (defaultsuper.toml, unit files). Prefer the release asset one-liner:curl -fsSL https://github.com/schiplat/super/releases/latest/download/install.sh | sh.
Changed
- Docs terminology: the licensed browser UI is consistently called Dashboard (still provided by the
uiplugin). Path/docs/02-essentials/web-ui/is unchanged (aliases retained).
Fixed
super check/super doctornow resolve$SUPER_ROOT/conf/super.toml(and$SUPER_ROOT/super.toml) before cwd//etcprobes, matchinginstall.shlayouts.
Notes
- Workspace 1.5.2; pair with commercial plugin packages
super-plugins-1.5.2-….
[1.5.1] - 2026-09-02
Added
SUPER_HOSTNAME: override the hostname used in managed-child / hook env, system stats, and webhook source footers when the OS hostname is not meaningful (containers / K8s).- Host disk partitions on
GET /api/v1/system/stats(disks[]via sysinfo). - Plugin HTTP host now forwards path + query string to plugins (enables filtered delivery-history APIs).
Changed
- Hostname resolution is centralized (
common::resolve_hostname):SUPER_HOSTNAME→ OS hostname →unknown.
Notes
- Workspace 1.5.1; pair with commercial plugin packages
super-plugins-1.5.1-…(notify delivery history UI/API lives in the subscription plugins).
[1.5.0] - 2026-09-02
Added
- SQLite-backed event history (OSS): lifecycle events are now persisted to a SQLite database (
[storage] events_file, defaultdata/events.db, WAL mode) instead ofdata/events.json. All events are recorded — not just anomalies — including program crashes, exits, recoveries, health restarts, cron runs, queue drops, and daemon startup/shutdown. Retention defaults to 30 days via[storage] events_keep_days(pruned once per day); set0to keep everything. - Event filtering & statistics:
super eventsgains--from/--to(time window),--type,--exit-code, and--q(free-text) filters, plus--statsfor retention statistics. New API endpoints:GET /api/v1/events(global query with optionalprogram_id) andGET /api/v1/events/stats.GET /api/v1/programs/{id}/eventsaccepts the same filter query params. - Millisecond timestamps: every event records
ts_ms(Unix milliseconds) alongsidets(seconds) for precise, stable ordering of high-frequency events. - Cron run events:
cron_started,cron_exit(withduration_secsrun duration and exit code), andcron_spawn_failedare recorded per firing;super events <name> --type cron_exitaudits all runs. - Configurable event database path:
[storage] events_file(default./data/events.db) sets where event history lives; relative paths resolve underSUPER_ROOT.
Changed
- Event history is written by a background batch writer (dedicated task draining a queue into SQLite transaction batches) — event persistence never blocks the manager actor loop.
- The event database is tuned for high-throughput workloads: batched transactional inserts, indexes aligned with the
(ts_ms, id)sort key, and WAL PRAGMA settings (64 MiB page cache, memory temp tables, capped WAL growth) are applied automatically. - Removed the per-program 100-event cap and the legacy
data/events.jsonstore.
Fixed
- Storage paths (
log_dir,data_file,events_file, pidfile) now resolve relative toSUPER_ROOTinstead of the process working directory, preventing stray log/data files whensuperdis started from another cwd.
Notes
- Workspace 1.5.0; pair with commercial plugin packages
super-plugins-1.5.0-….
[1.4.0] - 2026-08-31
Breaking
resource_limits.memory_limitis now in MB (binary,1 MB = 1024² bytes) instead of bytes, andresource_limits.cpu_quotais now in cores (1.0= one full core) instead of percent. Old configs written in bytes/percent are not auto-converted — update them for the new semantics. Event payloads (usage_bytes,limit_bytes,anon_bytes) keep byte precision. CLI flags--memory <MB>/--cpu <cores>match.- Plugin ABI
PLUGIN_API_VERSIONbumped to2:super_plugin_v1.initnow receives aSuperPluginHostV1callback table (plugins can emitSystemEvents into superd’s pipeline). Third-party plugins built for API v1 must be rebuilt.
Added
- Three-tier memory warning & visibility (licensed
isolationplugin, Linux):memory_pressurepre-kill warning (Tier 1) when anonymous memory crossesmemory_warn_percent/memory_warn_headroom; optionalmemory_highkernel soft limit (Tier 2,memory.highthrottling);memory_oom_killpost-kill confirmation (Tier 3) that distinguishes a cgroup OOM kill from a manualkill -9. - Plugin → host event bridge: the
isolationplugin emitsmemory_pressure/memory_oom_killthrough the same event pipeline as lifecycle events (event history, OSS event hooks, licensed notifications). - Readiness-aware reload:
super reload --wait [--timeout](andPOST /api/v1/system/reload?wait=&timeout=) waits for every affected program to pass its health checks before reporting success, and exits non-zero if any program is not ready in time.super start/restartalso gain--wait-healthy(wait forHealthyrather than justRunning). - Batch operation safety:
super start|stop|restart|remove|signalon@group/alltargets print the list of affected programs and ask for confirmation before proceeding. Global--yes/-yskips the prompt for scripts, and--dry-runprints the preview list and exits without executing anything. Single-target operations never prompt. - Cron scheduling policies (OSS): per-program
on_overlap(skip/queue/kill),catchup(skip/latest/all), andjitter_sec(random delay in seconds before each trigger).on_overlap=skipis the default and preserves the previous no-concurrency guarantee;queuestarts the queued run as soon as the current instance exits;killterminates the running instance before starting the new run.catchupcontrols backfilling slots missed while the daemon was down (allcaps at 10 backfilled runs), andjitter_secspreads simultaneous schedule boundaries (e.g. many jobs at0 2 * * * *) to avoid a thundering herd. Exposed via stack JSON fields andsuper add/updateflags (--on-overlap,--catchup,--jitter). - Cron concurrency & bounded queue (OSS):
max_concurrent(default1, up to64) lets a scheduled task run up to N overlapping instances, withon_overlapapplied only when every slot is taken.max_queued(default100, up to10000) bounds the queue behind a full concurrency limit; firings beyond the cap are dropped and recorded asqueue_fullevents on the program’s event history (super events). New flags--max-concurrent/--max-queuedforsuper add/update. - Health check tuning & auto-restart (OSS): health probes gain
interval_secs,timeout_secs,start_period_secs, andmax_failures. Aftermax_failuresconsecutive failures (default3,0disables) the daemon restarts the program automatically and emits ahealth_restartevent; the restart counter resets as soon as the process reports healthy again, and afterretry_limithealth restarts the program goes Fatal instead of restarting forever.start_period_secsgives slow-starting services a grace period before the first probe. - OTA verification window: new
[server] ota_verify_timeout(default60,0disables). After an OTA update restarts a program, the new version must pass its health checks within the window; on timeout the daemon automatically rolls back to the previous version (file rollback → WAL recovery → old version restarted), so a bad artifact cannot leave the service down. - Unix socket transport:
[server] socket = "run/superd.sock"exposes the API on a Unix domain socket with owner-only permissions by default (socket_mode = "0600";"0660"/"0640"grant group access, world-writable modes are refused).socket_only = truedisables the TCP listener entirely — zero network exposure for local-only management. The CLI connects viasuper --server unix:///path/to/superd.sock(REST andsuper logs --followWebSocket both ride the socket); when neither--servernor a persisted~/.super/cli.jsonendpoint is given, the CLI auto-discovers$SUPER_ROOT/run/superd.sock(a real socket file) and prefers it over TCP, falling back to the defaulthttp://127.0.0.1:9002. superd refuses to start on a path that is a symlink, a non-socket file, or a socket held by another live process; stale sockets are cleaned up on restart. - TOML stack files: declarative stacks (
super apply,[include]globs) are now TOML by default —.tomlor no extension is parsed with the TOML parser, with comments and inline tables; legacy.jsonstacks keep working and can be mixed in the same glob. Format is picked by file extension. Parse errors reportpath:line:col:like JSON. See Declarative Stacks.
Changed
super updatehot-updatesmemory_warn_percent,memory_warn_headroom, andmemory_highon running programs alongsidememory_limit/cpu_quota.- Dashboard create/edit forms expose the three new memory fields; process detail shows MB/cores units.
- Program event history raised from 50 to 100 events per program (oldest dropped); every record carries a Unix
tstimestamp (docs now state it explicitly). - Captured child
stdout/stderrlines are now prefixed with a timestamp by default:[YYYY-MM-DD HH:MM:SS](daemon’s local time). New[child_logging] timestamp = "local" | "utc" | "none"controls the prefix (nonerestores the previous raw format). The WebSocket log stream still carries the raw, un-prefixed line. - CLI subcommand aliases:
super list→ls,super logs→log,super restart→rs(alongside the existingsuper remove→rm). [include]and examples now use TOML stack files by default (conf/conf.d/*.toml); the example instance shipsconf.d/extra-services.tomlplus a fullresource/stack_all.toml. JSON stacks remain supported everywhere stack files are read.super exportgains--format toml|jsonand now defaults to TOML (the default stack format); TOML output round-trips cleanly back intosuper apply/[include], emitting nested tables for tagged values such ashealth_check. Pass--format jsonfor the legacy JSON shape.PUT /api/v1/stacknow accepts a TOML body (Content-Type: application/toml,text/toml), so curl / GitOps pipelines can uploadstack.tomldirectly; JSON bodies remain the default.
Fixed
- Managed children no longer inherit superd’s
oom_score_adj=-1000: the kernel can now actually OOM-kill a program that exceedsmemory_limit(previously the hard cap turned into a livelock). The daemon’s own OOM protection is unchanged. memory_pressurenow fires immediately on the first threshold crossing (cooldown no longer swallows the first warning).memory_oom_killis no longer lost when the cgroup is torn down right after the process exits (after_stopdoes a final synchronousoom_killcounter check).super-probuild no longer warns about a missing legacysuper/common/keys/public.keywhen named*.public.keyverifying keys are present.
Notes
- Workspace 1.4.0; pair with commercial plugin packages
super-plugins-1.4.0-…. - Evaluated, not implemented: secrets passed via
-e KEY=VAL(andenv_filevalues at spawn time) reach the child throughexecveenv and so are visible in/proc/<pid>/environto same-UID processes; existing masking only covers API/CLI display. This matches the posture of other process managers (PM2 keeps env plaintext indump.pm2; supervisor in its config). A privileged-channel injection (memfd / fd or a credentials directory, opt-in per program) is deferred as a future hardening direction — seeSECURITY.md“Known limitation”.
[1.3.3] - 2026-08-31
Added
- OSS webhook event hooks:
[[event_hooks]]withtype = "webhook"postsSystemEventJSON (HMAC-SHA256 signed) to external URLs without any licensed plugin.type = "command"hooks also capture the programsignal. - Event history: program lifecycle events are persisted to
data/events.json; the newsuper eventsCLI shows recent events (--tail,--program,--json). - Cron jobs are exempt from flapping detection — short-interval schedules no longer flip to
Fatal/ disableautostart.
Changed
depends_onnow starts non-running dependencies automatically (cycle-safe; waiting/restarting/crashed deps are not forced).super removeis the primary command name;rmremains a clap alias. CLI help and docs updated throughout.super signal --sighelp now listsquit(server already supported it); API reference batchSignalpayload aligned.- Config docs aligned with code:
super.tomllookup paths, health-check interval (fixed 5s), and isolation plugin log wording. - Pro beta trial shortened from 1 year to 1 month (GitHub Issue template + docs); purchased annual keys keep the 365-day term.
Fixed
super token listno longer fails on deserialization — the CLI now expects the API’sAuthTokenInfoshape (notoken_hash).- Batch-action confirmation prompt (
super stop/start/restart/remove/signal alland@group) now shows the real target count.
Notes
- Workspace 1.3.3; pair with commercial plugin packages
super-plugins-1.3.3-….
[1.3.2] - 2026-08-29
Added
super keyringlists license verifying key ids embedded in the CLI binary;super doctorprints the same summary line.[license].strictand deployment-intent detection: invalid keys refuse startup whenstrict = true, plugin libraries are present,auth_secretis set, or bind is non-loopback; otherwise OSS degrade with warnings (SUPER_LICENSE_STRICTenv override).
Changed
- Create / update program (HTTP, CLI
add/update, dashboard, stack apply) run a shared structural check. Failures return 400 with amessagethat names the field (command:,health_check.url:), the program orservices[i] (name=…), and for TOML/JSON syntax / unknown keyspath:line:col:(TOML) orJSON line N column M.super checkreports include problems aspath:line:col:orpath: services[i] (name=…): field:. super checkreports invalid license as an error when strict or licensed deployment signals apply.- License verification requires a
kidclaim on every license; the legacyv1kid and compile-time fallback are removed. Signing key ids usek_<8hex>(derived from the Ed25519 public key). Re-issue licenses from your vendor if verification fails with “missing signing key id”. - Docs: Troubleshooting license verification — suggested
super check,super doctor, andsuper keyringfor self-service diagnosis.
Notes
- Workspace 1.3.2; pair with commercial plugin packages
super-plugins-1.3.2-….
[1.3.1] - 2026-08-27
Added
CODE_OF_CONDUCT.md(Contributor Covenant).
Changed
- Public beta messaging aligned across README, docs, and GitHub issue templates.
- CI:
cargo fmt --check, macOS test matrix,benchmark/workspace build. - Docker Hub publishes
linux/amd64andlinux/arm64again; docs use loopback port mapping. - Document minimum Rust 1.85+; workspace
rust-version = "1.85". - License help links point to the feature matrix and Pro trial.
- Remove unsupported
[webhook]fromsuper.toml(use[[event_hooks]]orconf/notify.toml). - Invalid license: prominent startup warnings; improved
super doctortriage. /go/pro/license examples updated for the 1.3.x release line.
Fixed
h2andlruRustSec advisories via dependency updates./go/pro/checkout CTA uses configured purchase URL.
Notes
- Workspace 1.3.1; pair with commercial plugin packages
super-plugins-1.3.1-….
[1.3.0] - 2026-08-04
Fixed
- Release CI Manager keyring fetch: require explicit env (no defaults); harden HTTP/JSON errors; upsert verifying keys without deleting existing
common/keys/*.public.key(hand-curated git keys + Release-time Manager ring).
Notes
- Workspace 1.3.0; pair with commercial plugin packages
super-plugins-1.3.0-…. - Git
common/keys/stays hand-curated;fetch-verifying-keys.shruns in Release CI only (not routinely committed).
[1.2.5] - 2026-07-26
Added
superd --daemon/[server] daemon(Unix): optional self-daemonize with pidfile (run/superd.pidby default, overridable via[server] pidfile/--pidfile). Refuses to start under systemd or as PID 1.super doctorreports conflicts and stale pidfiles. Keep foreground under systemd (superd --foreground).
Notes
- Pair OSS
1.2.5with matching commercial plugin packages (super-plugins-1.2.5-…).
[1.2.4] - 2026-07-26
Changed
- License docs/API wording: version span → version scope.
- Dashboard: tour screenshots refreshed (notify/stack, program config).
Notes
- Pair OSS
1.2.4with matching commercial plugin packages (super-plugins-1.2.4-…).
[1.2.3] - 2026-07-25
Changed
- Dashboard: dashboard tour screenshots refreshed (overview, program detail/logs, inhibition rules).
Notes
- Pair OSS
1.2.3with matching commercial plugin packages (super-plugins-1.2.3-…).
[1.2.2] - 2026-07-25
Added
- Notification storm suppression docs and dashboard UX: Webhooks + Inhibition (When → Mute targets → For), Delivery Strategy defaults.
- OSS
/notice page points to Get Super Pro.
Changed
- Public docs homepage redesigned (wide layout) for all languages (en, zh-cn, ja, es, ru).
- Get Super Pro: license version coverage (issued line → free newer minors → renew) plus Terms alignment.
- Dashboard Notification Settings tabs renamed to Webhooks / Inhibition rules.
Notes
- Pair OSS
1.2.2with matching commercial plugin packages (super-plugins-1.2.2-…).
[1.2.1] - 2026-07-14
Added
- Docs CI: offline HTML link check (site-relative crawl) after Hugo build.
- Licensed-mode startup checks: deployments with a subscription key require the
securityplugin andauth_secret(hard-fail).
Changed
- Public docs messaging aligned with a single subscription plan; documentation URLs use
https://super.docs.sconts.com/. - Removed public “pre-release / not for customer delivery” banners for the licensed plugin model.
- Docker Hub image CI publishes
linux/amd64only (arm64 manifest removed from the publish workflow). - Open-source edition license is MIT (historically GPL-3.0).
Security
- Stricter defaults for network exposure and configuration validation in OSS deployments.
- Improved validation for user-supplied paths and outbound fetch URLs.
- Reduced sensitive data exposure in API and export responses.
Notes
- Subscription plugin archives remain vendor-delivered (not built from this OSS repository). Pair OSS
1.2.1with matching commercial plugin packages.
[1.2.0] - 2026-07-10
Runtime plugin architecture merged. Linux cgroup isolation QA (aarch64) signed off.
Added
- Runtime plugin host —
superddiscoversplugins/*.{so,dylib}, verifies the signed license key, and dlopens authorized plugins. - HTTP plugin ABI — generic
attach_http_plugins()in OSS core; plugins register routes and auth middleware without linkingsuper-core. - Lifecycle plugin ABI —
on_event,after_stop, metrics, and manager hooks viaExtensionStack. [license].keyinconf/super.toml— replaces legacylicense.keyfile;SUPER_LICENSEenv override supported.auth_secrettyped in OSS config (historical note: early docs listed it underServerConfigas a root field; it later moved to[server].auth_secret). Enforced for licensedsecurityplugin startup / bootstrap.- Unified CLI —
login/tokensubcommands in OSSsuperwhensecurityplugin is active. common::plugin_async— shared worker for cdylib async boundaries.
Changed
- Commercial capabilities ship as plugins + license, not a separate
superd-premiumbinary. - Cron scheduled tasks remain in OSS
superd(not plugin-gated).
Notes
- Plugin libraries ship with subscription delivery; they are not built from this OSS repository.
- Web dashboard ships as an optional UI plugin with embedded static assets; OSS
superdhas no built-in Dashboard. - Linux cgroup isolation signed off on aarch64 (2026-07-14).
[1.1.9] - 2026-07-08
Added
- GitHub Releases multi-platform binaries (Linux amd64/arm64, macOS Intel/ARM, FreeBSD) with README archives and
SHA256SUMS. - Docker image multi-arch publish (
linux/amd64,linux/arm64). gh-pagesbranch README (auto-deployed with documentation).
Changed
- Docker image: Debian 13 (trixie) build stages and distroless
cc-debian13runtime. - Release CI uses native
ubuntu-24.04-armfor Linux ARM64 builds.
Notes
- Windows pre-built binaries are not published; use Docker or build on Unix-like systems.
Fixed
- FreeBSD release packaging (version passed into VM).
- CLI
check.rsexplicitVec<String>types.
[1.1.8] - 2026-07-07
Added
- Official Docker image
schiplat/superwith default config underpackaging/docker/conf/(historicallydockerbuild/conf/). - GitHub Actions workflow to build and push the Docker image.
- Documentation homepage with OSS capabilities, licensed plugin features, and API example.
Changed
- Docker image published on Docker Hub as
schiplat/super. - Installation docs, README, and
make dockertarget forpackaging/docker/Dockerfile(historicallydockerbuild/Dockerfile).
Fixed
- Dashboard
ProcessList.vuesyntax error breakingvue-tscbuild. - Doc screenshot paths for GitHub Pages (
/super/images/...).
[1.1.7] - 2026-07-07
Added
- Event hooks — run scripts on system events.
post_stoplifecycle hook.- Supervisor-compatible fields:
stopsecs,priority, log file paths,autorestart/exitcodes/startsecs. - Historical logs API and
super logs --tail. - OTA updates via API and
super update --artifact-*. - System stats API and dashboard metrics panel.
Changed
- OSS API no longer uses
auth_secret; bind to127.0.0.1or use a firewall for exposure control. - Documentation updates across config, API, and feature matrix.
Historical (1.1.7): later releases restored optional OSS
auth_secretand refuse non-loopback binds without it — today the key lives under[server](see Authentication and Unreleased notes above).
Fixed
- Historical logs API now reads from the correct log directory when
[storage]is omitted.