- daemon: chmod socket to 0770 after bind so group devs can connect
- ipc: remove stale-socket deletion — it was deleting the socket when
connect failed due to permissions, breaking the running daemon
- runtime_dir() defaults to /tmp/rss (no user-specific fallback)
- socket_path() defaults to /tmp/rss/rss.sock (overridable via RSS_SOCKET)
- enabled markers in runtime_dir, not config_dir (shared state)
- daemon creates /tmp/rss/ with explicit 770 permissions
- socket/log/enabled paths resolved via state.rs with priority:
RSS_SOCKET/RSS_STATE_DIR/RSS_CONFIG_DIR env → XDG_RUNTIME_DIR
→ ~/.local/share/rss → /tmp/rss-niko
- config path: RSS_CONFIG → RSS_CONFIG_DIR/config.toml → ~/.config/rss
→ /etc/rss/config.toml
- removed State struct; all functions are module-level
- daemon chmods socket parent dir for group access
- clean up stale PID file on config load failure
- single daemon process manages all services in memory
- CLI communicates via Unix socket, does not read config
- config hot-reload: daemon polls config.toml, reacts immediately
- rename-safe: removing a service from config kills it, adding starts if enabled
- logs remain file-based for direct reading by rss logs
- removed per-service PID files, supervisor module simplified
- rss daemon kills and cleans services not in config (rename-safe)
- rss list also prunes orphaned state
- rss start checks for already running before spawning
- State: add supervise_dir/service_dir/list_pid_names helpers
- start/stop/restart/status/logs/enable/disable/list/daemon
- PID-file based state, no daemon, no root
- config.toml with placeholders, restart policies, env vars
- log tailing with -n/-f and stderr colorization
- supervisor per service with SIGTERM handling