יומן שינויים
כל הגרסאות של Podhouse, מהחדשה לישנה.
הערות הגרסה נכתבות באנגלית.
-
v0.36.11
-
v0.36.10
-
v0.36.9
-
v0.36.8
-
v0.36.7
Fifty apps in the App Store now install their latest release, among them Radarr, Sonarr, Prowlarr, Bazarr, Jellyfin, Seerr, qBittorrent, Immich, Home Assistant, Paperless, Vaultwarden, Nginx Proxy Manager and Portainer.
Apps you already have keep running the version they are on until you update them from the Updates page.
Apps whose next release is a new major version, and the databases behind apps, stay where they are for now: those jumps need their own migration.
-
v0.36.6
Installing Podhouse now shows one numbered list, each step ticked as it finishes:
✓ 3/7 Docker 29.8.0, already here ✓ 5/7 Passwords 23 generated
and ends on a single card with what you need next: the dashboard address and the one-time claim code, where Podhouse is installed and how long it took. Warnings get their own line; a step that fails is marked ✗ with the reason under it.
-
v0.36.5
A new Radarr or Sonarr now starts with these settings instead of the apps' defaults:
- Rename Movies and Rename Episodes are on: files get a clean name such as "Movie Title (2025) WEBDL-1080p" when they are imported. - Propers and repacks do not re-download a file you already have. - Sonarr imports an episode even before its title is known.
A Radarr or Sonarr that already has a library keeps its own settings.
-
v0.36.4
The media set has a name and a place: Home Cinema, a tile next to All, Installed, Media and the rest of the App Library's categories.
Open it to see the set — Seerr, Radarr, Sonarr, Prowlarr, qBittorrent, Jellyfin, with Bazarr alongside — and install it in one go, with the same step-by-step window as before. Under every other category it is no longer shown, so it does not take half the page above the library.
-
v0.36.3
Installing several apps at once — the "Movies & series at home" set is seven — could hit the download limit of the registry the apps come from. One app then quietly failed to install. Podhouse now waits and tries again (after 20, 40 and 60 seconds) when the registry asks it to slow down.
If an app is missing after an earlier install, the set's card shows it: "Install 1 app" puts it in and connects it to the rest.
-
v0.36.2
Installing "Movies & series at home" now opens one window that walks through it:
1. Install: a row for each app — waiting, installing, installed. The download output is folded away under Details. 2. Connect: each connection between the apps, as it is made. 3. Ready: what is left to you — an indexer in Prowlarr, a subtitle provider in Bazarr — and which account signs in to Jellyfin and Seerr, with buttons to open them.
Close it whenever you like; the work carries on, and "Show connections" on the card opens it again.
-
v0.36.1
FlareSolverr is no longer part of the "Movies & series at home" card. It only helps once one of your indexers sits behind Cloudflare, so it is an ordinary app in the library again. Install it there if you need it, and it connects to Prowlarr by itself.
-
v0.36.0
The App Library has a new card at the top: the media apps as one set, drawn as the path a request takes — ask in Seerr, Radarr and Sonarr keep track, Prowlarr searches, qBittorrent downloads, Jellyfin plays — with Bazarr for subtitles alongside.
Click an app to leave it out. FlareSolverr starts unticked: it only helps once one of your indexers sits behind Cloudflare. Apps you already have are marked and connected, not installed again.
One button installs the set. Then a window shows each connection being made, live, and ends with what is left to you: an indexer in Prowlarr, a subtitle provider in Bazarr, and which account signs in to Jellyfin and Seerr. If a connection keeps failing, it says why instead of waiting forever.
-
v0.35.1
- Seerr now finishes setting itself up. In 0.35.0 it could stop halfway and open on its setup wizard, because the Seerr version Podhouse installs handles its library list differently. If that happened on your box, this update finishes the setup on its own. - Removing and installing Seerr, Jellyfin or Bazarr again now sets it up again, instead of being treated as already done.
-
v0.35.0
Jellyfin no longer opens on a setup wizard. Podhouse creates its admin account (username admin, the password in Settings > Passwords) and adds Movies and TV libraries on the folders Radarr and Sonarr use, including a library on a NAS.
With Jellyfin installed, Seerr is ready too: sign in with the Jellyfin admin account. Its libraries are switched on, and Radarr and Sonarr are set as the places requests go, so a request becomes a download. Everyone else in the house signs in with their own Jellyfin account.
Changing the Jellyfin username or password under Settings changes it in Jellyfin too. If an app already has a password of its own, typing that password under Settings now saves it instead of being refused.
-
v0.34.0
Point the library at folders that already hold films and series, and Sonarr and Radarr now add them for you, the way Library Import does:
- Only a folder that matches one title with confidence is added. Names that fit more than one film are left for you in Library Import. - Films come in unmonitored and series watch only new episodes, so an imported library does not start a wave of downloads. - A Sonarr or Radarr that already has a library is left as it is.
Configuration > Media also catches a common mix-up: typing the folder's path on the NAS as Library root. Saving now tells you the folder it is mounted at on this box instead.
-
v0.33.0
Install Bazarr next to Sonarr and Radarr and it is connected to both within a few minutes, like the other media apps.
It also gets a languages profile, so it knows what to look for: Hebrew, with English used while no Hebrew subtitles are found. That profile is the default for series and films added from now on.
Where subtitles come from is your choice: pick a provider in Bazarr > Settings > Providers. A Bazarr you already set up yourself is left as it is.
-
v0.32.2
Installing Podhouse no longer prints every generated password name, the defaults it filled in and Docker's line for every container. You see one line per step, and a count of the passwords made for your apps (homebox secrets <app> shows one). If something fails to start, the installer shows what Docker said, and the full output is kept in state/install.log.
-
v0.32.1
- A folder name under Configuration > Media that differs only in upper or lower case from a folder that is already there (for example "Movies" when the NAS has "movies") now uses that folder. Before, a second, empty folder was created beside it and Radarr or Sonarr pointed at the empty one. - Spaces typed before or after a path in Media settings are removed. - After saving Media settings, Sonarr, Radarr and qBittorrent move to the new folders right away instead of a few minutes later.
-
v0.32.0
Install Sonarr, Radarr, Prowlarr, qBittorrent and FlareSolverr and they are wired to each other within a few minutes, in any order:
- Sonarr and Radarr get qBittorrent as their download client and a library folder. - Prowlarr gets Sonarr and Radarr, so an indexer you add there reaches both. FlareSolverr is added as a proxy (tag "flaresolverr"). - qBittorrent saves into the shared downloads folder, where Sonarr and Radarr can import from.
Indexers are never added for you: which ones to use is your call.
A fresh Sonarr, Radarr or Prowlarr on a home network opens straight away instead of asking you to invent an account. Set a login in each app's Settings > General if other people use your network.
Moving the library to a NAS under Configuration > Media now creates the folders on the NAS and points Sonarr, Radarr and qBittorrent at them. Changing the qBittorrent username or password under Settings now changes it in qBittorrent too, and in Sonarr and Radarr.
Apps you already connected by hand are left as they are.
-
v0.31.0
When several apps have a new version, App updates now has an "Upgrade all" button. You confirm once, and the apps are upgraded one after another. Each is backed up first, and one that does not come back healthy is put back on its previous version while the rest carry on.
A big jump to a new major version (for example 1.x to 2.x) is not part of "Upgrade all". It keeps its own Upgrade button, because that is the kind of update that can change an app's database.
-
v0.30.0
In Your apps, clicking an app now opens it straight away in a new tab. Its details (state, uptime, memory, Docs, Logs, Restart, Stop) are one click away on the "..." that appears on the tile when you point at it, and is always there on a phone.
A stopped app still opens its details when clicked, so Start is right there.
-
v0.29.0
File Browser moves to version 2.0. If you already have it, this update carries it over for you: your users, shares and settings come along, and your old database is kept beside the new one. Your files are not touched.
If the new version does not start on your box, Podhouse puts the old one back by itself and this update is undone.
This also fixes the upgrade that got stuck on "starting…": pressing Update on File Browser 2.0.0 could not work before, because 2.0 needs its settings in a new shape.
-
v0.28.1
Under "Welcome to Podhouse" you now see the greeting, today's date and the time. The weather stays in its own tile.
-
v0.28.0
Right now tells you what is coming and why it is there — "Not downloaded yet, Radarr is watching for it" — with a button to open the app, a "Next up" row, and four figures: what is downloading, how much came down this session, what is still wanted and what is in the queue.
The welcome line now greets you with the day and the weather; your box's status stays in the sidebar, instead of appearing twice.
-
v0.27.1
The Running / Memory / Disk tile is gone: the greeting already tells you whether everything is fine, and the numbers are on the Reports page with their history. Welcome and the weather now share the top row.
-
v0.27.0
Every part of the Overview is now a tile you can move and resize: the welcome, your box's status, the weather, your apps, links and Right now. Press Arrange at the top, then drag a tile by its bar (on a phone, tap one tile's bar and then another's), and pick how wide it should be. Your apps can be reordered in the same mode. The layout is kept on the box, so it looks the same on every device.
-
v0.26.0
Click the city in the weather tile and start typing: places appear as you type, with their region and country, so you can pick your own town anywhere in the world, and spellings like "beer sheva" find it too. The same place lets you choose °C or °F.
Your apps can be arranged: press Arrange, then drag a tile, or on a phone tap a tile and then tap where it should go. The order is kept on the box, so it is the same on every device. "Back to A–Z" undoes it.
-
v0.25.0
The top of the Overview now tells you how your box is, with the memory and disk in use and the weather where you live. Click the city name to change it; switch Weather off in Customize if you would rather not have it (then the box does not ask for a forecast at all).
Your apps is back in a panel with a title, and grouped by what they are for — Media, Your data, This box — with a search box and buttons to show one group. qBittorrent's tile shows its download and upload speed live.
Fixed: Right now named Sonarr for films, which come from Radarr.
-
v0.24.0
The top of the sidebar now tells you how your box is: "All good" or "Needs a look", how many apps are running, and a strip with one mark per app that lights up only for the app that needs you. The pages are grouped into Your box and Maintenance, with how many apps and containers you have beside Apps and Logs. The version, how long the box has been up, and Log out are at the bottom.
The processor, memory and disk numbers are on the Reports page.
-
v0.23.1
Seerr is a new app under Media: family and friends ask for a film or a show in one place, and once it is approved Sonarr and Radarr fetch it into your Jellyfin, Plex or Emby library. The first person to open it becomes its administrator.
-
v0.23.0
Each app on the Overview is now one small tile, with how it is doing written under its name. Only something that needs you is coloured: amber when an app is close to its memory limit, red when it is unhealthy, dimmed when stopped. Click a tile for its details, Logs, Restart, Stop and Open, in a window over the page. Escape or a click outside closes it.
The Logs page now marks Bazarr's errors as errors.
-
v0.22.0
The pages now sit on a thin line like stops on a route, with the one you are on lit, and the text is lighter so the current page stands out by itself. At the bottom, a card shows how long the box has been up and its processor, memory and disk use, each in its own colour that warms towards amber and then red as it fills. Log out is on that card.
On a phone, Log out is back: an icon beside the Podhouse name. It had gone missing from the phone layout in 0.17.0.
-
v0.21.1
Updating Podhouse itself now looks like upgrading an app: the old version, the new one, and a ring that fills as it goes through backup, download, install and restart. A "Signed release" badge appears once the release is verified as genuine, and when the dashboard restarts partway through, the window says so instead of simply going quiet.
You will see this from your next Podhouse update onwards — while updating, a box shows the window from the version it is updating from.
-
v0.21.0
Upgrading an app used to fill a window with hundreds of lines of download output. Now it shows the old version and the new one, with the app between them in a ring that fills as the upgrade goes, and one sentence saying what is happening — backing up, downloading, how much is left and for how long, switching over, checking it is healthy.
The download percentage is real, read from the image's own size before it starts. The full output is still one click away under Show details.
-
v0.20.1
The Updates page was not offering new releases of the larger linuxserver apps. They publish thousands of versions, and Podhouse stopped reading the list before it reached the ones you are on — so Sonarr could say an update was out while Podhouse said nothing. It now reads from where a newer version can be, finds them, and checks about five times faster.
Press Check on the Updates page to see what is waiting.
-
v0.20.0
The Logs page now tells you what happened instead of printing every line. Lines that belong together become one event — started, updated its database, housekeeping, checked for new things — and the same event repeated all day is shown once, with how many times it happened. Click any event to see the lines behind it.
Warnings and errors always stand out on their own, never hidden inside a group, and a band at the top says whether the app is running, when it last wrote something, and how many warnings and errors there are.
-
v0.19.1
Settings → Tools → Clean up had been failing with "403 Forbidden" since 0.15.0. It now runs through the part of Podhouse that is allowed to change Docker, and works. It still removes only leftover layers from updates and rebuilds — never an image an app uses, and never one kept for rolling back.
-
v0.19.0
Every Settings tab now opens with a band that says what it is about — where the box is installed, when it was last backed up, how many apps are running — with an icon beside each figure.
Configuration is rebuilt. Each path is shown once instead of twice, and the settings are no longer hidden behind a toggle: they are lists you edit in place, with passwords kept as dots until you choose to replace one. Settings for apps you have not installed are folded away, and a bar at the bottom appears only when you have changed something, showing how many changes are waiting.
-
v0.18.2
Nothing you will see. The suite now checks that every element the page reaches for actually exists, which is the check that would have stopped 0.18.0 from being released, and it found one more dead reference on its first run.
-
v0.18.1
0.18.0 left a line pointing at three Settings switches it had just removed, which threw before the page drew anything. If your dashboard came up empty after updating, this is why, and this release fixes it.
-
v0.18.0
The panel was three cards of mostly empty space. It is one band now: what lands next gets the room, with the poster of the series beside it, and when something is actually downloading that becomes the headline instead — name, progress, speed, time left.
The artwork comes from your own Radarr and Sonarr, which downloaded it when you added the series, and is served by this box. Nothing is fetched from the internet and nothing is told to anyone about what you watch.
The Settings switches for the panel's three old parts are gone; the panel has one part now, and its single switch stays.
-
v0.17.3
0.17.2 fixed the place the notes are fetched, but every box already had the old text in its cache and would have kept showing it for hours. The notes are cleaned when they are read as well, so the page is right the moment you open it.
-
v0.17.2
The notes on the Updates page are read from the release tag's own message, and a signed tag carries its signature in that message. Since 0.14.0 that meant every set of notes ended with forty lines of base64. It is stripped now, in the dashboard and in the changelog on the website.
-
v0.17.1
A Customize button on the greeting opens a list of this page's sections — Welcome, Your apps, Links, Right now — and each one switches off and stays off. Status has no switch: it is the answer to "is my server OK".
Links group themselves. Whatever you typed as a link's subtitle becomes a tab, so five links marked "Private Tracker" say it once instead of five times, and each card shows its own address underneath the name.
The greeting sits on a band of its own, coloured by whichever accent you chose, and says one thing rather than repeating the tiles below it.
On the Midnight theme, recessed surfaces no longer read as holes.
-
v0.17.0
A new page in the sidebar. Memory, processor, disk and network over the last few hours, as filled curves with the range written beside them rather than axes to squint at. Processor temperature and fan speed appear when the host has sensors to read them, and stay out of the way when it does not. Below them: where the memory is actually going, and the facts about this machine.
The sidebar keeps its CPU, memory and disk meters, and Log out now sits with them at the foot of the column instead of in the top bar.
"Containers without a module" has been removed from the Apps page. Every container on the box is still listed on the Logs page.
-
v0.16.2
It was a filled rectangle with a hard bottom edge and a line along the top, inside its own bordered panel — a block with a graph drawn on it. Now it has no surface, no border and no axis: the curve lies behind the panel's own text, fading out at both ends and washing downwards, closer to texture than to a widget.
Two things had to be got right for that to work. It sits at the TOP of the panel, not the bottom, because a panel that stretches to the height of the app list puts "the bottom" hundreds of pixels below anything you are reading — and an open log drew straight over it there. And the range it covers is written into the figures beside the memory and the uptime, because a shape you cannot measure is decoration; decoration that looks like data is worse than none.
The rule above the log is now part of the panel rather than part of the log, so it no longer blinks into existence when you open one.
-
v0.16.1
The Overview released yesterday was designed while looking at nine apps. On a box with sixteen it did the thing it existed to prevent: the index grew into an 800px column, the page scrolled for a list, and most of the right-hand side sat empty beside it.
The list has a height of its own now and scrolls inside it, so the page no longer grows with the number of apps. The category headings are gone with it — eight labels and the space above each of them were most of that column, and an index is for finding a name. They are in alphabetical order for the same reason. Browsing a catalog you have not seen before is what the Apps page is for; this is the list of things you already chose.
The log, when it is open, now fills the space that was empty under a short description rather than adding to the page.
-
v0.16.0
Nobody opens this page to find out what is installed — they know what they installed. They open it to find out whether the box is fine. So that is the first thing on it now, written as a sentence at a size that means it, and the four equal stat cards that used to be there are gone.
Underneath, the apps stopped being a grid. Nine equal boxes give nine things equal weight, which is the same as giving none of them any: there was no way to look at one. They are an index down the left instead, one quiet line each, with no frame around each app and none around each category — a label and some space do that, and the counts went with the frames, because the rows are the count and they are already on screen.
The app you pick gets the whole right-hand side: what it is, its figures, its actions, the tips its own module ships, and links to its project. The empty half of that panel now holds a memory chart — sixty samples taken from the refresh that was already running, drawn as a curve through every point, with no charting library, because this box has to work with nothing downloaded. An app that is not moving draws flat, deliberately; a chart that scales to its own noise is a chart you stop believing.
And Logs open in the panel rather than on another page, which was the last reason to leave this one.
-
v0.15.0
Installing an app means creating a container, so the dashboard mounted /var/run/docker.sock read-write. That is root on the box — anything that can create a container can create one that mounts / and runs as root — which made every session on this page, and every stolen cookie, a full compromise of the machine. It has been written down in docs/DOCKER-SOCKET.md the whole time, along with the reason a socket proxy alone would have been theatre: an allowlist that still permits POST /containers/create is root-equivalent, since the attacker simply asks for the container they want.
The web process now holds nothing. It asks a second container for named operations — install radarr, stop jellyfin, selfUpdate 0.15.0 — over a unix socket of our own, and that worker builds every command itself from an id it checks against the catalog on disk. There is no operation that takes a command line, which is the property the whole thing rests on. What the page reads goes through a proxy that answers GET and refuses POST.
On a test box afterwards: the web container has no socket, a request to create a privileged container bind-mounting / is answered 403, an invented operation is refused by name and written to the worker's log, and installing, removing, restarting and taking an exact backup all still work.
It is not a proof of anything. The worker can do whatever Docker can, so a flaw in its own argument handling is still a way to root — but that is one file and twenty-odd operations you can read in an afternoon, instead of every route on a web server.
-
v0.14.0
Until this release, an update checked two things: that the release was not frozen, and that the checkout worked. Neither of those says anything about who wrote the code — and this code is checked out and run as root, on every box, automatically. Anyone who could write to the upstream repository, or stand between a box and GitHub, had that.
Releases are now SSH-signed tags. A box keeps its own copy of the public key in state/ and verifies every tag against that file before a single byte is written to disk. It is not read from the tree being installed: whoever can hand you the code can hand you the key that vouches for it, and a signature checked against a key from the same place proves nothing at all.
Two details worth stating, because both are places this is usually got wrong. The check reads git's exit status and not its words — for a good signature by a key that is not allowed, git says "Good signature" first and "No principal matched" second. And the key is pinned exactly once, never replaced by a release, because a key a release can rewrite is not pinned.
What it does not do: the first time, a box has to learn the key from what it just installed, so whoever served that clone is trusted once. Every update after it is checked. docs/SECURITY.md says so in those words rather than claiming more.
This tag is the first signed one.
-
v0.13.4
That page listed one row for every app-and-variable pair in the whole catalog. Sixty rows on a box running sixteen apps: PUID six times over, HB_QBIT_PASS twice — once for the old Media Stack and once for the qBittorrent module that replaced it — and rows for apps that were never installed, whose Show button could only ever answer "not set".
The duplicates were never duplicates. .env is one file for the whole box, so a key six apps read is one password, and printing it six times made a shared value look like six separate ones.
Nor were they all passwords. Of the 48 names the catalog declares, 26 are secrets; the others are settings — user IDs, addresses, a Minecraft server's difficulty, which had no business on a page called Generated passwords.
So: one row per value, installed apps only, secrets only, and a "Used by" column that names the apps sharing a key. Sixty rows became five, and the page now answers the question it is named after.
-
v0.13.3
Updating from the dashboard button kept failing on a box where nothing was wrong: clean tree, 68GB free, a state directory of 3.5MB. Every attempt left a 387KB archive behind — exactly the size of every archive that had ever worked. The same update run from the command line succeeded on the first try.
What the button does differently is leave the dashboard running. It keeps writing into state/ while tar reads it, and GNU tar reports that with a non-zero exit code after writing an archive that is completely fine. The script treated any non-zero exit as fatal, and sent tar's explanation to /dev/null — so for four attempts the only evidence was a sentence that named the step and nothing else.
The backup now keeps tar's stderr, and decides by reading the archive back rather than by the exit status: readable means carry on, and say in the log what tar objected to; unreadable still stops the update. The files this update writes while it is running are excluded, since they describe the operation rather than the box.
If an update of yours ever stopped at "Saving state and .env", this is why.
-
v0.13.2
That release stopped both kinds of backup from swallowing state/restore, and left the two directories sitting beside it: state/platform-backups, which holds the archive taken before every version switch, and state/update-backups, which holds the one a migration takes before it touches a module.
scripts/self-update.sh has always skipped those when taking its own. The config backup never has — and it did not matter while each of them weighed eight kilobytes. Once one of them grew,
homebox backup configwas quietly compressing five of them: 18GB on the box this was found on, with the disk climbing from 43% to 68% while it ran.The rule is the one already written above the ./backups exclude: a backup does not go inside a backup. The test now checks all four directories at once instead of the one that happened to break.
-
v0.13.1
A restore prepared in the browser is staged under state/restore: the archive that was uploaded, and the copy unpacked from it so the plan can be read. It sits there until it is applied or discarded, which is right - but nothing excluded it from the two places that archive state/.
So every platform update, and every config backup, was compressing an encrypted archive that was already compressed. On the box where this showed up the pre-update archives went from 7.6KB to 4.3GB each, three of them held 12GB of a 79GB disk, and an update sat at "Saving state and .env" long enough to look hung. It was not hung. It was doing exactly what it had been told.
Both paths now skip it, and a test asserts the excludes rather than trusting them - this is the kind of rule that stops being true without anything failing, because the archive simply grows.
-
v0.13.0
Every app tile carried three buttons and a pulsing green dot. The buttons cost a divider and a whole row on every tile, and the set could not grow — a fourth action had nowhere to go. The dot asked for attention on behalf of the apps that were perfectly fine.
Logs, Restart and Stop now sit in one menu behind a button in the corner of the tile, with Open at the top of it. The button is always drawn rather than appearing on hover: there is no hover on a phone, and a control that only exists on a mouse is not a control.
The running state moved to a small badge on the app's own icon, and it does not pulse. Stopped is grey rather than red, because stopping an app is a choice someone made and not a fault.
"Memory" was a label for the number sitting next to it, which already ends in MB. Its place goes to how long the app has been up, taken from Docker's own status line — the one thing on that page that answers "did this restart without me?".
The five numbers across the top of the Overview get a 38px icon plate in place of 13px of grey line art. The plate is tinted only when the tile has something to say: amber when apps are down or a backup is overdue, blue when an update is waiting, and neutral the rest of the time.
The top bar says less. "All running" and "connected" are gone while they are true — the strip underneath already counts the containers, and a bar that reports good news at every moment is a bar you stop reading. Both come back, loudly, when they stop being true.
-
v0.12.0
Backups you can actually use: put one back from the page, and take one that has everything in it.
**Putting a backup back, without a terminal.** Settings → Backups now opens an archive — uploaded, or one already on this box or its NAS copy — and shows you what is inside it before anything moves: every app, how many files, and what each would write over. You tick the apps you want back.
.envand Podhouse's own settings are separate ticks, each saying what it costs: restoring.envreplaces every generated password with the one in the backup, and restoring Podhouse's state brings back the dashboard login from that day too. Then you type the word to confirm.Applying takes a fresh backup first and stops if that fails. It stops only the apps it is about to rewrite, keeps what it replaced so you can go back, puts the files back under the box's own account, and starts the apps again — telling you each step as it happens. There is no "restore everything" button, and the media pool is never restored from the page.
**A backup with everything in it.** An app keeps its newest settings in memory: qBittorrent writes its configuration only when it exits, so a path you changed a minute ago may not be in the archive at all. Tick "Stop apps while copying" and Podhouse stops every app except the dashboard and the proxy, copies the files at rest, and starts them again — a few seconds of downtime for an archive that holds what the apps actually know.
homebox backup config --exactdoes the same from a terminal.If the box loses power halfway through that, nothing stays down: the list of stopped apps is written before the first one stops, and the dashboard starts them again on its next boot, keeping any that refuse for the attempt after.
**Midnight.** A fourth set of colours in Settings → Appearance: the same near-black as Dark with a little blue in it, and the canvas, the sidebar and the cards further apart.
The card that printed shell commands for restoring is gone from Settings → Backups;
homebox restorestill does that job for a box whose dashboard will not start. -
v0.11.0
A quieter Overview, a library that explains itself, and a picture behind the page.
**The Overview is now the box and your apps.** The numbers across the top, then every installed app across the full width. Everything that was advice or history — "Needs you" and "What changed" — moved to Settings → Health, where the buttons that act on them already live. The Addresses and Backups panels are gone from it too: the address is in the top bar, the backup's age and destination are on the Backups tile, and the full versions are in Settings.
**Apps open when you click them.** The "Your login for …" reminder no longer stands between you and the app. The same guidance is on the app's page in the library, and generated passwords are still in Settings → Passwords.
**The App Library.** The Apps page is called what it is, and says "12 installed · 69 available · 4.2GB planned memory". A new **Installed** tile filters the list to what is actually on the box, the order menu reads Installed first, A–Z or By category, and every service's **Open** button is now a real button rather than a link to hunt for.
**A photograph behind the page, if you want one.** Settings → Appearance offers Milky Way, fog from above, aurora — or none. The pictures ship with Podhouse, so they work on a box with no internet, and they are dimmed so nothing on top of them is harder to read. A new box now starts dark, blue and fog; a box that already has a look keeps it.
**Settings.** Remote access is gone — VPN, Tailscale and the tunnel are apps in the library, and their settings are theirs. Tools no longer prints commands you could have looked up: it now has one button that deletes leftover Docker image layers and tells you how much came back.
-
v0.10.9
The Media Stack is now six separate apps: Radarr, Sonarr, Prowlarr, Bazarr, qBittorrent and FlareSolverr.
Each one can be installed, updated and removed on its own — take only Sonarr, or only qBittorrent, without the rest. Each shows its own project's description and credit, and how much memory it really uses. They still work together exactly as before: they find each other by name, and they share one media library, so downloads move into it without being copied.
On the Apps page they appear under one "Media Stack" heading, with a button that adds all six at once.
If your box already runs the Media Stack, nothing changes: it stays as it is, and the six separate apps are shown as already part of it.
-
v0.10.8
Every app, described in its own project's words.
47 apps now show the text their own developers wrote: the one-line description from the project's GitHub page, and the opening of its README. Under it, each card says where the words come from — for example "From henrygd/beszel ↗ · MIT" — and the app's panel links to the project, its documentation and its licence. Apps that bundle several programs, closed-source apps and game servers keep the text written for Podhouse.
A line that is too long for its card now fades at the edge, and slides across when you point at the card, instead of being cut off.
Two fixes to backups:
- A backup scheduled "every day at 02:00" now actually runs at 02:00. Until now it ran 24 hours after the schedule was switched on. - The NAS folder for backup copies has moved to Settings → Backups, next to the archives it protects.
-
v0.10.7
Copying backups to a NAS no longer ties the dashboard to the NAS.
In 0.10.6 the dashboard mounted the NAS folder itself. On a box where the NAS is mounted on demand, that meant a NAS still starting up after a power cut could keep the dashboard from starting too. It was caught before anybody had turned the feature on.
Now the dashboard mounts nothing. Each copy is made by a small container that exists only for that copy and is gone a moment later. If the NAS is down, one copy fails — you are told on the Backups card and under Needs you — and the dashboard carries on as if nothing happened.
The copy is still checked where it lands, byte for byte against the original. A folder you have just set shows as waiting for its first copy rather than as broken; "Back up now" makes that first copy and shows whether it worked.
-
v0.10.6
Backups can now leave the box.
Until now every archive sat inside the Podhouse folder on the box's own disk. That covers a mistake, but not a dead disk — and not deleting the folder, which takes the backups along with everything they were meant to protect.
Settings → Configuration → Backup has a new field: "Also copy every archive to". Point it at a folder on another disk or on a NAS share that is already mounted on this box. From then on every archive is copied there as soon as it is made, and checked again where it landed. The copy on the box stays too, for quick restores.
If the NAS is not mounted, that folder is just an empty directory on the local disk. Podhouse notices, refuses to put the copy there, and tells you — on the Backups card, on the tile at the top, and under Needs you — instead of quietly filling the disk it was meant to outlive.
The copies are encrypted with the same key as the originals. Keep that key somewhere that is not this box: Settings → Backup → Reveal key. Without it, the archives on the NAS cannot be opened once the box is gone.
Uninstalling now says how many backups it is about to delete, how recent the newest one is, and whether a copy exists anywhere else.
-
v0.10.5
The sidebar leaves the edge of the window, and the top of the page finally says something.
The sidebar now floats: rounded, inset, lifted off the page instead of welded to the left edge. Above the content there is a new bar with the three things that are true on every page — which box this is and its address, whether it is well, and whether an update is waiting. On a box you reach from several tabs, the name at the top left is the one that tells you where you are.
"Good evening" is gone. It spent the first line of the page saying nothing about the box; the numbers start there now, level with the top of the sidebar.
Status stopped repeating itself. That tile used to say "nothing needs you" even when nothing did, which is a fifth of the row spent on nothing. It appears when something is wrong, with the reason and the button that starts fixing it.
In its place: Backups. One archive holds every app's settings and every password this box generated, and "never" is the state a box sits in until somebody looks. Now it is a number at the top of the page rather than a panel below the fold.
Also: small line icons on the tiles and on the processor, memory and disk meters; wide screens are actually used, where the content used to stop at 1280 pixels; and a bootstrap token pasted with a stray backtick or quote around it is no longer read as the wrong token.
-
v0.10.4
Asks you to sign in once, instead of loading a page whose buttons do nothing.
0.10.0 split a session into two halves: the cookie, which every app on this box receives because cookies ignore ports, and a token only this page can hold. Sessions made before that have no token, so the page loaded and then refused every action — which looks like a broken dashboard, not like "sign in again".
Those sessions now end properly. After this update you sign in once, and everything works as before.
-
v0.10.3
If your box is on 0.10.0, this is the one to get to — and it may need one command by hand. See below.
0.10.1 made the release check stop rather than guess when it cannot read whether updates are paused. That was right, and the way it read the file was wrong: on a box that had updated before, git declined the read, and the check then refused every update. Boxes on 0.10.0 or 0.10.1 cannot update themselves out of it, because the update script that runs is the one already installed.
Now it reads that file two ways — git, and plain https — and only stops when both fail.
Also in this release: rollback archives written by versions before 0.10.0 are closed to owner-only. They contain your generated passwords, the backup key and live sessions, and until 0.10.0 they were written readable by every account on the machine.
**If the update button fails with "could not re-read the release control file", run this once on the box:**
cd /opt/podhouse && sudo git fetch --tags --force origin && sudo git checkout v0.10.3 && sudo bash scripts/self-update.sh 0.10.3
After that, updates work from the dashboard again.
-
v0.10.2
Closes the rollback archives older versions already wrote, and fixes the update check that 0.10.1 broke.
0.10.0 made every new rollback archive private. This release fixes the ones already on your box: before 0.10.0 they were written readable by any account on the machine, and each contains your generated passwords, the backup key and live sessions.
It also repairs the release check itself. 0.10.1 made that check stop rather than guess when it cannot read whether updates are paused — correct, and it then refused every update, because the way it read that file does not survive a shallow clone. Caught on the test box on the first run.
If an untrusted account has had access to this machine, treat the secrets in those old archives as seen and change them. On a box only you use, this is housekeeping.
-
v0.10.1
Closes the rollback archives older versions already wrote.
0.10.0 made every new rollback archive private. This release fixes the ones already sitting on your box: before 0.10.0 they were written readable by any account on the machine, and each one contains your generated passwords, the backup key and live sessions.
If an untrusted account has had access to this machine, treat those secrets as seen and change them. On a box only you use, this is housekeeping.
-
v0.10.0
A security review, and the fixes it produced.
Adam Twilley audited the project and found real things. Everything below was reproduced on a test box before it was changed, and again after.
**A malformed request could stop the dashboard.** The address of an incoming request was parsed before the error handling started, so a request with a broken Host header ended the process — repeatedly, faster than Docker restarts it. It now answers "bad request" and stays up.
**The rollback archive was readable by anyone on the box.** Before each update Podhouse saves your settings and passwords so it can put them back. That file was written with default permissions, which means every local account could read every password and live session out of it. It is now created private, in a private directory, before a single byte goes in.
**Changing your password could be undone.** A login using the old password, arriving at the same moment as the change, could write back the old password and the old sessions. Auth changes now happen one at a time.
**Your dashboard cookie is sent to every app on this box,** because cookies do not distinguish ports — that is how the web works, not a bug here. So the cookie alone is no longer enough to change anything: the page also holds a token that only it can read, and installs, removals, restores and password changes require it. You will be asked to sign in once after this update.
**An icon from a URL could be a program.** SVG files can carry scripts, and they were being served back from the dashboard's own address. Icons are now checked by their actual bytes, SVG from a URL is refused, and icon URLs pointing inside your own network are refused too.
**The login throttle could be side-stepped** by a header anyone can set. It now counts the connection, not the claim.
**Apps added by hand from the App Store skipped the security limits** every other app gets. They no longer do, and no app starts without them — from the dashboard or the command line.
**The pause switch on updates failed open.** If a box could not read whether updates were paused, it updated anyway. It now stops.
docs/SECURITY.md also says plainly what is still open, including release signing.
-
v0.9.0
Portainer is now a choice, not part of the furniture.
Portainer is a full Docker interface, and to be one it holds a read-write Docker socket — which is root on the box. It shipped as half of Core, so every install ran it, whether or not anyone ever opened it. Most people never do: Podhouse already shows logs, restarts apps and applies updates itself, and nothing in it has ever called Portainer.
From this release a new box does not get it, and it appears in the app store like any other app, for the times you want to look at Docker directly.
If your box already runs Portainer, nothing happens to it. It keeps running, keeps its settings and keeps its password, and updates leave it alone — the old definition stays in Core in a form that Compose starts for nobody new and deletes for nobody old.
This is the second step of the Docker socket work; docs/DOCKER-SOCKET.md lists every call the dashboard makes and what is left to do.
-
v0.8.1
The metrics agent no longer holds the keys to the box.
Beszel's agent needs one thing from Docker: the names of the containers it is graphing, and their memory and processor use. It was being handed the Docker socket to get them, which is the same key that can create a container — and mounting that socket "read-only" restricts nothing, because the flag applies to the file while every write travels through the API behind it.
It now asks a small filter instead, which answers questions about containers and refuses everything else. Verified on a test box: listing containers and reading stats work, creating a container is refused, so is anything about images.
Also new: docs/DOCKER-SOCKET.md, which lists every Docker call the dashboard makes, who else on the box holds the socket, and — honestly — why putting the same filter in front of the dashboard itself would be decoration rather than protection while it runs Compose. The plan for fixing that properly is in there too.
Nothing to do on your box. If Beszel is installed, the update adds one small container next to the agent.
-
v0.8.0
The Overview answers the question you actually came with.
Where the home page used to show four numbers — uptime, load, memory, disk — it now shows what is waiting for you, and each line carries the thing that deals with it:
- apps with a new version, and the button that reviews them - a backup that has not run for a week, or has never run - an app that is not running, and its logs - a disk filling up - the image layers old rebuilds left behind, cleared from that line
When there is nothing, it says so in one line. The numbers are still there, as one quiet strip underneath with a small icon each.
Events became "What changed", told as things that happened to apps. Updating Immich moved four containers and now reads as one line, not six, and an app that crashed and came back says so rather than reporting a bare "started".
The dashboard's default appearance is now Dark; Dim is still one click away in Settings.
Nothing on your box changes. This is the page, not the apps.
-
v0.7.1
Fixes 0.7.0 on boxes installed the normal way.
0.7.0 took every Linux capability away from every container. One of them turns out to be load-bearing: a container running as root still obeys file permissions unless it has DAC_OVERRIDE, and everything under /opt/podhouse belongs to the box's own user rather than to root. So the dashboard could not read the file holding your login and asked you to claim the box again, and Portainer could not open its database.
Every container gets that one capability back, with the reason written next to it. Everything else 0.7.0 dropped stays dropped.
Nothing was lost: the accounts, the app data and the settings were on disk the whole time, unreadable rather than gone.
Also: the dot next to Updates pulses when a Podhouse update is waiting.
-
v0.7.0
Every app now runs with the smallest set of privileges it was proven to need.
Docker gives a container about fourteen capabilities by default, and almost no app here uses them. Every service in all 63 modules now drops all of them and cannot gain new ones while running. Where an app genuinely needs one back it is listed with a comment saying why: most of them only need to take ownership of their own data directory and stop being root, a few listen on a low port, and WireGuard and Tailscale manage network interfaces.
This was tested rather than assumed: each module was installed on a throwaway machine, watched, and its logs read. That is also how five apps were found to be broken on a clean install, before any of this work and for unrelated reasons. All five are fixed:
- File Browser, n8n and Minecraft Bedrock could not write their own directories. - Vaultwarden refused to start at all when its public URL arrived empty. - PhotoPrism restarted forever because it was started as its own user instead of being told which user to become.
Also fixed: AdGuard Home could not install on a normal Debian, because it asked for port 53 on every address while the system resolver already held one of them. It now binds this box's address, the way Pi-hole already did.
And in the command line tool,
homebox installsaid an app was installed even when Docker had refused to start it.Nothing to do on your box. Your apps keep their data and their settings; they are recreated with the new limits on the next update or restart.
-
v0.6.2
The install folder is now /opt/podhouse. During this update the box moves /opt/homebox there (a rename on the same disk, nothing is copied) and leaves /opt/homebox as a link, so every app, path and habit that still uses the old name keeps working. Apps move to the new path the next time they are recreated.
Fixed: the X on an app's panel closes it again.
The installer shows the Podhouse name, and a fresh install goes straight to /opt/podhouse.
(0.6.1 carried the same changes without release notes.)
-
v0.6.1
-
v0.6.0
The install folder moves from /opt/homebox to /opt/podhouse. The update does it for you: the folder is renamed in place, nothing is copied, and /opt/homebox keeps working as a shortcut to the new location.
-
v0.5.3
Podhouse has its own domain: podhouse.dev. The install command is now curl -fsSL https://get.podhouse.dev/install.sh | sudo bash. The old addresses keep working and redirect. Nothing to do on your box.
-
v0.5.2
A new Podhouse logo in the dashboard, the sign-in screen, the browser tab and on the website.
-
v0.5.1
Update checks and links now use the new name directly: github.com/abeksis/Podhouse and podhouse.abeksis.net. Nothing to do on your box.
-
v0.5.0
HomeBox is now Podhouse. Another self-hosted app already uses the name Homebox, so this project takes its own before it grows.
Nothing to do on your box: the install folder, the command, your settings, apps and data all stay exactly where they are. Only the name on screen changes.
-
v0.4.31
Addresses on the Overview have Copy and Open buttons. Backups says in one line whether this box is backed up, with a Back up now button right there. New installs start on the Dim theme.
-
v0.4.30
The top of the Overview is four numbers: whether everything is running, how many apps are installed, how many containers are up, and whether updates are waiting. Each one opens its screen, and when something is wrong the status says what and offers the fix.
-
v0.4.29
On Apps, categories are now tiles showing how many apps each has and how many are installed, with the order menu inside the search field.
The Containers screen is removed. Open any app's details to see its containers, including databases, with Logs, Restart and Stop for each.
-
v0.4.28
Upgrading an app to a newer version from Updates now finishes properly: it used to switch the version and then fail before recording it, so the app stayed on the list. Pressing Check now clears any row left over from before.
The Updates page is simpler: every app update is in one list with the app's icon and a label saying whether it is a new version, a security rebuild or held back, and the boxes at the top show what is waiting.
-
v0.4.27
The Overview is tidier. "This server" and "Events" are now one panel, "This box", with up time, load, memory used and disk free instead of the bars the sidebar already shows. "Running containers" is gone: Logs, Restart and Stop are on each app in Your apps. Databases and other containers without a page of their own are on the Containers screen.
-
v0.4.26
Your apps shows memory and CPU for Radarr, Sonarr, Prowlarr, Bazarr, qBittorrent and every other app that shares a module, instead of "--".
-
v0.4.25
Your apps on the Overview now shows how hard each app is working. Apps are grouped in a box per category, heaviest first, and each one shows its memory and CPU with a bar, next to a state dot that pulses while the app is running.
-
v0.4.24
App cards on Apps have a new layout: the icon, state, memory, category and the install button sit in a rail on the left, with the description and the services an app runs on the right. Setup notes are folded under a "setup notes" link and stay open while the page refreshes.
-
v0.4.23
On Apps, the memory the installed apps ask for is now a grid of 100 squares, one per percent of the box's memory, coloured by the app that asks for it, with the largest apps listed beside it.
-
v0.4.22
Reworded a few app descriptions in the catalog. No behaviour changes.
-
v0.4.21
The dashboard is now black with orange by default, with dark icon tiles. Other accent colours and the dim and light modes are still in Settings -> General -> Appearance.
-
v0.4.20
A redesigned dashboard. Sections now sit in a sidebar, the Overview is reorganised around your apps, this server and running containers, and Appearance offers dark, dim or light with six accent colours. Everything the dashboard did before, it still does; only the look and some labels changed (App Store is now Apps, Launcher is Your apps, Live Logs is Logs).
HomeBox is now published under the MIT licence.
-
v0.4.19
Update checks now go through get.abeksis.net, which counts anonymously how many boxes run each version: the box sends its HomeBox version, no IP or identifier is kept, and per-box rows become plain totals within two days. If it is unreachable the check falls back to GitHub. To opt out, set HB_ANONYMOUS_STATS=off in /opt/homebox/.env and run sudo homebox up dashboard --yes.
-
v0.4.18
Films no longer stay stuck on the Coming soon card as "out now". A film is removed once its digital release has passed, instead of lingering until its disc release date.
-
v0.4.17
Updating an app now backs up only that app, not the whole box — the backup for a single update drops from about 950MB to a few MB. Backups also skip artwork, caches and logs that apps download or recreate by themselves, such as Jellyfin's library images and Radarr and Sonarr's posters.
-
v0.4.16
Uninstalling with a one-line command piped from curl now shows what will be removed and asks you to type 'remove', instead of refusing unless --yes was given.
-
v0.4.15
New installs on a machine without git were silently getting the development branch instead of a release. They now start on the current stable release from the release manifest, and say so plainly if no release can be found.
-
v0.4.14
Live Logs timestamps now show in the box's own timezone instead of UTC, so they match the times the apps print next to them. Hover a timestamp to see the exact UTC time.
Five services that were running on UTC now follow the box's timezone: Immich's database and cache, Nextcloud's cache, Ghost and WordPress. Already installed apps pick this up the next time they are updated.
-
v0.4.13
Live Logs now draws one row per line, like the reference product: long lines wrap at word boundaries instead of scrolling sideways, every row carries a dimmed timestamp, and boot banners drawn in ASCII art keep their shape instead of being smeared into a single line.
This reverses the line folding introduced in 0.4.12.
-
v0.4.12
Live Logs now shows one log entry per row. Applications that put newlines inside a single message — Uptime Kuma's ping output is the worst offender — were being drawn as one row per line, so a single monitor failing looked like seven separate events.
-
v0.4.11
The Live Logs picker now shows each service by name with its icon, instead of raw container names.
Also fixes the HomeBox app card reporting itself as "1/2 running · partial" after every successful update — that second container was HomeBox's own update helper, which inherits the dashboard's compose labels.
-
v0.4.10
The Headscale icon was the full wordmark and rendered as a thin strip of dots in the app tile. Cropped to the mark.
-
v0.4.9
Adds Headscale: Tailscale's coordination server, self-hosted, with a web UI for enrolling devices and issuing keys.
Also fixes a box reporting an update to the version it was already running. The manifest check treated "the manifest has not changed" as "nothing has changed", and the thing that had changed was the box itself.
-
v0.4.8
Boxes now notice a new release within about twenty minutes instead of up to six hours. The manifest check has been moved off the image check's timer — they look alike but one is a dozen registry round-trips and the other is a single conditional GET.
This matters most for the pause switch: a release found to be bad could previously keep installing itself for six hours after it was stopped.
-
v0.4.7
The two notes on the Updates page — "Everything is current" and the footnote under History — were grey text on a near-black page with no edge, and were hard to see. They are panels now.
-
v0.4.6
Fixes a stuck update dialog. When the update helper failed to launch, the progress file was left on "starting" with nothing left to move it, so the page spun forever on a run that never began — above the log of a previous update, which made it look like the box had updated to the wrong version.
Also stops a successful update from ending with "1 container is stopped": that was HomeBox's own update helper, which is kept on purpose so its log stays readable.
-
v0.4.5
The update button could not start on a box whose dashboard image had been orphaned by a later rebuild of the same tag — it answered "docker exited 125" and did nothing. It now checks that the reference resolves and falls back to the newest homebox-dashboard image on the box.
A box already stuck this way needs one hop by hand, because the broken code is what would have to launch the update:
cd /opt/homebox && sudo git fetch --tags && sudo git checkout v0.4.5 && sudo bash install.sh
-
v0.4.4
Never offer a database major-version upgrade.
Postgres 17 cannot open a Postgres 14 data directory, and HomeBox was offering exactly that swap for Immich's database as a one-click upgrade. It now refuses to, for postgres, mariadb, mysql, mongo, percona and timescale, and shows the newer version without a button and with the reason instead of hiding it.
-
v0.4.3
The same live-log dialog an app image upgrade opens, fed from a file so it survives the dashboard restarting in the middle — and so a page reloaded mid-update can read back everything it missed.
-
v0.4.2
How long it takes, and whether you have to sit and watch it. You do not — the update runs on the box and reports through a file, so you can close the page and it carries on.
This release exists to be installed with the button. If you are reading these words in the card, press it.
-
v0.4.1
install.sh chowned everything to root when run by the updater, because nsenter carries no SUDO_USER. It now asks the tree who owns it.
If you updated through the button on 0.3.7-0.4.0, run: sudo chown -R $USER:$USER /opt/homebox
-
v0.4.0
The button path had never been run until today, and it was broken in three separate ways that the CLI path could not reveal: the helper deleted the container it was running in, git refused every command because nsenter carries no SUDO_UID, and a failed git status read as a clean tree.
If this release arrived through the button, all three are fixed.
-
v0.3.9
Its helper runs as root through nsenter, which git treats as dubious ownership and refuses — while the CLI, running under sudo, was exempt. Also stops a failed git status being read as a clean tree.
-
v0.3.8
Nothing to see here — this release exists so the Update button can be exercised end to end on a real box, which is the one path that had never actually been run.
-
v0.3.7
It launched a helper container that immediately deleted itself, so the button reported success and did nothing. The CLI was unaffected, which is why this survived several releases.
-
v0.3.6
Current version 0.3.5 -> 0.3.6 available, on one line. What's new in its own block. A bigger red badge in the tab strip, and a Check button on the card next to the thing it refreshes.
-
v0.3.5
It showed a timestamp and a Check now button and never mentioned that a box checks on its own, so pressing the button looked mandatory.
This release is also the test: nobody pressed anything to find it.
-
v0.3.4
The scheduled check returned its own cache instead of fetching, so a box could stay silent through a release indefinitely. It now forces the fetch — which is what a scheduled check is for.
-
v0.3.3
Small wording fix: the page intro described container images only, written before the page also handled HomeBox's own releases.
If you are reading this in the update card, the whole cycle works — the check ran on its own, the dot appeared, and the button did the rest.
-
v0.3.2
Every update was chowning module config directories, which breaks any app that runs as its own uid — Postgres in particular. If a database container is unhealthy after updating, this is why; the fix restores the ownership on the next run.
-
v0.3.1
The Check now button refreshed the container-image check only, leaving the HomeBox update card showing whatever it last knew — with no way to refresh it from the interface.
-
v0.3.0
Since 0.2.4, bootstrap.sh silently installed from a tarball instead of cloning, leaving boxes with no .git and therefore no way to update themselves. Reinstall any box installed with 0.2.4 through 0.2.9 — or check for /opt/homebox/.git.
-
v0.2.9
After updating, the card kept showing the old version number and the button, because it read the version from the cached check rather than from the box.
-
v0.2.8
Fixes the Updates tab staying silent forever on a box where nothing had ever populated the update cache — which was every box installed before 0.2.7, because the check was on no schedule at all.
-
v0.2.7
A new HomeBox release now shows a red dot next to Updates in the top bar, without opening the tab and without reloading the page.
The check runs on the server every six hours; the page picks up what it found every five minutes. A red dot means a new version of HomeBox itself — image rebuilds keep the ordinary accent dot.
-
v0.2.6
The Updates card now takes its description from the annotated tag's own message when no GitHub Release exists.
Cutting a release already requires writing that message, so the card says something useful by default instead of showing a bare version number — which is what 0.2.5 did.
If you are reading this text in the dashboard, the change works.
-
v0.2.5
-
v0.2.4
-
v0.2.3
Fixes the update health check, which polled an endpoint that requires a session and so could never pass.
-
v0.2.2
Fixes the dirty-tree guard refusing every update over a file permission bit that bootstrap.sh sets on every install.
-
v0.2.1
Documentation: the Updates tab is now the documented way to update HomeBox, with the manual git path kept as the escape hatch.
-
v0.2.0
One-button platform updates.
HomeBox can now update itself from the Updates tab: it takes a backup of state/ and .env, checks out the release tag, runs any pending migrations, rebuilds, waits for the dashboard to answer, and puts the previous version back on its own if it does not.
Releases are annotated git tags. A new install lands on the newest tag rather than on the development branch. releases/manifest.json carries a freeze switch that stops every box in the world within five minutes, including boxes that are mid-update.
-
v0.1.0
The last release before platform self-update existed. Kept as the point a friend's box can be rolled back to, and as the 'from' side of the first real update.