# 0.7.1 ### Fixes: #### superd - Fix enabling services that use template files ### New Features: #### Other - New "installmisc" make target that installs everything except binaries # 0.7 ### Fixes: #### superd - Services that fork children now show the correct status when they crash, and can be restarted (todo #38) - Running tests no longer pollutes XDG_RUNTIME_DIR, XDG_STATE_HOME dirs - Files/folders created by superd are no longer read/write by "other" - Various internal error handling fixes - Only use a notification socket when running ExecStart for Type=notify - Fix some situations that led to restart failing services indefinitely #### superctl - Add missing 'restart' command to zsh completion - Improve displaying service Description and other fields that may contain a lot of text ### New Features: #### superd - Services now log stdout and stderr to separate files under $XDG_STATE_HOME/superd/logs/.log. superd still uses the original log file for its own logging. - Add support for multiple ExecStart, ExecStartPre, ExecStartPost, and ExecOnFailure lines in a .service file - Add support for the '-' prefix for ExecStart* commands - Improve parsing command line from Exec* options #### superctl - Completion support for bash #### API - Renamed ServiceStatus to ServiceState - Renamed ServiceDetails to ServiceStatus # 0.6 ### Fixes: #### superd - Support using environment variables from multiple sources - Address several data race conditions and intermittent test failures - No longer indicate a 'failed' status being reported when a service is stopped and it exists with a non-zero return code ### New Features: #### superd - Support for Environment= in .service files (todo #15) - Use colors for INFO and DEBUG messages in log - Service stdout/stderr) is printed to the log by default, -v is no longer required #### superctl - Completion support for zsh # 0.5.1 ### Fixes: #### superd - Fix setting service status when stopped successfully (todo #37) # 0.5 ### Fixes: #### superd - Return the correct status for oneshot services - Correctly use StartLimitBurst and StartLimitIntervalSec (along with RestartSec) to limit service restarting - Report the correct status when a service is manually stopped - Report the correct status when a service returns 0 - Allow stopping a service that is in a restart loop (todo #35) - `StartLimitBurst` is now parsed from the `Unit` section as expected - Improve thread safety of internal service configuration - When restarting a service, wait for it to stop completely before starting it - Automatically start any dependencies when manually starting a service (todo #26) #### superctl - Show help when run without any subcommand ### New Features: #### superd - Send SIGKILL if process doesn't stop after receiving SIGTERM (todo #36) - Wait for all services to shut down before quitting (todo #36) - Allow manually starting services that are not autostarted (todo #34) #### superctl - Allow receiving responses from superd that can take several seconds - Don't require "--" to separate subcommand and args with `set-env` # 0.4.1 ### Fixes: - service: don't always error on ExecStartPre/Post and ExecOnFailure # 0.4 ### New Features: - config: add support for parsing service.TimeoutStartSec - service: add support for service "notify"-type startup ### Fixes: - parse: correctly set default type and restart mode - parse_test: Add default cases to tests - manager: fix masking services to disable them ### Other: - docs/superd.service.5: update to include recent changes to Type and Restart defaults - internal/cmd/test: simplify testing with exec # 0.3.2 ### Fixes: - cmd/test: attempt #2 to fix TestStart timeouts on slow systems # 0.3.1 ### Fixes: - cmd/test: "fix" TestStart on s390x # 0.3 ### New Features: - cmd/superctl: show description in 'status' command - cmd/superctl: show service uptime in detailed output - config/parse: support StartLimitBurst and StartLimitIntervalSec - config: allow multi-line option values in service files - manager: allow disabling autostart of services on startup ### Fixes: - cmd/superctl: reduce leading padding when printing single service status - cmd/superd: move lock check to after arg parsing - config/parse: reduce default RestartSec duration to 100ms - config/parse: strip leading/trailing whitespace from option values when - service: fix stopping a service waiting for a restart ### API Changes: - api: add ServiceDetails.Description string - api: add ServiceDetails.Uptime field ### Other: - cmd/superctl: simplify coloring of status, and hide unneeded info from oneshot - cmd: add tests - cmd: remove TODO about improving isUp - config/parse/test: add TestParseDur - config/parse/test: pretty print structs in TestParseConfig - config/parse: honor 'required' flag in parseDur - config/parse: make generic func for parsing duration options - config/parse: set service description from config file - internal/cmd: refactor to new package - manager: remove some redundant service.Name - service/test: add test for ExecOnFailure - service/test: add test for ExecStartPre - service/test: fix TestExecOnFailure test, disable startup retry - service/test: make TestExecOnFailure thread-safe - service/test: pass exe and args to test command start func - service: add Uptime method - service: deep copy before/after slices - service: limit retries for startup of service - service: remove extraneous debug print - service: simplify the main loop a bit - service: use StartLimit{Dur,Burst} to control service start retrying # 0.2 ### New Features: - superctl: add --now flag for enable/disable - service: add ExecOnFailure, ExecOnStartPre, ExecOnStartPost - superctl: improve printing of service status - superctl: display - when autostart isn't enabled (7 days ago) - manager: add support for manually starting services in XDG_DATA_DIRS ### Fixes: - manager: fix if service with broken symlink is enabled, superd crashes on launch - config/parse: allow parseCmd to handle empty Exec*= from config - manager: fix disabling services symlinked from XDG_DATA_DIRS - manager: fix reported autostart status not always being correct - doc: service file should have Restart not RestartOn - superd: use lockfile to restrict to only 1 running instance per user - makefile: remove redundant 'superd' dir in path in SHAREDIR ### API Changes: - api: add Type field to ServiceDetails - api: simplify response types and error reporting - api: change MapResponse to send ServiceDetails - api: add ServiceDetails - api: rename MapResponse --> ServiceDetailsResponse ### Other: - service: simplify scheduling service restarts - service: refactor running service exes - manager: simplify error handling when getting config stats - manager.Details: return error if service not found - service: replace Status chan with ServiceDetail chan - service: remove unused commented code - config: store path to config in ServiceConfig when parsing - config: add Path field - internal/color: simplify coloring strings - internal/dag: move from pkg - service: add marker for whether service should autostart - manager: use xdg.DataDirs - internal/xdg: add new package - manager: sort config files - doc/superctl.1: document --now flag for enable/disable - doc/superctl.1: update set-env to reflect change with using flaggy - superd: replace syscall with unix module - superctl: use flaggy for parsing args # 0.1.1 * service parsing: Use default type when unspecified * log dir: create directory after expanding tilde * makefile: strip symbols and debug info when building # 0.1 Initial release!