Commit Graph
1271 Commits
Author SHA1 Message Date
Gmer4Lfe 049f633667 Bound the watchdogs' docker calls — a hung daemon is what they exist to catch 2026-08-24 18:39:59 -04:00
Gmer4Lfe 84946ed0c6 clear_logs previewed on one size basis and cleared on another 2026-08-24 18:36:29 -04:00
Gmer4Lfe 514e13660c Give the bash side the disk helpers it never had, reporting the same unit as vv_df 2026-08-24 18:36:29 -04:00
Gmer4Lfe 9333334b7b Bound the two tailscale lookups that were missed when the others were 2026-08-24 18:33:40 -04:00
Gmer4Lfe 367d0203b8 Find guards wired onto a helper that can never return non-zero 2026-08-24 18:22:59 -04:00
Gmer4Lfe 37017882c7 Check the header standard now that it is written down rather than implied 2026-08-24 18:22:59 -04:00
Gmer4Lfe f116a1584e Offboard reported a stack cleanup that could not fail and, on one path, had not run 2026-08-24 18:22:59 -04:00
Gmer4Lfe 1a5bacce87 Point the webhook's dependency note at where the handler actually lives 2026-08-24 18:22:59 -04:00
Gmer4Lfe f6e5f7dcd6 Drop the remote-metrics endpoint nothing called and api/monitor.php already served 2026-08-24 18:22:59 -04:00
Gmer4Lfe 0f0c407458 Arrange and folder saves reported failure on every success, and split a move across two writes 2026-08-24 18:22:59 -04:00
Gmer4Lfe 354992c9e7 Keep a script's arguments and trailing comment when it moves between orchestrators 2026-08-24 18:22:59 -04:00
Gmer4Lfe 28987240aa Let a sync window take a whole share in one click
The window editor is path-first, which is exact but slow for the case that is nearly all of them.
The chips only offer whole shares; a subpath already in the window marks its share partial rather
than offering to widen it, and the path box stays the only way to express a subpath or a profile.
2026-08-23 17:16:24 -04:00
Gmer4Lfe fbf2b92167 Drop containers that no longer exist from the conf lists, after three days absent
A removed container leaves its name behind in every list that named it, and those names go on
being acted upon — a watchdog waiting for a container docker has never heard of. Strikes rather
than a single miss, because a rebuild makes a container vanish for a moment; and the lists naming
containers on the REMOTE are excluded, since pruning those against local docker would empty them.
2026-08-23 16:54:53 -04:00
Gmer4Lfe 206a119a4b Show each container's fallback tier on the Monitor board
The row's left border carries it rather than the status dot, which already means running or
stopped.
2026-08-23 16:38:58 -04:00
Gmer4Lfe 671e7ea5a4 Make fallback coverage something that can actually happen, and say so on the page
fallback.sh starts covered containers with docker start and never creates them, so a coverage list
the partner has never been sent is a promise nothing can keep — all twelve were missing. Adds the
push and remove paths, a readiness card that checks rather than infers, and the fallback state the
assistant needs to answer for it.
2026-08-23 16:38:58 -04:00
Gmer4Lfe d5cf3db2ec Close every orchestrator the same way, and make skipped work a visible outcome
A gated-off section left nothing failed, so the weekly could run for hours and report "all
complete" beside "0 shares synced"; skipped is now derived from what was expected rather than
self-reported, and the verdict degrades to PARTIAL instead of flattering.
2026-08-23 16:38:58 -04:00
Gmer4Lfe dc8823724d Let the GPU transform actually run when deploying to a partner
The detection pattern starts with --, so grep parsed it as an option and exited 2; the negation
made the early return always true and every XML was deployed untransformed, keeping the owner's
NVIDIA device UUID on hosts that have no such card.
2026-08-23 16:38:58 -04:00
Gmer4Lfe a392108562 Warn before a transfer when a disk backing the remote share is nearly full
Online is not writable: check_remote_disks confirmed each backing disk was mounted and healthy but
never how full it was, and rsync answers a full destination by stalling rather than failing.
2026-08-23 10:15:54 -04:00
Gmer4Lfe fd1ab58598 Declare the Monitor board in one place, so a card's width and position stop living in eighteen inline styles and four media queries 2026-08-23 00:44:30 -04:00
Gmer4Lfe bd13bdc6e1 Revert the Monitor column ladder for now; the layout work is paused, not abandoned 2026-08-22 23:53:27 -04:00
Gmer4Lfe bdf1bce4be Place the storage and array cards by span, not by column index, so they follow the grid instead of forcing it back to eight 2026-08-22 23:50:13 -04:00
Gmer4Lfe c5c0477653 Derive Monitor's column count from what the cards actually need, so no width forces a sideways scroll 2026-08-22 23:45:02 -04:00
Gmer4Lfe 76faf0f9f8 Let an installation add its own tabs without the repo having to name them 2026-08-22 16:37:37 -04:00
Gmer4Lfe 879109e55d Drain the orphan backlog safest-first instead of aborting, so a run over budget still makes progress 2026-08-22 16:37:31 -04:00
Gmer4Lfe 61b7d2a96a Partnership stacks are the owner's declaration, so a mirror must read them from the owner's conf 2026-08-22 14:03:57 -04:00
Gmer4Lfe 15d802ae3d Preview mode that survives a reboot, and a fallback log that survives one too 2026-08-22 13:52:34 -04:00
Gmer4Lfe ac17be2cd9 Say fallback, not failover — the synonym was silently matching nothing in three renderers, plus retrying probes and a 2-minute handback window 2026-08-22 13:43:30 -04:00
Gmer4Lfe f1ba418aa8 A dry run walked the failover branches and reached notify(), which had no dry-run gate 2026-08-22 09:53:53 -04:00
Gmer4Lfe b17cc3a09d Say on each node card whose containers the tiers are, since they are the other host's 2026-08-22 09:49:43 -04:00
Gmer4Lfe 1c38abe1d0 Fallback coverage: colour the wait, group by tier, and lock the stacks the partner already runs 2026-08-22 09:33:06 -04:00
Gmer4Lfe 5d42a28d34 Each assistant card remembers its own conversation instead of every card resuming the newest one 2026-08-22 08:46:35 -04:00
Gmer4Lfe e5f4ede3f2 Coverage and settings above the chat, tier delays and the probe target alongside them, coverage in three columns 2026-08-22 01:43:07 -04:00
Gmer4Lfe ce613bcf9d Rehome the failover coverage picker on the Fallback tab, five days after it was dropped from Partnership for belonging here 2026-08-22 01:32:08 -04:00
Gmer4Lfe 8ce8f0dfbe The Monitor fallback card described a state file without saying whether anything still writes it 2026-08-22 01:11:00 -04:00
Gmer4Lfe 13c221244e A partner's conf is in the RAM cache, not CONF_DIR, and a commented-out template entry is not configuration 2026-08-22 01:06:24 -04:00
Gmer4Lfe a89b704fa1 Watchdog and Monitor looked the partner up by exact key, and the remote probe passed a quote to cut as a filename 2026-08-22 00:59:24 -04:00
Gmer4Lfe 0f228020ef State-file age is time since the last transition, not staleness, and a preview's state is the one being decided 2026-08-22 00:52:38 -04:00
Gmer4Lfe 8454d3d0a2 A dry run does not refresh live state, so say that rather than showing its age as stale 2026-08-22 00:48:16 -04:00
Gmer4Lfe da15cc7531 Rebuild the Fallback tab around what the daemon is actually doing, not what its last state file said 2026-08-22 00:44:35 -04:00
Gmer4Lfe 5924aae1c0 Fallback read the peer list by exact key, so a partner whose tailnet name differs by one character rendered as UNREACHABLE 2026-08-22 00:34:33 -04:00
Gmer4Lfe 46239012b4 The dry-run cleanup trap replaced the lock-release trap and orphaned fallback.lock 2026-08-22 00:24:06 -04:00
Gmer4Lfe f8119f3786 Give the test harness a stop that cannot strand its iptables rule, and clean up the dry-run state copy 2026-08-22 00:20:40 -04:00
Gmer4Lfe 41c0598220 A fallback dry run wrote real reboot-surviving state, and a failed tier writeback reported itself as a dry run 2026-08-22 00:00:56 -04:00
Gmer4Lfe 387382ec9f Media Stack called every node local, and a host whose watchdogs never ran reported all clear 2026-08-21 22:50:09 -04:00
Gmer4Lfe 20998c8c31 The Streams scope was reset to this host on every page load, on a dashboard that is never reloaded by choice 2026-08-21 21:58:24 -04:00
Gmer4Lfe f5d6edd9d0 The mirrored folder layout never reached the container card, which reads Varaverk's own store and not folder.view3's 2026-08-21 21:50:22 -04:00
Gmer4Lfe 4808a57289 Monitor's partner card read phase flags that only ever describe the mirror, so the owner rendered as not provisioned on the mirror 2026-08-21 21:43:00 -04:00
Gmer4Lfe 96b907acbc Say what Varaverk itself is using on the System card
The card described the machine and said nothing about the thing whose dashboard
it is. Cache size matters most: VV_CACHE_ROOT is under /tmp, which on Unraid is
RAM, so it is shown against the rootfs percentage it counts against. Jobs are
locks with a live process — four lock files were sitting there and one job was
actually running.
2026-08-21 09:39:52 -04:00
Gmer4Lfe d9c37ac763 Add a checker for the two JS faults this plugin has actually shipped
A cross-scope identifier and a fetch chain ending in an empty catch both pass
php -l and node --check, and together they turned a ReferenceError into what
looked like a slow load for hours. --self-test asserts both detectors still
find a known fault, because a checker that silently stops working reports a
confident zero.
2026-08-21 09:32:04 -04:00
Gmer4Lfe 146be2d0ad Report every failed fetch instead of discarding it
Twenty-four fetch chains ended in an empty catch, which is not error handling
but error deletion: the request fails, nothing renders, nothing is logged, and
the surface sits on Loading forever. That is how the mesh chat's ReferenceError
read as a slow load for as long as it did.
2026-08-21 09:23:51 -04:00