Thank you for considering contributing to Charon! This document outlines the workflow, coding standards, and release process for maintaining consistency and ensuring high-quality changes.
This is a macOS desktop application built with the Wails framework. The project uses:
- Go for the backend
- React + Vite (Node.js) for the frontend
- A
Makefilefor building and bundling the app (including platform-specificffmpeg) - GitHub Actions for CI/CD and automatic releases
We use a 3-branch model:
main: Stable, production-ready codedevel: Integration branch for testing feature branchesfeat/<name>: Feature or fix branches
-
Fork the repo and create a new branch from
devel:git checkout -b feat/my-feature devel
-
Implement your feature or fix
-
Test your changes locally
-
Push your branch and open a PR to
devel -
After review and merge into
devel, it will be tested and staged for release
This will also include the correct ffmpeg binary for your architecture.
When the app is ready for release:
-
Checkout to
mainand mergedevel:git checkout main git merge devel
-
Run the release bump script:
./bump.py patch # or `minor`, `major`This will:
- Bump the version in
VERSION - Update the top of
CHANGELOG.md - Open the changelog for editing
- Commit and push the version + tag
- Bump the version in
-
After pushing, GitHub Actions will automatically:
- Build the app for both
x86_64andarm64 - Attach zipped
.appbundles - Create a GitHub Release using the latest tag and changelog
- Build the app for both
Currently, tests are manual. Please validate features locally before opening a PR.
Charon is licensed under MIT.