Thanks for considering a contribution. This is an MIT-licensed library — code, docs, and bug reports are all welcome.
git clone https://github.com/CodeAgentMobile/codeagent-mobile-ide.git
cd codeagent-mobile-ide
npm install # installs all workspacesNode ≥ 20 is required (see .nvmrc).
- Branch off
main:git checkout -b feat/your-thing. - Make your changes. Keep each PR focused on one concern.
- Run the checks locally:
npm run lint npm run typecheck npm test - Commit with a Conventional Commits message —
commitlintenforces this in CI and via thecommit-msghook locally. - Push + open a PR to
main. CI runs lint + typecheck + tests on every PR.
The commit messages themselves drive the changelog at release time (via git-cliff), so a good feat(web): add file tree sidebar is worth more than any separate changelog edit.
Conventional Commits, with the scopes from commitlint.config.mjs:
<type>(<scope>): <subject>
<body>
Allowed scopes: core, web, native, examples, workflow, meta, deps, release, changelog, docs.
Examples:
feat(web): add file-tree sidebar
fix(native): safe-area insets for Android fullscreen modal
docs(meta): clarify adapter stability invariant in README
chore(deps): bump tsup to 8.4
Breaking changes: append ! after type/scope, or add a BREAKING CHANGE: footer.
Tag-triggered, identical pattern to codeagent-mobile-clients:
git tag v0.2.0
git push origin v0.2.0The Release workflow (.github/workflows/release.yml) takes over:
- Validates the tag matches
vMAJOR.MINOR.PATCH[-prerelease]. - Patches the version in
packages/{core,web,native}/package.json(no commit, just for the publish step). - Publishes all three packages to npm in parallel.
@codeam/ide-coregoes first, then@codeam/ide-weband@codeam/ide-native(which both depend on core at the same version). - Generates release notes via
git-cliffover the conventional commits between the previous and current tag — seecliff.toml. - Prepends the notes to each package's
CHANGELOG.mdand commits back tomainwithchore(changelog): notes for vX.Y.Z [skip ci]. - Creates a GitHub Release with the same notes, marked
prerelease: truewhen the tag has a-rc.Nsuffix.
You never run npm publish manually. Tag → push → done.
- One concern per PR. A feature, a bugfix, or a refactor — not all three.
- Tests for new behaviour. If you change adapter logic in
@codeam/ide-core, add a vitest case. UI components are tested viavitest+@testing-library/react(or@testing-library/react-native). - README updates if you change a public API or default behaviour.
- A clear Conventional Commit message — that's what becomes the changelog entry at release time. No separate changelog edit needed.
- Prettier handles formatting. Run
npm run formatto fix. - ESLint catches the rest. Run
npm run lintto check. - Both run in
lint-stagedat commit time — you generally don't need to think about formatting.
For non-trivial design changes (new adapter contract, new UI surface), open an issue first or write a short proposal in docs/. The principles in docs/ARCHITECTURE.md are load-bearing — please don't violate the dependency direction (core knows nothing about UI, etc.) without discussion.
Open a discussion or issue on GitHub. We aim to respond within a week.