Skip to content

v0.1.8 — LustLess (crash-reporting pipeline, CE parity minus the databases)

Choose a tag to compare

@HenryGetz HenryGetz released this 14 Oct 10:37
· 11 commits to main since this release

Linux accountability client (Covenant Eyes-compatible, clean-room reimplementation).

Install

curl -fsSL https://github.com/HenryGetz/LustLess/releases/latest/download/install.sh | sudo bash

Detects your distro, downloads the matching package, installs it with the
native tool, starts the agent — and the sign-in window opens. Log in there.
Other ways:

Distro File Command
Debian / Ubuntu / Zorin / Mint lustless_0.1.8_amd64.deb sudo apt install ./lustless_0.1.8_amd64.deb
Fedora lustless-0.1.8-1.x86_64.rpm sudo dnf install ./lustless-0.1.8-1.x86_64.rpm
Bazzite / immutable Fedora lustless-0.1.8-1.x86_64.rpm sudo rpm-ostree install ./lustless-0.1.8-1.x86_64.rpm && reboot
Arch / EndeavourOS / SteamOS lustless-0.1.8-1-x86_64.pkg.tar.zst sudo pacman -U ./lustless-0.1.8-1-x86_64.pkg.tar.zst
Alpine lustless-0.1.8-r0.apk sudo apk add --allow-untrusted ./lustless-0.1.8-r0.apk

Uninstall: sudo apt purge lustless (or the dnf/rpm-ostree/pacman/apk
equivalent) — restores the DNS, browser-policy and polkit state exactly as
found.

What's new

The crash-reporting pipeline exists now (it was the biggest parity gap):

  • Detection: a clean-shutdown marker; a missing marker at startup means the
    previous run died — systemd's Restart=always is CE's restart helper, so the
    report is made by the next start (CE's timing). A first-ever start reports
    nothing.
  • Type: a panic hook plus fatal-signal handlers (SIGSEGV/SIGABRT/SIGBUS/
    SIGILL/SIGFPE) record the reason, so the metric's crash_type is
    PANIC/SIGNAL where CE hardcodes GENERIC.
  • Attachments: CE's log groups under CE's caps (5 MB per file, 19 MB
    total). state-summary.json replaces CE's debugDB.zip — the activity
    databases are never attached
    , which is deliberately stricter than CE.
  • Counters and metric: CE's ClientCrashesAt/ClientCrashesSince pair,
    the client_crashes telemetry row, and CE's
    client_crash{crash_type=…,count=…} metrics event, cleared after reporting.
  • Test hooks: --crashatonce=true (CE's command-line switch) and
    [daemon] crash_test_hook = "force" (CE's ForceCrashClient setting).

Verified end to end: forced SIGABRT → last-reason=SIGNAL → next start logs
previous run crashed (SIGNAL, 1 in window), writes the attachments, emits the
metric row with crash_type=SIGNAL, inserts client_crashes=SIGNAL:1, clears
the counter; a clean run reports nothing.

Also in this release: the config loader's known-key list now accepts
crash_test_hook (it silently ignored unknown keys before). Everything from
0.1.7 (parity audit, real-model proof, spool fallback), 0.1.6 (branded sign-in
window, Zorin Lite verification), 0.1.5 (DNS that stays alive) and 0.1.4 (agent
main loop) is unchanged.