| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-06-19 | 2.2 kB | |
| v4.8.20 -- Secure chat tools_ completed, fixed and polished source code.tar.gz | 2026-06-19 | 22.7 MB | |
| v4.8.20 -- Secure chat tools_ completed, fixed and polished source code.zip | 2026-06-19 | 22.8 MB | |
| Totals: 3 Items | 45.6 MB | 0 | |
Completes the messaging controls introduced in v4.8.14 and fixes the bug that made them appear broken for recipients. Every per-message option travels inside the encrypted message envelope (never in the sanitized text), so message content can neither spoof nor corrupt these controls.
Features
- Code blocks — a
Codebutton sends the message as a monospace code window with lightweight syntax highlighting and a one-click Copy button; the clipboard auto-clears ~30s after copying. Enabling code mode expands the input (monospace, 8 rows). Highlighting is built from already-sanitized text via React nodes only — noinnerHTML, no remote scripts, no new XSS surface. - View-once — the sender picks how long the message stays visible after the peer opens it (5s / 15s / 30s / 1m); the recipient sees a blurred bubble, taps to reveal, then it is wiped. Cooperative (not screenshot-proof).
- Disappearing messages — a timer picker (30s / 5m / 1h) auto-deletes on both sides with a live countdown.
- Unsend (delete for everyone) — removes your message locally and asks the peer to drop it too.
- One composer toolbar next to Send files; borderless buttons with the brand-orange active state; time pickers open upward and are mobile-friendly.
Fixed
- Per-message metadata was silently dropped for recipients.
NotificationIntegrationwrappedonMessageanddeliverMessageToUIwith two-argument shims that dropped the third argument (meta). With notifications enabled, view-once, disappearing timers and unsend all failed on the receiving side. Both wrappers now forward all arguments. Addedtests/notification-meta-forwarding.test.mjs. - Chat would not open after SAS — composer props were threaded into the wrong component (
EnhancedConnectionSetupvsEnhancedChatInterface), throwingReferenceError: nowTick. Fixed.
Removed
- Panic wipe button — disconnecting already wipes keys and clears session state.
Security model unchanged: ECDH + DTLS + SAS, anti-replay, receive-side DOMPurify. Per-message metadata is whitelisted and bounded by _sanitizeMessageMeta. Full test suite: 19 files, all passing.
Live at https://securebit-chat.fly.dev/