Contributing¶
Development setup¶
The project uses Nix for builds and a dev shell.
# Enter dev shell with Go, gh, and other tools
nix develop
# Build the binary
nix build
# Run directly
go run .
Testing¶
Version bumps¶
The version number is specified in three places. All must be updated together:
| File | Field | Example |
|---|---|---|
flake.nix |
version |
version = "0.6.0"; |
dist/Info.plist |
CFBundleShortVersionString |
<string>0.6.0</string> |
FyneApp.toml |
Version |
Version = "0.6.0" |
The Nix Home Manager module in modules/home-manager.nix also duplicates some daemon config defaults (like the hotkey) for documentation purposes. If you change a default in the Go code, update the Nix module default to match.
Releasing a new version¶
- Bump the version in all three files listed above.
- Commit and push to
main. - Create an annotated tag and push it:
- The release workflow runs automatically on tag push. It builds Linux (tarball + AppImage) and macOS (DMG) artifacts, generates checksums, signs them with cosign, and creates a GitHub release.
Updating documentation¶
Docs live in docs/ and are built with MkDocs Material. The site is configured in mkdocs.yml.
To preview locally:
API reference docs under docs/api/ are generated from godoc comments using gomarkdoc. The docs workflow regenerates and deploys them on push to main.
To add a new page, create a markdown file in docs/ and add it to the nav section in mkdocs.yml.