Skip to content

Releases: keyneszeng/bagbot

v0.1.3 β€” πŸ”’ Dashboard auth + portable tests

Choose a tag to compare

@keyneszeng keyneszeng released this 07 Sep 02:28

v0.1.3 β€” 2026-09-07 Β· πŸ”’ Security patch

What's in this release

Security: dashboard mutation endpoints (/api/claim, /api/rotate, /api/topup) now require DASHBOARD_TOKEN. Without it, mutations return 403 (read-only dashboard). With it, the token is sent via Authorization: Bearer or X-Dashboard-Token.

Portability: CLI error tests no longer hard-code /Users/mac/....

Quality: 13 new mutation-resistant auth tests β€” dashboard.py mutation score is now 100%.

Stats

  • 97 tests passing (was 84)
  • dashboard.py: 100% mutation score
  • ruff + mypy + shellcheck: all clean

Quick upgrade

git pull
# Optional: set DASHBOARD_TOKEN in .env to enable mutations
echo 'DASHBOARD_TOKEN=<run: openssl rand -hex 32>' >> .env
sudo bash scripts/install_launchd.sh  # or scripts/install_systemd.sh

Migration from v0.1.2

If you run BagBot's dashboard on anything other than 127.0.0.1, you must
set DASHBOARD_TOKEN
in your .env after upgrading. The dashboard will
return 403 on all mutations otherwise.

v0.1.2 β€” CLI error handling + installable package

Choose a tag to compare

@keyneszeng keyneszeng released this 06 Sep 11:25

v0.1.2 β€” 2026-09-06

What's in this release

  • Bug fix: CLI no longer dumps full Python tracebacks for common errors (missing token, bad token, network errors). Prints a clean one-line error + hint instead.
  • Installable as a package via pip install -e . β€” no more cd src/ needed to use python -m bagbot.cli.
  • MyPy strict type checking added to CI.
  • Ruff linting (bugbear + security + pyupgrade) added to CI.
  • CI matrix expanded to Python 3.10, 3.11, and 3.12.
  • Nightly mutation testing GitHub Action.
  • 3 new tests for CLI error paths.

Test status

  • 83 unit + integration tests passing
  • Mutation score: policy 92.9%, daemon 94.1%
  • mypy: clean
  • ruff: clean
  • shellcheck: clean

Bug fixes from mutation testing (v0.1.1)

  • ALERT branch was unreachable (moved above if current is None guard)
  • Dashboard topup endpoint had inverted is not None / is None check
  • KeyStatus was missing used_fraction property
  • cli probe could leak secrets to stdout (now redacted)

Built in 7 days for Orbio Build Week β€” see README for the full story.