Changelog¶
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
2.2.0 - 2026-09-16¶
Added¶
- Quick Presets — one-click buttons (Continuous, 30m Agent, 2h Model Run, 6h Overnight) that set the interval and scheduled power action together. Selecting a preset highlights it; editing the interval, power action, or timer manually clears the highlight. Presets are disabled while keep-awake is running.
2.1.0 - 2026-09-16¶
Reverted¶
- Reverted the v2.0.0 React/Vite web rewrite; restored the native
Python/Tkinter desktop app from v1.3.1. A browser tab cannot reliably
prevent sleep in the background, override lid-close behavior, or schedule
a real hibernate/shutdown — the app's core purpose needs OS-level APIs
that only a native app can call.
src/dontlockpc/,pyproject.toml,requirements*.txt,dontlockpc.spec,mkdocs.yml, and the CI/Docs workflows are back to their v1.3.1 state. - Removed the React/Vite/TypeScript sources,
package.json, and Vite config added in v2.0.0.
2.0.0 - 2026-09-16¶
Changed¶
- Complete rewrite: Python/Tkinter desktop app → React/Vite/TypeScript web app. The keep-awake logic now runs in the browser via the Screen Wake Lock API, with a background timer and battery-status fallback for browsers that don't support it yet. This is a breaking change: there is no longer a Python package, CLI entry point, or PyInstaller executable.
- CI now runs
npm ci, a TypeScript type-check, and a Vite production build instead of ruff/pytest.
Removed¶
- All Python sources (
src/dontlockpc/),pyproject.toml,requirements*.txt, and the PyInstaller spec — superseded by the web app. - The MkDocs-based documentation site and its
Docsdeploy workflow (mkdocs.yml,requirements-docs.txtwere removed in the rewrite).
1.3.1 - 2026-08-11¶
Fixed¶
- Scheduled power action never fired. The warning dialog built its message
label with
pady=(18, 6)— a 2-tuple is only valid on.pack(), so Tk raisedbad screen distancebefore the widgets and countdown were created. The result was an empty "Power action" window and no Sleep/Hibernate/Shutdown at any duration, on both Windows and macOS. - Windows hibernate is now reliable. Uses
shutdown /hinstead ofSetSuspendState(1, 1, 0), which can silently fall back to sleep on some machines. Falls back to the power API if the command is unavailable.
Added¶
- Documentation site built with MkDocs Material, published to GitHub Pages at https://mahanteshimath.github.io/do-not-lock-my-system/.
tests/test_power_actions.py— covers the Windows and macOS power actions and the warning-dialog render/execute flow that regressed above.
Removed¶
- The redundant
dont_lock_pc.pylegacy launcher shim; usedontlockpcorpython -m dontlockpc.
1.3.0 - 2026-07-26¶
Added¶
- Scheduled power action — a "Then … after …" control to Sleep, Hibernate
(Windows), or Shut down the machine once a timer elapses (minutes or a
HH:MMclock time). The countdown is armed while keep-awake is running, releases keep-awake first, and shows a 30-second cancelable warning before acting. Backed by a newpower_actions/power_actioncapability on the backend interface (Windows: Sleep/Hibernate/Shutdown · macOS: Sleep/Shutdown).
1.2.2 - 2026-07-13¶
Changed¶
- Polished the developer credit line: crisp red heart, bold underlined name, and a hover highlight on the link.
1.2.1 - 2026-07-13¶
Added¶
- Developer credit — a footer credit line with a clickable link.
Removed¶
- Unused color constants (
SURFACE,BLUE) from the UI palette.
1.2.0 - 2026-07-13¶
Added¶
- Stay awake with the lid closed (Windows) — an optional toggle that
overrides the active power plan's lid-close action to Do nothing while
keep-alive is running, and restores the original setting on STOP/exit. Backed
by a new
prevent_lid_sleep/restore_lid_sleepcapability on the backend interface (lid_close_supported). Not available on macOS, where clamshell sleep requiressudo pmset.
1.1.1 - 2026-07-13¶
Added¶
- Automated release builds — a GitHub Actions
Releaseworkflow that, on everyv*tag, builds the standaloneDontLockMyPC.exe(Windows) andDontLockMyPC.app(macOS) with PyInstaller, zips them, and attaches them to the published GitHub Release.
1.1.0 - 2026-07-13¶
Added¶
- Start at login — an in-app "Start automatically at login" toggle backed by
a new cross-platform
autostartmodule (WindowsRunregistry key / macOS LaunchAgent). - Standalone build — a checked-in
dontlockpc.specfor PyInstaller that produces a windowedDontLockMyPC.exe(Windows) orDontLockMyPC.app(macOS);pyinstalleradded to the dev extras. - UI preview —
docs/screenshot.svgembedded in the README.
Changed¶
- Repositioned the app around its core use case: keeping the system awake and unlocked while long-running AI agents work. Updated README, in-app subtitle, and package metadata accordingly.
- Close button (✕) now fully exits the app; the minimize button (─) hides to the system tray.
1.0.0 - 2026-07-13¶
Added¶
- Cross-platform support for Windows and macOS via a pluggable
keep-awake backend abstraction (
KeepAwakeBackend). - macOS backend using the built-in
caffeinateutility plus QuartzCGEventmouse/F15 input synthesis. - Proper
src/package layout (dontlockpc) withpython -m dontlockpcand adontlockpcconsole entry point. - Packaging via
pyproject.toml, platform-marked dependencies, and a development extras group. - System-tray wrapper that degrades gracefully where a background-thread tray is unavailable (e.g. macOS → minimize to Dock).
- GitHub Actions CI (lint + import smoke on Windows and macOS), issue/PR
templates,
CONTRIBUTING.md,CODE_OF_CONDUCT.md, and tests.
Changed¶
- Extracted the original single-file Windows script into a package; the
Windows Win32 logic now lives in
backends/windows.py. - UI now uses platform-appropriate fonts and a native title bar on macOS.
Full commit history and release downloads are on GitHub Releases.