bitsmith

Changelog

What changed in Bitsmith.

Product-focused release notes generated from the same update metadata used by the app.

v2026.9.6

stable 119 changes

Sep 6, 2026

Added

  • Reverse proxy + automatic HTTPS for NAS UI, apps, and VM/LXC addresses.
  • Per-entry upstream scheme, TLS skip-verify, and header_up options.
  • Multiple base domains with per-domain certificate sources.
  • HTTP/3 as an off-by-default setting with a task-driven toggle.
  • Cluster-wide reverse proxy with a movable holder and manual takeover.
  • Relay reliability, pairing integrity, full-RPC auth, membership convergence, last-seen.
  • Linked clones, owner and admission primitives, and a paired sandbox facade.
  • Give Peers its own Cluster section in the System settings.
  • The code carries the CA fingerprint, so the answer verifies on any transport.
  • Build a VM template from a cloud-init script over MCP.
  • Sortable table columns with click-to-sort headers.
  • A paired tenant can open its sandbox's VNC console.
  • Pull file backups from a remote computer over SSH.
  • Capture Caddy wedge incidents, and stop faking a logout on transport errors.
  • Offer SMB shares as destinations for VM, app, LXC, and system backups.
  • Enforce disk limits on the system drive via ext4/XFS project quotas.
  • Make app backups self-contained and restorable as new apps.
  • Attribute background work and host execs to their owner.
  • Announce newly started tasks on the collapsed dock bar.
  • Profile photos.
  • Shut down or restart the server from the maintenance page.
  • Bottom-sheet menus on touch and the kellix mobile sidebar reveal.
  • Installable PWA shell with manifest, icons, safe areas and standalone viewport.
  • Command palette searches real objects and runs actions.
  • One PTY-backed terminal for host, LXC and VM consoles with pop-out floating windows.
  • Show when a connected share is offline.
  • Dock floating terminals into the shell's bottom bar next to background tasks.
  • Connected storage through file-tool targets and connection lifecycle tools.
  • Issues page, live activity feed, honest alerts, bounded growth.
  • Unified bottom panel with Tasks and Terminal tabs, terminals from targets, restored after reload.
  • Operator-set sandbox storage and full sandbox metrics.
  • Run any tool on any peer with a peer_id argument.
  • Cross-peer read-only visibility for installed apps.
  • Mount locations at slugified name directories.
  • Move a stopped VM to a paired peer.
  • Run the upgrade in the dock terminal.
  • Autostart option on create_sandbox.
  • Network backends, curated images, and in-repo image build pipeline.
  • Move stopped LXC containers to a paired peer.
  • Open source licenses page with generated attribution data.
  • Preflight rejects cross-architecture VM and LXC moves.
  • Guided-only install wizard with storage-driven config placement.
  • Reject LXC images that need a newer kernel than the host.
  • Stream pool-to-pool peer moves over zfs send/receive.
  • Show server address and proxy entry in install wizard.
  • Stream pool-to-pool peer moves over zfs send/receive.
  • Add one-time Docker setup banner to the apps page.
  • Cluster-aware entry targeting and holder mutation forwarding.

Fixed

  • Close all 12 findings from issue 276.
  • Settings UI focus, section split, and mobile entries table.
  • Retry the move step-down and fail with an actionable message.
  • Delete orphaned vmid claim placeholders at boot.
  • Address all actionable findings from the #286 review.
  • Automatic cert renewal, public-resolver DNS-01 precheck, and sequential authorizations.
  • Reject an in-use VIP, persist task metadata, and auto-enable after setup.
  • Offer to install missing host tools from the readiness card.
  • Survive SQLite busy waits on task writes, bound the WAL, and log the misses.
  • Keep connect-location credential inputs mounted while typing.
  • Stack peer state rows, uncard guest ID conflicts, hide cluster without peers.
  • Re-add the VIP when a network manager removes it.
  • Don't report a peer as connected when its stream never opens.
  • Bound virsh shutdown and destroy so a wedged monitor cannot wedge the stop task.
  • Match VM row busy indicator on the record UUID.
  • Move connected-storage statfs off the overview request path.
  • Single-entity board cards overflow and tiles don't fill their cell.
  • Board list rows span the card width, not just their content.
  • Usage grid keeps a fixed dot size and fills its width.
  • Manage ZFS pool root as the storage dataset and match pool devices by by-id aliases.
  • Route skeletons match the page they stand in for.
  • Unified focus, radius, theme and hover polish across the NAS app.
  • Same top padding and page header as every other route.
  • Stop app compose networks from leaking and exhausting Docker's default pool.
  • Shell regressions after the mobile drawer, and no reduced-motion gating.
  • Redesign the resource history sparklines.
  • Mobile layout pass across detail headers, tab strips and tables.
  • Per-domain RPC rollout nits, allocation dialog cold load.
  • Phone layout as a top sheet with backdrop, close control and back gesture.
  • Drop the listing skeletons and keep the frame with the header spinner.
  • One-button bottom bar, inset panel controls, consistent empty states, peer host terminals.
  • Load host bridges on LXC and VM configuration tabs.
  • Move one VM image/ISO without wiping its source directory.
  • Build templates on the sandbox storage.
  • Read container stats from the payload cgroup, not init.scope.
  • Keep installed section when peer filter matches nothing.
  • Follow-ups to numeric app ids — refresh upsert, move-to-storage, restore roots, zero-row migration, id column, compose in data dir.
  • Leave the folder's recycle bin out of backups, one-word failure cell.
  • Tooltip primitive that never takes space; failed-run cell uses it.
  • A sandbox resumed through the scoped verb gets its clock set like any other resume.
  • Land peer moves on pool storage and keep the source vmid.
  • Unique client names, page refreshes on redeem, friendly sandbox names.
  • Load host status on the templates route so fresh page loads render.
  • Install smartmontools in the storage setup so host installs stop reporting smartctl missing.
  • Raspberry Pi 5 arm64 end to end: LXC arch, apps root, samba dedupe, zfs health, prod-install QA.
  • Keep focus in additional disk size input.
  • Bootstrap smb.conf on fresh Debian-family installs.
  • Keep only Debian 13 Generic Cloud in VM image catalog.
  • Skip loopback DNS servers when recording upstream resolvers.
  • Replace broken preflight banner visuals with feature icons.
  • Skip schedules on offline locations and back off failing runs.
  • App catalog close button and always-shown folder step.

Changed

  • Carbon-default product surface, shared board-tile family, and the UI library.
  • Schedules live on the source, one restore dialog, restore from any backup folder.
  • One quiet EmptyState component for every empty region.
  • Browsable version folders, a catalog root humans recognise, and a restore dialog that starts from your destinations.
  • Binary enforcement — license gates onboarding and updates, nothing else.
  • Numeric app ids, drop peer ID-range machinery, storage column.
  • Dense source rows, a pool-first picker rail, and an unmarked restore picker.
  • Show the GPU home widget as coming soon.
  • Verification by driving the product, and a test suite cut to what earns its keep.
  • Vmid is the VM's sole identifier, the record uuid is gone.
  • Ban prose comments, rescue rationale to docs/.
  • Make lxcid the container's only identifier.
  • Regroup system sidebar sections.
  • Remove Kellix catalog entries and all Kellix references.

Improved

  • Route-scoped loading, lighter backend hot paths, Prometheus /metrics, proxy entry fix.
  • Right-size requests — slim GetOverview, batch VM list, parallel drive walks, cache update notes.
  • Replace GetOverview with lazy per-domain RPCs.
  • Run the seed appliance without network.
  • Seed clean-identity creates through NoCloud, skipping the offline appliance.

v2026.8.12

stable 177 changes

Aug 12, 2026

Fixed

  • Prevent sharded smoke build races.
  • Show managed storage and back up pool VMs.
  • Keep VM SSH access key-based.
  • Restart running VMs without redefining them.
  • Load install config for MCP.
  • Let SSH MCP use service access.
  • Make MCP setup work with OpenCode.
  • Back up running VM disks with shared validation.
  • Bind cloud-init network config to VM nic.
  • Keep gateway when creating VM bridges.
  • Preserve routes when attaching bridge members.
  • Keep bridge network confirmation visible.
  • Update bridge IPs without restarting bridges.
  • Let MCP VM tools receive arguments.
  • Make MCP VM lookup schemas compatible.
  • Polish VM backup scheduling dialog.
  • Constrain VM backup dialog height.
  • Keep dialogs within the viewport.
  • Import VM disks across storage mounts.
  • Validate UEFI firmware availability before setting boot firmware.
  • Delete stale VM records.
  • Keep backup workflows reliable.
  • Keep backup runs stable during catalog sync.
  • Keep dashboard startup from waiting on one database request.
  • Tolerate VNC close frame race in test.
  • Track VM image catalog JSON and use runtime-based path resolution.
  • Make VM backup plans use their safety policy.
  • Show saved backup schedule when editing.
  • Run backups immediately after creation.
  • Unmount dataset before setting mountpoint on import.
  • Address lint errors in db.go and simulated_storage_runtime.go.
  • Drop orphaned shares when backing directory is removed out-of-band.
  • Change folder ID separator from / to ~ for URL-safe IDs.
  • Publish overview event on user mutations so UI updates immediately.
  • Show every folder on disk in Files, not just ZFS datasets.
  • Wire UserService before share reconcile to stop a boot panic.
  • Include vm_image_catalog.json in all install and update paths.
  • Cut over to source versions and managed restores.
  • Require --host flag and fix health check with SSH aliases.
  • List versions consistently, surface failure detail, fix space check.
  • Include target host IP in self-signed cert SAN.
  • Use surface token for homepage system cards and remove hardcoded body background.
  • Migrate border and ring tokens to theme-aware line scale.
  • Close three DB-vs-filesystem drift reconciler gaps.
  • Restore themed page canvas contrast.
  • Honor scheduled run cadence after failures.
  • Normalize Go arch strings before UEFI firmware lookup.
  • Correct VM disk size metadata and self-heal on boot.
  • Resolve SMB .local mDNS hosts before smbclient and mount.
  • Use original directory name for folder path instead of lowercase slug.
  • Improve file explorer responsiveness and remove flickering.
  • Connected storage loading, consistent layout, loading states, and usage footers.
  • Normalize tab bar height and migrate backups to shared TabButton.
  • Translate always-on label on alerts row.
  • Stop VM list, images, and ISOs tables from flickering on refetch.
  • Show size and modified date on connected storage entries.
  • Update ZFS mountpoint after dataset rename.
  • Handle old-schema backup_snapshots table in migration.
  • Prevent concurrent update goroutines from deleting the binary.
  • Preserve entity identity in list updates to prevent <For> row flicker.
  • Enforce real pre-flight disk-space check for VM/LXC/app backups.
  • VM restart waits for completion and emits final Running state via SSE.
  • Show storage pool selector in VM create dialog.
  • Show storage pool name instead of ID in VM table.
  • Pool usage breakdown counts VMs/apps/files and fixes percentages.
  • Migrate all log.Printf and global slog calls to injected *slog.Logger.
  • Ban translated-string comparisons, fix all console/shell state bugs.
  • Stop terminal height growing unbounded via ResizeObserver fit loop.
  • Remount connected SMB shares on boot via background reconciler.
  • Sidebar highlight + connect dialog height.
  • Align IsoCard cells with the Installer ISOs table header.
  • Allow bridge creation without libvirt via no-op virsh adapter.
  • Guard install ISO/seed path on VM storage move.
  • Always create cloud-init seed on settings save.
  • Overhaul error presentation for user-facing messages.
  • Allow ReverifyLicense without a session.
  • Pass storage array to create wizard dropdown.
  • Make LXC provisioning work on all distros.
  • Gate sshd install hook on Install and start SSH toggle.
  • Always surface system drive as usable storage.
  • Use friendly container name as guest hostname.
  • Stop CreateSubfolders task from getting stuck in queued.
  • Advance control and delete tasks through real phases.
  • Task dock layout & scrolling, files surfaces full height.
  • Restore status indicator dots to VM and LXC tables.
  • Quiet the files navigation and the activity feed.

Added

  • Add ISO VM installs and storage growth.
  • Move apps and VMs between storage.
  • Add VM rename.
  • Make cloud-init contextual and add SSH password auth toggle.
  • Add Proxmox-style numeric VM IDs.
  • Add MCP setup for VM automation.
  • Add LAN bridge setup for virtual machines.
  • Schedule VM backups.
  • Configure cloud-init through MCP.
  • Add boot firmware selection and migrate VM metadata to files.
  • Choose VM disk size during creation.
  • Manage VM backups from Backups.
  • Make backups recoverable from snapshots.
  • Split VM image catalog from on-disk images, add store endpoint.
  • Make ZFS pools source of truth, remove libraries DB table.
  • Show CPU temperature and GPU health on home page.
  • Multi-GPU support and sysfs-based GPU detection.
  • Add TTL cache to overview build to reduce subprocess spawn rate.
  • Connect AI agents to Bitsmith over MCP with scoped tokens.
  • Recover backup plans from the catalog and remove the dead VM-backup flow.
  • Reconcile the VM index against vm.conf and libvirt on boot.
  • Back up /etc/bitsmith as encrypted system-config archive.
  • Expose system config backup source.
  • VM detail page.
  • Add LXC support.
  • Concurrent backups with I/O priority and disk space checks.
  • Replace system logs page with diagnostic support export.
  • Auto-download diagnostic bundle and centralize support email.
  • Rebuild apps UI — tabbed detail, live usage, library dialog, port-based links.
  • Back up VMs via ZFS snapshot instead of copying to /tmp.
  • Reconfigure VM CPU cores and memory after creation.
  • Add template dev workflow.
  • Reconfigure LXC CPU cores and memory after creation, share edit dialog with VMs.
  • VM & LXC allocation overview on dashboard + MCP tool.
  • Show plain directories alongside ZFS datasets.
  • Add theme system.
  • File-backed store under /etc/bitsmith with SQLite cache and boot reconciliation.
  • Create bridges on systemd-networkd hosts with static IP inheritance.
  • Add mount points (host→container volume binds).
  • Add, resize, and remove VM hard disks (live + stopped).
  • Add full MCP lifecycle parity and fix default template download 404s.
  • Add network fields and rename to update_lxc_container MCP tool.
  • Share Tailwind theme tokens with website and NAS app.
  • Inline folder create/rename; rename plain folders in pool view.
  • Allow SMB connected locations as app folder-mapping targets.
  • Unprivileged-by-default containers, nesting toggle, env-clear on attach, audit logging.
  • Add file/folder operation tools.
  • I18n implementation.
  • Backend internationalization with go-i18n, typed codegen, and Swedish translations.
  • Shared Table component, migrate all nas-app tables.
  • Tiered CPU overcommit thresholds in allocation dialog.
  • Show system drive usage on /storage.
  • Pre-flight storage capacity checks for create, move, download, and upload paths.
  • Give LXC, VMs, and apps live status feedback during background tasks.
  • Pool usage breakdown, dashboard nav fix, system drive on dashboard.
  • Operational baseline (JSON logging, /healthz, /metrics, pprof, settings panel).
  • Clone virtual machine mirroring LXC clone.
  • Peers foundation — identity, pairing flow, connection verification.
  • Add unused-keys and hardcoded-text ESLint rules, fix all violations.
  • Add no-nested-ternary rule and fix all 50 violations.
  • Proto-ify restore endpoint with RestoreMode enum.
  • Convert all inline string unions to TS string enums.
  • Extend i18n-hardcoded-text to catch hardcoded JSXAttribute values.
  • Host terminal with cross-peer relay.
  • Cross-peer read-only visibility for VMs and LXC.
  • Pluggable network backends.
  • Polish the first-run setup experience.
  • DHCP lease-reuse static IP fallback for all backends.
  • VM guest-agent integration for richer detail view.
  • Advanced tab with default LAN bridge setting.
  • Split install scripts per distro and add Rocky Linux 10 support.
  • Set autostart on virtual machines.
  • Multi-storage-pool support for VM images and ISOs.
  • Unify VM/LXC detail UI, add LXC container logs, bridge dropdown fix.
  • Add OS Updates page with apt/dnf package listing.
  • Redesign create VM and LXC flows as multi-step wizards.
  • Remove tasks section from home dashboard.
  • Resizable animated bottom dock bar.
  • Unify all loading states on a shared skeleton system.
  • Paint the app shell at first paint instead of a branded splash.
  • Bring back a boot splash that holds through auth and fades out.
  • Customisable widget boards for the homepage.

Changed

  • Mark env_vars as deprecated in proto.
  • Rename StorageSpace.disk_id to primary_disk_id.
  • Manage VM backups through backup plans.
  • Redesign the MCP page and remove the SSH connection option.
  • Store notification channels and routing as files with log retention.
  • Store scrub schedules on the pool and credit manual scrubs.
  • Move auth config to files, reconcile host users, drop dead role column.
  • Store SMB shares as files instead of SQLite.

Improved

  • Per-operation I/O rate limits, drop ionice and raw CommandRun.

v2026.5.20

stable 60 changes

May 22, 2026

Added

  • Add email notifications and password recovery.
  • Add user recovery links and access controls.
  • Add app updates and compose backups.
  • Add backend service with magic-link auth, licenses, and stripe billing.
  • Add audit log for critical NAS events.
  • Add ZFS scrub status, scheduling, and manual control.
  • Add guided drive replacement and repair workflow.
  • Add system log viewer.
  • Add recycle bin and file restore.
  • Add HTTPS certificate settings.
  • Add broader system log options.
  • Add admin license invite links.
  • Add LAN app links for dedicated networks.
  • Reorganize sidebar and add service restart.
  • Add Docker network management for apps.
  • Install custom apps from compose files.
  • Add folders to installed apps.
  • Edit app folder mappings from details.
  • Add virtual machine management.

Fixed

  • Keep installed app status matched to Docker.
  • Avoid incorrect app update versions.
  • Show app data folder during installs.
  • Keep installer smoke test aligned with HTTPS defaults.
  • Keep smoke tests aligned with styled controls.
  • Show storage adoption failures.
  • Load ZFS under Secure Boot installs.
  • Migrate HTTP installs to HTTPS port.
  • Migrate HTTP installs on startup.
  • Restart after HTTP port migration.
  • Recover licenses after local data wipes.
  • Support installer downloads without curl.
  • Smooth onboarding and home loading.
  • Remove sign-in flicker.
  • Keep dialogs stable during background jobs.
  • Clarify storage setup progress and defaults.
  • Clean up orphan Docker app networks.
  • Default media app folders under media.
  • Keep folder picker choices visible.
  • Make Docker app changes more reliable.
  • Clip dialog scrollbar and shrink install step tracker.
  • Prevent stale storage completion dialogs.

Changed

  • Collapse inactive sidebar sections.
  • Refresh Bitsmith logo treatment.
  • Drop chip stack from storage detail header in favor of dot+text status.
  • Add network settings.
  • Simplify sidebar and activity interactions.
  • Simplify system page copy.
  • Stabilize routing and notifications.
  • Streamline app install compose setup.
  • Use template folder mount defaults.
  • Simplify guided install flow.
  • Move datasets from the sidebar into the drive view.
  • Always serve a generated HTTPS certificate.
  • Promote Storage to a top-level sidebar entry and dock the bell.
  • Show both macOS and Windows network paths in share settings.
  • Unify Apps page, simplify System sidebar, add command palette.
  • Pin install wizard's step tracker and actions to the dialog footer.
  • Open custom app install as a dialog with a bounded icon picker.
  • Run app operations as background tasks.
  • Track file transfers as background tasks.

v2026.5.1

stable 8 changes

May 1, 2026

Changed

  • Make file transfers and backups more transparent.
  • Reorder sidebar footer status cards.
  • Show friendly backup and folder paths.
  • Default restores to original folder.
  • Make storage reuse safer.
  • Standardize dialog and storage flows.
  • Polish update dialogs and surfaces.
  • Make storage copy more reassuring.

v2026.4.28

stable 40 changes

Apr 28, 2026

Fixed

  • Parse installer smoke test curl urls.
  • Harden installer smoke test for manifest installs.
  • Allow dropping files after navigating back.
  • Update app details e2e assertions.
  • Improve mobile update modal layout.
  • Parse boolean smartctl health status.
  • Refine sidebar navigation and compose recovery.
  • Polish sidebar interactions.
  • Clarify storage system names.
  • Align sidebar icon colors.
  • Keep shell visible on route errors.
  • Stabilize app activity e2e.
  • Polish file selection actions.
  • Relax files toolbar layout.
  • Accept entry drops on current folder.
  • Refine files mobile and selection UI.
  • Clean up shared folder indicator.
  • Improve share feedback.
  • Refine home overview layout.
  • Refine sidebar active states.
  • Simplify home share nesting.
  • Stabilize update release notes.
  • Load update notes through backend.

Added

  • Show additional compose ports as addresses in app cards and detail view.
  • Support compose-based custom apps.
  • Add apps backup and restore.
  • Add file upload via drag-and-drop in file explorer.
  • Support folder drop upload and add tests.
  • Add upload progress bar for file/folder drops.
  • Improve simulated uploads.
  • Add multi-select file operations.
  • Add file explorer bulk selection and delete.
  • Automate release notes from commits.
  • Show release notes in app and site.
  • Group storage and access under system settings.
  • Support external USB storage in files.
  • Add secure account sign-in.
  • Add backup settings (#13).
  • Guide first-run onboarding through storage setup.
  • Guide app actions with a warm accent.