step 6: add animation and high rate update stress tests

This commit is contained in:
2026-07-02 15:06:10 +02:00
parent 1a476bc91d
commit f4716e0d19
9 changed files with 352 additions and 21 deletions

View File

@@ -2,7 +2,7 @@
## Current status
Step 5 completed and verified with automated checks. Step 5 commit is pending.
Step 6 completed and verified with automated checks. Step 6 commit is pending.
## Completed steps
@@ -28,7 +28,19 @@ Step 1 - Public API contract and pure core:
## Current step
Step 6 - High-rate updates, animation, and stress examples.
Step 7 - Documentation, hardening, and beta release.
Step 6 - High-rate updates, animation, and stress examples:
Implemented during Step 6:
- Runtime updates now start animations using monotonic time for public calls.
- Optional smoothing now progresses displayed values toward the latest target instead of snapping immediately.
- Repeated GUI-thread value updates coalesce naturally to the newest target with no explicit queue.
- Renderer frame scheduling remains guarded so continuous callbacks are scheduled only while animation or smoothing is active.
- Debug state now includes detailed animation and smoothing fields.
- Added `examples/animations.py`, `examples/live_high_rate.py`, and `examples/live_worst_case.py` using GUI-thread frame callbacks for Dear PyGui updates.
- Added Step 6 tests for animation convergence, smoothing reset behaviour, latest-target wins, and renderer scheduling.
Step 5 - Analog, segmented, compass, thermometer, battery, and multi-value gauges:
@@ -91,7 +103,7 @@ Implemented during Step 2:
## Known issues
Manual visual example checks for Steps 3, 4, and 5 were not run in this headless session.
Manual visual/stress example checks for Steps 3, 4, 5, and 6 were not run in this headless session.
## Commands used
@@ -118,6 +130,14 @@ Manual visual example checks for Steps 3, 4, and 5 were not run in this headless
- Ran `uv run ruff format .`.
- Ran `uv run ruff format --check .`.
- Ran `uv run pyright`.
- Committed Step 5 with `git commit -m "step 5: complete first gauge catalogue"` before starting Step 6.
- Read `codex/FEATURES.md`, `codex/ARCHITECTURE.md`, `codex/STEPS.md`, and `codex/AGENTS.md` before Step 6 changes.
- Implemented Step 6 animation/smoothing scheduling refinements, high-rate examples, README status update, diagnostics fields, and tests.
- Ran `uv run pytest`.
- Ran `uv run ruff check .`.
- Ran `uv run ruff format .`.
- Ran `uv run ruff format --check .`.
- Ran `uv run pyright`.
- Read `codex/FEATURES.md`, `codex/ARCHITECTURE.md`, `codex/STEPS.md`, and `codex/AGENTS.md` before Step 2 changes.
- Implemented Step 2 state, sizing, animation, smoothing, runtime API, diagnostics, tests, and README status update.
- Ran `uv run pytest`.
@@ -142,4 +162,4 @@ Manual visual example checks for Steps 3, 4, and 5 were not run in this headless
## Next action
Commit Step 5, then implement Step 6.
Commit Step 6, then implement Step 7.