Contributing
Navvy is developed as a monorepo with a WXT browser extension and the standalone websites in website/.
Project structure
Section titled “Project structure”packages/extension/ Browser extension built with WXT, TypeScript, and React 19website/landing/ Astro marketing sitewebsite/docs/ Astro Starlight documentation siteThe extension is organized around these entrypoints:
src/entrypoints/sidepanel/App.tsxfor the React chat UI, settings links, and history views.src/entrypoints/background.tsfor tab orchestration and Chrome runtime message routing.src/entrypoints/content.tsfor DOM detection, page actions, and main-world bridge injection.src/entrypoints/main-world.tsfor the optionalPAGE_AGENT_EXTpage API.
Run the extension in dev mode
Section titled “Run the extension in dev mode”cd packages/extensionnpm installnpm run devWXT handles the Manifest V3 build and generated browser output.
Run the websites
Section titled “Run the websites”Landing site:
cd website/landingnpm installnpm run devDocs site:
cd website/docsnpm installnpm run devThe landing dev server can proxy /docs to the docs server when both are running.
Provider setup for development
Section titled “Provider setup for development”The current repository does not include a FastAPI backend. Configure the extension with an OpenAI-compatible provider profile using:
baseURLmodel- optional
apiKey
Local development can use an endpoint such as Ollama’s http://localhost:11434/v1 when the chosen model supports the required tool-calling behavior.
Pull request guidelines
Section titled “Pull request guidelines”- Keep changes narrowly scoped.
- Include tests or reproducible manual verification steps.
- Make errors visible and actionable.
- Avoid hiding model failures behind silent retries.
- Document security-relevant behavior changes.
Code style
Section titled “Code style”- Type public interfaces explicitly.
- Keep action schemas strict.
- Prefer small tool implementations over broad conditionals.
- Write comments only where they clarify non-obvious behavior.
- Keep all code and comments in English.
Security contributions
Section titled “Security contributions”Security fixes should include the threat model, the attack scenario, and the expected failure mode. For prompt-injection work, test hidden DOM content, misleading labels, and schema-violating model outputs.