1. Prerequisites
Before anything else, make sure you have the following installed:| Tool | Required version | How to install |
|---|---|---|
| Git | any | git-scm.com |
| Node.js | 22 LTS | nodejs.org or nvm install 22 |
| npm | ≥ 10 | Bundled with Node.js 22 |
| Python | 3.11 | python.org or brew install python@3.11 |
Node.js 22 LTS is required. If you use nvm, run
nvm install 22 && nvm use 22 before anything
else.2. Fork and clone
You work on your own fork — you never push directly tosatyendra2013/mira-app.
Fork on GitHub
Go to github.com/satyendra2013/mira-app and click Fork → Create fork.
3. Set up the dev environment
npm install step also runs husky which installs the git hooks — including the commit message linter. You don’t need to set anything up manually.
Verify your environment:
4. Branch naming
Every piece of work lives on its own branch. Branch frommain and use the following prefixes so the purpose is immediately clear:
| Prefix | Use for |
|---|---|
feat/ | A new feature |
fix/ | A bug fix |
docs/ | Documentation only |
perf/ | Performance improvement |
refactor/ | Internal refactor with no behaviour change |
chore/ | Tooling, dependency updates, CI |
test/ | Adding or fixing tests only |
fix/crash is bad. fix/nae-crash-on-empty-document is good.
5. Conventional Commits — the only commit format accepted
MIRA uses Conventional Commits. Every commit message is validated by a git hook the moment you rungit commit. A badly formatted commit is rejected immediately — you fix it before it’s recorded.
Format
- be lowercase
- not end with a period
- be 72 characters or fewer
Types
| Type | When to use | Appears in changelog | Version bump |
|---|---|---|---|
feat | Adding new functionality | ✨ Features | MINOR |
fix | Fixing a bug | 🐛 Bug Fixes | PATCH |
perf | Measurable performance improvement | ⚡ Performance | PATCH |
docs | Documentation only | 📚 Documentation | none |
refactor | Code change with no behaviour change | (skipped) | none |
test | Adding or fixing tests | (skipped) | none |
chore | Build tooling, CI, dependencies | (skipped) | none |
ci | CI workflow changes | (skipped) | none |
! to the type or add a BREAKING CHANGE: footer:
Scope (optional but encouraged)
The scope narrows what was changed. Use the name of the module, component, or area:Real examples
6. Development workflow
npm run dev.
Useful commands
7. Before opening a PR
Run this sequence and make sure everything passes:.mdx file in docs/. Documentation PRs are reviewed as carefully as code PRs.
8. Opening a pull request
Open the PR on GitHub
Go to github.com/satyendra2013/mira-app. GitHub will show a banner — click Compare & pull request.Target branch:
main. Base repo: satyendra2013/mira-app. Never target a release or hotfix branch unless specifically asked.Fill out the PR template
The template will be pre-filled. Complete every section:
- Summary — one line describing what this PR does
- Type of change — tick the relevant box
- What changed and why — explain the reasoning, link to the issue if one exists
- Testing — which platforms did you verify on?
- Checklist — all boxes must be checked before requesting review
CI runs automatically
Three checks run on every PR:
- Lint · Typecheck · Test — must be green
- Commit message format — validates every commit in the PR against the conventional commits standard
Respond to review comments
Push new commits to the same branch — the PR updates automatically. Don’t force-push unless the reviewer specifically asks you to squash. Reply to each review comment individually so the reviewer knows what was addressed.
9. Keeping your fork in sync
Before starting any new piece of work, sync your fork with upstream:--force-with-lease (not --force) — it’s a safety check that prevents overwriting someone else’s push.
10. Releases (maintainer only)
Releases are cut by the maintainer from themain branch using release-it. Contributors do not cut releases — this section is here so you understand what happens after your PR merges.
See Release Process for the full reference. The short version:
release-it bumps the version in package.json, prepends a CHANGELOG.md entry from your commit history, creates a git tag, and opens a GitHub Release — all in one command.
11. Hotfix branches
A hotfix is an urgent fix applied directly to a released version, not via the normalmain flow.
Quick reference card
Build & Run
Set up your local dev environment
Release Process
How versions are cut and published
Architecture
How Electron, React, and the Python engines fit together
Code of Conduct
Community standards
Edit this page — Open a pull
request