Commit Graph

  • 914101746a Nostr DMs: ensure delivered/read acks are sent even without Noise key mapping by falling back to direct Nostr (geohash-style) acks to sender pubkey jack 2025-08-24 15:04:47 +02:00
  • bc7dc2c9b3 NIP-17/44: adopt NIP-44 v2 (XChaCha20-Poly1305, v2: base64url), switch rumor kind to 14, randomize BIP-340 aux; add XChaCha20Poly1305Compat and wire-up jack 2025-08-24 14:55:54 +02:00
  • 85f99984c4 Unify DM notifications and fix geohash self-echo hydration (#505) 2025-08-24 14:40:06 +02:00
  • d55d766023 fix(geohash): include own past geohash messages on channel load; skip only very recent self-echo (<15s) to avoid duplicates fix/notifications jack 2025-08-24 14:33:49 +02:00
  • 54499560e8 feat(notifications): unify DM notifications across transports; notify for unread+recent even in foreground; delegate suppresses if chat open jack 2025-08-24 13:11:36 +02:00
  • 75c8933091 Feat/georelay (#504) 2025-08-24 12:49:52 +02:00
  • c55e2d4b44 fix(georelay): make CSV parser nonisolated and call as Self.parseCSV to satisfy Swift 6 actor isolation feat/georelay jack 2025-08-24 12:41:58 +02:00
  • e44ba3e5c7 feat(georelay): fetch daily from remote CSV with fallback to bundled; cache to app support; prefetch on app load jack 2025-08-24 12:40:32 +02:00
  • f59139c33c feat(georelay): route geohash kind 20000 via nearest relays; add GeoRelayDirectory; target geohash subscriptions; avoid duplicate connections jack 2025-08-24 11:54:03 +02:00
  • d2bfbbcfd4 Fix/chat perf (#502) 2025-08-24 11:11:49 +02:00
  • e6bd472575 perf(chat): batching, spam rate-limits, near-dup LRU, adaptive flush, faster trims, regex/detector reuse, conditional animations, late-insert, current-mode prewarm, Swift 6-safe timer/closures fix/chat-perf jack 2025-08-24 11:11:22 +02:00
  • e3866c9da6 perf(chat): conditional animations via isBatchingPublic; late-arrival binary insert; flush public buffer on channel switch; prewarm formatting on flush jack 2025-08-24 10:41:45 +02:00
  • 28f59bbd96 perf(chat): batch public inserts, sort batch by ts; add per-sender + per-content token buckets; content-based near-dup suppression; reuse compiled regexes; single token scans per row; disable list animations during batches jack 2025-08-24 10:31:35 +02:00
  • 0260798712 Fix/UI (#500) 2025-08-24 02:05:02 +02:00
  • 2758afa126 ux(chat): scroll to bottom on geohash open; add infinite scroll up with stable anchor; track window size per chat jack 2025-08-22 19:01:29 +02:00
  • 2229a28bb4 perf(chat): reduce rendering cost and improve stability for large chats\n\n- Window last 300 messages (up from 100) while keeping timeline cap at 1337+\n- Remove .textSelection from message rows to avoid expensive layout\n- Limit link previews per message to 2\n- Keep deferred autoscroll and channel-aware IDs for smooth scrolling jack 2025-08-22 18:56:26 +02:00
  • dadc896ed8 Fix/geohash blocks (#483) 2025-08-22 18:44:11 +02:00
  • b2504a7ff5 Feat/b links (#481) 2025-08-22 17:20:26 +02:00
  • 7f2cbd6621 chat: fix blanking and gaps when switching geohashes; channel-aware row IDs + deferred autoscroll\n\n- Add channel-aware UI IDs (mesh|id, geo:<gh>|id, dm:<peer>|id) to prevent SwiftUI reuse gaps\n- Defer scrollTo to next runloop for stability; auto-scroll on appear/switch\n- Collapse very long messages with Show more/less; skip heavy parsing for huge content\n- Simplify LazyLinkPreviewView (remove GeometryReader in list) (#480) 2025-08-22 16:38:40 +02:00
  • 60a42ffecb Merge feature/peer-colors: per-peer colors, mention action, teleport persistence + logs, geohash count consistency, scroll gating, hashtag styling, copy message context menu jack 2025-08-22 13:08:15 +02:00
  • 27e5e2962c Scroll: move bottom detection to View state and pass Binding to messagesView; autoscroll only when bound is true to prevent jumps when user scrolled up jack 2025-08-22 13:04:56 +02:00
  • 9d5105a8bf Geohash list: gate empty/render using visibleGeohashPeople() so header count and list visibility are consistent jack 2025-08-22 13:02:34 +02:00
  • d4b779080a Fix header string interpolation: simplify accessibilityLabel to avoid unterminated string; use '\(headerOtherPeersCount) people' jack 2025-08-22 12:58:08 +02:00
  • 4bfe9ac80d Geohash count: use the same pruned/sorted list for toolbar and peer list (visibleGeohashPeople) to ensure consistency jack 2025-08-22 12:51:40 +02:00
  • adffe7dfd6 Feature/peer colors (#476) 2025-08-22 12:41:26 +02:00
  • 16fdb7b49e Teleport persistence: store per-geohash teleported state in UserDefaults; initialize on startup; OR with location-derived status; sheet writes persisted flag on select/teleport jack 2025-08-22 12:34:44 +02:00
  • ff5fd3f3fe Logs: add GeoTeleport diagnostics (incoming tags, self/peer marking, counts) to debug peer list dashed icon behavior jack 2025-08-22 12:29:23 +02:00
  • f8a955214b Geo teleported: robust tag detection (accept 't', 'teleport', and boolean-like values); mark self on send when tagging; should fix peer list icons jack 2025-08-22 12:24:17 +02:00
  • d5e712e27f UX: remove long-press mention; add context menu 'Copy message' that copies only the message body (no nick/timestamp) jack 2025-08-22 12:18:33 +02:00
  • 244c8cdf81 UX: long-press a message to prefill @mention with sender's full nick#abcd and focus input jack 2025-08-22 12:13:59 +02:00
  • 0d064084aa UI: add 'mention' action in message actions to prefill input with @nick#abcd and focus input jack 2025-08-22 12:12:49 +02:00
  • 7b49268694 Fix warning: remove unused peerNicknames in MeshPeerList jack 2025-08-22 11:51:17 +02:00
  • 5650e1f2c2 Peer lists: apply same per-peer colors as chat (self orange); suffix uses lighter variant; geohash uses Nostr pubkey, mesh uses Noise key jack 2025-08-22 11:49:44 +02:00
  • c4b422ad3f Fix: re-import CryptoKit for SHA256 usage in ChatViewModel jack 2025-08-22 11:47:21 +02:00
  • e82fda1093 Fix compile warnings: remove unused primaryColor in formatMessageAsText; remove unused CryptoKit import; mark peerColor/formatMessageAsText @MainActor to call main-actor helpers jack 2025-08-22 11:45:49 +02:00
  • 806d451135 Feature: assign stable per-peer colors (non-self) across mesh/geohash/DM; keep self orange and mentions-to-me orange; cache colors jack 2025-08-22 11:43:44 +02:00
  • 13f8b0c636 Fix/geohash work (#475) 2025-08-22 11:38:44 +02:00
  • 2d0f9aff0a fixed quote and period (#471) 2014andGitHub 2025-08-22 06:18:46 +07:00
  • 83ee5abb60 Fix: stabilize per-geohash identity seed by storing in Keychain with kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly and caching in memory to avoid transient regenerations (#473) 2025-08-22 01:05:44 +02:00
  • bc27e16899 Fix/visuals (#469) 2025-08-21 11:15:18 +02:00
  • d3d9a22757 Mentions: color @mentions orange only when directed at me; otherwise use normal color (respect geohash suffix) jack 2025-08-21 03:26:46 +02:00
  • 8a269d4fec UI: grey #abcd suffix in geohash peer list; keep base name (and '(you)') styled normally jack 2025-08-21 03:02:42 +02:00
  • 33fbca67d6 UI: render self-authored messages in orange (sender and content); keep links/hashtags orange for self jack 2025-08-21 03:01:14 +02:00
  • c63350a4d3 UI: bold entire message text for self in mesh, DM, and geohash; adjust caching to include self flag jack 2025-08-21 02:51:14 +02:00
  • 222854c60a UI: rename AppInfoView toolbar button to 'close' for consistency jack 2025-08-21 02:45:20 +02:00
  • c624611e7d Merge fixes/location-channels into main: resolve LocationChannelsSheet conflict (retain title bolding only) jack 2025-08-21 02:23:03 +02:00
  • eb0debd52a Fix: route /hug and /slap to active public channel using sendPublicRaw (geohash when selected) jack 2025-08-21 01:59:47 +02:00
  • 916f535503 Fix: send screenshot notice to active public channel (geohash when selected), not always mesh jack 2025-08-21 01:52:54 +02:00
  • de39ab6687 UI: stop bolding location subtitle names; only bold the channel label when count > 0 jack 2025-08-21 01:18:44 +02:00
  • a0a973eb81 Fixes/location channels (#465) v1.3.1 2025-08-21 01:01:29 +02:00
  • ba1dd100ec UI: bold mesh/level titles when participant count > 0; factor meshCount() jack 2025-08-21 00:56:29 +02:00
  • 97b1463b30 UI: bold location name in sheet when geohash has >0 people; refactor row to render subtitle pieces jack 2025-08-21 00:54:14 +02:00
  • 28c87a41c1 UI: remove leading '#' from mesh title in location sheet jack 2025-08-21 00:51:18 +02:00
  • 68c61476d8 UI: show Bluetooth range next to #bluetooth in location sheet jack 2025-08-21 00:49:12 +02:00
  • 602e93d1b2 Location sheet: poll for location at regular intervals while open (replace significant-move updates) jack 2025-08-21 00:46:53 +02:00
  • e7706fc9cb UI: use '~' without trailing space before location name in sheet jack 2025-08-21 00:44:37 +02:00
  • f30677403f Project: update Xcode project (auto) jack 2025-08-21 00:41:28 +02:00
  • b4fcea2672 Remove "street" location channel; add coverage + names; style mesh jack 2025-08-21 00:34:17 +02:00
  • 43166bcd64 iOS: keep mesh alive in background; remove stopServices() on scenePhase .background so incoming messages can still arrive and trigger notifications. jack 2025-08-20 18:09:57 +02:00
  • 496972dcc9 Mesh robustness optimizations (#463) v1.3.0 2025-08-20 16:27:49 +02:00
  • 3074fa0fcb Refactor/repo hardening 01 (#462) 2025-08-20 13:29:53 +02:00
  • bdbcbb5d2b Remove unused getPeers(): use Transport.getPeerNicknames() instead jack 2025-08-20 12:15:05 +02:00
  • ed4d8b667e Remove stale message-type whitelist from InputValidator: rely on MessageType/NoisePayloadType at decode to prevent drift jack 2025-08-20 12:15:05 +02:00
  • a29f517783 Harden Keychain access-group usage: avoid -34018 without entitlements; fallback to no access group on macOS/simulator; retry without group on iOS jack 2025-08-20 12:15:05 +02:00
  • 78917fa7c9 BLE announces: delay after subscribe, queue announce on notify buffer full, and raise announce throttle (min interval + forced min) jack 2025-08-20 11:54:43 +02:00
  • eb16d128f2 BLE: avoid self-message drop warnings by pre-marking own public broadcasts in dedup and ignoring self-origin public packets jack 2025-08-20 11:37:47 +02:00
  • b09710a7aa Feature/location channels (#459) 2025-08-20 01:10:23 +02:00
  • 1c33a92765 Feature/signed public identity (#456) 2025-08-19 23:37:15 +02:00
  • a30b73dd99 Feature/fragmentation fixes (#453) 2025-08-19 01:22:21 +02:00
  • 4c0bb5f93a LZ4 -> ZLIB (#452) callebtcandGitHub 2025-08-18 19:49:39 +02:00
  • 7836daa6d3 Adds O(1) method for peer nickname retrieval (#450) Mateusz MatoszkoandGitHub 2025-08-17 21:29:15 +02:00
  • 4f1ac30f12 Feat/mesh robustness efficiency (#451) 2025-08-17 21:25:25 +02:00
  • 6fbf7eee25 Refactor/ble nostr boundaries (#449) 2025-08-17 15:17:04 +02:00
  • 3ebfa85e90 Feature/nostr embedded bitchat (#448) 2025-08-17 11:25:42 +02:00
  • fb1988ac27 BLE privacy: derive peerID from Noise fingerprint; remove BLE Local Name from advertising; verify announces against key-derived ID; auto-initiate Noise handshake when encrypted message arrives without session; drop rotating alias option. (#447) 2025-08-17 02:20:49 +02:00
  • 845ffc601b Refactor/robustness (#446) 2025-08-17 01:51:54 +02:00
  • 47b0829685 Excludes Index.noindex in Justfile (#440) Mateusz MatoszkoandGitHub 2025-08-15 23:06:37 +02:00
  • 030d6e0f11 Allow unicode letter characters in nicknames (#435) Mario NachbaurandGitHub 2025-08-12 20:08:53 +02:00
  • db3c3b77f5 Remove dead store-and-forward and message aggregation code (#438) 2025-08-12 20:08:37 +02:00
  • 26bcdf72d7 Merge remote-tracking branch 'origin/main' into code-cleanup jack 2025-08-12 11:43:52 +02:00
  • 275f0ebaaf Remove dead code and simplify codebase (#436) 2025-08-12 11:33:08 +02:00
  • f4b8168ef9 Remove dead code and simplify codebase jack 2025-08-12 11:03:31 +02:00
  • 63f05b5d7e refactor: remove all dead legacy and migration code jack 2025-08-12 10:15:05 +02:00
  • a36eda3fbe fix: remove remaining unused variables to eliminate compiler warnings jack 2025-08-12 09:43:06 +02:00
  • 99c0f6523e refactor: remove dead code and consolidate system messages jack 2025-08-12 09:41:12 +02:00
  • 7a7c89e689 Remove protocol versioning and handshake logic (#433) 2025-08-12 02:24:34 +02:00
  • 3226b9cd14 Optimize logging to reduce verbosity while preserving critical network events (#432) 2025-08-11 23:45:59 +02:00
  • 04c2b0caa6 fix: add secp256k1 dependency to resolve spm import error (#429) ChrisandGitHub 2025-08-11 13:09:19 -07:00
  • 29f1308e37 relay all packages (#431) callebtcandGitHub 2025-08-11 22:05:25 +02:00
  • c6c186c77b Prevent spoofable plaintext messages from sliding into private chats (#428) Alex RadandGitHub 2025-08-11 08:05:36 -07:00
  • d4262fab6c Remove noisy at symbol in mention (#420) Mario NachbaurandGitHub 2025-08-08 18:41:50 +02:00
  • 7876c8d96f Fix network flakiness and improve peer discovery (#405) 2025-08-05 10:13:41 +02:00
  • 397c9f182b Clarify how packet loss is avoided with gossip protocol (#403) Steve LeeandGitHub 2025-08-04 13:32:15 -07:00
  • 3ed37dfd0b Improve UI interactions (#390) 2025-08-02 11:48:19 +02:00
  • 327fca9cb1 Remove cover traffic functionality (#389) 2025-08-02 11:36:20 +02:00
  • 871456896d Remove connection/disconnection system messages (#386) 2025-08-01 22:05:29 +02:00
  • b4b22e0e05 Add Bluetooth status alerts (#385) 2025-08-01 21:51:32 +02:00
  • 8ec39f566d Fix runtime crashes and reduce excessive logging jack 2025-08-01 21:39:09 +02:00
  • 172b06721b Revert "Fix compilation errors in ChatViewModel" jack 2025-08-01 20:26:28 +02:00
  • e2d50e3684 Fix compilation errors in ChatViewModel jack 2025-08-01 20:24:09 +02:00