Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2334 commits
Select commit Hold shift + click to select a range
6e49f58
revert(facetime): drop the respond_letmein members strip — broke wife…
mackid1993 Apr 15, 2026
583369d
fix(facetime): pin bridge link to session + log ring fanout
mackid1993 Apr 15, 2026
ba96333
fix(facetime): drop the members strip; call upstream create_session d…
mackid1993 Apr 15, 2026
00aae6c
fix(facetime): wrapper-side recovery for cmd 207/209 BadMsg
mackid1993 Apr 16, 2026
ee1ee6f
fix(facetime): gate the callee ring behind the caller's link join
mackid1993 Apr 16, 2026
409924b
fix(facetime): missed-call support + callback uses same bridge flow
mackid1993 Apr 16, 2026
82761f5
fix(facetime): drop facetime:// fallback from missed-call notice
mackid1993 Apr 16, 2026
9d1cf12
fix(facetime): use session-specific link in armBridgeFaceTimeCall
mackid1993 Apr 16, 2026
d9f43da
fix(facetime): retry APNs-dependent FT setup across transient flaps
mackid1993 Apr 16, 2026
f7ec3b8
fix(facetime): approve session-specific links + fix inbound join routing
mackid1993 Apr 16, 2026
0c4bbec
fix(facetime): retry LetMeIn across APNs flaps + fix delegation idemp…
mackid1993 Apr 16, 2026
dab43d0
fix: case-insensitive UUID fallback for delivery receipts
mackid1993 Apr 16, 2026
1e23078
fix: retry all Matrix→iMessage sends across APNs flaps
mackid1993 Apr 16, 2026
c61ae8f
feat(statuskit): numbered Focus mode picker for statuskit-share off
mackid1993 Apr 16, 2026
aad8534
fix(statuskit): filter own handles from presence subscribe + invite l…
mackid1993 Apr 16, 2026
8f16745
fix(statuskit): resolve handle-form mismatch in presence subscription
mackid1993 Apr 16, 2026
f079364
fix(statuskit): populate allowed_modes + add invite diagnostic logging
mackid1993 Apr 16, 2026
65d71d6
feat(sharedstreams): numbered album/asset picker with media download
mackid1993 Apr 16, 2026
752fb6f
fix(statuskit): add logging to manual invite path + raise rustpush lo…
mackid1993 Apr 16, 2026
e583838
fix(statuskit): detect internal target mismatch in invite_to_channel
mackid1993 Apr 16, 2026
a2a96a3
fix(sharedstreams): mark album room as DM via double puppet
mackid1993 Apr 16, 2026
9f09806
chore(statuskit): remove verbose diagnostic logging
mackid1993 Apr 16, 2026
dd3cd34
fix(sharedstreams): create album room as user-owned DM via double puppet
mackid1993 Apr 16, 2026
f207074
fix(sharedstreams): remove bot from album room entirely
mackid1993 Apr 16, 2026
a651fa0
fix(sharedstreams): avoid double auth request causing TokenMissing
mackid1993 Apr 16, 2026
7a6641d
fix(statuskit): switch to passive key exchange (match OpenBubbles app…
mackid1993 Apr 16, 2026
c5e7e5c
fix(sharedstreams): single auth request for asset listing
mackid1993 Apr 16, 2026
2e24ec6
fix(statuskit): remove SetStatus gate that blocks invites when GSA to…
mackid1993 Apr 16, 2026
138adba
fix(sharedstreams): revert get_album_assets to original working form
mackid1993 Apr 16, 2026
0bbb081
fix(statuskit): skip destructive login_email_pass on restore
mackid1993 Apr 16, 2026
ea98e4e
fix(sharedstreams): bot-owned room with !shared-delete-room command
mackid1993 Apr 16, 2026
5ec5a96
chore(sharedstreams): rename to !delete-room
mackid1993 Apr 16, 2026
4d5d725
feat(statuskit): add statuskit-invite-all debug command
mackid1993 Apr 16, 2026
d5d97a8
fix(statuskit): reciprocate key exchange on inbound c=227
mackid1993 Apr 16, 2026
499884b
fix(statuskit): add per-field diagnostics for workaround keysharing d…
mackid1993 Apr 16, 2026
efc46fd
fix(statuskit): skip c=255 server ACKs in workaround path
mackid1993 Apr 16, 2026
2ee502d
fix(statuskit): re-encode Dictionary payloads for all StatusKit topics
mackid1993 Apr 16, 2026
b97188d
fix(statuskit): revert payload re-encoding, keep diagnostic labels
mackid1993 Apr 16, 2026
fc60799
fix(statuskit): normalize Data→Dictionary for all StatusKit topics
mackid1993 Apr 16, 2026
727cb32
feat(statuskit): handle status.personal topic for direct Focus updates
mackid1993 Apr 16, 2026
54fa96c
fix(statuskit): respond to c=97 key requests with re-invite
mackid1993 Apr 16, 2026
409fa73
fix(statuskit): force re-register when MULTIPLEX cert is stale or dat…
mackid1993 Apr 16, 2026
f4ead09
fix(statuskit): fallback to MADRID-only if combined registration fails
mackid1993 Apr 16, 2026
361cfa8
fix(statuskit): restore key exchange with scoped workaround and MULTI…
mackid1993 Apr 16, 2026
7b7cd25
fix(statuskit): restore empty allowed_modes and illuminate invite sil…
mackid1993 Apr 16, 2026
4801b9a
fix: reuse MessageInst UUID across APNs-flap retries (preserve delive…
mackid1993 Apr 16, 2026
97f189e
fix(statuskit): send keysharing invite as opaque plist bytes
mackid1993 Apr 16, 2026
47067f6
fix(statuskit): split keysharing invite into GROUP_MAX_SIZE=5000 batches
mackid1993 Apr 16, 2026
156c113
chore(statuskit): silence workaround spam on c=120 IDS error responses
mackid1993 Apr 16, 2026
f05d8c1
feat(statuskit): collect per-target c=255 responses + refresh_handles…
mackid1993 Apr 16, 2026
4b1b1d6
fix(receipts): retry DB lookup with backoff to close APS-flap race
mackid1993 Apr 16, 2026
706188c
chore(shared-profile): trace handleSharedProfile entry for diagnostics
mackid1993 Apr 16, 2026
e0a269f
chore(shared-profile): remove handleSharedProfile diagnostic log
mackid1993 Apr 16, 2026
d243b4b
refactor(statuskit): revert inline port, bind to upstream via thin wr…
mackid1993 Apr 16, 2026
cc1e4a4
fix(statuskit): expand ghost invites to all correlated aliases
mackid1993 Apr 16, 2026
48a98e2
fix(rustpushgo): resolve_handle_cached falls through to keysharing se…
mackid1993 Apr 16, 2026
1ed3ef6
fix(cloud_sync): honor CloudKit retry_after hint + exponential backoff
mackid1993 Apr 17, 2026
501c131
fix(rustpushgo): force MobileMe refresh on CloudKit TokenMissing
mackid1993 Apr 17, 2026
a03d29b
fix(login): numbered device picker for bot clique-join flow
mackid1993 Apr 17, 2026
66d6402
fix(rustpushgo): restore proactive PET refresh on session restore
mackid1993 Apr 17, 2026
815ce44
fix: bundled audit-driven hardening (PET, FT self-ring, retries, back…
mackid1993 Apr 17, 2026
bdd4ebe
fix(rustpushgo): periodic PET refresh + subscribeAfterInit nil guard
mackid1993 Apr 18, 2026
1161edb
fix(rustpushgo): retry MMCS download on transient APNs send_timeout
mackid1993 Apr 19, 2026
d8c3f7c
fix(connector): notice placeholder when attachment has no payload
mackid1993 Apr 19, 2026
0926c26
feat(rustpushgo): MMCS descriptor capture + retry FFI for layer-2 rec…
mackid1993 Apr 19, 2026
db9769a
feat(connector): layer-2 MMCS attachment recovery with CloudKit fallback
mackid1993 Apr 19, 2026
ac74146
fix(connector): harden layer-2 retrier against respawn + transient DB…
mackid1993 Apr 19, 2026
4b3c64c
fix(rustpushgo): refresh PET before MME delegate on CloudKit TokenMis…
mackid1993 Apr 19, 2026
cee2197
fix(rustpushgo): rate-limit PET refresh + 2FA cooldown to avoid Apple…
mackid1993 Apr 19, 2026
f1b440f
fix(anisette): preserve state.plist across transient upstream errors
mackid1993 Apr 19, 2026
19c81d7
fix(rustpushgo): drop private-field access in PET cooldown check
mackid1993 Apr 19, 2026
b1ad834
fix: replay persisted PET on session restore to break daily-2FA loop
mackid1993 Apr 19, 2026
cbf44a1
fix(make): also re-export FetchedToken from icloud_auth crate root
mackid1993 Apr 19, 2026
647051b
dev: windows dev env bootstrap script
mackid1993 Apr 19, 2026
ea9d089
dev: windows env script auto-installs bindings prerequisites
mackid1993 Apr 19, 2026
9293039
dev: windows-native `make bindings` replacement + AGENTS.md guidance
mackid1993 Apr 19, 2026
ce0c90b
fix(ids): register FT+Video alongside MADRID+MULTIPLEX
mackid1993 Apr 22, 2026
7697132
fix(statuskit): run invites before SetStatus, not after
mackid1993 Apr 22, 2026
1ba570d
feat(gsa): announce Apple Device via /circle, matching OB-Android
mackid1993 Apr 22, 2026
fc358f2
chore: regen uniffi bindings for AnnounceAppleDeviceIfNeeded
mackid1993 Apr 22, 2026
9d85954
fix(gsa): prime tokens via PET refresh before update_postdata
mackid1993 Apr 22, 2026
eeb0198
diag(statuskit): log APS keysharing traffic + self-visibility in IDS
mackid1993 Apr 23, 2026
9d6fe18
refactor(statuskit): passive invite pattern matching OpenBubbles
mackid1993 Apr 23, 2026
9ef52cc
diag(statuskit): suppress noise cmds in early APS diagnostic log
mackid1993 Apr 23, 2026
8fff53c
feat(statuskit): per-handle paced invites + 4h periodic re-invite
mackid1993 Apr 23, 2026
311c0a6
fix(statuskit): drop retry-on-empty path, was panicking upstream
mackid1993 Apr 23, 2026
c53450e
fix(statuskit): invite 1:1 portal participants, not all ghosts
mackid1993 Apr 23, 2026
28ced7f
fix(statuskit): startup/post-backfill ignore per-handle KV spacing
mackid1993 Apr 23, 2026
ced61be
fix(statuskit): per-invite timeout + per-handle attempt log
mackid1993 Apr 23, 2026
3c5316b
fix(statuskit): clear interest tokens on re-subscribe
mackid1993 Apr 23, 2026
6f05522
fix(statuskit): one-shot invite latch + drop startup SetStatus
mackid1993 Apr 23, 2026
bac3915
fix(gsa): always announce Apple Device on restart, drop flag guard
mackid1993 Apr 23, 2026
1592910
fix(statuskit): don't re-subscribe presence on every contact sync
mackid1993 Apr 23, 2026
87259c9
fix(statuskit): atomic plist persistence so state survives stranded UIDs
mackid1993 Apr 23, 2026
d5d4a1c
fix(statuskit): bypass invited_ok latch on !statuskit-invite-all
mackid1993 Apr 23, 2026
61a5e61
fix(statuskit): learn sender→portal mapping from message traffic
mackid1993 Apr 23, 2026
281c5c8
fix(statuskit): prime GSA tokens before share_status
mackid1993 Apr 23, 2026
d54ca7f
fix(statuskit): preserve all peer aliases across reshare overwrites
mackid1993 Apr 23, 2026
6f0e878
fix(statuskit): close upstream-path reshare gap + share available on …
mackid1993 Apr 23, 2026
03e56c6
feat(statuskit): config gate for startup share (default true)
mackid1993 Apr 23, 2026
e7583e6
feat(gsa): throttle PET refresh to 1/5min to survive restart loops
mackid1993 Apr 23, 2026
656f6af
fix(facetime): disable GSA /circle "Apple Device" announce
mackid1993 Apr 24, 2026
661730d
fix(facetime): skip inbound letmein hijack + unprop bridge after outb…
mackid1993 Apr 24, 2026
da05bc0
fix(facetime): discriminate inbound vs outbound by session.mode, not …
mackid1993 Apr 24, 2026
69b54db
fix(facetime): approve letmein then unprop — joiner keeps link flow
mackid1993 Apr 24, 2026
ed56513
fix(facetime): stop injecting LinkCreated into peer's inbound ring
mackid1993 Apr 24, 2026
e704cd8
fix(facetime): skip respond_letmein on inbound — stop downgrading pee…
mackid1993 Apr 24, 2026
258e59a
Revert "fix(facetime): skip respond_letmein on inbound — stop downgra…
mackid1993 Apr 24, 2026
c420cc7
fix(facetime): drop unprop after letmein — match upstream reference
mackid1993 Apr 24, 2026
1915c6d
fix(facetime): skip prop on inbound — keep bridge out of peer's UI
mackid1993 Apr 24, 2026
e207685
fix(facetime): defer inbound unprop until web client JoinEvent
mackid1993 Apr 24, 2026
60b0744
Revert "fix(facetime): defer inbound unprop until web client JoinEvent"
mackid1993 Apr 24, 2026
c106837
Revert "fix(facetime): skip prop on inbound — keep bridge out of peer…
mackid1993 Apr 24, 2026
a52937d
Revert "fix(facetime): drop unprop after letmein — match upstream ref…
mackid1993 Apr 24, 2026
0c198ee
fix(facetime): prune bridge from session.members to hide phantom tile
mackid1993 Apr 24, 2026
0639e55
fix(facetime): evict bridge via RemoveMember after prop (pivot from p…
mackid1993 Apr 24, 2026
37ce026
Revert "fix(facetime): evict bridge via RemoveMember after prop (pivo…
mackid1993 Apr 24, 2026
fddd1f8
Revert "fix(facetime): prune bridge from session.members to hide phan…
mackid1993 Apr 24, 2026
e7eaf90
fix(facetime): port OB link pre-mint + rotation convention
mackid1993 Apr 24, 2026
6a68bda
fix(facetime): skip prop_up_conv on letmein + restore name pre-fill
mackid1993 Apr 24, 2026
8d927a7
revert(facetime): drop is_ringing_inaccurate bypass — freezes peer iOS
mackid1993 Apr 24, 2026
c9f7a87
feat(facetime): bridge-hosted FT web-join proxy (OB MITM equivalent)
mackid1993 Apr 24, 2026
cc0d58e
feat(facetime): SPD-derived display name on web join links
mackid1993 Apr 25, 2026
b79ac62
fix(facetime): proxy default-on with public_address fallback
mackid1993 Apr 24, 2026
917ab6d
refactor(facetime): strip the bridge-hosted web-join proxy
mackid1993 Apr 25, 2026
ed36fe3
fix(facetime): emit RequestVideoUpgrade post-letmein on inbound
mackid1993 Apr 25, 2026
fa570ed
Revert "fix(facetime): emit RequestVideoUpgrade post-letmein on inbound"
mackid1993 Apr 25, 2026
996a88f
fix(facetime): revert SPD-derived display name on join links
mackid1993 Apr 25, 2026
307cf6e
feat(facetime): debug commands for peer cache + identity reset
mackid1993 Apr 25, 2026
8ca38e3
Revert "fix(facetime): revert SPD-derived display name on join links"
mackid1993 Apr 25, 2026
0f0cd0f
fix(facetime): wrapper-side prop with video_enabled=true on inbound
mackid1993 Apr 25, 2026
ae8f623
fix(facetime): keep webview's temp pseud out of peer's call history
mackid1993 Apr 25, 2026
89de064
Revert "fix(facetime): keep webview's temp pseud out of peer's call h…
mackid1993 Apr 25, 2026
8087756
fix(facetime): pin link pseud, drop per-call rotation
mackid1993 Apr 25, 2026
35807c0
Revert "fix(facetime): pin link pseud, drop per-call rotation"
mackid1993 Apr 25, 2026
d74cd7b
fix(facetime): filter temp: pseuds from matrix participants
mackid1993 Apr 25, 2026
7c41baf
fix(facetime): emit cmd 207 wire as binary plist, not XML
mackid1993 Apr 25, 2026
df77da7
Revert "fix(facetime): emit cmd 207 wire as binary plist, not XML"
mackid1993 Apr 25, 2026
3842e83
fix(facetime): pre-prop + stamp bridge active on inbound letmein
mackid1993 Apr 25, 2026
8818ecd
fix(facetime): pre-allocate + stamp webview active on inbound letmein
mackid1993 Apr 25, 2026
7549469
fix(facetime): use hand-rolled cmd 207 with video_enabled=true on inb…
mackid1993 Apr 25, 2026
eb7823f
fix(facetime): drop synthetic webview avc_data on inbound
mackid1993 Apr 25, 2026
b4ed6b9
chore(rustpush): bump pin to b2996d5
mackid1993 Apr 27, 2026
be7e5b8
chore(anisette): log per-attempt outcomes to diagnose retry path
mackid1993 Apr 27, 2026
7ed7fb1
fix(statuskit): dedupe presence notices across peer aliases via porta…
mackid1993 Apr 27, 2026
d77b1ac
chore(rustpush-overlay): gated XML dump of IDS register body
mackid1993 Apr 27, 2026
aac9caf
Revert "chore(rustpush-overlay): gated XML dump of IDS register body"
mackid1993 Apr 27, 2026
489bf62
fix(facetime): use ghost display name in 'call ready' notice
mackid1993 Apr 27, 2026
02e7c44
feat(facetime): dual web + facetime:// links so Mac/iOS taps reach th…
mackid1993 Apr 28, 2026
b02d2c5
Revert "feat(facetime): dual web + facetime:// links so Mac/iOS taps …
mackid1993 Apr 28, 2026
31a66ad
feat(facetime): add disable_facetime config flag
mackid1993 Apr 28, 2026
99d38fe
chore(install): prompt for disable_facetime in all four install scripts
mackid1993 Apr 28, 2026
e7dc320
fix(config): copy disable_facetime through upgradeConfig
mackid1993 Apr 28, 2026
3030c24
chore(install): rename "Bridge FaceTime" to "FaceTime Bridge" in prompts
mackid1993 Apr 28, 2026
82e1400
fix(nac): drop one-shot fast path on Mac native NAC
mackid1993 May 1, 2026
1553158
fix(keychain): port clique self-exclusion guard from master (9f29ff1)
mackid1993 May 3, 2026
33d6178
ci: add verify-rustpush-patches guard against silent sed-patch skips
mackid1993 May 3, 2026
6732fc7
fix(mme): self-heal empty MobileMe delegate cache on first use
mackid1993 May 3, 2026
c11b306
feat(statuskit): add statuskit_notifications config knob with install…
mackid1993 May 3, 2026
86ef655
build(makefile): collapse keychain sed patch to single-line s/// form
mackid1993 May 3, 2026
0bd6262
fix(statuskit): audit-driven hardening for key-exchange reliability
mackid1993 May 3, 2026
ea79ac0
feat(login): management-room welcome + numbered handle picker
mackid1993 May 3, 2026
4f0803e
chore(sync): drop !-prefix from recycle-bin notice command refs
mackid1993 May 3, 2026
c8495c1
chore: remove Find My — useless in Matrix, no surface for location/de…
mackid1993 May 3, 2026
f7d31fc
feat(commands): add !logout with handle picker + Apple-side cleanup s…
mackid1993 May 3, 2026
7250815
feat(commands): friendlier start-chat, retire resolve-identifier, ref…
mackid1993 May 3, 2026
49e277a
fix(commands): hide resolve-identifier redirect from help
mackid1993 May 3, 2026
df7158e
fix(commands): drop start-chat aliases, expand welcome explanation
mackid1993 May 3, 2026
e92b315
fix(welcome): replace literal \$cmdprefix with %[1]s template
mackid1993 May 3, 2026
11147c8
feat(install): optional shell shortcuts for bridge control
mackid1993 May 3, 2026
5790f5a
docs(readme): refresh for refactor branch — commands, FaceTime, Statu…
mackid1993 May 3, 2026
e704471
fix(install): move shortcut prompt before preferred-handle step
mackid1993 May 3, 2026
2be8f0a
docs(readme): clarify login is script-driven, bot DM is the alternative
mackid1993 May 3, 2026
fd615b5
fix(install): declining shortcut prompt removes previously-installed …
mackid1993 May 3, 2026
937a08f
chore(deps): bump golang.org/x/net to v0.53.0
mackid1993 May 3, 2026
e0cf375
chore(security): bump rustls-webpki on modern chain, ignore legacy ad…
mackid1993 May 3, 2026
c69a6f6
fix(extract-key-app): produce release-ready zip with valid seal
mackid1993 May 3, 2026
7eb5621
fix(nac-relay-app): produce release-ready zip with valid seal
mackid1993 May 3, 2026
be8103f
Update README.md
mackid1993 May 4, 2026
3e9d4fe
docs(readme): clarify image and video conversion behaviour
mackid1993 May 5, 2026
5f4980c
Update README.md
mackid1993 May 5, 2026
797d71b
fix(connector): drop ! prefix from shared-albums notification hint
mackid1993 May 6, 2026
cf7bda4
Sort shared album assets by DateCreated before slicing latest 50
Bijan-A May 6, 2026
a02eafa
Drop redundant comment above assetWithTime struct
mackid1993 May 6, 2026
1f4f4ed
fix(statuskit): patch upstream get_key cache (silent decrypt + unboun…
mackid1993 May 8, 2026
78d5c16
chore(deps): bump toolchain to go1.25.10
mackid1993 May 8, 2026
9fdba7a
Revert "fix(statuskit): patch upstream get_key cache (silent decrypt …
mackid1993 May 8, 2026
854b6e8
fix(statuskit): mirror OB's chat-open prelude before invite_to_channel
mackid1993 May 8, 2026
217c42e
fix(statuskit): drop strong-flag keysharing pre-warm on invite path
mackid1993 May 8, 2026
ca41db2
fix(statuskit): include sender in madrid pre-warm participant list
mackid1993 May 9, 2026
75fcde5
docs(readme): expand source layout with per-file descriptions
mackid1993 May 9, 2026
a1e0ab2
docs(readme): fix typos and clarify cmd/ descriptions
mackid1993 May 9, 2026
9b27131
docs(readme): extend bbctl subtree rail through multi-line description
mackid1993 May 9, 2026
9cc8ec6
fix(statuskit): invite from every registered alias, not just c.handle
mackid1993 May 9, 2026
7e4d89f
fix(shared-profile): throttle periodic CloudKit re-fetch
mackid1993 May 9, 2026
13d8c33
fix(sms): use from_handle as sender for inbound SMS forwarding
mackid1993 May 11, 2026
8ac14a0
fix(rustpushgo): catch panic in fetch_profile when CloudKit record is…
mackid1993 May 12, 2026
dfa539e
Revert "fix(statuskit): invite from every registered alias, not just …
mackid1993 May 9, 2026
97f63e3
feat(statuskit): invite on new-portal creation to harden mid-uptime path
mackid1993 May 9, 2026
c9bfa5e
fix(statuskit): per-handle panic isolation in invite goroutines
mackid1993 May 9, 2026
4d8989e
fix(statuskit): publish status after keyshare invites
mackid1993 May 9, 2026
1278902
fix(statuskit): single-flight invite, sweep gate, share serialization
mackid1993 May 9, 2026
a33455a
feat(statuskit): CloudKit pull (Phase 1 — discovery + diagnostic)
mackid1993 May 9, 2026
47a21c2
feat(statuskit): probe alternate CloudKit containers in discovery
mackid1993 May 9, 2026
4c3ab7c
feat(statuskit): narrow probe to com.apple.statuskit, hunt for valid …
mackid1993 May 9, 2026
f13796c
feat(statuskit): widen CloudKit bundle hunt to ~50 candidates
mackid1993 May 9, 2026
fd89086
feat(statuskit): pivot from bundle hunt to iMessage zone record-fetch
mackid1993 May 9, 2026
7e03b07
feat(statuskit): target com.apple.StatusKit.subscribe — bundle ID con…
mackid1993 May 9, 2026
6492cfb
feat(statuskit): bundle is com.apple.StatusKitAgent (not StatusKit.su…
mackid1993 May 9, 2026
09fc897
feat(statuskit): full CloudKit decode + always-anchor presence notice
mackid1993 May 9, 2026
3375f6f
fix(statuskit): decrypt encrypted string fields via PCS encryptor
mackid1993 May 9, 2026
57e3a4f
fix(statuskit): use StatusKit's own PCS service (not MESSAGES_SERVICE)
mackid1993 May 9, 2026
3f8d5f0
fix(statuskit): zone is "LimitedPeersAllowed", not "Manatee"
mackid1993 May 9, 2026
71d14ab
fix(statuskit): decode CD_invitationPayload as raw SharedMessage prot…
mackid1993 May 9, 2026
c543d3a
debug(statuskit): hex-dump decrypted CD_invitationPayload bytes
mackid1993 May 9, 2026
1308887
debug(statuskit): dump every encrypted-bytes field's plaintext
mackid1993 May 9, 2026
5843eb1
fix(statuskit): decode peer keys from CD_incomingRatchetState
mackid1993 May 9, 2026
9070502
fix(statuskit): compact-EC parity flip + log volume cleanup
mackid1993 May 9, 2026
0d93fda
fix(statuskit): per-pass CKKS rate-limit guard + container init dedup
mackid1993 May 9, 2026
239d598
fix(statuskit): drop steady-state min interval, gate only on failure
mackid1993 May 9, 2026
4a18d37
fix(statuskit): persist CD_Channel map across passes
mackid1993 May 9, 2026
ce5637e
fix(statuskit): add 12h success floor to CloudKit pull pass
mackid1993 May 9, 2026
f0f830e
debug(statuskit): keychain view diagnostic for PCS warning
mackid1993 May 9, 2026
c7a864f
debug(statuskit): remove keychain diagnostic after confirming benign …
mackid1993 May 9, 2026
0fb0efa
fix(statuskit): skip 10-field records before PCS work
mackid1993 May 9, 2026
e201989
fix(statuskit): preserve cached zone on empty CloudKit fetch
mackid1993 May 9, 2026
42bd3a1
fix(statuskit): defer CloudKit pull to end of bootstrap
mackid1993 May 9, 2026
6b42ae6
fix(statuskit): skip presence notice when portal has no anchor message
mackid1993 May 9, 2026
7523445
fix(statuskit): stamp presence notice at exact last-msg timestamp
mackid1993 May 9, 2026
3f76a25
fix(statuskit): move CloudKit pull to onForwardBackfillDone
mackid1993 May 9, 2026
824f0ce
fix(statuskit): wait for backfill to settle before CloudKit pull fires
mackid1993 May 9, 2026
12d3cb0
fix(statuskit): drain all pages within a single pass
mackid1993 May 9, 2026
e2f271e
fix(statuskit): trigger CloudKit drain after backfill completes
mackid1993 May 9, 2026
640bcd9
fix(statuskit): propagate cached-path CloudKit errors instead of swal…
mackid1993 May 9, 2026
4290ebd
fix(statuskit): propagate cached-path container-init errors too
mackid1993 May 9, 2026
358295a
feat(statuskit): persistent alias-cluster resolver for unmatched pres…
mackid1993 May 9, 2026
e00a2ec
fix(statuskit): correct KV hydration query (kv_store table + bridge_i…
mackid1993 May 10, 2026
671093a
fix(statuskit): normalize alias keys in resolver helpers
mackid1993 May 10, 2026
057e028
feat(statuskit): eagerly link cluster aliases to portal as observatio…
mackid1993 May 10, 2026
b9b4146
feat(statuskit): on-demand IDS lookup with persistent attempt cache f…
mackid1993 May 10, 2026
1d6acc0
chore(statuskit): rename alias-resolver file back to snake_case
mackid1993 May 10, 2026
9706ba2
fix(statuskit): restore Madrid batch validate_targets + drop unregist…
mackid1993 May 10, 2026
7fe76c5
feat(statuskit): rate-gate batch IDS lookups against bursty traffic
mackid1993 May 10, 2026
13269d0
fix(statuskit): bypass IDS freshness filter for alias resolver
mackid1993 May 10, 2026
a27cae5
feat(statuskit): per-cycle batch alias-link pass
mackid1993 May 10, 2026
63767e4
fix(statuskit): persist batch-link writes via detached context
mackid1993 May 10, 2026
f7071ff
fix(statuskit): clear presence dedupe on new alias_portal mapping
mackid1993 May 10, 2026
7f9adf0
perf(statuskit): only force-fresh unknowns, cache-hit known siblings
mackid1993 May 10, 2026
4a1dd25
chore(scripts): invert FaceTime prompt and note StatusKit unarchive
mackid1993 May 12, 2026
cd78ff2
fix(statuskit): overwrite peer key in CloudKit inject when rotated
mackid1993 May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/CODEOWNERS

This file was deleted.

1 change: 0 additions & 1 deletion .github/FUNDING.yml

This file was deleted.

7 changes: 0 additions & 7 deletions .github/ISSUE_TEMPLATE/bug.md

This file was deleted.

7 changes: 0 additions & 7 deletions .github/ISSUE_TEMPLATE/config.yml

This file was deleted.

6 changes: 0 additions & 6 deletions .github/ISSUE_TEMPLATE/enhancement.md

This file was deleted.

28 changes: 28 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: 2
updates:
- package-ecosystem: gomod
directory: /
schedule:
interval: weekly
groups:
go-deps:
patterns: ["*"]
commit-message:
prefix: "deps(go):"

- package-ecosystem: cargo
directory: /pkg/rustpushgo
schedule:
interval: weekly
groups:
rust-deps:
patterns: ["*"]
commit-message:
prefix: "deps(rust):"

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
commit-message:
prefix: "ci:"
226 changes: 226 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
name: CI

on:
push:
branches: [master, refactor]
pull_request:
branches: [master, refactor]
# Manual trigger — useful when bumping third_party/rustpush-upstream.sha
# locally and wanting to re-run the full verify pipeline on a branch
# without pushing a test commit.
workflow_dispatch: {}

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
# ───────────────────────────────────────────────────────────────
# Lint – quick static analysis
# ───────────────────────────────────────────────────────────────
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true

- name: go vet (imessage)
run: go vet ./imessage/...

- name: go vet (bbctl)
run: go vet ./cmd/bbctl/...

# ───────────────────────────────────────────────────────────────
# Unit tests – pure-Go packages (no Rust/CGO bridge needed)
# ───────────────────────────────────────────────────────────────
test-imessage:
name: Test imessage/
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true

- name: Run tests
run: go test -count=1 ./imessage/...

# NOTE: pkg/connector/ tests require the Rust static library (librustpushgo.a)
# and are run as part of the build jobs below (after `make build`).

# ───────────────────────────────────────────────────────────────
# Verify rustpush patches – clones OpenBubbles/rustpush at the pinned
# SHA (third_party/rustpush-upstream.sha) and asserts every Makefile
# sed-patch in `ensure-rustpush-source` actually applied. The sed
# patches are guarded by `grep -q '<original pattern>'`; if upstream
# rewords a guarded line, the sed is skipped silently and the build
# still goes green with the patch dropped on the floor. This job
# catches that case explicitly so a SHA-pin bump that breaks any
# patch fails CI before it ships.
# ───────────────────────────────────────────────────────────────
verify-rustpush-patches:
name: Verify rustpush patches apply
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Show pinned rustpush SHA
run: |
PIN_FILE=third_party/rustpush-upstream.sha
if [ ! -f "$PIN_FILE" ]; then
echo "::error::$PIN_FILE is missing"
exit 1
fi
PIN=$(tr -d '[:space:]' < "$PIN_FILE")
if [ -z "$PIN" ]; then
echo "::error::$PIN_FILE is empty"
exit 1
fi
echo "Pinned rustpush SHA: $PIN"

- name: Clone pinned rustpush + apply Makefile patches
run: make ensure-rustpush-source

- name: Verify every patch marker is present
run: |
BASE=third_party/rustpush-upstream
FAIL=0
check() {
local desc="$1" file="$2" marker="$3"
if ! grep -Fq "$marker" "$file"; then
echo "::error file=$file::patch '$desc' did not apply — marker not found (upstream may have moved out from under us at the pinned SHA)"
FAIL=1
else
echo "ok: $desc"
fi
}
check "activation pub" "$BASE/src/lib.rs" "pub mod activation;"
check "ids pub" "$BASE/src/lib.rs" "pub mod ids;"
check "FetchedToken.token pub" "$BASE/apple-private-apis/icloud-auth/src/client.rs" "pub token: String,"
check "FetchedToken.expiration" "$BASE/apple-private-apis/icloud-auth/src/client.rs" "pub expiration: SystemTime,"
check "FetchedToken re-export" "$BASE/apple-private-apis/icloud-auth/src/lib.rs" "pub use client::{AppleAccount, FetchedToken,"
check "keychain self-exclusion" "$BASE/src/icloud/keychain.rs" "Ignoring exclusion of ourselves"
check "register XML dump" "$BASE/src/ids/user.rs" "RUSTPUSH_LOG_REGISTER_BODY"
check "statuskit no-saved-channel softened" "$BASE/src/statuskit.rs" "no saved channel for identifier — using last_msg_ns=0"
check "statuskit channel-not-found softened" "$BASE/src/statuskit.rs" "presence msg arrived before keysharing"
exit $FAIL

# ───────────────────────────────────────────────────────────────
# Full build – Rust + Go on macOS and Linux
# ───────────────────────────────────────────────────────────────
build-macos:
name: Build (macOS)
# Manual-dispatch only. macOS runs on the Apple Silicon GitHub-hosted
# runner; every push/PR doesn't need to burn a macOS slot since Linux
# already catches the vast majority of breakage. Trigger this job
# explicitly via Actions → CI → "Run workflow" when you want macOS
# parity coverage (e.g. after bumping third_party/rustpush-upstream.sha
# or touching platform-gated code in pkg/rustpushgo or local_config).
if: github.event_name == 'workflow_dispatch'
runs-on: macos-14 # Apple Silicon (ARM64)
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Install dependencies
run: |
brew install libolm protobuf

- name: Cache Cargo registry + build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
pkg/rustpushgo/target
key: cargo-macos-arm64-${{ hashFiles('**/Cargo.lock', 'third_party/rustpush-upstream.sha') }}
restore-keys: cargo-macos-arm64-

- name: Verify pinned rustpush SHA file
run: |
PIN_FILE=third_party/rustpush-upstream.sha
if [ ! -f "$PIN_FILE" ]; then
echo "::error::$PIN_FILE is missing — refactor branch requires a pinned OpenBubbles/rustpush SHA"
exit 1
fi
PIN=$(tr -d '[:space:]' < "$PIN_FILE")
if [ -z "$PIN" ]; then
echo "::error::$PIN_FILE is empty"
exit 1
fi
echo "Pinned rustpush SHA: $PIN"

- name: Build
run: make build

- name: Test pkg/connector/
env:
CGO_CFLAGS: -I/opt/homebrew/include
CGO_LDFLAGS: -L/opt/homebrew/lib
run: go test -count=1 ./pkg/connector/...

build-linux:
name: Build (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq \
build-essential cmake pkg-config git curl \
libolm-dev libclang-dev libssl-dev libunicorn-dev \
protobuf-compiler sqlite3

- name: Cache Cargo registry + build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
pkg/rustpushgo/target
key: cargo-linux-${{ hashFiles('**/Cargo.lock', 'third_party/rustpush-upstream.sha') }}
restore-keys: cargo-linux-

- name: Verify pinned rustpush SHA file
run: |
PIN_FILE=third_party/rustpush-upstream.sha
if [ ! -f "$PIN_FILE" ]; then
echo "::error::$PIN_FILE is missing — refactor branch requires a pinned OpenBubbles/rustpush SHA"
exit 1
fi
PIN=$(tr -d '[:space:]' < "$PIN_FILE")
if [ -z "$PIN" ]; then
echo "::error::$PIN_FILE is empty"
exit 1
fi
echo "Pinned rustpush SHA: $PIN"

- name: Build
run: make build

- name: Test pkg/connector/
run: go test -count=1 ./pkg/connector/...
38 changes: 0 additions & 38 deletions .github/workflows/go.yml

This file was deleted.

Loading
Loading