ayab-desktop
The AYAB Software
ayab-desktop, the software for AYAB knitting
The desktop side of the AYAB knitting project, covering a maintenance branch model, a Python 3.11 build setup, platform notes, and a CI build process that bundles firmware.
How branches are managed
ayab-desktop is the AYAB software, and the README opens with its branching model. Latest and upcoming features are developed on the main branch, while each major release gets a dedicated maintenance branch for bug fixes, security patches, and backporting, following a -maint naming convention like 0.95-maint. The goal is forward development without losing stability and long term support for older versions.
Running from source
The desktop software runs on Python 3.11. Dependencies are split into runtime dependencies in requirements.build.txt and development dependencies in requirements.txt. The repository uses pre-commit hooks, so after cloning and installing the dev dependencies you run pre-commit install to set up the git hook scripts.
Platform specific notes
Flashing firmware requires avrdude on the system, and building or running the app needs the Qt 6 system libraries, with the Qt 6 development tools as a heavy handed but simple way to get them. Communicating with an Arduino may mean adding your user to groups for USB communication rights. On macOS, Python should come from the official universal2 installer, since conda does not produce universal binaries, and the virtual environment prompt is the tell that setup worked.
Triggering a build
The test-tag convention suffixes the current date in YYMMdd format, with a letter appended if a test build already exists for that day, and test tags and releases are cleaned up manually from time to time. The tag can be pushed from your local environment or through the draft a new release button on the GitHub website.
Bundling the firmware
The CI automatically downloads a given firmware release from the ayab-firmware repository and packs it into the desktop release, with the firmware release name chosen in a manifest file in this repo. Building from source requires the firmware to exist as a compiled hex file at a specific path under resources. You can compile it and upload through something like VSCode with PlatformIO, or compile and drop it into the right directory for flashing through AYAB desktop.
Editorial conclusion
The README is written for contributors and maintainers more than end users, with the branching model and build process getting the most space. The firmware bundling step is the part that ties the desktop app to the wider AYAB project.
Community notes