diff --git a/PARITY.md b/PARITY.md index 0d2f2d6..712d285 100644 --- a/PARITY.md +++ b/PARITY.md @@ -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 | | History at rest | โœ… encrypted, keyed by person not device | | Session restore across restarts | โœ… credential and device both survive | -| Reactions | ๐ŸŸก codec done, no UI โ€” blocked on the transcript carrying a `mid` | -| 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` | +| Reactions | โœ… transcript carries a `mid`; long-press gives a five-emoji row, one emoji per person | +| 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 | -| 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 | | 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 | -| Reactions | ๐ŸŸก codec done, no UI | +| Search inside messages | โœ… scanned, never indexed | | 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 | | Voice notes (record + play) | โœ… AAC/MP4, tap to record, tap to send | | 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` rather than `List`. 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 From `Sources/Views/Files/*` and `Sources/Wallet/*`, both of which moved into