Thank you for your interest in contributing to Rakh!
We use Release Please to automate our versioning, changelog generation, and GitHub Releases. To make this work, all commits must follow the Conventional Commits specification.
- Develop: You write code and commit using Conventional Commits.
- Push/Merge: When commits are pushed or merged into the
mainbranch, theRelease PleaseGitHub Action runs. - Release PR: Release Please automatically calculates the next semantic version, updates the version in
package.jsonandsrc-tauri/tauri.conf.json, curates aCHANGELOG.md, and opens a "Release PR". - Publishing: We merge the Release PR when we are ready to publish a new version.
- Build & Release: Merging the Release PR triggers the creation of a GitHub tag. This triggers the
Build and Publish Releaseworkflow, which compiles the Mac, Windows, and Linux binaries and attaches them to the new GitHub Release.
Your commit messages should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
feat: Adds a new feature to the codebase (correlates withMINORin Semantic Versioning).fix: Patches a bug in the codebase (correlates withPATCHin Semantic Versioning).docs: Documentation only changes.style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc).refactor: A code change that neither fixes a bug nor adds a feature.perf: A code change that improves performance.test: Adding missing tests or correcting existing tests.build: Changes that affect the build system or external dependencies.ci: Changes to our CI configuration files and scripts.chore: Other changes that don't modify src or test files.revert: Reverts a previous commit.
If your commit introduces a breaking change, you MUST include BREAKING CHANGE: in the footer or append a ! after the type/scope. This correlates with MAJOR in Semantic Versioning.
Examples:
feat: add local LLM support
fix(terminal): resolve crash when resizing window rapidly
feat(api)!: change database schema for user profiles
BREAKING CHANGE: The `user_id` field has been renamed to `uuid` and its type changed to a UUID string.
- Node.js: v20 or later
- Rust: stable toolchain
- OS Dependencies: See the Tauri prerequisites guide for Linux/Windows/MacOS specific setup.
To start the development server and the Tauri window simultaneously, run:
npm install
npm run tauri:dev