diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..96b020d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,35 @@ +--- +name: Bug Report +about: Something isn't working as expected +title: '' +labels: bug +assignees: '' +--- + +## What happened? + +A clear description of the bug. + +## Steps to reproduce + +1. ... +2. ... +3. ... + +## Expected behavior + +What should have happened instead. + +## Environment + +- **Windows version**: (e.g., Windows 11 23H2) +- **Caffeinator version**: (e.g., v0.1.0 standalone exe / pip install) +- **Python version** (if running from source): + +## Logs / Screenshots + +Paste any relevant logs or attach screenshots. You can find logs at `%APPDATA%\procawake\`. + +## Additional context + +Anything else that might help — monitored apps, config snippets, `procawake diagnose` output, etc. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..fe7123b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature Request +about: Suggest an idea or improvement +title: '' +labels: enhancement +assignees: '' +--- + +## Problem or use case + +What are you trying to do, and why is it difficult or impossible today? + +## Proposed solution + +How would you like it to work? + +## Alternatives considered + +Have you tried any workarounds or other tools? + +## Additional context + +Screenshots, config examples, links to related issues, etc. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..830f399 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ +## What does this PR do? + +A brief description of the change. + +## Related issue + +Closes # + +## Checklist + +- [ ] I've run `pytest tests/ -v` and all tests pass +- [ ] I've run `ruff check src/` with no warnings +- [ ] I've tested the change on Windows 10 or 11 +- [ ] I've updated the README if this changes user-facing behavior +- [ ] My changes are focused — one feature or fix per PR diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b75a953 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/). + +## [0.1.0] - 2026-03-23 + +### Added + +- Per-app monitoring rules with display, system, or both actions +- Settings GUI for scanning and selecting running applications +- System tray with color-coded coffee cup icon (idle / active / paused) +- Native Win32 power API (`PowerCreateRequest`) — visible in `powercfg /requests` +- Session-aware monitoring — pauses on screen lock +- 30-second cooldown to prevent rapid on/off during app restarts +- Auto-detect for 35+ common applications (IDEs, media players, meeting tools) +- Window title matching with regex support +- CPU threshold triggering +- Foreground-only option +- Full CLI: `run`, `status`, `scan`, `list`, `add`, `remove`, `enable`, `disable`, `diagnose`, `config` +- Standalone `.exe` build via PyInstaller +- Windows installer build via Inno Setup + +### Fixed + +- Tray icon stuck on idle when monitored apps are already running at launch + +[0.1.0]: https://github.com/Ublaze/Caffeinator/releases/tag/v0.1.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1db2c15 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +# Contributing to Caffeinator + +Thanks for your interest in contributing! Caffeinator is a small utility and contributions of all sizes are welcome — bug fixes, new features, docs improvements, or just reporting issues. + +## Getting Started + +1. **Fork and clone** the repo: + + ```bash + git clone https://github.com//Caffeinator.git + cd Caffeinator + ``` + +2. **Install in development mode**: + + ```bash + pip install -e ".[dev]" + ``` + +3. **Run the app** to make sure everything works: + + ```bash + procawake + ``` + +## Development Workflow + +1. Create a feature branch from `main`: + + ```bash + git checkout -b my-feature + ``` + +2. Make your changes. Keep commits focused — one logical change per commit. + +3. Run the checks before pushing: + + ```bash + # Lint + ruff check src/ + + # Type check + mypy src/procawake/ --ignore-missing-imports + + # Tests + pytest tests/ -v + ``` + +4. Push your branch and open a Pull Request against `main`. + +## Code Style + +- We use [Ruff](https://docs.astral.sh/ruff/) for linting. The CI pipeline enforces this. +- Type hints are encouraged. We run `mypy` in CI. +- Keep functions short and well-named. If a comment explains *what* the code does, the code probably needs renaming. + +## Testing + +- Tests live in `tests/` and use `pytest`. +- If you're adding a new feature, add tests for it. +- If you're fixing a bug, add a test that would have caught it. + +## Pull Request Expectations + +- **One thing per PR.** A bug fix and a new feature should be separate PRs. +- **Describe the "why."** The PR description should explain the motivation, not just list files changed. +- **Keep it small.** Smaller PRs get reviewed faster and merged sooner. +- **Tests must pass.** CI runs lint, type checking, and tests on Python 3.11 through 3.13. + +## Reporting Bugs + +Open an issue using the **Bug Report** template. Include your Windows version, how you installed Caffeinator (exe vs pip vs source), and any relevant logs from `%APPDATA%\procawake\`. + +## Suggesting Features + +Open an issue using the **Feature Request** template. Describe the problem you're trying to solve — sometimes there's already a way to do it with existing config options. + +## Questions? + +Open a discussion or issue. There are no dumb questions. diff --git a/README.md b/README.md index 6e4e4dc..1680534 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,28 @@ Python MIT License Download + CI

+
+Table of Contents + +- [Why Caffeinator?](#why-caffeinator) +- [Features](#features) +- [Quick Start](#quick-start) +- [How It Works](#how-it-works) +- [Settings GUI](#settings-gui) +- [CLI (for power users)](#cli-for-power-users) +- [Configuration](#configuration) +- [Comparison](#comparison) +- [System Requirements](#system-requirements) +- [Building from Source](#building-from-source) +- [Architecture](#architecture) +- [Contributing](#contributing) +- [License](#license) + +
+ --- **Caffeinator** is a Windows app that keeps your screen alive when specific applications are running. Unlike tools that are always-on or use input simulation hacks, Caffeinator monitors your processes and only prevents sleep when apps *you care about* are active. @@ -251,3 +271,11 @@ Issues and PRs are welcome. Please: ## License [MIT](LICENSE) — use it however you want. + +--- + +
+ +If Caffeinator saved your screen, consider giving it a :star: — it helps others find it! + +