Portal 4.0.14
Portal 4.0.14 is a hotfix release. Install or update from https://bridgesllm.ai — the Dashboard updater applies it in place with backup, migrations, health checks, and automatic rollback.
If you are on 4.0.13 and an update failed at the Docker-prune safety check, this is the release that fixes it.
Fixed
- Ordinary scheduler state no longer makes the Portal effectively uninstallable. The Docker-prune guard now recognizes a legacy cron job written with normal
/dev/nullredirection, ignores non-loadable unit backups and non-command path tokens, understands wrapped and tab-stripping heredocs, handles NUL or non-UTF-8 scheduled script sources without making an unrelated update fatal, and treats scan-budget exhaustion as bounded warning state rather than a hard stop. A full aged-Ubuntu fixture reproduces the six real-world failures, while the controls still reject literal unsafe prune commands, suffix injection, and helpers hidden past the work budget. - Updater outcomes stay honest across every restart boundary. Root-owned atomic receipts distinguish stopped-before-change, rollback, post-commit host errors, and manual recovery. Systemd exit finalization, authenticated postflight health, operation-bound unit identity, bounded downloads and runtime, orphan reconciliation, clock rollback, and immutable historical receipts close the races that previously produced endless spinners, early success, hidden failure, or a permanently busy updater.
Added
- Dashboard updates report real server-owned progress. Completed installer checkpoints, a determinate percentage, concise phase detail, recent milestones, elapsed time, and an explicit reconnecting state while Portal restarts. The operation survives navigation, page reloads, lost admission responses, and backend replacement; success appears only after the protected updater exits cleanly and the exact target Portal reports ready health.
Security
- Update telemetry is observable without becoming recovery authority. Operation identifiers, phases, text, percentages, state files, current pointers, helper code, and bounded log tails are strictly validated and protected against symlinks, hardlinks, ownership or mode drift, path escape, control characters, and stale identity. The progress observer cannot alter the installer's transaction journals, and attention blocks require an explicit root repair acknowledgement rather than a browser bypass.
Full notes: CHANGELOG.md
A note on tag history. This repository is a squashed source export, so a version that was not exported at the time it shipped cannot be tagged honestly afterwards — the commit that eventually carries it also carries later versions. Releases 4.0.4, 4.0.9, and 4.0.10 shipped to bridgesllm.ai without a matching tag here. Their code is present in the current tree; no backfilled tags have been created for them, because such a tag would name a build it never produced.