Skip to content

v0.2.0 (alpha)

Pre-release
Pre-release

Choose a tag to compare

@Lakeland97 Lakeland97 released this 12 Oct 17:16
· 2 commits to main since this release

Alpha build for real-world field testing on Steam Deck.

Update (Oct 14): no self-lockout

  • Enabling parental controls now REQUIRES a passcode — the previous build could be enabled with none, leaving no unlock path except Desktop-Mode file editing
  • Clearing an existing passcode while controls are enabled is now refused (setting a new one stays allowed — that's the recovery path)
  • Whitespace-only passcodes are treated as empty; inputs are trimmed end-to-end
  • Fixed: a WRONG passcode in the unlock dialog previously closed the dialog and unlocked anyway (backend always refused — the UI lied). It now visibly fails.

What's new since v0.1.0 (alpha)

Enforcement (the plugin's reason to exist)

  • Launch-menu "Cancel" and blocked launches (curfew / out of credits / cooldown) now actually stop the game instead of letting it run unlimited
  • "Start Full" with insufficient credits is blocked, not swallowed
  • Game termination is verified (SIGTERM → rescan → SIGKILL → verify) with a 60s retry loop — a failed kill can no longer end enforcement
  • Fair cap/curfew kills are streak-neutral (runaway days still break the streak)

Crash-safety / low breakage (plugin handles its own errors)

  • Every background task supervised; startup runs in independently guarded stages
  • Stale focus AND stale game-limits sessions reconciled at boot (power-off mid-session can't cause boot-time modals, toast spam, or pre-outage kills)
  • Corrupt settings.json restored from an automatic .bak snapshot; full read-boundary type sanitizer; all settings mutations serialized behind a lock
  • Frontend: Steam callback wrapped, dismount hardened, promise hygiene, listener lifecycle balanced — SharedJSContext stays intact

Security / parental controls

  • Passcode stored as salted SHA-256 (household-grade, honestly labeled)
  • Locked users can no longer bypass protections through update_settings, import, or factory reset; raw settings RPCs privatized

First-run UX

  • Installed-games picker list with search, curfew day-mask UI, in-game overlay badge (remaining time / credits / curfew)
  • Backup paths contained (~/Documents, ~/Downloads) with clear refusal messages; custom-sound traversal blocked

Tester kit

  • TESTING.md at repo root: 10 numbered manual test scenarios + known limitations — run it in order

Install

Decky Loader → Settings → General → "Install from Zip" → select timeout-decky-plugin.zip (NOT the source zip) → restart Decky Loader.

Alpha caveats: passcode is household-grade; store listing items pending; see TESTING.md known-limitations before relying on it.