Store search/status/sort under settings.containerFilters in
~/.config/peardock/cache/settings.json so preferences survive restarts,
and migrate the old localStorage key once.
bare-querystring stringifies JS undefined as the literal "undefined", so
dockerode push options with tag: undefined made Docker look up
repo:undefined. Only pass defined push options, and fail the job when
Docker streams an error in the progress body.
When duplicating with the same host ports, stop+rename the origin, deploy
and verify the new container, then remove the parked source. Client
precheck ignores ports owned only by the origin to avoid false blocks.
Stop overwriting the header on every parallel restore connect; wait for
the last-used peer before falling back; avoid persisting temporary
active selection so the remembered server stays correct across restarts.
Fill the details terminal host for FitAddon, wait for a measurable box
before starting the PTY, re-apply xterm palettes after open, and re-fit
on UI color-mode changes so light sessions paint without a dark/light flip.
Store theme, density, and other prefs in a versioned JSON cache file
(matching peers.json) instead of localStorage-only, with migration and
a localStorage mirror for FOUC and legacy readers.
The Electron GUI bundle was stale and never wrote theme from Settings.
Rebuild path already includes applyColorTheme on load/save; also write
theme to localStorage immediately when Color mode changes so boot FOUC
and applySettings restore light/dark correctly.
Expand light-mode CSS for dashboard, details, terminals, job/pull progress, restoring boot card, and settings chrome. Add a Jobs tray settings tab for dismiss timing and reconnect feedback volume; auto terminal themes follow UI color mode when saved.
Launch finishes as soon as any peer comes online; offline dials notify the tray and keep retrying in the background. Fleet cards that hit max reconnect tries show a clear Reconnect button that resets the retry budget.
Dark remains default; users can pick light or match system under Settings → Appearance. Drop the full-height connection-lost banner that stretched across the window.
Fleet builds a roster from configured peers so hosts stay visible when
they drop (online / reconnecting / failed / offline). Settings → Behavior
adds max reconnect tries (1–8 or unlimited, default 8) wired into
ConnectionManager, with Retry connect to redial after the budget is spent.
Dead links now force disconnect after failed pings, failed dials keep
retrying every 5s, and the UI rebinds peers after a successful redial
instead of leaving the workspace stuck offline.
Grey out the Swarm sidebar item with a help popover explaining how to
enable swarm mode. Recheck the peer on each hover and re-enable the
nav when LocalNodeState becomes active.
Reusable column visibility control after Clear on containers and on
other resource tables, with preferences persisted. Suppress horizontal
scrollbars so columns ellipsize instead of overflowing.
Validate port mappings for empty host ports, in-form duplicates,
privileged low ports, and peer-side host port conflicts. Runs on
template deploy, deploy view, and add-container before create RPC.
Replace em-dash and ad-hoc loaders with the shared job-tray spinner
for deploy templates, host/swarm/tunnels/events, health latency,
container stats/logs/processes, and registry/volume browsers.
Gatekeeper reported the Bare server binary as damaged because it only
had a linker ad-hoc stamp after embed. Seal darwin server binaries with
the same sign-macos path used for Electron apps (codesign / rcodesign).