Maintainer Handbook
Triage duties, dual versioning, artifact contracts, CI scope, and new-maintainer handoff.
Maintainer responsibilities#
- Triage issues and PRs against fork scope. 2. Enforce test coverage, Doxygen, and clang-format on merged C++ changes. 3. Cut releases locally per the Release Guide — GitHub Actions does not produce release binaries. 4. Keep dual versioning synchronized across CMake, Python metadata, README, and Git tags. 5. Never publish releases, issues, or PRs under the LizardByte organization for SolarFlare work.
Dual versioning#
Display version (SemVer, e.g. 1.3.0): GitHub release title, README badge, user-facing copy. Build version (chronological YYYY.MDD.REVISION, e.g. 2026.909.1): CMakeLists.txt, pyproject.toml, uv.lock, embedded sunshine --version, compatibility tag v<build>-solarflare. The executable reports the build version; release titles show the display version.
| Identifier | Example | Where it appears |
|---|---|---|
| Display version (SemVer) | 1.3.0 | GitHub release title, README badge, changelog headings |
| Build version (chronological) | 2026.909.1 | CMake PROJECT_VERSION, Python package, --version, git tag |
Release artifacts#
Caution
Release binaries are for updating an existing SolarFlare install only. New users must build from source with scripts/linux-install.sh.
| Asset | Purpose |
|---|---|
| sunshine-x86_64 | Stripped executable (compatibility filename) for in-place binary updates |
| solarflare-linux-x86_64.tar.gz | Executable + runtime/Web UI assets + icon + license (Web UI updater path) |
| SHA256SUMS | SHA-256 checksums for both payloads |
Continuous integration#
Fork CI: Web bundle (npm ci + npm run build) and Linux build and tests (linux_build.sh, Xvfb, test_sunshine, gcovr upload). Not run by default: macOS, Windows, FreeBSD, Arch, Homebrew, Flatpak, Copr, upstream release publishing. Those workflows remain inherited but depend on LizardByte-only secrets. CI builds use release_version 0.0.0-ci for health checks, not release fidelity.
Handoff checklist#
Read CONTRIBUTING and AGENTS. Build from source with scripts/linux-install.sh. Run test_sunshine locally with BUILD_TESTS=ON. Walk through the Release Guide with --dry-run and --no-push. Confirm gh auth for vindeckyy/Solar-Flare. Review the Security Policy disclosure path.
Version sync checklist#
Every release touches the same set: CMakeLists.txt project version, pyproject.toml and uv.lock package versions, README badge plus release and build-tag rows, the website changelog tabs in website/lib/docs-data.ts, then commit and tag v<build>-solarflare with message SolarFlare v<display>. The binary reports the build version, never the display title. Script it with ./scripts/release.sh <build> <display> --dry-run first, then --no-push, verify artifacts, and push only when green.