{"id":51548821,"url":"https://github.com/samzong/mailbell","last_synced_at":"2026-07-09T21:30:40.781Z","repository":{"id":361435709,"uuid":"1254083011","full_name":"samzong/mailbell","owner":"samzong","description":"Minimal macOS menu bar notifier for Gmail.","archived":false,"fork":false,"pushed_at":"2026-05-30T15:50:46.000Z","size":4911,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T17:20:41.679Z","etag":null,"topics":["gmail","imap","macos","menu-bar","notifications","oauth","swift","swiftui"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samzong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-30T05:56:56.000Z","updated_at":"2026-05-30T15:50:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/samzong/mailbell","commit_stats":null,"previous_names":["samzong/mailbell"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/samzong/mailbell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fmailbell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fmailbell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fmailbell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fmailbell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samzong","download_url":"https://codeload.github.com/samzong/mailbell/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fmailbell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35313755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gmail","imap","macos","menu-bar","notifications","oauth","swift","swiftui"],"created_at":"2026-07-09T21:30:39.938Z","updated_at":"2026-07-09T21:30:40.773Z","avatar_url":"https://github.com/samzong.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mailbell\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Resources/logo.png\" alt=\"Mailbell logo\" width=\"128\"\u003e\n\u003c/p\u003e\n\nMinimal macOS menu bar notifier for Gmail.\n\nThe project goal is a local notification bridge, not an email client. The app authenticates with Google, keeps a lightweight Gmail IMAP IDLE connection alive (a performance-first, low-energy push transport), shows macOS notifications for new mail, and opens Gmail in the browser when the user wants to read.\n\nSee [docs/design.md](docs/design.md) for the full design.\n\n## Requirements\n\n- macOS 13 (Ventura) or newer.\n\nNo Apple Developer account is needed: builds are ad-hoc signed for local use. An app you build and install locally is not quarantined, so Gatekeeper will not block it (only matters if you copy the DMG to another Mac).\n\n## Google sign-in\n\nMailbell includes its Google Desktop OAuth client. Open Mailbell, choose `Add Google Account`, and complete the Google browser sign-in flow.\n\nThe app requests `https://mail.google.com/`, `openid`, and `email`. The broad Gmail scope is required for Gmail IMAP XOAUTH2; Mailbell still fetches only headers for notifications. If Google shows an unverified-app warning, review it and continue only if you trust this local build.\n\nFor local development, set the OAuth values in the shell environment or create `.env` from `.env.example` before running `make run`, `make install`, or `make dmg`.\n\nFor GitHub Actions releases, set repository secrets with:\n\n```bash\ngh secret set MAILBELL_GOOGLE_CLIENT_ID\ngh secret set MAILBELL_GOOGLE_CLIENT_SECRET\n```\n\n## Build and run\n\n```bash\nmake            # list targets\nmake build      # build debug\nmake run        # run unbundled (menu bar app; notifications need a bundle)\n\n# Install an ad-hoc signed app bundle to /Applications (enables notifications):\nmake install\nopen /Applications/Mailbell.app\n\n# Or build a DMG:\nmake dmg\n```\n\n`./Scripts/package_app.sh` builds a local `build/Mailbell.app` without installing, if you prefer.\n\nTokens are stored in the macOS Keychain. Use the menu's `Disconnect` to remove them.\n\n## Release\n\nReleases are tag-driven. Push a version tag and GitHub Actions will build, verify, and publish the DMG:\n\n```bash\ngit tag v0.1.0\ngit push origin v0.1.0\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamzong%2Fmailbell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamzong%2Fmailbell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamzong%2Fmailbell/lists"}