This repository has been archived on 2026-08-01. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Timer_original/ROADMAP.md
Ivan Juanes 247ce4c62e Initial commit: Peak Monitor system tray app with Tau development framework
Peak Monitor is a Linux system tray app that monitors two daily peak
periods (09:00-12:00 and 14:00-18:00, Atlantic/Canary time) and sends
desktop notifications when each period starts and ends.

Files:
- peak_monitor.py: Main application (GTK + AyatanaAppIndicator3)
- peak-monitor.desktop: Desktop entry for autostart
- ROADMAP.md: Development roadmap using Tau as the development framework
- .env.example: Environment variable template (API keys)

Tech stack:
- Python 3 with GTK
- Pillow for tray icons
- libnotify for desktop notifications
- Tau coding agent for development assistance
2026-07-11 23:26:54 +01:00

214 lines
8.6 KiB
Markdown

# Peak Monitor Development Roadmap
**Purpose**: This document defines the evolution path for Peak Monitor using Tau as the development framework. Each item must be attempted by invoking Tau with the appropriate prompt, NOT by manual implementation.
**Journal**: This file serves as both a task list and a development journal. Each milestone accumulates notes as work progresses.
---
## Phase 0: Foundation Skills
### 0.1 Create Test Code Skill
- [x] Create a generic testing best practices skill for Python projects
- **Prompt**: `"Create a simple, generic test-code skill that provides testing patterns and quality checklists for any Python project"`
- **Success Criteria**: Skill is generic, simple, and improves test quality
- **Location**: `~/.tau/skills/test-code/SKILL.md`
- **Journal**: 2026-07-11 14:00 - Created test-code skill with AAA pattern, pytest patterns, anti-patterns, and quality checklist
- **Decision**: Generic skill preferred over project-specific to maximize reusability across all projects
- **Tau Notes**: Skill follows minimalist philosophy - simple enough to be maintainable, useful enough to improve consistency
### 0.2 Create Web Search Skill
- [x] Create a web search skill using ddg-search CLI
- **Prompt**: `"Create a web-search skill that uses ddg-search to fetch and present web search results"`
- **Success Criteria**: Skill activates on search patterns and provides useful results
- **Location**: `~/.tau/skills/web-search/SKILL.md`
- **Journal**: 2026-07-11 13:30 - Web search capability added, transforming Tau from local-only to web-connected agent
- **Decision**: Used ddg-search CLI (DuckDuckGo scraper) as it provides structured output and respects privacy
- **Tau Notes**: Installed via bun, globally linked for system-wide availability
- **Lesson**: External CLI tools can be integrated as skills to extend Tau's capabilities significantly
---
## 🎯 Philosophy
**Tau does the work. We guide Tau.**
Every task below must be executed by running Tau and giving it instructions. If Tau cannot complete a task, document WHY in the journal entries below. This is how we learn Tau's capabilities.
---
---
## Phase 1: Project Structure Refactoring
### 1.1 Analyze Current Architecture
- [ ] Use Tau to analyze the project and identify structural improvements
- **Prompt**: `"Analyze the project codebase and suggest a better project structure. Do not implement yet."`
- **Success Criteria**: Tau produces a clear analysis document
- **Output**: Architecture analysis in `docs/analysis.md`
### 1.2 Create Package Structure
- [ ] Use Tau to refactor the monolithic file into a proper Python package
- **Prompt**: `"Refactor the main file into a package structure with separate modules for config, core logic, and GUI. Preserve all functionality."`
- **Expected Structure**:
```
package_name/
├── __init__.py
├── __main__.py
├── config.py
├── core.py
├── gui.py
└── notifications.py
```
- **Success Criteria**: Code runs identically to original, but is now modular
### 1.3 Add Configuration File Support
- [ ] Use Tau to add TOML-based configuration
- **Prompt**: `"Add support for a configuration file that allows users to customize settings. Keep existing hardcoded values as defaults."`
- **Success Criteria**:
- New config file is read if present
- Defaults to current behavior if file missing
- Sample config generated
---
## Phase 2: Quality Infrastructure
### 2.1 Add Type Hints
- [ ] Use Tau to add comprehensive type hints
- **Prompt**: `"Add complete type hints to all functions and modules in the project."`
- **Success Criteria**: `mypy --strict` passes (or Tau explains what can't be typed)
### 2.2 Create Unit Tests
- [ ] Use Tau to write unit tests for the project
- **Prompt**: `"Create pytest unit tests for the core logic functions. Focus on boundary conditions and edge cases."`
- **Success Criteria**: Tests pass, cover edge cases
### 2.3 Add Error Handling
- [ ] Use Tau to add robust error handling
- **Prompt**: `"Add error handling for missing dependencies and edge cases with helpful error messages."`
- **Success Criteria**: Clear error messages guide users to resolve issues
---
## Phase 3: Feature Enhancements
### 3.1 Multiple Profiles
- [ ] Use Tau to add profile support
- **Prompt**: `"Add support for multiple named profiles with different settings. Users should switch via CLI argument or config."`
- **Success Criteria**: Users can define and switch between profiles
### 3.2 CLI Mode
- [ ] Use Tau to add a CLI interface
- **Prompt**: `"Add a CLI mode that can check current status without GUI."`
- **Success Criteria**: Headless operation works
### 3.3 Sound Notifications
- [ ] Use Tau to add optional sound alerts
- **Prompt**: `"Add optional sound notification support. Users should be able to enable/disable sounds in config."`
- **Success Criteria**: Sounds play when enabled, silent when disabled
---
## Phase 4: Packaging & Distribution
### 4.1 Create pyproject.toml
- [ ] Use Tau to create proper Python packaging
- **Prompt**: `"Create a pyproject.toml for the project with proper metadata, dependencies, and entry points."`
- **Success Criteria**: `pip install -e .` works
### 4.2 Generate Desktop Entry
- [ ] Use Tau to improve desktop integration
- **Prompt**: `"Improve the desktop entry file to be more robust with proper icons and categories."`
- **Success Criteria**: Desktop entry works on GNOME/KDE
### 4.3 Create Systemd Service
- [ ] Use Tau to create auto-start service
- **Prompt**: `"Create a systemd user service file so the application starts automatically on login."`
- **Success Criteria**: Service can be enabled/disabled with standard systemctl commands
---
## Phase 5: Documentation
### 5.1 User Documentation
- [ ] Use Tau to write user docs
- **Prompt**: `"Write a comprehensive user guide explaining how to install, configure, and use the application."`
- **Success Criteria**: Clear, complete documentation for end users
### 5.2 Developer Documentation
- [ ] Use Tau to write dev docs
- **Prompt**: `"Write a development guide explaining the code structure, how to contribute, and how to test."`
- **Success Criteria**: New contributors can understand the project
### 5.3 Man Page
- [ ] Use Tau to generate man page
- **Prompt**: `"Generate a man page from the CLI help and documentation."`
- **Success Criteria**: `man <command>` works (after installation)
---
## Phase 6: CI/CD Pipeline
### 6.1 GitHub Actions Workflow
- [ ] Use Tau to create CI pipeline
- **Prompt**: `"Create a GitHub Actions workflow that runs tests on push and PR, checks typing with mypy, and lints with ruff."`
- **Success Criteria**: Workflow file is valid and would pass
### 6.2 Release Automation
- [ ] Use Tau to add release automation
- **Prompt**: `"Add a GitHub Actions workflow for publishing releases when tags are pushed."`
- **Success Criteria**: Workflow handles version detection and upload
---
## 📊 Progress Tracking
- **Total Milestones**: 19
- **Completed**: 2
- **In Progress**: 0
- **Remaining**: 17
- **Progress**: 10.53%
---
## 🔄 Workflow
For each milestone:
1. **Read** the milestone description and prompt from this file
2. **Invoke Tau** with the specified prompt (or adapted version)
3. **Review** the output - does it meet success criteria?
4. **Document** results in the journal:
- Add entries under the milestone with `**Journal**`, `**Time**`, `**Blockers**`, `**Decision**`, `**Tau Notes**`, or `**Lesson**`
5. **Mark complete** by changing `[ ]` to `[x]` when done
6. **Iterate** - if Tau failed, adjust the prompt or break into smaller steps
---
## 📝 Notes
- If Tau cannot complete a task, document **WHY** in a journal entry under that milestone
- If a task reveals a Tau limitation, document it as a `**Tau Notes**` entry AND in the knowledge base
- The goal is to understand what Tau can and cannot do, not to "finish" the roadmap
- Quality of Tau's output matters more than speed of completion
- Use `/roadmap` commands to interact with this file
---
## 🎯 Next Steps
**Foundation skills are complete!** Start with milestone **1.1 Analyze Current Architecture**:
```
tau -p "Analyze the project codebase and suggest a better project structure. Do not implement yet."
```
Or use the roadmap skill:
```
/roadmap next # Shows 1.1
/roadmap start 1.1 # Starts timer
/roadmap journal 1.1 "message" # Add notes
/roadmap complete 1.1 # Mark done
```
**Note**: The test-code skill (0.1) and web-search skill (0.2) are now available for all milestones.