release: v4.8.12 chat notification & file-transfer UI fixes
CodeQL Analysis / Analyze CodeQL (push) Has been cancelled
Deploy Application / deploy (push) Has been cancelled
Mirror to Codeberg / mirror (push) Has been cancelled
Mirror to PrivacyGuides / mirror (push) Has been cancelled

fix(file-transfer): announce received file once, not many times

The per-transfer lock used a single `if` check, so when 3+ chunk
operations queued on the same fileId they awaited the same in-flight
lock and then ran concurrently, breaking assembly atomicity. The lock
now loops until the slot is free (true serialization) and file assembly
is idempotent, so `File received` shows exactly once per file.

fix(verification): stop duplicate connection-setup system messages

handleVerificationBothConfirmed had no guard, so when both peers sent
verification_both_confirmed symmetrically one side ran both the local
detection path and the peer-notification path, emitting "Both parties
confirmed!" and the verified transition (and "Secure connection
established") twice. It now bails out if both confirmations are already
recorded.

fix(ui): wrap long DTLS fingerprint inside the chat bubble

The message text column is a flex child with default min-width:auto, so
the long unbroken fingerprint overflowed. Added min-w-0 so break-words
can wrap it.

chore(release): bump version to 4.8.12 in header, init banner, manifest
This commit is contained in:
lockbitchat
2026-06-17 17:51:09 -04:00
parent be1d02f1f7
commit 6f36fce8c6
14 changed files with 84 additions and 44 deletions
@@ -11460,6 +11460,14 @@ async processMessage(data) {
}
handleVerificationBothConfirmed(data) {
// Both parties can reach the "both confirmed" state independently: this
// party may have already detected it locally (_checkBothVerificationsConfirmed)
// and now also receives the peer's notification. Without this guard the
// "Both parties confirmed" message and the verified transition fire twice.
if (this.bothVerificationsConfirmed) {
return;
}
// Handle notification that both parties have confirmed
this.bothVerificationsConfirmed = true;