# Contributing

Keep changes inside one concern, preserve the PTY execution model, and run the focused release gates.

Canonical: https://panevibe.com/docs/contributing/
Source: https://github.com/brandonmlicea/panevibe

## Development loop

`Terminal`

```bash
npm install
npm run desktop:fast -- --launch
npm run typecheck
npm run scan:secrets
```

## Boundaries worth preserving

- The PTY remains the source of truth; do not create a parallel agent execution path.
- A new capability gets its own Rust module or React component.
- Unbounded filesystem, process, and network work stays off the async runtime and behind timeouts.
- Panics unwind instead of aborting the whole desktop process.
- Do not add analytics, crash beacons, license checks, or an unrequested network path.

## Before opening a change

`Release checks`

```bash
npm run typecheck
npm test
node scripts/scan-secrets.mjs
cd desktop/src-tauri && cargo check --locked --all-targets
```
