{"full_name":"permissionlesstech/bitchat","owner":"permissionlesstech","name":"bitchat","url":"https://github.com/permissionlesstech/bitchat","description":"bluetooth mesh chat, IRC vibes","homepage":"","topics":[],"language":"Swift","license":"Unlicense","avatar":"https://avatars.githubusercontent.com/u/220183803?v=4","created_at":"2025-07-04T14:34:38Z","pushed_at":"2026-11-08T06:07:00Z","metrics":{"stars":37114,"forks":5889,"watchers":300,"issues":439,"prs":1022,"releases":21,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":130},"growth":{"day":{"stars":9,"forks":3,"base_day":"2026-11-09"},"week":{"stars":55,"forks":-2,"base_day":"2026-11-03"},"month":{"stars":690,"forks":114,"base_day":"2026-10-11"}},"history":{"dates":["2026-09-06","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-20","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-27","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-04","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-11","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-18","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-25","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-09","2026-11-10"],"stars":[35863,35906,35961,35989,35999,36012,36029,36096,36112,36123,36133,36140,36163,36172,36177,36183,36191,36203,36234,36233,36240,36245,36248,36255,36264,36269,36271,36272,36273,36277,36288,36297,36306,36315,36332,36424,36453,36478,36495,36516,36532,36552,36560,36574,36594,36606,36624,36647,36662,36669,36694,36727,36790,36860,36918,36966,36983,37007,37059,37067,37105,37114],"forks":[5697,5702,5708,5712,5712,5714,5715,5723,5727,5722,5726,5729,5728,5732,5734,5734,5732,5731,5731,5728,5730,5732,5743,5742,5741,5742,5741,5740,5736,5738,5737,5738,5743,5744,5748,5775,5787,5796,5796,5810,5820,5827,5832,5833,5833,5830,5828,5832,5834,5839,5842,5844,5847,5867,5871,5877,5880,5885,5891,5891,5886,5889],"watchers":[304,302,302,302,302,302,303,308,308,307,307,307,307,307,307,306,306,306,306,306,306,305,305,305,305,305,305,306,305,304,304,304,303,304,304,303,303,303,302,304,304,302,302,302,302,302,301,302,303,303,303,303,298,300,300,301,301,302,302,302,300,300],"issues_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"prs_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"boards":{},"same_owner":[],"issues":[{"number":1448,"title":"Publish a formal, versioned protocol spec — resilience through independent client diversity","comments":9,"created_at":"2026-07-24T16:37:23Z"},{"number":508,"title":"Feature Request | Meshtastic Hand off","comments":19,"created_at":"2025-08-24T16:32:31Z"},{"number":587,"title":"Support Universal Links","comments":5,"created_at":"2025-09-12T11:08:38Z"},{"number":1523,"title":"Feature request: mute proximity notifications for a specified device","comments":4,"created_at":"2026-07-27T18:02:24Z"},{"number":1518,"title":"Images/audio sent from Android not received on iOS","comments":4,"created_at":"2026-07-27T10:58:26Z"},{"number":1427,"title":"Random/intermittent modal - \"The 'iPhone' accessory would like to open 'bitchat'\"","comments":4,"created_at":"2026-07-10T17:15:08Z"},{"number":183,"title":"Multidevice identity key export/import via QR or seed, peerID / hash name across devices.","comments":4,"created_at":"2025-07-11T10:00:14Z"},{"number":1828,"title":"Please update the iOS relay list","comments":3,"created_at":"2026-10-28T16:54:26Z"}],"discussions":[{"number":1798,"title":"v1.8.0","comments":0,"category":"Announcements","created_at":"2026-10-23T21:09:13Z"},{"number":1786,"title":"Relay Antennas for the Bluetooth mesh Principle","comments":0,"category":"Ideas","created_at":"2026-10-22T08:19:13Z"},{"number":1780,"title":"Chat with Meshtastic radios from your browser, no radio needed, and BitChat is bridged in too","comments":0,"category":"Show and tell","created_at":"2026-10-12T23:06:02Z"},{"number":1754,"title":"BitChat Desktop — native macOS early preview, with Windows and Linux planned","comments":0,"category":"Show and tell","created_at":"2026-10-06T16:49:55Z"},{"number":1698,"title":"Is there application for desktop?","comments":2,"category":"General","created_at":"2026-08-30T09:54:49Z"},{"number":1685,"title":"Disable Persistent Notification","comments":0,"category":"Ideas","created_at":"2026-08-20T15:45:04Z"},{"number":1667,"title":"Airhop: React Native implementation of bitchat","comments":6,"category":"General","created_at":"2026-08-13T05:48:42Z"},{"number":1584,"title":"v1.7.1","comments":3,"category":"Announcements","created_at":"2026-07-31T13:51:28Z"}],"latest_release":{"name":"v1.8.0","tag":"v1.8.0","published_at":"2026-10-23T21:09:13Z","body":"bitchat 1.8.0 makes busy location channels fast. It also collects the features and security hardening that landed since 1.7.1.\r\n\r\n### Performance\r\n\r\n- **Busy geochats are fast again.** In a room of 100 people, the people list opens in about 60 ms (it took 1.5 s) and stays at 60 fps. At 300 people it opens in about 180 ms (it took 4–12 s) (#1788).\r\n- **Presence traffic no longer rebuilds the roster on every event.** The timeline at 300 people goes from 3.5–7 dropped frames per second to none (#1789).\r\n- **The timeline no longer fights you.**\r\n  - It no longer snaps back while you scroll during a burst.\r\n  - It no longer cascades to the oldest message when you reach the top.\r\n  - It keeps following at the 1,337-message cap.\r\n  - Channel and DM switches land at the newest message (#1790).\r\n- **Geochat scaling is now gated by CI's performance floors** (#1791).\r\n\r\n### Fixes\r\n\r\n- **Your own messages are recognized by sender ID, not nickname.** Someone who shares your name no longer pulls you to the bottom, hides their message actions, or gets your threads folded into theirs (#1793).\r\n- **No more dark-gray band at the bottom of sheets** in dark mode with the Matrix theme (#1794).\r\n- **Builds with Xcode 27.** swift-secp256k1 0.24.0 brings byte-identical crypto output, verified across versions (#1782). String catalog keys and Swift 6.4 warnings are fixed (#1795).\r\n\r\n### New since 1.7.1\r\n\r\n- **Drafts survive switching** between mesh, location channels and private chats (#1569).\r\n- **Location channels:**\r\n  - one-tap quick join for nearby channels (#1444);\r\n  - share channel invites from the share sheet (#1513).\r\n- **Identity and verification:**\r\n  - a local alias on the fingerprint sheet (#1507);\r\n  - a verification seal in private chats (#1573).\r\n- **Chat list and safety:**\r\n  - a recent chats section (#1598);\r\n  - a persistent connectivity banner (#1597);\r\n  - a panic wipe that confirms first (#1588).\r\n- **Mac:** camera QR scanning for verification (#1477).\r\n- **Keyboard:** navigation for @-mention suggestions (#1542).\r\n- **Localization:** the remaining UI strings are localized in all 30 languages (#1654, #1656, #1657).\r\n\r\n### Security\r\n\r\n- **Noise and identity:** sessions rekey on absolute age (#1675), and unverifiable handshake peer IDs fail closed (#1645).\r\n- **Timestamps:** sanity windows for QR codes, Nostr DM rumors and sync replies (#1647, #1717).\r\n- **Size bounds:** per-type packet payload caps and byte-bounded sync stores (#1719).\r\n- **Groups and DMs:**\r\n  - private-group creator pinning (#1720);\r\n  - the mesh peer ID is kept out of geohash DMs (#1718).\r\n- **Input handling:** ambiguous nicknames are refused instead of guessed (#1689), and `Data(hexString:)` rejects signed byte pairs (#1687).\r\n- **Privacy:** the public-channel screenshot broadcast is removed (#1596), and privacy claims are corrected (#1595).\r\n\r\nEvery tagged release ships a `SOURCE-MANIFEST.txt`; see `docs/VERIFYING-A-BUILD.md`.\r\n\r\n## What's Changed\r\n* Peer ID rotation: working primitives + spec for iOS/Android review by @jackjackbits in https://github.com/permissionlesstech/bitchat/pull/1487\r\n* Add macOS camera QR scanning for peer verification by @Ayush7614 in https://github.com/permissionlesstech/bitchat/pull/1477\r\n* Localize hardcoded macOS image picker copy by @Ayush7614 in https://github.com/permissionlesstech/bitchat/pull/1478\r\n* Location channels: locale-derived one-tap quick join by @RodsF1 in https://github.com/permissionlesstech/bitchat/pull/1444\r\n* feat: local alias field on the fingerprint sheet by @Chessing234 in https://github.com/permissionlesstech/bitchat/pull/1507\r\n* feat: share location channel invites via the system share sheet by @Chessing234 in https://github.com/permissionlesstech/bitchat/pull/1513\r\n* feat: verification seal on private message sender rows by @Chessing234 in https://github.com/permissionlesstech/bitchat/pull/1573\r\n* Keyboard navigation for @-mention suggestions by @Chessing234 in https://github.com/permissionlesstech/bitch"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}