Skip to content

Repository map

Use this map to find the owner of a change before adding code.

Directory Responsibility
apps/injector React desktop frontend, Tauri commands and native window configuration
packages/injector-core Rust contracts, target discovery, validation, transactional operations, persistence
packages/schemas Shared generated types and runtime validation
packages/plugin-api Public TypeScript SDK and plugin definition
packages/plugin-tools Plugin build and ZIP packaging CLI
packages/runtime Bootstrap, plugin reconciliation, sandbox RPC, host services and settings UI
packages/adapters Fluxer DOM integration and compatibility-specific interface hooks
plugins Independently owned bundled plugin implementations
plugin-creation/starter Standalone external-plugin template
tests/fixtures/fake-fluxer Generated controlled Electron application and integration scripts
scripts Catalog generation, architecture and documentation checks, acceptance runners
docs Canonical Astro/Starlight documentation site
.github/workflows Windows/Linux CI and documentation build checks

A plugin calls the public SDK. The sandbox bridge validates and serializes the operation. Runtime services validate the request and use adapters or a bounded main-process operation when necessary. Rust handles installation and persistent contracts.

Start with runtime architecture for plugin execution, or injector transactions for application-file changes.

Generic services belong in core. Feature-specific UI, selectors, and service URLs belong in plugins. pnpm test:architecture checks these boundaries.

The website is canonical for instructions. Old plugin-creation Markdown pages are navigation pointers; maintain the corresponding website articles.