Commit Graph
184 Commits
Author SHA1 Message Date
Raven Scott 637c386e33 Bring Back Realtime Table Stats
Release rolling / release (push) Successful in 7m55s
2026-08-04 22:37:41 -04:00
Raven Scott ab6cea96c7 Optimize Idle CPU/Dash
Release rolling / release (push) Successful in 8m21s
2026-08-04 21:04:55 -04:00
Raven Scott 26529e92c6 experimental: pop-out container terminals into dedicated windows
Release rolling / release (push) Successful in 7m56s
Pin PTY sessions to the peer they were opened on so shells survive
active-node switches until the window is closed. Electron host owns
the connection; pop-out windows relay I/O via IPC (BroadcastChannel
fallback). Explicit terminal sessionIds no longer wipe sibling PTYs
on the same container.
2026-07-29 06:34:13 -04:00
Raven Scott dcb5b3db4f Prevent removing in-use images and keep Unused filter stable during bulk delete.
Release rolling / release (push) Successful in 8m55s
Disable select/delete for images with container usage, and broadcast image lists with usage attached so the Unused tab no longer flashes the full inventory mid-removal.
2026-07-25 08:31:36 -04:00
Raven Scott 93962e17c2 Removed the Connecting… placeholder — xterm mounts immediately again
Release rolling / release (push) Successful in 9m14s
Leave kills are fire-and-forget (no longer block the next start)
startTerminal still clears leftover PTYs; unique session ids still protect against late kills
Shorter layout wait (12 frames) with an 80×24 fallback so fit doesn’t stall the open
2026-07-23 22:53:13 -04:00
Raven Scott 3726d52534 Fixes
Release rolling / release (push) Successful in 9m52s
Terminal
Invalidate local UI immediately on leave (bump gen, dispose xterm, clear DOM)
Show a “Connecting…” placeholder on re-entry
Skip stale queued inits via a desire-generation token
Unique PTY sessionIds so a late kill can’t destroy a new session
Server killTerminal: if a specific sessionId is missing, don’t fall through and kill the active PTY
All live tabs

Enter handlers only run when newly entering (no double-init)
Leave handlers for logs / terminal / stats / processes
Processes: ignore late replies; reset on container switch
Stats: don’t create charts on a hidden 0×0 canvas
Inspect: ignore stale replies; don’t wipe a newer container’s callback
Processes shortcuts use showContainerDetails(container, { tab: 'processes-tab' }) instead of click + double-fetch
Switching Terminal ↔ Logs ↔ Stats ↔ Processes repeatedly should stay stable; Terminal should recover cleanly instead of hanging.
2026-07-23 22:36:06 -04:00
Raven Scott e9fb26153a Add Container Flattener (export|import squash with job tray push)
Release rolling / release (push) Successful in 7m49s
Squash a container into a single-layer image from Manage → Flatten, with
repo/tag, pause, config re-apply, vault credentials, and optional registry push.
2026-07-18 07:31:58 -04:00
Raven Scott 30f283394e Harden live server apply for alerts and peer roles
Release rolling / release (push) Successful in 7m37s
Flush alert config immediately, re-arm runtime without restart, and push
role updates to connected clients so ACL changes apply live.
2026-07-17 19:51:30 -04:00
Raven Scott a98b76178e Fix container table action buttons by runtime state
Release rolling / release (push) Successful in 7m55s
Stop role UI from re-enabling Start/Stop/Terminal; disable Start when
running and run-required actions when stopped.
2026-07-17 19:14:20 -04:00
Raven Scott 5b8fb142bb Add experimental server alerts and webhook notifications
Release rolling / release (push) Successful in 7m30s
Server-side alerting for Docker/container/stack health with Discord,
Slack, Teams, ntfy, Gotify, Telegram, and generic webhooks. Settings
tab, client cache, and backup/restore coverage; marked experimental.
2026-07-17 18:10:43 -04:00
Raven Scott 366333e6bd Complete client backup and restore coverage
Release rolling / release (push) Successful in 7m33s
Include identity, backup policy, and notifications by default; deep-merge
nested settings; rehydrate UI/peers/filters after restore.
2026-07-17 17:48:08 -04:00
Raven Scott ec96356855 Persist remaining client state in disk cache files
Release rolling / release (push) Has been cancelled
Move templates, notifications, backups, table columns, peer envs, and
sidebar/first-connect prefs onto ~/.config/peardock/cache (settings.json
or dedicated JSON files) with legacy localStorage migration.
2026-07-17 17:41:11 -04:00
Raven Scott 9da9345e32 Persist container filters in settings cache file
Release rolling / release (push) Successful in 7m26s
Store search/status/sort under settings.containerFilters in
~/.config/peardock/cache/settings.json so preferences survive restarts,
and migrate the old localStorage key once.
2026-07-17 17:28:50 -04:00
Raven Scott 7fd6df79ad Improve containers table defaults and persist filters
Release rolling / release (push) Successful in 7m26s
Default to Running sorted by CPU, hide CPU/memory spinners for stopped
containers, and keep search/status/sort until Clear (localStorage).
2026-07-17 17:07:15 -04:00
Raven Scott bd512df950 Park source container on duplicate so host ports can be reused
Release rolling / release (push) Has been cancelled
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.
2026-07-16 22:24:49 -04:00
Raven Scott 461a5498f9 Fix boot active-server selection and titlebar peer chip
Release rolling / release (push) Successful in 8m49s
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.
2026-07-16 19:20:02 -04:00
Raven Scott 3a2534c11c Fix light-mode terminal init blanking until theme toggle
Release rolling / release (push) Has been cancelled
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.
2026-07-16 19:16:21 -04:00
Raven Scott f8ad7d5b6e Persist client settings to ~/.config/peardock/cache/settings.json
Release rolling / release (push) Successful in 7m50s
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.
2026-07-16 18:52:57 -04:00
Raven Scott 0f59f01cf8 Polish light theme surfaces and add Jobs tray settings
Release rolling / release (push) Successful in 8m23s
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.
2026-07-16 17:33:23 -04:00
Raven Scott 18897bdcc3 Don't block boot on failed peer dials; add Fleet reconnect after max retries
Release rolling / release (push) Successful in 8m7s
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.
2026-07-16 17:06:52 -04:00
Raven Scott f72a1d0a41 Keep offline peers on Fleet and add max reconnect tries setting
Release rolling / release (push) Successful in 8m50s
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.
2026-07-16 16:37:19 -04:00
Raven Scott 758b8b13f7 Fix client auto-reconnect when peer connections drop
Release rolling / release (push) Successful in 8m33s
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.
2026-07-16 16:28:29 -04:00
Raven Scott 301902c470 Redesign restoring-connections boot screen with app spinner
Release rolling / release (push) Successful in 8m30s
Replace Bootstrap spinner with the tray job-spinner, a modern card layout,
live status pill, and peer restore progress bar.
2026-07-16 15:41:07 -04:00
Raven Scott 218e924c67 Disable Swarm nav when Docker is not swarming
Release rolling / release (push) Successful in 11m22s
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.
2026-07-16 15:13:22 -04:00
Raven Scott 60315d53f0 Add show/hide columns picker and hide table horizontal scroll
Release rolling / release (push) Successful in 7m47s
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.
2026-07-16 14:53:54 -04:00
Raven Scott 254310b495 Precheck deploy networking before container create
Release rolling / release (push) Successful in 7m47s
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.
2026-07-16 14:39:19 -04:00
Raven Scott 5b1acdf324 Use tray spinner for pending UI loading states
Release rolling / release (push) Has been cancelled
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.
2026-07-16 14:30:59 -04:00
Raven Scott 06de0b5c81 Fix Details Header Deformation
Release rolling / release (push) Has been cancelled
2026-07-16 14:21:23 -04:00
Raven Scott f2729a9ad9 Remove debug message from terminal init
Release rolling / release (push) Successful in 7m46s
2026-07-16 14:09:53 -04:00
Raven Scott 55421cdecd Fix Terminal State!
Release rolling / release (push) Has been cancelled
2026-07-16 14:06:57 -04:00
Raven Scott 2663464fcb Ensure design responsiveness
Release rolling / release (push) Successful in 8m34s
2026-07-16 13:49:40 -04:00
Raven Scott 2c35f5cb82 Job Tray Updates
Release rolling / release (push) Successful in 9m12s
2026-07-16 04:20:26 -04:00
Raven Scott 6866e83439 Stack Deploy UI
Release rolling / release (push) Has been cancelled
2026-07-16 04:15:43 -04:00
Raven Scott 4bbbd45f42 Proper Template Support for Stacks
Release rolling / release (push) Has been cancelled
2026-07-16 04:09:50 -04:00
Raven Scott fb8f1c4fa4 Fix Template Parsing
Release rolling / release (push) Has been cancelled
2026-07-16 04:04:32 -04:00
Raven Scott bc6bd8eda3 Tray Updates Image Pulls
Release rolling / release (push) Has been cancelled
2026-07-16 03:55:43 -04:00
Raven Scott ac10747bad Add global hidden-container filters by label in Settings.
Release rolling / release (push) Successful in 9m7s
2026-07-16 01:57:43 -04:00
Raven Scott 882072b30b Truncate long deploy template descriptions so Deploy stays on-screen.
Release rolling / release (push) Successful in 9m13s
2026-07-16 01:10:00 -04:00
Raven Scott d697f6f90d Fix logs tab stuck on Loading after switching away and back.
Release rolling / release (push) Successful in 9m0s
2026-07-16 00:45:30 -04:00
Raven Scott 8f0599eeae Fully map Portainer template fields into the deploy form.
Release rolling / release (push) Has been cancelled
2026-07-16 00:40:19 -04:00
Raven Scott dfa0b3dcd6 Move Check updates into action bar and report results in the tray.
Release rolling / release (push) Successful in 11m35s
2026-07-16 00:17:26 -04:00
Raven Scott 645f025042 Fix Duplicate/Edit cloning (volumes/settings) and initial image update check.
Release rolling / release (push) Successful in 9m49s
2026-07-16 00:01:07 -04:00
Raven Scott 9775fe5305 Move Peers into Settings and add a full Registry browser tab.
Release rolling / release (push) Successful in 9m39s
Peers live under Settings; Images is local-only. Registry is a top-level view with vault credentials, Hub search, and Registry API V2 catalog/tags/manifest/delete over the wire.
2026-07-15 16:04:27 -04:00
Raven Scott 42f066fa47 Fix image update checks against registries on Bare.
Release rolling / release (push) Has been cancelled
Registry HTTP now sets host/hostname, disables keep-alive, and times out cleanly; resolve container image tags/digests more reliably and surface check errors in the UI.
2026-07-15 15:31:46 -04:00
Raven Scott 53e6dd8853 Update
Release rolling / release (push) Has been cancelled
2026-07-15 15:08:55 -04:00
Raven Scott a6925d337e Add container image update indicators.
Release rolling / release (push) Has been cancelled
Compare local RepoDigests to remote registry manifest digests, show status in the containers table Updates column, and support force recheck with vault credentials for private registries.
2026-07-15 15:05:04 -04:00
Raven Scott e51de4ad1d Add full registry manager and image pull/push with vault credentials.
Release rolling / release (push) Has been cancelled
Wire credential-aware pull/push, session auth, and an Images Registries tab for vault management.
2026-07-15 14:54:30 -04:00
Raven Scott b185ea7a55 Add container create page from the containers list with always-pull.
Release rolling / release (push) Successful in 8m24s
Adds a dedicated blank create form (name, image, always pull, ports,
auto-remove, advanced settings) separate from template Deploy, reuses
deployContainer with pull-if-missing and publish-all-ports support.
2026-07-15 14:27:05 -04:00
Raven Scott bbf0607aaf Fix container remove timeouts and make force-remove reliable.
Release rolling / release (push) Successful in 9m13s
Lifecycle RPCs now use a 120s operation timeout, remove cleans up
stats/terminal/log streams then SIGKILLs before force-remove, and the
UI awaits the request instead of a fragile 30s wait race.
2026-07-15 14:12:13 -04:00
Raven Scott 0e74019acc Close create-invite modal after success; drop redundant result panel.
Release rolling / release (push) Successful in 8m4s
Invite strings already appear under Active invites with Copy, so the post-create
panel in the modal was unnecessary and felt stuck open.
2026-07-14 23:00:52 -04:00