Logo
Explore Help
Sign In
mitchell/hamlab
Watch 1
Star 0
Fork 0
Code Issues Pull Requests Packages Projects Releases 14 Wiki Activity

14 Releases 15 Tags

RSS Feed
  • v0.1.0-137-gc129f65 c129f655a7
    Compare

    v0.1.0-137-gc129f65 Stable

    mitchell released this 2026-09-24 19:12:42 -07:00 | 121 commits to main since this release

    Reorder the default rail: the machine, then its storage, then what runs on it

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 19:12:51 -07:00
    • VERSION
      20 B
      2026-09-24 19:12:52 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 19:12:44 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 19:12:46 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 19:12:48 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 19:12:50 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 19:12:51 -07:00
    • install.sh
      20 KiB
      2026-09-24 19:12:52 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-136-gd8bf5df d8bf5df89f
    Compare

    v0.1.0-136-gd8bf5df Stable

    mitchell released this 2026-09-24 17:52:08 -07:00 | 122 commits to main since this release

    Fullscreen on Safari, and a fallback where there is none

    Safari on a Mac wants the webkit prefix; Safari on iOS has no fullscreen for an ordinary
    element at all, only for a , so requestFullscreen was simply undefined and the tab
    threw. It now uses whichever spelling the browser has, and where there is none the frame
    fills the viewport in-page instead — the same result minus the browser's own chrome — with
    a Done button and Escape to come back. The button reads Expand rather than Fullscreen when
    that is what it will do.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 17:52:17 -07:00
    • VERSION
      20 B
      2026-09-24 17:52:17 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 17:52:10 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 17:52:12 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 17:52:14 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 17:52:15 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 17:52:17 -07:00
    • install.sh
      20 KiB
      2026-09-24 17:52:17 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-134-gf3441ae f3441ae718
    Compare

    v0.1.0-134-gf3441ae Stable

    mitchell released this 2026-09-24 17:00:57 -07:00 | 124 commits to main since this release

    The KVM tab is per machine, and follows the machine switcher

    It was a hub-side list you pointed at machines, which had it backwards. A machine has one
    KVM; switch to grid and you get grid's. The address is still kept on the hub rather than on
    the machine, because a KVM earns its keep exactly when that machine is down and cannot
    answer for itself — so the tab reaches the device either way. Adding a second KVM for a
    machine replaces the first rather than sitting beside it.

    The tab is no longer hub-only and now sits beside Machines in the rail.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 17:01:05 -07:00
    • VERSION
      20 B
      2026-09-24 17:01:05 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 17:00:59 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 17:01:01 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 17:01:02 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 17:01:04 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 17:01:05 -07:00
    • install.sh
      20 KiB
      2026-09-24 17:01:05 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-132-g823c721 823c72122c
    Compare

    v0.1.0-132-g823c721 Stable

    mitchell released this 2026-09-24 16:43:17 -07:00 | 126 commits to main since this release

    A proxied KVM may be framed by the console that proxies it

    frame-ancestors 'none' forbids framing even from the same origin, so /kvm/ paths say
    'self' instead. Without this the iframe was refused before it loaded.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 16:43:26 -07:00
    • VERSION
      20 B
      2026-09-24 16:43:27 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 16:43:20 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 16:43:22 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 16:43:23 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 16:43:25 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 16:43:26 -07:00
    • install.sh
      20 KiB
      2026-09-24 16:43:26 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-127-gdaf33a4 daf33a44b2
    Compare

    v0.1.0-127-gdaf33a4 Stable

    mitchell released this 2026-09-24 13:16:44 -07:00 | 131 commits to main since this release

    The datasets table is a snapshot explorer, and snapshots can be deleted

    Renamed Datasets to Snapshots and turned the columns around to match: how many each
    dataset has and what they cost come first, the dataset's own size after. Opening one lists
    its snapshots with when it was taken, when it expires — read from the TTL in its own name,
    so no server call is needed — its size, and a Delete button. Deleting takes the same-named
    snapshot on descendant datasets too, which is how a recursive schedule made it, and says so
    before it does anything.

    Dropped "What would it delete?" from the schedule cards, and the endpoint behind it. Run
    now says plainly that expired snapshots go at the same time, which is the whole of what the
    preview was telling anyone.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 13:16:55 -07:00
    • VERSION
      20 B
      2026-09-24 13:16:55 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 13:16:45 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 13:16:47 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 13:16:50 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 13:16:52 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 13:16:55 -07:00
    • install.sh
      20 KiB
      2026-09-24 13:16:55 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-125-g09b7558 09b7558d44
    Compare

    v0.1.0-125-g09b7558 Stable

    mitchell released this 2026-09-24 13:11:53 -07:00 | 133 commits to main since this release

    Snapshot schedules are real cron jobs, written and owned by Ham Lab

    A schedule is now a line in /etc/cron.d/hamlab-zfs, which Ham Lab owns and rewrites whole
    whenever the schedules change; the line calls hamlab zfs-snapshot <id> as the account Ham
    Lab runs as, reaching zfs through sudo exactly as the daemon does. The daemon's own ticker
    is gone. Snapshots are backup-shaped and should not stop because a web console is down,
    being upgraded, or uninstalled — and a cron line is greppable by anyone looking at the
    machine the normal way, which a schedule hidden inside a daemon is not.

    A cron expression is now the single description of when a schedule fires: the four common
    shapes render to one, a custom schedule states it outright, and the next run is read back
    with the same evaluator the Jobs tab uses on everyone else's lines. So the page, the file
    and the prediction cannot disagree.

    Schedules gain a custom cron expression and an optional snapshot name prefix. What a run
    did moves out of the policy into zfs-runs/.json beside the config, because the cron job
    is a separate process and must never write state.json behind the daemon's back.

    The detected external job can be adopted: its schedule, retention and dataset are read out
    of the cron line into a new Ham Lab schedule, ready to check rather than retype.

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 13:12:01 -07:00
    • VERSION
      20 B
      2026-09-24 13:12:01 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 13:11:54 -07:00
    • hamlab-linux-amd64
      12 MiB
      2026-09-24 13:11:56 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 13:11:57 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 13:11:59 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 13:12:01 -07:00
    • install.sh
      20 KiB
      2026-09-24 13:12:01 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-123-g7d0ec5e 7d0ec5e018
    Compare

    v0.1.0-123-g7d0ec5e Stable

    mitchell released this 2026-09-24 13:02:31 -07:00 | 135 commits to main since this release

    Snapshot schedules are real cron jobs, written and owned by Ham Lab

    A schedule is now a line in /etc/cron.d/hamlab-zfs, which Ham Lab owns and rewrites whole
    whenever the schedules change; the line calls hamlab zfs-snapshot <id> as the account Ham
    Lab runs as, reaching zfs through sudo exactly as the daemon does. The daemon's own ticker
    is gone. Snapshots are backup-shaped and should not stop because a web console is down,
    being upgraded, or uninstalled — and a cron line is greppable by anyone looking at the
    machine the normal way, which a schedule hidden inside a daemon is not.

    A cron expression is now the single description of when a schedule fires: the four common
    shapes render to one, a custom schedule states it outright, and the next run is read back
    with the same evaluator the Jobs tab uses on everyone else's lines. So the page, the file
    and the prediction cannot disagree.

    Schedules gain a custom cron expression and an optional snapshot name prefix. What a run
    did moves out of the policy into zfs-runs/.json beside the config, because the cron job
    is a separate process and must never write state.json behind the daemon's back.

    The detected external job can be adopted: its schedule, retention and dataset are read out
    of the cron line into a new Ham Lab schedule, ready to check rather than retype.

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 13:11:25 -07:00
    • VERSION
      20 B
      2026-09-24 13:11:25 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 13:11:18 -07:00
    • hamlab-linux-amd64
      11 MiB
      2026-09-24 13:11:20 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 13:11:21 -07:00
    • hamlab-linux-arm64
      11 MiB
      2026-09-24 13:11:23 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 13:11:25 -07:00
    • install.sh
      20 KiB
      2026-09-24 13:11:25 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-118-g2e4f3a7 2e4f3a7fe6
    Compare

    v0.1.0-118-g2e4f3a7 Stable

    mitchell released this 2026-09-24 12:12:06 -07:00 | 140 commits to main since this release

    A drive in a pool says which pool, not that nothing is on it

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-24 12:12:17 -07:00
    • VERSION
      20 B
      2026-09-24 12:12:17 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-24 12:12:08 -07:00
    • hamlab-linux-amd64
      11 MiB
      2026-09-24 12:12:10 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-24 12:12:12 -07:00
    • hamlab-linux-arm64
      10 MiB
      2026-09-24 12:12:14 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-24 12:12:16 -07:00
    • install.sh
      20 KiB
      2026-09-24 12:12:17 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-116-gbf0bdd5 bf0bdd54af
    Compare

    v0.1.0-116-gbf0bdd5 Stable

    mitchell released this 2026-09-23 23:16:49 -07:00 | 142 commits to main since this release

    The disks box is this machine's own storage, not a network share

    core mounts grid's tank over CIFS, and it was listed beside root and efi as though it
    were a disk in the box. Filesystems whose storage is on another machine are now marked
    remote — a label on the fs sensors, so the sensor stays for anyone who wants it — and the
    Processes tab's disks box leaves them out.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-23 23:17:09 -07:00
    • VERSION
      20 B
      2026-09-23 23:17:09 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-23 23:16:52 -07:00
    • hamlab-linux-amd64
      11 MiB
      2026-09-23 23:16:57 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-23 23:17:01 -07:00
    • hamlab-linux-arm64
      10 MiB
      2026-09-23 23:17:05 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-23 23:17:09 -07:00
    • install.sh
      20 KiB
      2026-09-23 23:17:09 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v0.1.0-115-g9bf60de 9bf60deffc
    Compare

    v0.1.0-115-g9bf60de Stable

    mitchell released this 2026-09-23 23:04:27 -07:00 | 143 commits to main since this release

    Retire the Dashboard tab; Processes is the front page

    The app repeated itself. The module list, /api/prefs/dashboard, applyPrefs and the
    per-user dashboard blob are gone. Widgets stays and now says plainly that it is for
    dashboards outside Ham Lab.

    This also closes a bug: applyPrefs set the sampling rate from intervalMs inside the
    dashboard layout, and reset it to the default when that field was absent — so with
    per-user layouts, one account saving a dashboard could reset the sampling rate for the
    whole machine. The sampler now has one source.

    Co-Authored-By: Claude Opus 5 noreply@anthropic.com

    Downloads
    • SHA256SUMS
      500 B
      2026-09-23 23:04:57 -07:00
    • VERSION
      20 B
      2026-09-23 23:04:57 -07:00
    • hamlab-linux-386
      11 MiB
      2026-09-23 23:04:30 -07:00
    • hamlab-linux-amd64
      11 MiB
      2026-09-23 23:04:36 -07:00
    • hamlab-linux-arm
      11 MiB
      2026-09-23 23:04:50 -07:00
    • hamlab-linux-arm64
      10 MiB
      2026-09-23 23:04:54 -07:00
    • hamlab-linux-riscv64
      10 MiB
      2026-09-23 23:04:57 -07:00
    • install.sh
      20 KiB
      2026-09-23 23:04:57 -07:00
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
First Previous 1 2 Next Last
Powered by Gitea Version: 1.27.3 Page: 113ms Template: 7ms
Auto
English
Bahasa Indonesia Deutsch English Español Français Gaeilge Italiano Latviešu Magyar nyelv Nederlands Polski Português de Portugal Português do Brasil Suomi Svenska Türkçe Čeština Ελληνικά Български Русский Українська فارسی മലയാളം 日本語 简体中文 繁體中文(台灣) 繁體中文(香港) 한국어
Licenses API