| .gsd/gates | ||
| easystitch_qt | ||
| tests | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
EasyStitch-Qt
PyQt6 desktop GUI for EasyStitch.
This package was extracted from the main easystitch repository on
2026-06-22 to keep the service-deployment repo lean. The GUI is not on
the critical path for the easyStitch HTTP service (issue
easystitch#31)
and is published separately for anyone who wants to revive the
desktop client.
Status
Alpha / demo-mode only. The GUI loads and renders but is missing
the backend integration_engine.py module (referenced in
main_window.py:81). When that import fails the app falls back to
"demo mode" and runs without real embroidery integration. See
"Revival" below for what it would take to make this work end-to-end.
Installation
pip install -e .
Or with dev extras:
pip install -e ".[dev]"
Running
easystitch-qt
or
python -m easystitch_qt
What's here
easystitch_qt/
├── __init__.py # Package exports
├── __main__.py # Enables `python -m easystitch_qt`
├── canvas.py # Interactive canvas widget (zoom, pan, hit testing)
├── dialogs.py # File/color/settings/machine dialogs
└── main_window.py # QMainWindow with menus, toolbar, status bar
tests/
├── conftest.py # Forces offscreen Qt platform for headless runs
├── test_import.py # Smoke test — asserts the package imports cleanly
└── test_regressions.py # Regression tests for fixed bugs (pan, zoom, docks)
What's not here (and why)
- No backend integration.
main_window.pydoesfrom .integration_engine import IntegrationEngineinside atry/except ImportError, and no such module exists in either this repo or upstreameasystitch. The app runs in demo mode. - Thin test coverage.
tests/test_import.pyasserts the package is installable/importable;tests/test_regressions.pycovers the bugs fixed in the 2026-08-11 bug hunt (module entry point, canvas pan/zoom edge cases, layout parenting). Widget behavior beyond that is untested. - No
intent_resolver.stitch_intentimport. The original GUI code in upstream didn't import it either; it was a sibling-package reference that other parts of the pipeline use but the GUI didn't.
Revival (out of scope here)
To make this a working GUI again, the next step is to:
- Implement
easystitch_qt/integration_engine.py— a wrapper aroundeasystitch.src.embroidery_converterthat exposes theEmbroideryPipelineto the GUI. - Add a real
pip install easystitchdependency (this package currently has zero easystitch dependency; it's a pure-PyQt6 stub). - Add a proper test suite under
tests/usingpytest-qtto drive the widgets. - Decide whether the data classes in
easystitch.src.intent_resolver.stitch_intentshould be vendored here as a re-export, or imported from the upstream package.
None of this is required for the easyStitch service deployment.
Provenance
Extracted from easystitch commit 08f7ed9 (HEAD as of 2026-06-22),
originally at src/intent_resolver/gui_qt6/. Migration tracked in
easystitch#44.