Restores all features dropped when merging main into dev: - Keyboard shortcuts (send, dictation-confirm) with full e2e chain - Feature toggles (plan/fast mode) in agent status bar - Sidebar kebab menu (Remove Project) on project rows - Combined model selector (sticky header, sizing, favorites sort, search) - Question form Enter key submit with guard - Input focus restoration (composer + AgentStatusBar onDropdownClose) - Draft-agent feature toggles and focus restoration - Provider diagnostics UI (settings section, diagnostic sheet, status badge) - Provider diagnostics server (snapshot manager, diagnostic utils, RPC) Fixes dev-branch regressions: - New workspace button now opens composer in setup dialog via beginWorkspaceSetup - Setup tab auto-opens when workspace setup is running
3.8 KiB
Contributing to Paseo
Thanks for taking the time to contribute.
Before you start
Please read these first:
- README.md
- docs/ARCHITECTURE.md
- docs/DEVELOPMENT.md
- docs/CODING_STANDARDS.md
- docs/TESTING.md
- CLAUDE.md
What is most helpful
The highest-signal contributions right now are:
- bug fixes
- regression fixes
- docs improvements
- packaging / platform fixes
- focused UX improvements that fit the existing product direction
- tests that lock down important behavior
Discuss large changes first
If you want to add a major feature, change core UX, introduce a new surface, or bring in a new architectural concept, please open an issue or start a conversation first.
Even if the code is good, large unsolicited PRs are unlikely to be merged if they set product direction without prior alignment.
In short:
- small, focused PRs: great
- large product-shaping PRs without discussion: probably not
Scope expectations
Please keep PRs narrow.
Good:
- fix one bug
- improve one flow
- add one focused panel or command
- tighten one piece of UI
Bad:
- combine multiple product ideas in one PR
- bundle unrelated refactors with a feature
- sneak in roadmap decisions
If a contribution contains multiple ideas, split it up.
Product fit matters
Paseo is an opinionated product.
When reviewing contributions, the bar is not just:
- is this useful?
- is this well implemented?
It is also:
- does this fit Paseo?
- does this preserve the product's current direction?
- does this increase long-term complexity in a way that is worth it?
Development setup
Prerequisites
- Node.js matching
.tool-versions - npm workspaces
Start local development
npm run dev
Useful commands:
npm run dev:server
npm run dev:app
npm run dev:desktop
npm run dev:website
npm run cli -- ls -a -g
Read docs/DEVELOPMENT.md for build-sync gotchas, local state, ports, and daemon details.
Testing and verification
At minimum, run the checks relevant to your change.
Common checks:
npm run typecheck
npm run test --workspaces --if-present
Important rules:
- always run
npm run typecheckafter changes - tests should be deterministic
- prefer real dependencies over mocks when possible
- do not make breaking WebSocket / protocol changes
- app and daemon versions in the wild lag each other, so compatibility matters
If you touch protocol or shared client/server behavior, read the compatibility notes in CLAUDE.md.
Coding standards
Paseo has explicit standards. Please follow them.
Highlights:
- keep complexity low
- avoid "while I'm at it" cleanup
- no
any - prefer object parameters over positional argument lists
- preserve behavior unless the change is explicitly meant to change behavior
- collocate tests with implementation
The full guide lives in docs/CODING_STANDARDS.md.
PR checklist
Before opening a PR, make sure:
- the change is focused
- the PR description explains what changed and why
- relevant docs were updated if needed
- typecheck passes
- tests pass, or you clearly explain what could not be run
- the change does not accidentally bundle unrelated product ideas
Communication
If you are unsure whether something fits, ask first.
That is especially true for:
- new core UX
- naming / terminology changes
- new extension points
- new orchestration models
- anything that would be hard to remove later
Early alignment is much better than a large PR that is expensive for everyone to unwind.
Forks are fine
If you want to explore a different product direction, a fork is completely fine.
Paseo is open source on purpose. Not every idea needs to land in the main repo to be valuable.