Skip to content

Releases: Sjeff/SteamSelfGifter

v3.0.5

06 Apr 19:11
a850294

Choose a tag to compare

[3.0.5]

Fixed

  • PendingRollbackError in the safety checker when the SQLite database is locked — added session.rollback() in the except block before re-using the session, preventing the fallback commit from also failing
  • TypeError: can't compare offset-naive and offset-aware datetimes when entering a giveaway — update_win_check_for_new_entry now compares both datetimes as timezone-aware, consistent with the TZDateTime fix introduced in v3.0.4

v3.0.4

06 Apr 18:15
f80f490

Choose a tag to compare

Bug fixes

  • Fixed automation cycle crash when the Steam API returns no review data

Code quality

  • Replaced deprecated `datetime.utcnow()` with `datetime.now(timezone.utc)` across 21 source files and 19 test files
  • Added `TZDateTime` TypeDecorator to re-attach UTC timezone on SQLite read
  • Fixed CI running 4 jobs per PR instead of 2

v3.0.3

05 Apr 19:31

Choose a tag to compare

v3.0.3

Bug fixes

  • Fixed "Failed to load wins" error on accounts with an expired SteamGifts session — read-only pages (Wins, Giveaways) now work
    regardless of session state
  • Corrected misleading label "Min Game Price ($)" → "Min Giveaway Cost (points)" on the Accounts page

CI/CD

  • Docker image is now only built and published on merge to master or version tag — no more redundant builds on PRs
  • Switched frontend Docker build stage from node:24-alpine to node:24-slim to fix npm ci failure caused by TailwindCSS v4's
    native Rust binary not supporting Alpine's musl libc

Dependency management

  • Added Dependabot for weekly automated dependency updates (npm, pip, Docker, GitHub Actions)

v3.0.2

27 Mar 20:30

Choose a tag to compare

fix: show only account-specific scheduler jobs and remove partial: prefix from job names

v3.0.1

27 Mar 08:50

Choose a tag to compare

feat: v3.0.1 — activity logs, automation fixes, scan staggering

Activity Logs:

  • Show all accounts' logs in one combined view (no account filtering)
  • Account badge per log entry to identify the source account
  • Backend log endpoints are permanently unscoped (account switching has no effect)

Automation:

  • Fix: Accounts page play button now correctly reflected on Dashboard
  • Dashboard uses global scheduler status instead of per-account status

Rate limiting & scan staggering:

  • 5-minute start offset per additional account to prevent simultaneous scans
  • Staggering applied both on startup and when manually starting automation
  • 1-second delay between page requests within a single scan

Docs:

  • Updated README with v3.0.1 changelog
  • Added multi-account scan interval warning table to Configuration section

Co-Authored-By: Claude

v3.0.0 Multi-account support

26 Mar 22:16

Choose a tag to compare

v3.0.0

All changes in this release were made in collaboration with Claude (Anthropic).

Multi-account support

  • Added full multi-account management: create, rename, delete, and switch between accounts
  • Account switcher in the sidebar with automation status indicator
  • Accounts page with expandable rows for credentials, settings, and per-account scheduler controls
  • Default account promotion when the current default is deleted

Per-account settings

  • All settings (DLC, Safety Detection, Auto-Join Rules, Scheduler interval, Rate Limiting) are now configurable per account
  • Removed the global Settings page from the navigation; all configuration lives on the Accounts page
  • New accounts are created with sensible defaults

Security

  • Session cookies (PHPSESSID) are no longer exposed in list API responses; replaced with a has_credentials boolean flag
  • set_default account operation is now atomic (two SQL UPDATE statements) to prevent race conditions

Automation

  • Scheduler jobs are automatically cleaned up when an account is deleted
  • Per-account scheduler endpoints: start, stop, run cycle, scan, process, sync wins

Frontend improvements

  • Optimistic cache updates: all account mutations update the UI immediately without a full refetch
  • Version number (v3.0.0) shown at the bottom of the sidebar, sourced from the root package.json

Version management

  • Single version number (3.0.0) shared between backend (pyproject.toml) and frontend (root package.json read via Vite define)

Docker

  • Backend process now runs as a non-root appuser inside the container
  • Added stopwaitsecs=30 to supervisord for graceful shutdown of in-flight requests
  • Stage 3 copies backend source from the build stage instead of re-sending from the build context
  • docker-compose.yml is now for external deployments (pulls from ghcr.io/sjeff/steamselfgifter:latest)
  • docker-compose.dev.yml is for local development (builds from source)

CI/CD

  • Added GitHub Actions workflow for automated Docker image publishing to ghcr.io
  • Images are tagged with latest on push to master, and semver tags (3.0.0, 3.0, 3) on git tags

Bug fixes

  • "Session Not Configured" banner now links to the Accounts page instead of the removed Settings page
  • Default account credentials section auto-expands when navigating from the setup banner