1.6 KiB
1.6 KiB
Development Notes
Local Commands
Recommended:
uv sync --frozen
uv run scanslicer
Alternative:
python -m scanslicer
Packaging and Entry Points
- Python package metadata:
pyproject.toml - Console script:
scanslicer = scanslicer.entry:main - Module entry:
python -m scanslicer
High-Level Code Layout
scanslicer/entry.py: startup arguments + backend selectionscanslicer/main.py: main window and application bootstrapscanslicer/controller*.py: user action logicscanslicer/ui_builders*.py: widget constructionscanslicer/canvas*.py: preview rendering and interactive editingscanslicer/autoslicer*.py: detection, auto-tune, and feedback enginescanslicer/params.py: parameter schema and persistencescanslicer/slices.py: box geometry utilities
Concurrency Model
- Background work is executed via
QThreadPool. - Thread pool is configured to a single worker thread to avoid overlapping detection/autotune tasks.
- UI updates are dispatched through Qt signals.
Persistence Model Summary
- Defaults and presets are JSON files.
- Auto-tune feedback is a JSON list of historical entries.
- Status log is plain text with session reset per app launch.
All paths are configurable by environment variables (see docs/runtime-config.md).
Current Testing State
- No automated test suite is currently present in this repository.
- Recommended validation after changes:
- startup on Wayland and X11
- detection and save flow on representative sample scans
- auto-tune profile run and feedback write/read cycle
- AppImage and Docker startup sanity checks