Changelog
Release notes for all CubeOS versions.
All notable changes to CubeOS are documented here. This changelog is generated from conventional commits across all CubeOS repositories.
v0.2.0-beta.06 — 2026-03-20
API
- add MeshSat coreapp integration — proxy routes, port reservation, system app seed (630bd3bb)
- add MeshSat Phase 2 proxy routes for admin, config, waypoints (ca53b540)
- add MeshSat gateway proxy routes for MQTT and Iridium management (37d9a881)
- add mosquitto to registry sync engine (feeb8ddc)
- proxy /communication/iridium/signal/fast to HAL fast endpoint (0acd5b88)
- Iridium operational dashboard — schema v25 + signal history + credits (68888128)
- Iridium pass predictor + queue proxy (Priorities 3d + 4) (96675a9d)
- Phase 12 — TLS manager, managed interface, schema v27 (c5ede582)
- TLS certificate management API endpoints (d65e1468)
- self-healing NPM auth when Swarm env var has stale password (2947c96b)
- skip Pi-hole DHCP/DNS verification on container tier (LXC/VM) (390042b1)
- strip CIDR prefix from Ethernet IP in setup wizard status (c792ea48)
- use port-only URL for standard profile app install SSE event (e211bed6)
- parse embedded tag from image ref to prevent double-tagging (535c3178)
- replace hardcoded gateway IPs with models.DefaultGatewayIP and route Pi-hole recreate through HAL (6028c53c)
- URL-decode Bluetooth MAC address path params before forwarding to HAL (452683ec)
- wait for Swarm convergence before health-checking in deploy script (3135312f)
- use docker_gwbridge gateway for NPM, Pi-hole, Ollama, ChromaDB URLs (ec6a0320)
- CI dual-IP failover + wifi_client netplan dhcp-identifier: mac (d771bd64)
- ci-deploy.sh sources env files for compose variable substitution (efb9d8bb)
- add dhcp-identifier: mac to wifi_bridge wlan1 DHCP config (4669f7f7)
- use saved PSK from HAL for wifi_client netplan generation (79f8c697)
- use wlan0 as upstream interface in wifi_client GetStatus (789df742)
- compare image digests in deploy skip check, not tag names (8cf552f9)
- correct Celestrak TLE URL to gp.php query endpoint (300a1c9f)
- update mock ProxyManager for CreateProxyHostWithTLS interface (ad63c741)
- api: parallelize internet connectivity checks in GetNetworkStatus [CUBEOS-44] (a37bacbe)
- api: reduce connectivity check timeout to 1.5s [CUBEOS-44] (4ae73bc9)
- add consistency gate to lint stage [CUBEOS-44] (d951363b)
- fix consistency gate false positives [CUBEOS-44] (9d3321a7)
- exclude CI YAML from consistency diff to prevent false positives [CUBEOS-44] (7e28635e)
- add Docker Hub auth to buildx package stage [CUBEOS-67] (7413b486)
Dashboard
- MeshSat Phase 3 — telemetry charts, map, and sub-tab UI (841be786)
- add MeshSat gateway management to communication store and config UI (b6c43fd2)
- Iridium 10s fast signal poll + manual blocking refresh button (0d4c8167)
- Iridium operational dashboard — signal history, credits, diagnostics (b9ea8fac)
- Iridium queue UI + pass predictor card (Priorities 3d + 4) (811d4da2)
- Phase 12 — wizard interface/TLS steps, settings CA download (0ad0775f)
- TLS certificate management UI in Apps > Manager (e49cc1bb)
- resolve port-only app URLs using current hostname (aef9e3f7)
- split cached image into name and tag for offline installs (e1665868)
- reorder Communication page tabs — Bluetooth first in both modes (52791822)
- split Bluetooth devices into separate Paired and Available sections (cdf9c812)
- auto-scroll to WiFi password field after network selection (ab306abe)
- CI dual-IP failover for deploy target resolution (22e494f8)
- ci-deploy.sh sources env files for compose variable substitution (0efe0836)
- add consistency gate to validate stage [CUBEOS-44] (5234c84f)
- exclude CI YAML from consistency diff to prevent false positives [CUBEOS-44] (3c276ef1)
- add Docker Hub auth to buildx package stage [CUBEOS-67] (12fd1067)
HAL
- add POST /system/service/{name}/recreate for Docker Compose service recreation (28417825)
- add Meshtastic admin commands, radio/module config, waypoints, signal quality (747fdb5e)
- raw AT command endpoint + Iridium SSE keepalive (c9fa745e)
- add GET /iridium/signal/fast endpoint (AT+CSQF cached read) (62db7ec7)
- add signal quality poller to Iridium driver (a47da8dd)
- Phase 12 — UPS persistence, Ethernet DHCP capability (56480599)
- add Device Supervisor for universal USB device management (15ad8103)
- add AdminRemoveNode endpoint for node deletion (f66b59b2)
- add HAL_DISABLE_MESHTASTIC and HAL_DISABLE_IRIDIUM env vars (d21bd7c0)
- GetInterface returns structured JSON matching ListInterfaces format (a14034cb)
- restore ip_forward after netplan apply (b84555b6)
- restore Docker masquerade rules after netplan apply (4bbf05a0)
- detect docker_gwbridge subnet dynamically in restoreDockerNetworking (29d8fa8c)
- auto-start bluetooth.service when HCI hardware is present but bluetoothd not running (d8204b8e)
- add bluez to Dockerfile and use nsenter for host commands (fa79b1ea)
- return discovered Bluetooth devices from GetBluetoothDevices (7b0f1363)
- CI dual-IP failover for deploy target resolution (9e7ef3de)
- ci-deploy.sh sources env files for compose variable substitution (52d811ef)
- Iridium signal — increase AT+CSQ timeout, add AT+CSQF fast path (174f637e)
- HAL deploy — atomic recreate + WiFi preservation (9bf63cdb)
- HAL deploy survives WiFi disruption (86852167)
- serial transport — persist read buffer across RecvFromRadio calls (cf9e12c6)
- correct FromRadio protobuf field numbers to match Meshtastic spec (13d4c39c)
- MeshPacket parser — from/to/id are fixed32, not varint (76f49030)
- serial read deadline prevents file.Read() from blocking forever (70128ce5)
- serial reliability — HUPCL, heartbeat, Iridium spec compliance (5bb12d1b)
- SSE stream — disable WriteTimeout and add keepalive (aa05449f)
- MeshPacket send — encode from/to as fixed32, not varint (99c3b4cf)
- return saved PSK in ConnectWiFi response for netplan generation (47ef28ae)
- pull by commit SHA and add digest-based skip check in deploy (79d05e12)
- add Docker network routes to policy routing table 100 (97f302ef)
- complete three-layer routing fix for dual-interface wifi_client (8753186f)
- eliminate serial read race in Iridium driver (c6fd7949)
- increase AT+CSQ and HTTP timeouts for Iridium signal acquisition (34b775e5)
- add TTGO T-Echo VID:PID (239a:4405) to Meshtastic device table (030b9bc4)
- return hw_model as int in /meshtastic/status (was sending string) (16c0258d)
- prevent empty SBDIX sessions wasting Iridium credits (4aeed649)
- handle piggybacked MT delivery + log SBDIX results for debugging (a6facf68)
- stop consuming MT buffer in send/mailbox handlers (3e45218c)
- ReadBinaryMT read loop exits too early + receive fallback (2cbf1043)
- remove SBDSX RA-gate that blocked all SBDIX sessions (a325647c)
- restore SBDIX conditional gate + release mutex during rate-limit wait (762aac02)
- add 5-minute stale SBDIX fallback for missed ring alerts (388c0788)
- clear MT buffer after successful read to prevent stale MTFlag loop (8db5c9d6)
- remove stale SBDIX check that sent empty SBD messages every 15min (c4d01b0a)
- add serial protocol tracing to diagnose packet flow (13870595)
- add consistency gate to validate stage [CUBEOS-44] (35f00301)
- exclude CI YAML from consistency diff to prevent false positives [CUBEOS-44] (c56b40c3)
- add Docker Hub auth to buildx package stage [CUBEOS-67] (8d1e678c)
Core Apps
- add MeshSat coreapp deployment config (14bc7aa6)
- add Mosquitto MQTT broker coreapp for MeshSat gateway bridge (5d645cb7)
- HAL disable flags + MeshSat direct-mode compose (44cde849)
- make appdata mkdir non-fatal in ci-deploy script (3f9a0a94)
- make per-app config sync resilient to root-owned directories (179988d6)
- classify mosquitto and meshsat as swarm stacks in CI (9b175909)
- automate mosquitto config deployment and image lifecycle (bef02a90)
- dashboard uses detected docker_gwbridge gateway instead of GATEWAY_IP (4740be64)
- API uses detected docker_gwbridge gateway for HAL_URL (69407154)
- MeshSat uses docker_gwbridge gateway for HAL_URL (1f1cee46)
- pass HAL_API_KEY to MeshSat container for authenticated HAL access (5467a363)
- CI dual-IP failover for deploy target resolution (2f00a665)
- ci-restart.sh sources secrets.env for compose variable substitution (3f5f4a0c)
- MeshSat HAL_URL needs /hal prefix for correct endpoint paths (fbf2622c)
- remove HAL_API_KEY from meshsat compose environment (0aa5a6a0)
- MeshSat direct compose uses host network mode (443e2085)
- add consistency gate to validate stage [CUBEOS-44] (658fdc80)
- exclude CI YAML from consistency diff to prevent false positives [CUBEOS-44] (15a80a1d)
Releases
- add mosquitto to build-time image baking (092544b7)
- detect docker_gwbridge gateway at boot and deploy time (dcaecd39)
- Phase 12 — Ethernet DHCP enforcement, CA generation on boot (44401d11)
- bananapim4zero: pin Armbian 26.2.1 base image, enable CI builds [CUBEOS-74] (51d1ebdb)
- bananapim4zero: golden base + full networking + CI pipeline [CUBEOS-74] (09c258b1)
- ci: add BananaPi BPI-M4 Zero to release pipeline [CUBEOS-74] (4cfbd3e7)
- harden upload-to-dmz and changelog generation (8a73713a)
- enable/disable bluetooth.service alongside rfkill in coexistence check (5951cd29)
- wifi_client netplan adds eth0 with dhcp-identifier: mac (109a74d3)
- add dhcp-identifier: mac to wifi_bridge wlan1 DHCP config (f95aa049)
- update changelog for v0.2.0-beta.05 (8bdccc95)
- add consistency gate to lint stage [CUBEOS-44] (a468a3b8)
- fix needs:optional for validate-image and sync-installer [CUBEOS-44] (b87bda10)
- exclude CI YAML from consistency diff to prevent false positives [CUBEOS-44] (50e7e46e)
- restrict validate-image rules to match build-image triggers [CUBEOS-44] (ba3ba02c)
v0.2.0-beta.05 — 2026-03-01
API
- Ethernet gate and AP teardown for Standard profile wizard (ff5896fa)
- add reboot step to profile switch and access_url computation (94a907b5)
- add WiFi AP whitelist/blacklist proxy endpoints (f4be1494)
- Bluetooth coexistence API with override persistence (da7fccbb)
- add dhcp_active field to network status response (476ca0a4)
- add GET /api/v1/setup/preconfiguration endpoint (0ccde67d)
- DHCP reconciliation, verify steps, and infra error handling (38340039)
- replace inline struct with named BluetoothOverrideRequest for swag (51640d35)
- self-healing Pi-hole auth when Swarm env var has stale password (eb840598)
Dashboard
- Standard profile Ethernet gate and AP teardown in wizard (4a7b6812)
- add AP teardown dialog for All-in-One to Standard transition (765a4dc2)
- add WiFi interfaces panel in settings (5989da09)
- add DHCP status to network overview, remove dead SetupWizard (ec924a03)
- add pre-configuration adoption to first-boot wizard (6f41a492)
HAL
- USB WiFi AP preference with two-stage test and whitelist/blacklist (dad2cf78)
- Bluetooth/WiFi coexistence management (50c64877)
- use detected uplink interface for DHCP nmap probe (d2974345)
- replace hardcoded x86_64 arch and NPM URLs with runtime detection (17d169e9)
Core Apps
- Pi-hole healthcheck uses FTL readiness probe instead of /admin/ (9421ec8e)
Releases
- add Apply now? prompt to console TUI profile change (2f580496)
- USB WiFi AP preference in boot scripts (ff971ab8)
- boot-time Bluetooth coexistence enforcement (54930dee)
- automated changelog generation from conventional commits (b0765206)
- pre-configuration detection engine for Pi Imager, Armbian, custom.toml, LXC (1473d045)
- compute website download URLs from version instead of dotenv (05264e6b)
- set world-readable permissions on DMZ upload directories (7993503c)
- GitHub pre-release targets correct repo, uploads lite image (fba35aae)
- make upload-to-dmz validate-image needs optional (574358c9)
- migrate Pi-hole config to v6 REST API with retry+verify+fallback (3b4fdc86)
- use public GitHub mirror URLs for changelog commit links (eaad216b)
- set /cubeos/ directory ownership to cubeos:cubeos (04d5f718)
- increase package registry upload timeout to 3600s (648d75cb)
v0.2.0-beta.04 — 2026-02-28
API
- access-profile: phase 1 — skip DNS/proxy steps for standard profile (d549795e)
- access-profile: phase 2 — profile endpoints + test connectivity (904fc5a7)
- access-profile: phase 3 — access_profile_switch FlowEngine workflow (e957790a)
- x86: port mode host + network mode from env (b7dc4774)
- x86: uptime, memory, app status, and install URL for Tier 2 (33a49b24)
- x86-qa3: NPM port 81, AP hardware detection, memory HAL fallback, schema v24 (8b65c183)
- x86-qa3: AP detection checks WiFi interfaces instead of HAL reachability (e586857f)
- iridium: correct SBD text limit from 340 to 120 chars (655cb678)
Dashboard
- wizard: skip AP step when no WiFi or container tier (72b0b3a7)
- access-profile: phase 2 — wizard step + settings UI + app access URLs (f3026595)
- access-profile: phase 3 — profile switch progress modal (dffbfffa)
- dashboard: use API_URL env var for nginx upstream instead of hardcoded Pi IP (3c7fc7ac)
- x86: app URLs use IP:port, wizard shows real host, UPS banner filter (9c475abf)
- x86: connecting screen, i18n collision, AP status, install URL (715b1694)
- iridium: correct SBD limits, add routing explanation, signal guard (d648ea06)
- iridium: remove verbose explanation banners (41ae476d)
HAL
- access-profile: phase 2 — DHCP + proxy capability detection endpoints (d51e7011)
- x86: device detection LXC/VM/physical + network mode AP-aware (b5e63816)
- x86: container detection via CUBEOS_TIER, ethernet detection for LXC veth (795b15e3)
- gps: stop claiming FTDI serial devices as GPS receivers (adb0b1a4)
- iridium: eliminate goroutine leak in serial drain/flush (68458df4)
Core Apps
- use GATEWAY_IP variable for dashboard nginx proxy_pass (d7361a2b)
Releases
- console: add Access Profile menu (item 4) (5e34fae8)
- ci: add DMZ download links to GitHub Release body (ba44a33a)
- installer: add DATABASE_PATH to generated defaults.env (8753e7f1)
- installer: add CUBEOS_ACCESS_PROFILE to defaults.env (4ac02c98)
- x86-qa3: cubeos status uptime fallback to /proc/uptime for Tier 2 (64e16674)
- releases: gate Packer builds on version bump commits only (bc47fc05)
- releases: add workflow:rules to skip empty pipelines (8fd35dcb)
v0.2.0-beta.03 — 2026-02-27
API
- inject X-HAL-Key on all API→HAL requests via transport wrapper (787e73d6)
- create bind mount dirs before stack deploy; fix setup_complete flag (33f2a60b)
- ensure setup_complete flag on startup for existing deployments (b8bab3cb)
- pass compose_path and domain to app removal workflow compensation (c22160af)
Releases
- console: update mode names, add AP settings + factory reset menus (eb2d4953)
- installer: treat HTTP 4xx as reachable in registry connectivity check (f1d06290)
v0.2.0-beta.02 — 2026-02-27
API
- Phase 6a — rename network mode constants to v2 names (7b0df3bd)
- Phase 6b — wifi_client mode with 30s fallback + FlowEngine workflow (ade39c63)
- dynamic interface detection + mode availability (Phase 6c) (1108b7a3)
- api: send X-HAL-Key header for HAL ACL authentication [Phase 8.4] (c989d7dd)
Dashboard
- Phase 6a — rename network mode constants to v2 names (T6a-07, T6a-08) (10569151)
- Phase 6b — WiFiClientTransition overlay + Pi Imager WiFi pre-fill (2c716535)
- interface assignment wizard + hardware-aware mode selector (Phase 6c) (0d01650e)
- dashboard: adopt ResponsiveTable across all pages [Phase 8.2a] (438d2afe)
- dashboard: unified TabBar component and polling optimization [Phase 8.2b] (a34cb452)
- dashboard: Lighthouse audit fixes and vue-i18n setup [Phase 8.2c] (e70aadb5)
- demo: add full CasaOS app catalogue snapshot to demo App Store (6fcdc23b)
- dashboard: Phase 8.2 frontend polish — ResponsiveTable, TabBar, i18n, Lighthouse fixes (3b1aa259)
- dashboard: i18n extraction — DashboardView, AppsPage, NetworkPage (5b5ab7de)
- dashboard: i18n extraction — SystemPage, SettingsPage (3985a774)
- dashboard: i18n extraction — AppCard, InstallFlow, NetworkModeSelector, WiFiConnector (6bf272f3)
- dashboard: i18n extraction — NetworkOverviewTab, WiFiTab, FirewallTab (90e669ed)
- dashboard: i18n extraction — DNSTab, ClientsTab, TrafficTab (1305eeb0)
- dashboard: i18n extraction — NetworkConfigDialog, WiFiClientTransition, IPConfigStep (fe89bc7d)
- dashboard: i18n extraction — VPNTab, VPNManager (929d5319)
- dashboard: i18n extraction — MyAppsTab, AppStoreTab, AppManagerTab (413a6ac8)
- dashboard: i18n extraction — AppDetailSheet, AppHealthModal, DockerTab (1a85cf25)
- use define to inject VITE_DEMO_MODE as compile-time constant (71d2d4a4)
- replace VITE_DEMO_MODE with CUBEOS_DEMO compile-time constant (1e082db2)
- compact demo banner, fix recent_logs demo data format (ab975d9d)
HAL
- Phase 6a — rename network mode constants to v2 names (T6a-06) (2226b15b)
- Phase 6b — HAL station mode endpoints for wifi_client switching (3946a5cf)
- HAL interface detection + CUBEOS_TIER support (Phase 6c) (97cc4ac7)
- hal: per-caller ACL middleware and key-based authentication [Phase 8.4] (673ec620)
Core Apps
- add hal-internal overlay network for HAL access isolation (6668dcca)
Releases
- Phase 6a — rename network mode constants in boot scripts (T6a-09, T6a-10, T6a-11) (0beebd74)
- Phase 6b — wifi_client boot fallback, avahi mDNS, WiFi watchdog (311a4353)
- dynamic interface detection in boot scripts (Phase 6c) (9b9e70f7)
- Phase 7a — curl installer core (d6b3c4eb)
- Phase 7b — cubeos CLI wrapper + channels + lifecycle (b4a5d3ec)
- x86_64 Packer template + boot config (Phase 7c Session 2) (872c0cde)
- Phase 7c Session 3 — Armbian templates + CI matrix (f0f3a5fb)
- Add BananaPi M4 Zero platform (Allwinner H618) (a5f496aa)
- Add Orange Pi 5, ROCK 5B, Quartz64 B platform placeholders (119c3871)
- add releases upload scripts and channel metadata automation (3aa0a032)
- add hardware-based first-boot network mode detection (974bd676)
- add hal-internal network and HAL port protection to boot scripts (ccc3f70d)
- source defaults.env early in boot-lib for CUBEOS_VERSION (f0f95563)
- cloud-init –wait hangs forever, blocks entire first boot (c51b18bb)
- remove apt-get from packer chroot (no DNS available) (73ea835e)
- hostapd beacon suppression on BCM4345 (Pi 5) (f5d8ca83)
- update stale base-image/ references in README and Makefile comments (19bcddc6)
- add android_tether case to boot-lib apply_network_mode and write_netplan_for_mode (d1900ef8)
- ci: use optional needs for boot-test-x86 job (4ccbfc4f)
- ci: add needs:[] to sync-installer for immediate execution (cc00a6c9)
- move wifi watchdog to Phase 3 + add DMZ upload pipeline (7c0f388d)
- restructure repo for multi-platform image building (a8912b28)
- Add manual build jobs for 6 Armbian platforms (5e8ca716)
- releases: add QEMU post-build validation stage [Phase 8.3] (b5610bd4)
- add QEMU boot test for x86_64 image (1e449808)
- auto-sync install.sh to website on releases/main push (04895a2a)
- fix SSH user (kyriakosp) and key loading for DMZ upload (7aea3fb9)
- fix sync-installer — use GITLAB_TOKEN directly (f2aa23a1)
- tag all 10 GitLab repos on every release — mirrors to GitHub automatically (ded60490)
v0.2.0-beta.01 — 2026-02-24
API
- circuit breaker core + HAL + NPM integration (Batch 2.0a) (5ad3aece)
- flowengine: batch 2.5a gap closure - FQDN enrichment, bind mounts, volume storage, webui detection, subdomain prettification, completion hooks (e5e7c669)
- flowengine: wire FlowEngine into main.go with fat envelope, progress adapter, and adapters (f40f95e5)
- flowengine: gut inline orchestration, replace with FlowEngine Submit calls, add workflow visibility API (e6d4fb41)
- flowengine: add network mode switching workflow with saga rollback (a8cf5104)
- metrics: add /api/v1/metrics Prometheus endpoint (Batch 2.6) (dfcc33fa)
- flowengine: replace inline first-boot setup with first_boot_setup saga workflow (dbd45a85)
- registry-first batch 5 — background sync, GC, and update endpoint (af51dac9)
- offline-first batch 1 — cached_manifests table, registry activities, cache workflow (6b8be566)
- offline-first batch 2 — auto-cache images to registry on appstore install (b01504e3)
- schema: add v18 migration — update_history, backup_schedules, enhanced backups (9296be30)
- schema: add config_snapshots table and P0-seed config models (d9b4d971)
- update: add UpdateManager with version check and manifest fetcher (3893f84a)
- update: add system_update workflow, activities, and API endpoints (685eb0c7)
- backup: add scope tiers, hot backup, FlowEngine workflows, and manifest verification (e8783962)
- backup: add destination adapters (USB/NFS/SMB) and AES-256-GCM encryption (379f4c92)
- backup: add cron scheduler with retention policy and schedule CRUD API (8a0169c5)
- backup: add bare-metal restore via USB detection and auto-restore (0f823a0c)
- flowengine: pass forward step output as compensation input, increase convergence timeout (6f8db15c)
- flowengine: forward step output piping, SSE timeout exemption, bind mount pre-creation (e34bae88)
- flowengine: align insert_app activity with actual apps table schema (58efbb2a)
- setup: guard configure_wifi against empty password, safe default in GenerateDefaultConfig (ed757085)
- setup: guard empty wifi password, safe defaults, skip bypasses workflow (45225138)
- gofmt registry.go + registry_sync.go (0c1bbf97)
- protect system images from install/delete in registry (24df3385)
- three-tier system image protection (registry/appstore/cleanup) (21d32d63)
- change StoreCachedManifestInput.Manifest to json.RawMessage (fixes unmarshal crash) (3f735ad6)
- WebSocket upgrade failing due to missing http.Hijacker on metrics statusWriter (a167ffbe)
- registry: use localhost:5000 for docker push and fix PathEscape on image names (B2) (d50ce90b)
- flowengine: make registry activity unmarshal errors non-fatal (B4) (6378b528)
- registry-first deploy — service uses localhost:5000 image ref (89f362fa)
- backup: include encrypted .tar.gz.enc files in backup listing (d81f5733)
- P1-18: wire integration tests into CI (allow_failure: true) (81dc1f24)
- P1-18: fix integration test credentials (use CI variable) (d0ec8886)
- batch 2.0b: Docker/Swarm funnelTransport circuit breaker (78ffe9a7)
- batch 2.0c: Pi-hole v6 REST API migration + circuit breaker (d06e6623)
- P2-10 to P2-16: FlowEngine foundation (store, step executor, migration #16) (89becb4f)
- P2-17 to P2-22: saga orchestrator, workflow engine, AppRemoveWorkflow, HAL stubs (e2c551ca)
- P2-23 to P2-27: AppInstall/AppStoreInstall/AppStoreRemove workflows + real activities (af58f7fe)
- appstore: gut inline orchestration, replace with FlowEngine Submit calls (ea325e89)
- registry-first batch 4: API registry awareness + per-repo CI retag (f5e7aa98)
- update workflow tests for batch 2.5a (version 2, 15 steps) (00173735)
Dashboard
- registry-first batch 6 — dashboard registry settings + system images UI (14aea9d7)
- offline-first batch 3 — dual install/cache buttons, manifest-based offline apps (1e0de1ae)
- dashboard: add Open button for installed apps in App Store (U1) (474ee720)
- add update notification badge to Settings nav item (e822413d)
- dashboard: add system updates UI — badge, review panel, history (60f1a1fe)
- dashboard: add backup management UI with scope, schedule, restore wizard (13a69677)
- hide system images from offline apps, protect from delete (f474106e)
- hide critical images from offline apps, lock system images in registry (9dcbcb0d)
- visible Cache Offline button + green checkmarks on install progress steps (32eb5dc6)
- cache offline button in detail sheet + persistent caching progress (ee906dc3)
- installed label on store cards + registry refresh after caching (8c5e99ee)
- registry: increase image refresh delays for Docker catalog propagation (B2) (01d06d9c)
- registry-first deploy — push to localhost:5000 and deploy from compose (47055a3b)
- Revert “fix: hide system images from offline apps, protect from delete” (e34cd33e)
- Revert “feat: registry-first batch 6 — dashboard registry settings + system images UI” (96deacca)
- Reapply “feat: registry-first batch 6 — dashboard registry settings + system images UI” (21f4b37b)
- Reapply “fix: hide system images from offline apps, protect from delete” (fe084c71)
- fix cachedApps response key (cached_apps not apps) — fixes App Store crash (aeb197e5)
HAL
- registry-first batch 4: CI deploy retags + pushes to local registry (919cdd35)
Core Apps
- migrate Dufs + ChromaDB to localhost:5000 registry refs (c3aec58a)
- ci-restart uses –pull never for registry-first compose refs (acf84e36)
- deploy image-versions.env to Pi + disable Dufs healthcheck (b6206d70)
- P1-19: cross-service smoke test script (220c772b)
- registry-first batch 2: all images reference localhost:5000 with pinned tags (518fdf0c)
Releases
- add Dufs + ChromaDB to core image pipeline (Phase 3 Gap A) (637bca44)
- boot: add USB backup detection for bare-metal restore (da46684f)
- 0.2.0-beta.01 — Pi Imager distribution, Full+Lite variants, cloud-init (9dff5b2f)
- Phase 1b losetup graceful teardown, Phase 1c lite variant guards (9b826abe)
- Phase 1c find instead of ls glob, Phase 2 PiShrink timeout (0f94b3e1)
- handle stale GPG keys, add sleep between GHCR downloads (ff134988)
- Phase 1c core push treats missing lite tarballs as expected skips (39071252)
- Phase 1c core validation skips lite-absent images (701bb4df)
- add xz to github release job dependencies (f242bce7)
- phase 1.3: security hardening (SSH, sysctl, journald, watchdog, fail2ban) (2e35e35f)
- P1-21: post-build image validation (Phase 1d gate before compression) (03128aaf)
- registry-first batch 1: push all images to local registry at build time (209b15e5)
- registry-first batch 3: boot sequence sources image-versions, registry deploys first (1e5e87e6)
Earlier Releases
Alpha releases (v0.1.0-alpha.01 through v0.2.0-alpha.01) are documented in GitHub Release History.