Skip to content

Fork port - #6334

Closed
ghost wants to merge 8 commits into
mainfrom
unknown repository
Closed

ghost wants to merge 8 commits into
mainfrom
unknown repository

Conversation

@ghost

@ghost ghost commented Aug 28, 2026

Copy link
Copy Markdown

Contributor checklist

Administrative:

Commits and testing:

  • My commits are rebased on the latest main branch.
  • My commits are well-structured for review.
  • My change has been thoroughly tested, and I am not aware of any regressions to existing features or behaviors.
  • I have tested my contribution on these devices:
  • iDevice A, iOS X.Y.Z
  • iDevice B, iOS Z.Y

Description

dev added 8 commits August 28, 2026 08:42
Adds a GitHub Actions workflow that archives the Signal scheme without
code signing and packages an unsigned .ipa artifact, intended to be
re-signed off-CI with a personal certificate before installing.
Adds a centralized ForkFlags config and suppresses our own outgoing
read/viewed receipts and typing indicators while still receiving and
displaying others'. Read/viewed receipts are gated at the single
ReceiptSender.enqueueReceipt chokepoint (delivery receipts and the
incoming/display paths are untouched); typing is gated at the outgoing
send site only, so incoming typing is still shown.
When a disappearing message's timer fires, keep the row and its content
instead of deleting it. markAsExpiredAndRetain clears expiresInSeconds and
expiresAt (so the finder never re-selects it and the timer can't re-arm)
while keeping expireStartedAt > 0 as an isMarkedExpired marker -- a state
that's otherwise unreachable, so no schema change is needed. The
conversation view renders such messages normally with a grey label.
When someone deletes a message for everyone (including a group admin),
retain the original body, attachments, quote, and reactions instead of
wiping them, recording only the wasRemotelyDeleted flag. Such retained
messages render normally in the conversation and chat list with a grey
'deleted' annotation, and stay replyable/forwardable -- the component and
item-view accessors treat a retained message as non-deleted, keyed off the
annotation label the state builder sets after a tx-based content check.
Make view-once completion a no-op so an incoming view-once message is
never consumed: its attachment stays intact and the message remains
re-openable indefinitely. This single chokepoint covers the viewer, the
linked-device transcript sync, and the auto-complete path. The view-once
viewer gains a save button that writes the retained image or video to the
photo library.
Never treat the build as expired, removing the 'version expired' warning
and the associated send block.
Optionally keep processing incoming messages from blocked senders so they
are still stored and shown, instead of dropping them at the receive gate.
Switch the boolean fork toggles from let to nonisolated(unsafe) var so a
settings UI can flip them at runtime and so the -warnings-as-errors build
never sees a constant condition. Matches the codebase's existing
nonisolated(unsafe) convention.
@ghost ghost closed this Aug 28, 2026
@ghost
ghost deleted the fork-port branch August 28, 2026 00:22
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants