Thanks for your interest in contributing! Ono Toolkit is a collection of small, fast, client-side-only tools. This guide covers how to propose changes.
- Report a bug - open a bug report.
- Request a tool or feature - open a feature request.
- Send a pull request - fix a bug, add a tool, or improve docs.
For anything non-trivial, please open an issue first so we can agree on the approach before you invest time.
pnpm install
pnpm dev # http://127.0.0.1:3000Requirements: Node 24 (.node-version) and pnpm 11.
- Branch from
main:git switch -c feat/<short-name>(orfix/<short-name>). - Make a focused change - one logical thing per PR.
- Run the full gate locally and make sure it passes:
You can enable a pre-push hook that runs
pnpm validate # format:check + lint + typecheck + unit tests + build pnpm test:e2e # end-to-end (Playwright)
pnpm validateautomatically:git config core.hooksPath scripts/git-hooks
- Open a pull request against
mainand fill in the PR template.
- TypeScript everywhere - no
any. Prefer precise types. - No giant components. Reuse and compose: shared components
(
app/components/), composables (app/composables/), utilities (app/utils/), and Pinia stores (app/stores/). - Use Nuxt UI semantic tokens (
bg-default,text-muted,text-highlighted,border-default,text-primary, ...) so light/dark and contrast stay correct. Avoid hard-coded one-off colors. - Everything stays client-side. Never upload user files or data; keep heavy work in Web Workers and load WASM lazily.
- Follow the existing structure and the Adding a New Tool steps.
- Add tests: Vitest unit tests for logic/utilities and a Playwright e2e spec for the flow.
- Use short, imperative subjects:
Add JSON formatter tool,Fix JWT claims date formatting. - Conventional Commits prefixes
(
feat:,fix:,docs:,chore:) are welcome but not required.
A good PR:
- Does one thing and keeps the diff focused.
- Passes
pnpm validate(andpnpm test:e2eif it touches UI/flows). - Updates the tool registry, README, and tests when relevant.
- Describes what changed and how you verified it.
By participating, you agree to uphold our Code of Conduct. Be kind and respectful.
By contributing, you agree that your contributions are licensed under the project's AGPL-3.0 license.