Thank you for considering a contribution to Tentacle.
Contributions are welcome for:
- bug fixes
- performance improvements
- UX refinements
- documentation
- new service presets (if they fit the current product direction)
- Open an issue (or comment on an existing one) for non-trivial changes.
- Describe the problem, expected behavior, and approach.
- Wait for quick alignment before large refactors.
npm install
npm run tauri:devAlternative helper script:
./run.sh- Keep changes focused and atomic.
- Prefer explicit, readable code over clever shortcuts.
- Avoid introducing remote runtime dependencies for core UI assets.
- Keep comments concise and useful (only where behavior is non-obvious).
- Do not commit generated build artifacts.
- Tech stack: TypeScript + Vite + Tauri API.
- Main entry:
src/main.ts. - Keep UI state persistence behavior consistent with existing snapshot logic.
- When changing layout/webview sizing logic, verify startup/restore/reopen flows on macOS.
- Core backend entry:
src-tauri/src/main.rs. - Storage layer:
src-tauri/src/state.rs. - Keep command interfaces stable and camelCase-compatible for frontend payloads.
- Validate inputs in commands that handle URLs, paths, and external actions.
Run before opening a PR:
npm run build
cargo check --manifest-path src-tauri/Cargo.tomlRecommended complete validation:
npm run test:allCoverage policy is enforced by Vitest thresholds in CI.
Manual verification checklist:
- close with window X -> app hides correctly
- click Dock/Tray icon -> main window restores correctly
- resized/moved window is restored after restart
- embedded webview fills workspace after startup
- notifications still work for enabled services
- backup export/import still works
- Explain the problem and the chosen solution.
- Include screenshots/video for UI-impacting changes.
- Mention any migration impact for persisted settings/state.
- Keep PR size manageable; split unrelated work.
- Ensure all checks pass locally.
By contributing, you agree that your contributions are licensed under the MIT License.