Description: macOS menu bar app to bypass VPN for specific domains and services
Visibility: Public repository Development OS: macOS
- Platform: GitHub
- Example Repository: https://github.com/GeiserX/lynxprompt
- swift
For technologies beyond those listed, analyze the codebase and suggest appropriate solutions.
- Be concise and direct
- Developer context: devops
- Skill level: Senior
- Always install and test via Homebrew (never swift build for testing)
- Check logs when build or commit finishes
- Match the codebase's existing style and patterns
- Confirm before making significant changes
After releasing, wait for workflow then install via Homebrew:
cd /opt/homebrew/Library/Taps/geiserx/homebrew-vpn-bypass && git pull
pkill -9 "VPN Bypass" 2>/dev/null || true
brew reinstall --cask vpn-bypass
open "/Applications/VPN Bypass.app"Before making changes, read these files to understand the project:
- README.md
- CHANGELOG.md
- CI/CD Platform: GitHub Actions
Pre-release checklist (MUST complete ALL steps before tagging):
- Run
./scripts/bump-version.sh <version>— updates Info.plist, README.md badge, and Casks/ - Update
docs/CHANGELOG.mdwith release notes - Commit all changes:
git add -A && git commit -m "chore: release v<version>" - Tag:
git tag v<version> - Push:
git push && git push origin v<version>
# Example release flow
./scripts/bump-version.sh 1.10.0
# Edit docs/CHANGELOG.md with release notes
git add -A && git commit -m "chore: release v1.10.0"
git tag v1.10.0
git push && git push origin v1.10.0The tag push triggers GitHub Actions which:
- Updates
Info.plistversion from the git tag (safety net) - Builds the app and creates DMG
- Creates a GitHub Release with the DMG
- Updates the Homebrew cask in
homebrew-vpn-bypassrepo automatically
Version architecture: The app reads its version from CFBundleShortVersionString at runtime (not hardcoded). The CI workflow sets this from the git tag. The bump-version.sh script keeps Info.plist and README.md badge in sync for local builds and the repo display.
- Write clean code: Prioritize readability and maintainability
- Handle errors properly: Don't ignore errors, handle them appropriately
- Consider security: Review code for potential security vulnerabilities
- Conventional commits: Use conventional commit messages (feat:, fix:, docs:, chore:, refactor:, test:, style:)
- Semantic versioning: Follow semver (MAJOR.MINOR.PATCH) for version numbers
- Never skip
bump-version.shbefore tagging a release. Forgetting it caused version desync in v1.8.2–v1.9.0 (#15). - Version display is dynamic — do NOT hardcode version strings in Swift code. The app reads from the bundle's
CFBundleShortVersionStringat runtime. - Always test via Homebrew after releasing, never trust
swift buildalone.
This file should evolve as we work together:
- Track coding patterns and preferences
- Note corrections made to suggestions
- Update periodically with learned preferences
Do not commit secrets to the repository or to the live app. Always use secure standards to transmit sensitive information. Use environment variables, secret managers, or secure vaults for credentials.
🔍 Security Audit Recommendation: When making changes that involve authentication, data handling, API endpoints, or dependencies, proactively offer to perform a security review of the affected code.