Skip to main content
MIRA is open-source under the MIT licence. This page is your Day Zero guide — it covers everything from cloning the repo to getting a pull request merged, including how branches, commits, releases, and CI all fit together. Read this once, end to end, before writing any code.

1. Prerequisites

Before anything else, make sure you have the following installed:
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 to satyendra2013/mira-app.
1

Fork on GitHub

Go to github.com/satyendra2013/mira-app and click ForkCreate fork.
2

Clone your fork

3

Add the upstream remote

You now have two remotes: origin (your fork) and upstream (the canonical repo). You pull from upstream, push to origin.

3. Set up the dev environment

That’s it. The 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 from main and use the following prefixes so the purpose is immediately clear:
Keep branch names lowercase, hyphen-separated, and specific. 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 run git commit. A badly formatted commit is rejected immediately — you fix it before it’s recorded.

Format

The short description must:
  • be lowercase
  • not end with a period
  • be 72 characters or fewer

Types

For a breaking change (one that changes the IPC contract, DB schema, or engine API), append ! 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

The window opens automatically. Changes to the React renderer hot-reload instantly. Changes to the main process require quitting and re-running npm run dev.

Useful commands

See Build & Run (Development) for debugging the main process and Python engines.

7. Before opening a PR

Run this sequence and make sure everything passes:
If you changed anything user-facing (UI, settings, engine behaviour), update the relevant .mdx file in docs/. Documentation PRs are reviewed as carefully as code PRs.

8. Opening a pull request

1

Push your branch to your fork

2

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.
3

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
4

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
If any check fails, fix it before requesting review.
5

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.
6

Merge

The maintainer squash-merges approved PRs. Your entire branch becomes one clean commit on main. Delete your branch after merge.

9. Keeping your fork in sync

Before starting any new piece of work, sync your fork with upstream:
If you have an in-progress branch that needs upstream changes:
Use --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 the main 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 normal main 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