Commit Graph
331 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 c5015a66e8 Alert System Changes: Fixes applied (feature kept, load bounded)
Release rolling / release (push) Successful in 8m4s
1. Removed docker.df() entirely
2. Poll only what rules need
   • docker_daemon → cheap ping
   • container_health / stack_health → listContainers
   • resource → host statfs only (no Docker)
   • Event-only rules → no poll timer
3. Poll floor 60s, default 120s (was 15s min / 60s default)
4. No overlapping polls (pollInFlight)
5. Event path: drop noisy actions (exec_*, attach, …), match only relevant rules, serialize work (bounded queue)
6. UI status shows whether poll is active
2026-08-04 22:13:20 -04:00
Raven Scott a9e2b54c70 EXPERIMENTAL: new stats logic
Release rolling / release (push) Successful in 8m29s
2026-08-04 21:47:32 -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 450b54ca55 Center Terminal Window Title as to not overflow
Release rolling / release (push) Successful in 7m56s
2026-07-29 06:47:42 -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 b79c3bc97b Keep flattener header visible and auto-copy pull ref after push
Release rolling / release (push) Successful in 7m47s
Cap scrollable centered modals so only the body scrolls when push
options expand, and copy the image pull ref to the clipboard on success.
2026-07-18 08:20:17 -04:00
Raven Scott dff35affb7 Fix anonymous registry push X-Registry-Auth EOF error
Release rolling / release (push) Successful in 7m34s
Docker requires a valid X-Registry-Auth header on push; send empty
anonymous credentials for ttl.sh and other no-auth targets.
2026-07-18 08:07:56 -04:00
Raven Scott 7b5da2da86 Add ttl.sh as ephemeral anonymous push target
Release rolling / release (push) Successful in 7m32s
Expose ttl.sh in Flatten and Push Image target lists with TTL presets,
auto-retag to ttl.sh/name:duration, and skip vault auth for public temp pushes.
2026-07-18 07:49:33 -04:00
Raven Scott 8235a8a6c8 Fix flatten push auth by retargeting short names to vault registry
Release rolling / release (push) Has been cancelled
Private registry credentials were applied while pushing Docker Hub short
names. Auto-retag under the credential host and prefix the flattener repo.
2026-07-18 07:46:07 -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 a6fea51eaf Expand Appearance settings with accents, scale, radius, and chrome
Release rolling / release (push) Successful in 7m33s
Add twelve accent colors with swatch picker, UI scale, corner radius,
and titlebar/sidebar chrome styles. Preferences live-apply and persist
in the settings cache for both dark and light themes.
2026-07-17 23:47:07 -04:00
Raven Scott a78ef40966 Speed up terminal shell selection with bash/sh/ash fast path
Release rolling / release (push) Successful in 7m48s
Try bash, sh, and ash first with a short alive-probe so common images
attach quickly; fall back to other shells and adaptive probes only after.
2026-07-17 22:59:58 -04:00
Raven Scott 70b47bd2c5 Center tunnel browser titlebar page title
Release rolling / release (push) Successful in 7m25s
Place the Holesail page title in the middle of the chrome with ellipsis
so long document titles no longer overflow off the right edge.
2026-07-17 20:38:59 -04:00
Raven Scott e20ae7b41f Style Holesail tunnel browser with peardock titlebar and pear-ctrl
Release rolling / release (push) Successful in 7m37s
Open local tunnel URLs in a framed Electron window that matches main app
chrome (hiddenInset/frameless, pear-ctrl, brand) instead of a bare popup.
2026-07-17 20:26:51 -04:00
Raven Scott dc3d4ac872 Allow anonymous Docker Hub pulls without usable credentials
Release rolling / release (push) Successful in 7m26s
Only attach auth when username and password are complete and match the
image registry; retry anonymously if ambient auth fails on public pulls.
2026-07-17 20:07:02 -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 e2fa2ff85a Apply all settings and alerts live without Save buttons
Release rolling / release (push) Has been cancelled
Auto-persist client preferences on change with footer feedback, and
apply server alert engine settings/channels/rules immediately.
2026-07-17 19:48:28 -04:00
Raven Scott f6f059ab94 Add remote registry repository delete
Release rolling / release (push) Has been cancelled
Delete all tags/manifests for a repository via Registry V2 digests, with
admin RPC, audit logging, and catalog/tags UI actions.
2026-07-17 19:43:53 -04:00
Raven Scott 2ae38b83bf Move Experimental badge off Alerts settings nav tab
Release rolling / release (push) Successful in 8m8s
Keep the label in the alerts panel content so the nav stays compact.
2026-07-17 19:31:50 -04:00
Raven Scott 267e8d6fc2 Restore last registry browser context on Registry load
Release rolling / release (push) Has been cancelled
Remember credential, host, and last repo in settings; auto-apply
session auth and refresh catalog when opening the Registry view.
2026-07-17 19:29:11 -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 e2f4568396 Install macOS client only to ~/Applications/peardock.app
Release rolling / release (push) Successful in 8m7s
Stop unpacking into ~/Applications/peardock and copying the app a second
time; install the single .app bundle and clean up the legacy nested path.
2026-07-17 16:41:59 -04:00
Raven Scott 49794febf8 Fix image push failing with tag:undefined under Bare
Release rolling / release (push) Successful in 9m42s
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.
2026-07-16 23:09:36 -04:00
Raven Scott abc34b39d8 Restore and restart origin container when swap deploy fails
Release rolling / release (push) Successful in 8m45s
On duplicate/swap failure after parking, rename the origin back and start
it if it was running so a bad deploy does not leave the source offline.
2026-07-16 22:26:22 -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 ca3770da59 Update SS
Release rolling / release (push) Successful in 8m29s
2026-07-16 19:46:01 -04:00
Raven Scott 01a62f292d Match Pear titlebar chrome in Electron client builds
Release rolling / release (push) Successful in 8m10s
Hide the native window frame (hiddenInset on macOS, frameless elsewhere) and polyfill pear-ctrl so the integrated titlebar matches the Pear dev shell.
2026-07-16 19:30:43 -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 4a652da0c5 Persist UI color theme across client restarts
Release rolling / release (push) Successful in 12m48s
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.
2026-07-16 18:23:07 -04:00
Raven Scott 40d80ad894 Update dark mode product screenshots
Release rolling / release (push) Successful in 8m31s
Refresh marketing screenshots for the current dark UI chrome.
2026-07-16 18:08:12 -04:00
Raven Scott d3d622da69 add light mode ss
Release rolling / release (push) Has been cancelled
2026-07-16 18:01:56 -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 3a3df4ec10 Add light mode theme setting and remove offline banner
Release rolling / release (push) Has been cancelled
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.
2026-07-16 17:03:08 -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 4460f61f85 Add backups
Release rolling / release (push) Has been cancelled
2026-07-16 16:24:38 -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 fbe1751468 Polish modals and add settings save button feedback
Release rolling / release (push) Has been cancelled
Replace stock Bootstrap modal chrome with a dark teal panel system, and
give Settings Save all a Saving… / Saved state with motion-aware styles.
2026-07-16 15:38:29 -04:00