Thank you for your interest in improving Bypass. This guide covers how to set up your environment, what we expect from contributions, and how to propose changes.
By participating in this project, you agree to follow our Code of Conduct. Please be respectful and constructive in issues, pull requests, and discussions.
- Bugs and enhancements: open an issue describing current vs expected behavior and steps to reproduce when applicable.
- Code changes: open a pull request from a clearly named branch; link the related issue when one exists.
- Documentation and translations: improvements to the README or in-app copy are welcome; keep the same clear, technical tone.
- macOS (Apple Silicon)
- Node.js ≥ 22
- pnpm ≥ 10
- Rust (stable)
- Tauri macOS dependencies: Tauri v2 prerequisites
Optional: Task for targets defined in Taskfile.yml.
git clone https://github.com/mdiazn80/bypass.git
cd bypass
pnpm install
pnpm tauri devProduction build:
pnpm tauri buildArtifacts are written under target/release/bundle/. For local builds without signing or updater artifacts, you can use task build:local if Task is installed (see the README).
To set up the signing secrets required for a full release build, follow the instructions in docs/release-signing.md.
src/: React frontend, TypeScript, Zustand, Vite.src-tauri/: Tauri app crate (commands, hosts file read/write, tray, credential commands).src-tauri/src/secrets/: encrypted credential vault (SecretBackendtrait +HybridBackend, crypto, keystore).
Build and test the Rust crate with:
cargo test --manifest-path src-tauri/Cargo.toml # unit tests
pnpm tauri dev # the GUIBefore changing sensitive hosts-related behavior, review src-tauri/src/hosts.rs and the managed-block markers described in the README. Before changing credential storage, review src-tauri/src/secrets/ (crypto, keystore, backend) and keep secret values out of logs.
- TypeScript / React: use strong typing and patterns consistent with existing components; run project checks before submitting (for example
pnpm buildfor the frontend). - Rust: follow common ecosystem conventions (
cargo fmt,cargo clippywhere applicable). - Commits: use clear messages; avoid large, context-free commits.
If your change touches security (privilege elevation, file I/O, IPC, Touch ID, Keychain), describe that explicitly in the pull request to speed up review.
- Branch from
develop. - Keep changes focused (one feature or fix per PR when practical).
- Update docs or comments only where your change requires it.
- In the PR, explain what changed and how to test it (OS, manual steps if CI does not cover the case).
Repository CI may run on your PRs; ensure relevant checks pass.
By contributing, you agree that your contributions will be licensed under the same license as the project: Apache License 2.0 (see LICENSE).