5.2 KiB
5.2 KiB
AGENTS.md
Current status
Step 3 completed and verified with automated checks. Ready to start Step 4.
Completed steps
Initial setup before Step 1:
uvpackage metadata exists.- Runtime dependency
dearpyguiis installed. - Dev dependencies
pytest,ruff, andpyrightare installed. - Required package skeleton exists under
src/dpg_gauges/. examples/,tests/, anddocs/directories exist.pyproject.tomlis configured for Python 3.11+, Ruff, and Pyright.
Step 1 - Public API contract and pure core:
- Public API exports are defined in
src/dpg_gauges/__init__.py. - Public exceptions are defined in
src/dpg_gauges/exceptions.py. - Shared public dataclasses and type aliases are defined in
src/dpg_gauges/types.py. - Pure gauge configuration dataclasses are defined in
src/dpg_gauges/gauges.py. - Pure scale helpers are defined in
src/dpg_gauges/scales.py. - Lightweight theme/style presets are defined in
src/dpg_gauges/themes.py. - GUI-dependent public functions are import-safe stubs for Step 1.
- Step 1 tests cover public imports, dataclass construction, clamp/normalize math, tick generation, threshold validation, formatting, and missing-gauge stubs.
Current step
Step 4 - Digital, bar, level, and status gauges.
Step 3 - Widget shell and renderer foundation:
Implemented during Step 3:
- Added Dear PyGui widget shell creation for gauge context managers when a DPG context is active.
- Kept pure registration behavior when no DPG context has been created.
- Added a renderer foundation that measures drawlist size, redraws stable placeholder background/frame/value text, schedules animation frames, and exposes renderer debug fields.
- Added draw layer bookkeeping.
- Added lightweight
gauge_panelandgauge_gridcontainers. - Added Step 3 examples and smoke tests.
Step 2 - State, sizing, animation, and smoothing model:
Implemented during Step 2:
- Added
DpgGaugesConfig,configure(...)wiring,GaugeState,DirtyFlags, and the global gauge registry. - Runtime API functions now mutate logical state for values, config updates, thresholds, markers, visibility, and deletion without Dear PyGui calls.
- Added pure sizing helpers for requested/measured size, last non-zero size preservation, square rects, and stretch rects.
- Added pure animation interpolation helpers and smoothing progression helpers.
- Added debug state reporting for registered gauges.
- Added Step 2 tests for registry behaviour, clamped/displayed separation, dirty flags, sizing, animation, smoothing, and invalid values.
Design decisions
- Package is managed with uv.
- Public import is
import dpg_gauges as dpgg. - Package target is Python 3.11+.
- The package is Dear PyGui-only, but pure configuration/state helpers should avoid Dear PyGui imports where practical.
- Widget creation and Dear PyGui item operations are GUI-thread-only.
- Runtime value/configuration updates are intended to be called from the GUI thread.
- High-frequency updates should be smoothed/coalesced so gauges remain readable and flicker-free.
- Out-of-range values clamp to min/max and display the clamped value.
- Gauges are display-only for the first release.
- Thresholds and redline zones are visual only; they do not trigger events.
- The public API should feel like normal Dear PyGui context-manager usage.
- Each completed build step must be checked, documented in this file, and committed before starting the next step.
Known issues
Manual visual example checks were not run in this headless session.
Commands used
- Read
codex-old/README.md,codex-old/FEATURES.md,codex-old/ARCHITECTURE.md,codex-old/STEPS.md, andcodex-old/AGENTS.md. - Inspected
/home/hector/projects/dpg-mappackage, examples, tests, docs, and pyproject structure. - Created the initial
codex/instruction documents fordpg-gauges. - Read
codex/README.md,codex/FEATURES.md,codex/ARCHITECTURE.md,codex/STEPS.md, andcodex/AGENTS.md. - Completed missing pre-Step-1 skeleton files and directories.
- Ran
uv run python -c "import dpg_gauges; print(dpg_gauges.__name__)". - Ran
uv run ruff check .. - Ran
uv run ruff format .. - Read all files under
codex/. - Implemented Step 1 public API exports and pure core modules.
- Added
tests/test_step1_core.py. - Ran
uv run pytest. - Ran
uv run ruff check .. - Ran
uv run ruff format --check .. - Ran
uv run pyright. - Read
codex/FEATURES.md,codex/ARCHITECTURE.md,codex/STEPS.md, andcodex/AGENTS.mdbefore Step 2 changes. - Implemented Step 2 state, sizing, animation, smoothing, runtime API, diagnostics, tests, and README status update.
- Ran
uv run pytest. - Ran
uv run ruff check .. - Ran
uv run ruff format --check .. - Ran
uv run pyright. - Updated instructions to require a commit after each completed step.
- Read
codex/FEATURES.md,codex/ARCHITECTURE.md,codex/STEPS.md, andcodex/AGENTS.mdbefore Step 3 changes. - Implemented Step 3 widget shells, renderer foundation, draw layer bookkeeping, layout helpers, examples, smoke tests, README status update, and diagnostics renderer fields.
- Ran
uv run pytest. - Ran
uv run ruff check .. - Ran
uv run ruff format .. - Ran
uv run ruff format --check .. - Ran
uv run pyright.
Next action
Implement Step 4.