Skip to content

Releases: UberMetroid/thrall

THRALL v0.5.4 — Tool for Hierarchical Replication And Identity Linking

Choose a tag to compare

@UberMetroid UberMetroid released this 28 Oct 19:47

The Admin tab gained two sections, and the daemon gained the state they change.

Portal Appearance — how the portal looks, for everyone:

  • The five footer data boxes, turned on or off wholesale or one at a time.
  • The accent palette, the default colour a new browser gets, and a monochrome mode.
  • A separate background for the sign-in page and for the dashboard: off, random, or pinned.
  • A fleet-wide reduce-motion switch.

Hiding the palette locks the theme: the administrator's colour then wins over a browser's saved choice.

Operations — how the daemon behaves:

  • Maintenance mode pauses the reconciler. Peers are still polled so the fleet view stays live, but nothing is pushed to them.
  • The reconciliation interval, configurable between 15 and 3600 seconds.
  • Peer API key rotation and session secret rotation, without hand-editing fleet.yaml.
  • An audit log beside the roster: owner-only, who changed what and when, trimmed to the last 500 records.

Appearance and posture persist in the roster as @ui records, so they travel with the state the daemon owns and come back on a restart.

Co-Authored-By: mavis noreply@minimax.ai

THRALL v0.5.3 — Tool for Hierarchical Replication And Identity Linking

Choose a tag to compare

@UberMetroid UberMetroid released this 28 Oct 19:00

THRALL is a control plane. This release removes the last places where the project looked like it also shipped a peer.

The peer is now entirely yours to run

  • Deleted Containerfile.syncthing and quadlet/syncthing.container.
  • The pipeline no longer builds or pushes a peer image.
  • The control-plane unit no longer depends on syncthing.service.
  • Added tests/no_peer_artifacts.rs: the build fails if a peer image, a peer unit, or a peer publish step ever reappears.

A peer is stock Syncthing that you run on every hub. The README documents the deployment recipe, and CI checks that recipe against the upstream image so the documentation cannot drift from what actually works.

Naming

  • Removed the st-mesh-mgr name from the sources, the quadlet unit, the repository description, and the historical commit message.
  • Renamed the roster file from mesh-mgr.db to roster.db, in the daemon, the default fleet template, and the documentation.

Docs

README.md and the landing page are rebuilt around what a visitor actually cares about: the outcome, the guarantee, and how to get it running. Every claim in the trust table is enforced by a failing test.

Note for operators

Existing deployments are unaffected: a fleet that sets portal.database_path explicitly keeps using the file it names. Rename the file at your convenience.

THRALL v0.4.1 — Tool for Hierarchical Replication And Identity Linking

Choose a tag to compare

@UberMetroid UberMetroid released this 28 Oct 16:07

Patch release: the thrall-syncthing peer image now declares /var/syncthing as a volume, so Syncthing can create its XDG dirs (~/.local) under the hardened --read-only Quadlet runtime. Without it, the peer node crashed on startup with mkdir /var/syncthing/.local: read-only file system. The persistent index database and config remain in the bind-mounted /var/syncthing/config.

THRALL v0.4.0 — Tool for Hierarchical Replication And Identity Linking

Choose a tag to compare

@UberMetroid UberMetroid released this 28 Oct 15:34

Container & Supply Chain

  • Fedora-minimal 44 OCI images replace Alpine + Guix — signed Fedora packages only, matching Fedora fleet servers
  • Syncthing peer node split into a dedicated thrall-syncthing image (replaces docker.io/syncthing/syncthing); the quadlet peer unit pulls ghcr.io/ubermetroid/thrall-syncthing with a curl-based healthcheck
  • Control-plane image stripped: no package manager (dnf5/libdnf5), no Syncthing binary — 155 MB portal-only runtime

CI/CD

  • GitHub Actions Verification Ladder (test → clippy → fmt → release build) gates every push and PR
  • Multi-arch (amd64 + arm64) images published to ghcr.io/ubermetroid/thrall and ghcr.io/ubermetroid/thrall-syncthing (main → :main, v* tags → :X.Y.Z + :latest)

Portal (since v0.3.0)

  • 6 new 8-bit footer widgets, clickable About brand, top body tabs, and a consolidated Admin view
  • READ-ONLY shared folders, selective sync with per-folder exclusions, and offline-hub filtering on the mesh stage
  • Footer telemetry dock refinements and READ-ONLY explorer UI controls

THRALL v0.3.0 — Tool for Hierarchical Replication And Identity Linking

Choose a tag to compare

@UberMetroid UberMetroid released this 28 Oct 07:16

THRALL v0.3.0

Tool for Hierarchical Replication And Identity Linking (thrall / st-mesh-mgr)

Highlights

  • Symmetric 54px Header & Footer Dock + 8-Bit Rainbow Palette:
    • Unified 54px header and footer dock with pixel-art THRALL canvas wordmark and 8-Bit Rainbow Palette (Coral, Orange, Amber, Yellow, Emerald, Cyan, Blue, Violet).
    • Always-visible real-time browser ↔ server 8-Bit Data Flow Graph (#footer-upload-graph) measuring live HTTP TX/RX throughput and upload progress.
    • Rotating cached Hive Thrall backgrounds (/bg-1.jpg .. /bg-5.jpg) on login/logout alongside the Bayer-dithered interactive mesh physics canvas.
  • 5 Flat Boxless Explorer Tabs with Flash-Free SPA Navigation:
    • Located in the Footer Dock: Personal folders | Shared folders || Device setup || Global folders || Mesh setup.
    • Split + Standard Folder & + Custom Folder Modals: Pick-and-choose standard XDG folders (Desktop, Documents, Downloads, Music, Pictures, Videos, Public, Templates) with ~/<Folder> vs ~/Thrall/<Folder> sync target, or open a dedicated modal to create custom folders synced to ~/Thrall/<Folder>.
    • Customizable Per-Folder Local Sync Paths: Override local workstation sync paths per personal or shared folder in Device setup.
    • Expandable + / − Inline Folder Trees: Recursive inline directory, device, ACL, and hub tree expansion across all 5 tabs.
  • Chunked Binary & Recursive Drag-and-Drop Directory Uploads:
    • Streamed File.slice chunked uploads (POST /files/upload) and recursive folder drag-and-drop with strict ancestor symlink-jail verification and dotfile rejection.
  • Safety & Admin UX:
    • GitHub-style type-to-confirm deletion modals for folders, files, and devices.
    • Pulsing Save Access * unsaved-changes indicator in Global folders.