Changelog
All notable changes to this project are documented here. This page is auto-generated from git commits grouped by release tags.
Unreleased (2026-03-05)
Added
- Create README.md (
d396a26) - add wholphin message (
385421a) - add dotenv file (
24bee23) - add baclup & restore strategy (
7a27a3d) - add backup service intialisation to setup, update README.md (
7460859) - add ink migration startegy plan (
11c0278) - add CLAUDE.md for Claude Code context (
84fc4cb) - add --uninstall flag to setup.sh for removing individual apps (
a8d754f) - add Ink CLI rewrite of bash scripts using Bun + React (
06dc56c) - add Docker complete uninstall script for Debian (
3d0888d) - add persistent step messages, rclone note, and app-specific summary notes (
d6f7de9) - add Gandalf Braille portrait to CLI header (
7e0bf54) - add diagnostic logging for rclone remote detection failures (
f8d5811) - add full system uninstall to CLI, matching uninstall.sh (
5da4be5) - add cli restructuring plan (
d664c02) - add Seerr to the app directory and begin transition to Seerr from Jellyseerr (
c131c64) - add backup delete command for local and remote backup deletion (
f34700f) - add status command showing installed apps, containers, backups, and disk usage (
606951a) - add health command checking Docker, disk, backups, containers, and remote connectivity (
8e72759) - add update command to pull latest images and recreate containers (
dc4350f) - add log command to view container logs with follow, tail, and since options (
4d261c1) - add backup list command to show existing local and remote backups (
57e09ff) - add start, stop, restart, and reinstall commands for app lifecycle management (
27e2b10) - add self-update command to pull latest code and rebuild CLI (
9eca51c) - add backup verify command to check archive integrity (
a803219) - add install command to install individual apps (
26c907f) - add media exclusion warning to backup and restore commands (
3ff73e1) - add visual improvements: progress bars, tables, dividers, clickable links (
f5a07b1) - add version, config, and shell completions commands (
d8eb151) - add automatic update check on CLI invocation (
9985690) - add service API clients and remove Jellyseerr (
7ebbb40) - add Seerr API client wrapper (
413685e) - add Lidarr API client wrapper (
553faf8) - add Jellyfin library creation and fix Seerr initialization order (
16d3ed5) - add install docker and install backup commands for granular setup (
ee27862) - add recover command for full disaster recovery from remote backup (
8132659) - add doctor command to diagnose setup issues (
740d06b) - add Pi-hole to app registry (
b0f6b18) - add Immich to app registry with multi-container support (
189b586) - add swap size check and configuration to prevent OOM on low-RAM devices (
e5c05e6) - add Excalidraw to app registry with containerPort support (
37705dd) - add Open WebUI to app registry (
5fa15e9) - add HTTPS via Caddy reverse proxy with DuckDNS DNS-01 challenge (
7c64f78) - add wildcard DNS resolution for HTTPS subdomains (
70b7b89) - add FlareSolverr as companion app for Prowlarr (
977009a) - add automatic wildcard DNS via Pi-hole for HTTPS subdomains (
35ebabb) - add Vaultwarden app with HTTPS prerequisite enforcement (
2c8607d) - add Omni Tools to app registry and setup wizard (
122f5a5) - add VitePress documentation website with Docker serving (
08485ed) - add VitePress documentation site with changelog and docs command (
888877c) - add documentation improvements, Gatus Discord webhook env var, and MIT license (
3f069b8) - add pre-commit hook for automatic changelog generation (
4164317) - add styled 404 page for Caddy with links to installed apps (
170157b)
Fixed
- fix port 1900 already in use by homeassistant (
f2d316d) - fix navidrome restart loop caused by root-owned data directory (
e2c8f0e) - fix backup.sh log file permission denied on first run (
b25a198) - fix permission errors when running backup.sh without root (
81db166) - fix app list treated as single string due to custom IFS (
b159200) - fix permission errors and temp dir cleanup in restore.sh (
f86e77d) - fix install.sh not adding bun to PATH for non-bash shells (
912a95e) - fix sudo not finding bun by symlinking into /usr/local/bin (
f16bf26) - fix setup hanging at Docker/rclone install steps (
e075601) - fix default BASE_DIR, app counter, and compose name conflicts (
0cded39) - fix CLI setup failing on existing containers by adding compose down before up (
13dc948) - fix compose commands to run from app dir matching setup.sh (
0bbbac0) - fix install loop re-running and orphaned container cleanup (
ce28a3a) - fix install loop by extracting InstallAppsStep to module level (
6c356d3) - fix navidrome compose generation and install phase UI (
dfbc82d) - fix rclone commands not finding root's config when run as normal user (
6452b55) - fix shell helper passing env: undefined to execa under Bun (
cc63c2d) - fix rclone config not found when CLI runs under sudo (
578a5c7) - fix setup not showing 'pulling image...' during fresh app installs (
c85ef1c) - fix build: shim signal-exit default export for ESM compat (
09e48df) - fix missing await on doInstall, add exit text, centralize log paths (
d2052df) - fix build permission error in install.sh after uninstall/reinstall (
7040080) - fix self-update hanging and log --follow Ctrl+C error (
19500d1) - fix self-update hanging under sudo by running git/bun as original user (
737e656) - fix update backup failing when archive directory doesn't exist (
b0d9d1a) - fix update command: require sudo and match backup strategy (
51778a4) - fix version command for bundled builds and zsh completions (
91a722e) - fix auto-setup API call bugs and mask password input (
b9e501c) - fix docker pull progress bars reading from wrong stream (
6b4d575) - fix Jellyfin library creation and Seerr initial login during auto-setup (
2cd34ef) - fix auto-setup input freezing and extra spaces in prompts (
0cdaec5) - fix password leaking in cleartext during auto-setup prompts (
783f869) - fix self-update permission denied by running bun as root (
5686f52) - fix self-update: chown project dir and run bun as SUDO_USER (
c035078) - fix shell compatibility and permission issues with sudo/root execution (
bc73e4d) - fix composeUp/composeDown calls to pass file path instead of directory (
59160fe) - fix compose env values with special characters being mangled (
4adc4a9) - fix Pi-hole port 80 conflict with Caddy HTTPS reverse proxy (
98f7567) - fix DOMAIN env var quoting for URLs in compose generation (
f8b94bd) - fix rclone upload hanging on large Google Drive uploads (
0c389ec) - fix assorted bugs: typos, hardcoded rclone remote, sudo ownership, hooks violation, debug log levels, Caddyfile permissions, cache path (
d52e63c) - fix rclone config ownership after OAuth token refresh under sudo (
c561a4b) - fix health check using wrong rclone config under sudo (
c61574d) - fix swap not persisting across reboots on Raspberry Pi OS (
06814cc) - fix config command not masking password env vars (
93dec7f) - fix changelog pre-commit hook: use --show-toplevel and add re-entrant note (
9013867) - fix changelog hook: use commit-msg hook to include current commit in changelog (
360ec15) - fix docs Docker build: install git for VitePress lastUpdated (
9a7fea6) - fix install/reinstall caddy: redirect to install https (
e4a9e7f) - fix install https: allow re-running when already installed (
8f0b543)
Changed
- Update README.md (
d78478e) - update README.md (
7d67214) - update README.md (
25614f6) - update gitignore (
0525da3) - update README with --uninstall flag and sudo usage note (
61b09bc) - update backup script & update dependencies (
0b2d0a2) - rename docker_uninstall.sh to uninstall.sh with full homelab teardown (
470602f) - update README.md (
0c03262) - update README.md and add env example (
049fa1f) - Update README.md (
63d700f) - refactor uninstall command to use Ink components matching other commands (
6c6e726) - update install.sh and README with mithrandir branding (
454eec9) - update project directory references from homelab to mithrandir (
ffcad32) - update CLAUDE.md (
20160ca) - Update README.md (
49f16f3) - update README (
53c9ea6) - update dependencies (
c403382) - update env example (
29ddc4c) - update README (
98d31af) - update README and CLAUDE.md with HTTPS/Caddy documentation (
69426db) - enable /etc/dnsmasq.d/ loading in Pi-hole v6 (
4988d48) - set Pi-hole webserver domain when behind Caddy reverse proxy (
08dbb31) - use RSA certificates in Caddy for broader device compatibility (
ec3151a) - reorganize setup app selection into category-based picker (
636e947) - hide flaresolverr from Quick Links in status command (
b6a88c8) - update changelog (
f66d016) - update docs (
5e8c1f9)
Other
- init (
0222783) - Enhance setup script with improved container checks and error handling. Added explicit container name filtering for running status, updated error trap to include command context, and added echo statements for better user interaction during input prompts. (
4d261c9) - Merge branch 'main' of github.com:Joel-Mercier/homelab (
0c41723) - auto generate systemd files, update README.md (
b65d549) - backup plan (
ed0e77e) - fix bugs found during audit of setup, backup, and restore scripts (
9003eda) - remove cursor plans (
5d25119) - remove unused imports (
2051730) - align restore CLI with backup patterns: TTY/headless branching, persistent steps, remote discovery (
ee5a733) - bundle CLI with bun build, install as
homelabcommand (5b12969) - rebrand CLI from homelab to mithrandir with gothic header redesign (
f51d3b0) - clean up (
fcb2074) - enforce Seerr/Jellyseerr mutual exclusion and fix config dir ownership (
2f9c102) - prune Docker networks on app uninstall to prevent subnet exhaustion (
b4b2a4f) - configure Docker to use /24 subnets to prevent address pool exhaustion (
bf6b3a4) - improve restart command UI and fix duplicate URLs in status (
f4e38e3) - clean up import paths (
a8a9355) - implement automatic app configuration step in setup wizard (
b1f48d7) - remove lidarr library in jellyfin, navidrome preferred, jellyfin add virtual folder api (
0cedef0) - Merge branch 'auto_setup' (
9c0e55d) - show CLI version in header component (
431cdb3) - replace Uptime Kuma with Gatus for file-based monitoring setup (
01ddd2c) - skip redundant credential prompts for Gatus, add credentials note (
55dee34) - merge backup.conf into .env, add secret validation to setup wizard (
b9f0ad8) - move CLI from cli/ to project root and remove legacy bash scripts (
0c3a971) - remove dnsmasq sidecar, show DNS setup instructions instead (
12fcb83) - auto-generate rclone.conf from .env variables (
8a190d2) - merge docs into root package.json for single dependency tree (
28e8ea4)