possible hot reload track.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Track Specification: Hot Reload Python Codebase
|
||||
|
||||
## Overview
|
||||
|
||||
Add file system watching capability to automatically reload/restart the Manual Slop application when source files are modified during development. This eliminates the manual stop/restart cycle when iterating on the codebase.
|
||||
|
||||
## Current State Audit (as of 4940913e)
|
||||
|
||||
### Already Implemented (DO NOT re-implement)
|
||||
|
||||
- **gui_2.py**: Main application entry with `App` class, `run()` method, and imgui-bundle integration
|
||||
- **src/app_controller.py**: Application controller with state management
|
||||
- **pyproject.toml**: Project configuration with `[project.scripts]` for `manual-slop` entry point
|
||||
- **scripts/**: Helper scripts for various dev tasks
|
||||
|
||||
### Gaps to Fill (This Track's Scope)
|
||||
|
||||
1. **No hot reload mechanism**: No watchdog/inotify-based file watching to trigger app restart
|
||||
2. **Manual restarts required**: Developers must stop and restart the app after every code change
|
||||
3. **No dev iteration helper**: No integration with existing dev tooling (watchgod, hupper, or py --watch)
|
||||
|
||||
## Goals
|
||||
|
||||
1. Watch source files (*.py) in src/, scripts/, and root directories
|
||||
2. Automatically restart the running application when Python files change
|
||||
3. Provide a CLI flag or environment variable to enable/disable hot reload mode
|
||||
4. Debounce rapid file changes to prevent restart storms
|
||||
5. Preserve application state where possible during reload
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
- File system watcher using `watchgod` (lightweight, pure Python, no C extensions)
|
||||
- Watch patterns: `src/**/*.py`, `scripts/**/*.py`, `*.py` in project root
|
||||
- Debounce window: 300ms to coalesce rapid file changes (e.g., save-all)
|
||||
- CLI flag: `--watch` or `MANUAL_SLOP_WATCH=1` environment variable
|
||||
- Graceful shutdown before restart, preserving logs
|
||||
- Restart via subprocess with same arguments
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
- Must not block the main thread
|
||||
- Memory overhead < 5MB
|
||||
- Restart latency < 1 second after file change settles
|
||||
- Compatible with Windows (PowerShell environment)
|
||||
|
||||
## Architecture Reference
|
||||
|
||||
- docs/guide_architecture.md#threading-model
|
||||
- pyproject.toml#project.scripts
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- Hot reload within the same process (AST-level code swapping)
|
||||
- Watching non-Python files
|
||||
- Cross-machine or container-based file watching
|
||||
- IDE integration (VSCode, etc.)
|
||||
Reference in New Issue
Block a user