Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2103 commits
Select commit Hold shift + click to select a range
32fc0d0
Merge pull request #34 from lwittwer/pr_backfill_dm_sender_parity
mackid1993 Mar 27, 2026
9fda686
Merge pull request #33 from lwittwer/pr_sms_portal_correctness
mackid1993 Mar 27, 2026
f802693
Merge pull request #35 from lwittwer/pr_group_portal_name_stability
mackid1993 Mar 27, 2026
f356f1d
Merge pull request #36 from lwittwer/pr_reply_tapback_part_targeting
mackid1993 Mar 27, 2026
7514002
fix(connector): don't send filename as iMessage subject for bare atta…
Apr 11, 2026
54c43c5
refactor: merge cameronaaron/master — StatusKit, feature parity, Clou…
Apr 11, 2026
03f0b04
refactor(rustpushgo): point wrapper at OpenBubbles upstream, zero rus…
Apr 11, 2026
42f12ad
refactor(rustpushgo): split WrappedTokenProvider impl blocks to prese…
Apr 11, 2026
e9ab542
refactor(nac): restore Local NAC via nac-validation through open-absi…
Apr 11, 2026
898795b
refactor: wire Local NAC through 3-step AAAbsintheContext API
Apr 11, 2026
7e220ca
refactor: restore 94f7b8e Ford dedup fix in the wrapper (zero rustpus…
Apr 11, 2026
adf76eb
refactor: reimplement avid (Live Photo MOV) download in the wrapper
Apr 11, 2026
076d347
ci: extend verify pipeline to refactor branch + manual dispatch
Apr 11, 2026
61c242b
ci: gate macOS build on workflow_dispatch
Apr 11, 2026
40e5d80
ci: strip artifact uploads — verify pipeline is pass/fail only
Apr 11, 2026
2b53f4f
fix(makefile): rewrite submodule SSH URLs to HTTPS before clone
Apr 11, 2026
9015779
fix(makefile): robust rustpush-upstream checkout + URL rewrite inheri…
Apr 11, 2026
e25c730
refactor: wire NAC relay (ARM Mac → Linux) through open-absinthe 3-step
Apr 11, 2026
085b87d
fix(wrapper): add open-absinthe as a base dep so Linux can reach set_…
Apr 11, 2026
32ab21e
fix(log): silence upstream DebugMutex instrumentation by default
Apr 11, 2026
3f8080e
fix(makefile): stop rebuilding Rust library on every make invocation
Apr 11, 2026
ca7c957
fix(log): also silence rustpush::aps in the default filter
Apr 11, 2026
8b3f87f
fix(makefile): skip open-absinthe overlay when content is unchanged
Apr 11, 2026
9aaf24d
fix(connector): seed persisted MobileMe delegate on TokenProvider res…
Apr 11, 2026
3c81808
fix(wrapper): use ALL_ASSETS in cloud_sync_attachments to capture For…
Apr 11, 2026
78cdadd
fix(log): install panic hook that silences Ford SIV mmcs.rs unwraps
Apr 11, 2026
f8d1d56
fix(log): drop rustpush modules to WARN by default
Apr 11, 2026
5c37bcb
fix(wrapper): handle missing bundled_request_id in Ford recovery
Apr 11, 2026
4460420
fix(wrapper): hand-roll cloud_download_attachment to register Ford ke…
Apr 11, 2026
1eeb002
fix(wrapper): call upstream's sync_attachments directly for Ford cache
Apr 11, 2026
3ad6ba7
fix: try every cached Ford key + unblock backfill spin-loop
Apr 11, 2026
a76c6fa
fix: gate Ford recovery on actual Ford-encrypted assets + parallelize…
Apr 11, 2026
fa86202
fix(wrapper): add prost 0.12 direct dep for AuthorizeGetResponse decode
Apr 11, 2026
f3c4be9
fix(wrapper): port master's PCS refresh retry to cloud_sync_attachments
Apr 11, 2026
faa5531
diag(wrapper): log ford gating decision in cloud_download_attachment
Apr 11, 2026
826bd88
fix(wrapper): manual V1+V2 Ford download to fix missing attachments
Apr 11, 2026
12ea8c0
fix(connector): recover dropped attachments via aguid suffix match
Apr 11, 2026
525158e
fix(wrapper): route live APNs MMCS downloads through manual V1+V2 path
Apr 11, 2026
cecb525
feat(wrapper): instrument silent drop paths in cloud_sync_attachments
Apr 11, 2026
3ea4042
chore(Cargo.lock): revert unrelated lockfile hunks bundled in cecb525
Apr 11, 2026
bcfa5e3
fix(wrapper): use upstream CloudAttachment in cloud_sync_attachments
Apr 11, 2026
0dbcd4d
fix(wrapper): sledgehammer retry in cloud_sync_attachments
Apr 11, 2026
d322740
fix(wrapper): drop broken type annotations in sledgehammer retry
Apr 11, 2026
17c3a49
feat(wrapper): per-record INFO log of every normalized attachment aguid
Apr 11, 2026
9f0f16b
fix(connector): case-insensitive attMap lookup for aguids
Apr 11, 2026
a0787cf
fix(wrapper): decode cm/lqa/avid per-field to stop silently losing re…
Apr 11, 2026
1f2aff3
fix(wrapper): catch_unwind around pcs_keys_for_record to unblock froz…
Apr 11, 2026
4b91fd2
fix: startup panic recovery + PCS fallback via decrypt_with_keychain
Apr 11, 2026
9864b2e
fix(connector): correct type names in safeRestoreTokenProvider
Apr 11, 2026
69196e3
fix(wrapper): use NO_ASSETS in attachment change feed to unblock 4 mi…
Apr 11, 2026
547f1ea
chore: revert accidental Cargo.lock changes
Apr 11, 2026
ec0a145
fix(wrapper): set newest_first=true in attachment zone FetchRecordCha…
Apr 11, 2026
fd262bf
diag: log all messageSummaryInfo ams entry keys/values
Apr 11, 2026
2cc28f1
fix(attachments): QueryRecords fallback for records absent from chang…
Apr 11, 2026
20feae3
fix(attachments): paginate QueryRecords fallback
Apr 11, 2026
1c1831f
fix(makefile): track nac-validation and ObjC sources in RUST_SRC
Apr 11, 2026
42af993
fix(attachments): proper QueryRecords fallback via separate exported …
Apr 11, 2026
028475b
fix(local_config): restore native NAC via MacOSConfig, stay in our layer
Apr 11, 2026
aa0fa21
diag: dump all NSAttributedString attribute keys for 4 missing attach…
Apr 11, 2026
defb171
chore: remove cloud_diag_message_attributed_keys diagnostic
Apr 11, 2026
3e54bce
fix(nac): use one-shot native NAC as primary path on macOS
Apr 11, 2026
a3ca28b
fix(keychain): skip post-probe is_in_clique() when probe already conf…
Apr 11, 2026
c2df45a
fix(keychain): recover from Cuttlefish exclusion using cached CloudKi…
Apr 11, 2026
b27e2c0
chore(makefile): remove dead apple-private-apis overlay
Apr 11, 2026
57110db
fix(cloudkit): pre-warm zone key cache to avoid re-triggering is_in_c…
Apr 11, 2026
29c5317
fix(contacts): fix typo in Dataclass key — Contacts not Contact
Apr 11, 2026
11c1fe6
fix(anisette): clear stale state before login to prevent upstream pan…
Apr 11, 2026
29e9c4a
revert(anisette): remove state file deletion from login_start
Apr 11, 2026
9f6e457
fix(anisette): clear stale state on Linux before each login attempt
Apr 11, 2026
42970ce
fix(nac-relay): fail fast when relay is configured but unreachable
Apr 11, 2026
1cfc759
fix(nac-relay): normalize relay URL by stripping /validation-data suffix
Apr 11, 2026
12ee6a9
fix(login): remove state.plist deletion, add anisette logging
Apr 12, 2026
4d5da9d
chore: remove dead rustpush/apple-private-apis overlay directory
Apr 12, 2026
1c04d96
fix(hardware-key): preserve relay fields in FullHardwareKey fallback …
Apr 12, 2026
7f24983
fix(anisette): wrapper-level provider that bypasses upstream's broken…
Apr 12, 2026
0b87429
fix(anisette): add diagnostic logging and retry with fresh identifier
Apr 12, 2026
2d899d2
fix(anisette): delegate to upstream provider, fallback only on serde …
Apr 12, 2026
fc86e4b
debug(login): dump LoginClientInfo fields before anisette provider
Apr 12, 2026
4747c5a
fix(anisette): remove wrapper, use upstream default_provider directly
Apr 12, 2026
dcde6c6
fix(nac-relay): revert hallucinated 3-step protocol to master's singl…
Apr 12, 2026
128258f
fix(nac-relay): single-shot relay, fix all paths to rustpush/
Apr 12, 2026
c7a7c56
fix: correct dep paths, single-shot NAC relay, clean vendored code
Apr 12, 2026
8f6f3a6
fix(anisette): restore BridgeAnisetteProvider wrapper on Linux
Apr 12, 2026
ba44728
fix(anisette): use our provisioning directly, skip upstream entirely
Apr 12, 2026
38054ff
fix(anisette): use default_provider directly, same as master
Apr 12, 2026
d594a02
fix(anisette): restore wrapper to prevent upstream infinite loop on W…
Apr 12, 2026
c855af3
fix: use bridge_default_provider at both callsites (CI type mismatch)
Apr 12, 2026
2017782
fix(tls): remove native-tls-vendored and vendored openssl
Apr 12, 2026
d0fabb9
fix(anisette): upstream-first, fallback only on serde crash
Apr 12, 2026
b8e5a80
fix(anisette): minimal wrapper — just a timeout around upstream
Apr 12, 2026
68b9b46
fix(anisette): add retry and error handling around upstream provisioning
Apr 12, 2026
0d724cc
fix(nac): intercept generate_validation_data for ARM relay keys
Apr 12, 2026
4f03d06
fix(nac): add RelayOSConfig to intercept validation data for ARM keys
Apr 12, 2026
cf18582
fix(nac): pre-fetch relay validation data for Apple Silicon keys
Apr 12, 2026
af86911
fix(nac): use relay path with non-empty request bytes
Apr 12, 2026
5e72cc6
fix(nac): use cert chain as relay request bytes
Apr 12, 2026
3a45212
revert(nac-relay): remove accidental 3-step endpoints
Apr 12, 2026
ec8c341
fix(nac): RelayOSConfig bypasses Apple handshake for ARM keys
Apr 12, 2026
b67e783
fix(build): make rustpush activation module public via Makefile overlay
Apr 12, 2026
d10ec2c
feat: port upstream StatusKit, profile sharing, sticker tapbacks, del…
Apr 12, 2026
1882500
fix(statuskit): use full DM portal resolution chain for presence notices
Apr 12, 2026
90b2e2b
fix(statuskit): re-subscribe after init to resolve startup race condi…
Apr 12, 2026
e74525d
fix(statuskit): promote presence update logs to Info for production v…
Apr 12, 2026
f9932e7
fix(statuskit): force APNs replay and key exchange on startup
Apr 12, 2026
e9a21f6
fix(statuskit): remove invite_to_status_sharing call to prevent bridg…
Apr 12, 2026
6d1ea28
fix(statuskit): wrap invite_to_status_sharing in recover to prevent c…
Apr 12, 2026
af83217
fix(statuskit): call SetStatus before invite to ensure channel is all…
Apr 12, 2026
3bac190
fix(statuskit): register MULTIPLEX_SERVICE to enable keysharing IDS t…
Apr 12, 2026
57e9f0f
revert(statuskit): remove broken IDS invite path
Apr 12, 2026
ef4f228
fix(statuskit): restore MULTIPLEX_SERVICE registration and add init t…
Apr 12, 2026
73f632d
fix(statuskit): silent presence notices and fix dedup for mode changes
Apr 12, 2026
1a52b8c
fix(statuskit): suppress push notifications on presence notices
Apr 12, 2026
4325e40
fix(statuskit): clear stale channel keys on VerificationFailed and re…
Apr 12, 2026
0d43052
fix(statuskit): resolve mailto: handles to tel: portals via StatusKit…
Apr 12, 2026
04e2891
fix(statuskit): remove key-clearing that caused panic on Channel not …
Apr 12, 2026
666a7a1
fix(statuskit): guard against panic on missing channel keys
Apr 12, 2026
99a9727
fix(statuskit): replace premature key-check with panic-safe catch_unwind
Apr 13, 2026
840177c
fix(statuskit): use contact store for portal resolution instead of Ge…
Apr 13, 2026
d7e34f6
fix(statuskit): use thread + oneshot instead of spawn_blocking for pa…
Apr 13, 2026
150bc00
fix(statuskit): re-subscribe to presence when key-sharing messages ar…
Apr 13, 2026
cc15c5d
fix(statuskit): resolve aliased presence handles via IDS correlation ID
Apr 13, 2026
cee5f25
fix(statuskit): restore key-invite path now that MULTIPLEX_SERVICE is…
Apr 13, 2026
9404a21
fix(statuskit): drop presence-subscribe debounce that swallowed key-s…
Apr 13, 2026
bfe0f02
diag(statuskit): only fire key-sharing callback when state.keys actua…
Apr 13, 2026
37c3898
fix(statuskit): stop warning on c=255 ACKs from our own outgoing invites
Apr 13, 2026
84173b6
fix(statuskit): run handle() on main tokio runtime, not a fresh one
Apr 13, 2026
83efaa2
fix(statuskit): reset keysharing IDS cache before invite_to_channel
Apr 13, 2026
9558f9a
fix(statuskit): reset all handle cache entries before invite_to_channel
Apr 13, 2026
8220fc9
fix(statuskit): use targets_for_handles to prime IDS cache before invite
Apr 13, 2026
7693ed0
fix(statuskit): invalidate stale IDS cache when invite priming return…
Apr 13, 2026
0ef9dd6
fix(statuskit): suppress c=97 noise and add IDS field-presence diagno…
Apr 13, 2026
a5d34cf
diag(statuskit): log all plist keys for c=97 and other unhandled keys…
Apr 13, 2026
9f7d9e5
fix(connector): strip embedded U+FFFC from APNs-echoed text
Apr 13, 2026
01d8163
fix(statuskit): ghost-intent send, post-send dedup, c=227 re-invite s…
Apr 13, 2026
641d47c
fix(statuskit): run ghost-intent send in goroutine to avoid portal de…
Apr 13, 2026
e7d0245
fix(statuskit): drop sk_for_recv read guard before await points
Apr 13, 2026
894e189
debug(cloudkit): add per-step logging and timeouts to cloud client init
claude Apr 13, 2026
36c84e1
fix(deps): upgrade golang.org/x/image to v0.38.0 (GO-2026-4815)
claude Apr 13, 2026
6c19c05
fix(cloudkit): add 30s timeout to step 1 (TLK share refresh) of cloud…
claude Apr 13, 2026
0bbb3d8
fix(cloudkit): release mutex before slow init to unblock tokio timers
claude Apr 13, 2026
2b88e28
fix(cloudkit): remove step 1 TLK share refresh that blocks tokio thread
claude Apr 13, 2026
2a9ca83
fix(statuskit): release mutex during init; subscribe even after timeout
claude Apr 13, 2026
abf8c24
fix(cloudkit): remove all blocking pre-init network steps from cloud …
claude Apr 13, 2026
b39c416
fix(statuskit): dispatch OnStatusUpdate work to goroutine; fix mailto…
claude Apr 13, 2026
0a79747
fix(statuskit): prefer tel: over mailto: portal for presence notices
claude Apr 13, 2026
e4293cb
fix(statuskit): resolve_handle_cached avoids blocking IDS call for ma…
claude Apr 13, 2026
0433470
fix(statuskit): targeted single-handle IDS query with 5s tokio timeout
claude Apr 13, 2026
4145cac
fix(statuskit): resolve portal before ghost; use tel: ghost for mailt…
claude Apr 13, 2026
c6f4d26
fix(rust): fix validate_targets type mismatch and remove unused imports
claude Apr 13, 2026
58bca77
fix(statuskit): fall back to StatusKit keysharing service for IDS cor…
claude Apr 13, 2026
338fb3c
fix(statuskit): invert available flag; send notice from bot not ghost
claude Apr 13, 2026
93dcba3
fix(statuskit): add com.beeper.action_message to suppress push notifi…
claude Apr 13, 2026
29a23b8
fix(statuskit): base silenced detection on mode, not available flag
claude Apr 13, 2026
c698ae2
StatusKit: suppress bot push via sender push rule, not MarkRead
claude Apr 13, 2026
d2c597e
StatusKit: install bot push rule eagerly at Connect() time
claude Apr 13, 2026
928ef6b
StatusKit: use override push rule for bot silence (not sender rule)
claude Apr 13, 2026
720e725
StatusKit: fix chat timestamp bump + try private read marker for push
claude Apr 13, 2026
3ccfc8b
StatusKit: use BeeperBatchSend to suppress push on Hungry; fix dedup …
claude Apr 13, 2026
38d7e02
fix: use SetReadMarkers instead of SetBeeperInboxState for ghost rece…
claude Apr 13, 2026
84ee96c
fix: use Forward:true in batch send so notice appears in live chat view
claude Apr 13, 2026
33accff
fix: anchor StatusKit notice timestamp before last real message to pr…
claude Apr 13, 2026
627a61e
fix: persist StatusKit presence state to KV store to survive bridge r…
claude Apr 13, 2026
e84a1a9
fix: qualify default_provider call with omnisette:: to fix macOS build
claude Apr 13, 2026
3375f38
StatusKit: send invites after backfill completes
Apr 14, 2026
53f2e30
CloudKit diag: recover from upstream anisette panic so bridge survives
Apr 14, 2026
0de27e9
sync: remove CloudKit 0-record diagnostic (causes anisette-mutex dead…
Apr 14, 2026
109dd04
harden FFI surface against upstream panics
Apr 14, 2026
52620b1
guard remaining FFI paths against upstream panics
Apr 14, 2026
86963fb
fix: check rows.Err() after DB iteration in two paths
claude Apr 14, 2026
f618681
feat(statuskit): periodic re-invite for non-responsive ghosts
Apr 14, 2026
98a6c6d
Update rustpush-upstream.sha
mackid1993 Apr 14, 2026
4ab0763
fix(rustpushgo): adapt wrapper to upstream a7fab47 API changes
Apr 14, 2026
eafc061
fix(rustpushgo): install rustls aws-lc-rs CryptoProvider at startup
Apr 14, 2026
495bbff
fix(rustpushgo): normalize MobileMe delegate shape at parse time
Apr 14, 2026
7375ba1
fix(statuskit): skip re-invite for ghosts correlated to already-keyed…
Apr 14, 2026
a0f9384
fix(statuskit): stop logging non-Notification APS frames as "keyshari…
Apr 14, 2026
9c0d0a1
fix(statuskit): treat placeholder-only channels as stale in get_known…
Apr 14, 2026
0d98b25
feat(connector): persist iMessage shared profiles and auto-refresh
Apr 15, 2026
a14468c
chore(connector): drop shared_profile_test.go
Apr 15, 2026
c73471f
feat(rustpushgo): inline-download Name & Photo Sharing in receive loop
Apr 15, 2026
27b0686
fix(connector): re-apply cached shared profiles to ghosts on connect
Apr 15, 2026
7f49e98
refactor(connector): drive shared-profile refresh from setContactsReady
Apr 15, 2026
042e4d7
fix(rustpushgo): pull profile keys off embedded_profile on text messages
Apr 15, 2026
18a78f9
fix(connector): decouple shared-profile refresh from CardDAV readiness
Apr 15, 2026
ef5f9ed
fix(rustpushgo): normalize MobileMe delegate before reading contacts URL
Apr 15, 2026
f85b96e
fix(rustpushgo): accept Value::Dictionary in MMCS auth-wait predicate
Apr 15, 2026
8eb1adb
fix(connector): strip _attN suffix and pass part index on outbound un…
Apr 15, 2026
aa81526
diag: log SendEdit/SendUnsend invocation params
Apr 15, 2026
300879f
fix(connector): stable sender_guid for DM portals so unsend reaches r…
Apr 15, 2026
f6d9037
chore(connector): drop SendEdit/SendUnsend diagnostic logging
Apr 15, 2026
9c50d79
Revert "fix(connector): stable sender_guid for DM portals so unsend r…
Apr 15, 2026
76e525d
Revert "fix(connector): strip _attN suffix and pass part index on out…
Apr 15, 2026
8705ae4
fix(connector): use CloudKit chat group_id as DM sender_guid
Apr 15, 2026
4904948
Revert "fix(connector): use CloudKit chat group_id as DM sender_guid"
Apr 15, 2026
172c9b7
Reapply "fix(connector): use CloudKit chat group_id as DM sender_guid"
Apr 15, 2026
d689ae0
fix(connector): use Apple chat-identifier format for DM sender_guid
Apr 15, 2026
41ec856
Revert "fix(connector): use Apple chat-identifier format for DM sende…
Apr 15, 2026
7e48475
Revert "Reapply "fix(connector): use CloudKit chat group_id as DM sen…
Apr 15, 2026
9dd33b8
fix(statuskit): invite from every registered handle, not just the sel…
Apr 15, 2026
087ec73
fix(statuskit): bypass upstream destructure-on-Data for Dictionary-pa…
Apr 15, 2026
263e73d
Add FaceTime command flow and auto-approval improvements
cameronaaron Apr 15, 2026
bec86df
fix: resolve Linux CI errors and Copilot review findings on FaceTime …
Apr 15, 2026
f242d6b
fix(connector): drop !name command aliases, set DefaultCommandPrefix
Apr 15, 2026
96bb794
feat(facetime): !im facetime in a DM portal calls the contact + help …
Apr 15, 2026
d058055
Merge pull request #39 from cameronaaron/refactor
mackid1993 Apr 15, 2026
fcc3b2e
fix(facetime): retry CreateSession/GetSessionLink on APNs send-ack ti…
Apr 15, 2026
cb50576
fix(facetime): ring only when a non-caller joins + render link as cli…
Apr 15, 2026
239310a
fix(facetime): render incoming-call notice link as a tappable anchor
Apr 15, 2026
08b1c71
fix(facetime): portal !im facetime emits facetime:// deep links inste…
Apr 15, 2026
f168c0d
fix(facetime): session-link flow with name-slug pre-fill + callback l…
Apr 15, 2026
8d9c8f2
revert(facetime): drop the &n= link slug — doesn't work and broke join
Apr 15, 2026
80045fc
fix(facetime): exclude own handles from missed-call sender fallback
Apr 15, 2026
41b3ecc
chore(rustpushgo): regenerate FFI bindings after statuskit command cl…
Apr 15, 2026
b1a8e54
fix(facetime): portal !im facetime uses personal link so web joins co…
claude Apr 15, 2026
fc0cc69
chore(statuskit): remove configure-aps and ensure-channel bot commands
Apr 15, 2026
d43996b
chore(commands): drop redundant / risky debug bot commands
Apr 15, 2026
09b9e7e
fix(facetime): stop telling users to retry DoNotRetry(ResourceClosed)
Apr 15, 2026
31b7544
Revert "chore(commands): drop redundant / risky debug bot commands" (…
Apr 15, 2026
e20bcac
fix(rustpushgo): best-effort FaceTime+Video IDS registration outside …
Apr 15, 2026
ec09b92
fix(rustpushgo): cache keychain+cloudkit clients on WrappedTokenProvider
Apr 15, 2026
5d15c19
chore(rustpushgo): info-level logging on keychain client cache hit/miss
Apr 15, 2026
4802815
Revert "chore(rustpushgo): info-level logging on keychain client cach…
Apr 15, 2026
96bd3b0
fix(connector): drop pluginPayloadAttachment plists from CloudKit bac…
Apr 15, 2026
3ad7e4a
fix(rustpushgo): put FACETIME+VIDEO back in IMClient::new bundle
Apr 15, 2026
16f525b
fix(rustpushgo): nudge own devices off the call so Mac stops auto-ans…
Apr 15, 2026
5fb5aee
Revert "fix(rustpushgo): nudge own devices off the call so Mac stops …
Apr 15, 2026
82e002a
fix(rustpushgo): mirror upstream create_session so the wire ring skip…
Apr 15, 2026
8eaf9ad
fix(facetime): pre-fill the join link's display name with the caller'…
Apr 15, 2026
424c927
fix(connector): bring handleDeliveryReceipt portal resolution to pari…
Apr 15, 2026
d65126a
fix(facetime): base64 the link name slug + strip own handle in letmei…
Apr 15, 2026
7acd084
fix(connector): drop IsStoredMessage gate from handleDeliveryReceipt
Apr 15, 2026
6e49f58
revert(facetime): drop the respond_letmein members strip — broke wife…
Apr 15, 2026
583369d
fix(facetime): pin bridge link to session + log ring fanout
Apr 15, 2026
ba96333
fix(facetime): drop the members strip; call upstream create_session d…
Apr 15, 2026
00aae6c
fix(facetime): wrapper-side recovery for cmd 207/209 BadMsg
Apr 16, 2026
ee1ee6f
fix(facetime): gate the callee ring behind the caller's link join
Apr 16, 2026
409924b
fix(facetime): missed-call support + callback uses same bridge flow
Apr 16, 2026
82761f5
fix(facetime): drop facetime:// fallback from missed-call notice
Apr 16, 2026
9d1cf12
fix(facetime): use session-specific link in armBridgeFaceTimeCall
Apr 16, 2026
d9f43da
fix(facetime): retry APNs-dependent FT setup across transient flaps
Apr 16, 2026
f7ec3b8
fix(facetime): approve session-specific links + fix inbound join routing
Apr 16, 2026
0c4bbec
fix(facetime): retry LetMeIn across APNs flaps + fix delegation idemp…
Apr 16, 2026
dab43d0
fix: case-insensitive UUID fallback for delivery receipts
Apr 16, 2026
1e23078
fix: retry all Matrix→iMessage sends across APNs flaps
Apr 16, 2026
c61ae8f
feat(statuskit): numbered Focus mode picker for statuskit-share off
Apr 16, 2026
aad8534
fix(statuskit): filter own handles from presence subscribe + invite l…
Apr 16, 2026
8f16745
fix(statuskit): resolve handle-form mismatch in presence subscription
Apr 16, 2026
f079364
fix(statuskit): populate allowed_modes + add invite diagnostic logging
Apr 16, 2026
65d71d6
feat(sharedstreams): numbered album/asset picker with media download
Apr 16, 2026
752fb6f
fix(statuskit): add logging to manual invite path + raise rustpush lo…
Apr 16, 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:"
169 changes: 169 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
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`).

# ───────────────────────────────────────────────────────────────
# 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