PARITY: record the Android revert and what came back
This commit is contained in:
@@ -93,16 +93,16 @@ From `E2E/E2EInbox.swift`, which is the real feature list.
|
|||||||
| Multi-device fan-out | ✅ one envelope per device, partial delivery reported |
|
| Multi-device fan-out | ✅ one envelope per device, partial delivery reported |
|
||||||
| History at rest | ✅ encrypted, keyed by person not device |
|
| History at rest | ✅ encrypted, keyed by person not device |
|
||||||
| Session restore across restarts | ✅ credential and device both survive |
|
| Session restore across restarts | ✅ credential and device both survive |
|
||||||
| Reactions | 🟡 codec done, no UI — blocked on the transcript carrying a `mid` |
|
| Reactions | ✅ transcript carries a `mid`; long-press gives a five-emoji row, one emoji per person |
|
||||||
| Edit a sent message (§6.15) | 🟡 codec done, in progress — an inbound edit is recognised and not drawn as a duplicate bubble; applying it needs the same `mid` |
|
| Edit a sent message (§6.15) | 🟡 codec back, and the `mid` it was blocked on now exists — applying an inbound edit and offering the control are UI work |
|
||||||
| Drafts that survive a relaunch | ✅ sealed in the vault, not SharedPreferences |
|
| Drafts that survive a relaunch | ✅ sealed in the vault, not SharedPreferences |
|
||||||
| Forwarding (§6.16) | 🟡 codec done, in progress — an inbound forward is recognised and shown as one; originating needs #10 |
|
| Forwarding (§6.16) | 🟡 codec back; originating needs the UI |
|
||||||
| Group message ids and quotes (§6.9) | ✅ transcript stores both; sent and queued copies share one id |
|
| Group message ids and quotes (§6.9) | ✅ transcript stores both; sent and queued copies share one id |
|
||||||
| Mentions (§6.18) | ✅ codec, an `@` picker in the group composer, and ids recorded at pick time rather than re-derived from the text |
|
| Mentions (§6.18) | ✅ codec, an `@` picker in the group composer, and ids recorded at pick time rather than re-derived from the text |
|
||||||
| Per-message timers (§6.17) | ✅ combining rule and per-message pruning; composer control in progress |
|
| Per-message timers (§6.17) | ✅ combining rule and per-message pruning; composer control in progress |
|
||||||
| Reactions | 🟡 codec done, no UI |
|
| Search inside messages | ✅ scanned, never indexed |
|
||||||
| Search inside messages | ✅ scanned, never indexed — no plaintext index at rest |
|
| Search inside messages | ✅ scanned, never indexed — no plaintext index at rest |
|
||||||
| Pinned message (§6.19) | 🟡 codec done, in progress — an inbound pin is recognised and not drawn as an empty bubble |
|
| Pinned message (§6.19) | 🟡 codec back; the banner and the control are UI work |
|
||||||
| Photos | ✅ send via the system picker, render inline |
|
| Photos | ✅ send via the system picker, render inline |
|
||||||
| Voice notes (record + play) | ✅ AAC/MP4, tap to record, tap to send |
|
| Voice notes (record + play) | ✅ AAC/MP4, tap to record, tap to send |
|
||||||
| Stories, and seen-state | ✅ sent per-contact, expired bytes deleted |
|
| Stories, and seen-state | ✅ sent per-contact, expired bytes deleted |
|
||||||
@@ -150,6 +150,30 @@ emulator.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## The 2 September revert
|
||||||
|
|
||||||
|
Twenty-five Android merge requests landed that evening and `aebf41e`
|
||||||
|
reverted all of them — 5,016 lines across 41 files — for the same reason iOS
|
||||||
|
was reverted an hour earlier: the branches had never existed together, and
|
||||||
|
resolving them mechanically produced code that compiled and passed while
|
||||||
|
being wrong.
|
||||||
|
|
||||||
|
**All twenty-five are back**, reinstated one at a time on
|
||||||
|
`feat/files-and-wallet-parity`, each built and tested before the next was
|
||||||
|
started. Six of them could not be cherry-picked at all: the originals were cut
|
||||||
|
from a tree whose story features looked different from the versions rebuilt in
|
||||||
|
the meantime, so applying them whole would have left two implementations of
|
||||||
|
mute, text stories and story replies under different names — no compile error,
|
||||||
|
and exactly the kind of divergence that rots. Those were taken by hand, feature
|
||||||
|
by feature.
|
||||||
|
|
||||||
|
⚠️ One deliberate divergence from the originals: the mention wire key stays
|
||||||
|
`men`, not `ment`, and mentions are `List<Int>` rather than `List<Long>`. That
|
||||||
|
is what the iOS engine speaks and what the two were verified interoperating on;
|
||||||
|
switching to match the reverted commits would have broken iOS silently.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Files and Wallet
|
## Files and Wallet
|
||||||
|
|
||||||
From `Sources/Views/Files/*` and `Sources/Wallet/*`, both of which moved into
|
From `Sources/Views/Files/*` and `Sources/Wallet/*`, both of which moved into
|
||||||
|
|||||||
Reference in New Issue
Block a user