Repository navigation
Releases
Releases · Lakeland97/timeout-decky-plugin
v0.2.0 (alpha)
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.mdat 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.
v0.1.0 (alpha)
First alpha prerelease of Timeout — play-time limits, focus modes, and parental controls for Steam Deck.
Alpha build — expect rough edges.
What's in here
- ⚡ Focus — sessions, statistics, background persistence, take-a-break
- 🎮 Game Limits — game selection (whitelist/blacklist), opens budget, session time cap, half-opens, cooldowns, curfew, per-limit active windows (opens & time cap each get an optional time-of-day window), 5-min concession
- 🎯 Focus enforcement tiers — soft / medium / hard
- 🔒 Parental controls — self-control + administrative lockout
- 🧘 Mindfulness pause — customizable prompt + cooldown countdown before distractions / limit bypasses (game launch, parental unlock, stopping/skipping a focus session)
- 🔥 Streaks (game-limits), custom sounds, SteamOS sleep inhibition, backup & restore
Notes
- Parental passcode is stored in plaintext.
- WIP: the unified streak metric is planned.
Install
- Download
timeout-decky-plugin.zipbelow. - Decky Loader → Settings → General → "Install from Zip" → select the zip (not the source code).
- Restart Decky Loader.
Feedback and bug reports: open an issue.