Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -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.
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -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.
15 changes: 15 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -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
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
80 changes: 80 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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/<your-username>/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.
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,28 @@
<a href="https://www.python.org/"><img src="https://img.shields.io/badge/Python-3.11+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="MIT License"></a>
<a href="https://github.com/Ublaze/Caffeinator/releases"><img src="https://img.shields.io/badge/Download-.exe-blue?style=flat-square&logo=github" alt="Download"></a>
<a href="https://github.com/Ublaze/Caffeinator/actions/workflows/ci.yml"><img src="https://github.com/Ublaze/Caffeinator/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
</p>

<details>
<summary><strong>Table of Contents</strong></summary>

- [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)

</details>

---

**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.
Expand Down Expand Up @@ -251,3 +271,11 @@ Issues and PRs are welcome. Please:
## License

[MIT](LICENSE) — use it however you want.

---

<div align="center">

If Caffeinator saved your screen, consider giving it a :star: — it helps others find it!

</div>
Loading