Add end-to-end encrypted voice messages; release v5.4.5
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s

- Record voice notes in-browser, sent over the chunked AES-GCM file-transfer
  channel (per-file session key + signed SHA-256 integrity).
- Captured as PCM and encoded to WAV for universal playback (incl. iOS/Safari);
  auto-accepted and played inline from an in-memory blob, never written to disk.
- Composer mic button with live waveform + timer; desktop shows mic + send side
  by side, mobile swaps mic to send when typing.
- CSP media-src now allows blob: so recorded/received audio can play.
- Roadmap: Desktop Edition -> 5.0, new 5.5 'Secure Voice & Calls', later
  milestones shifted; version bumped to 5.4.5.
- Update README, docs (security/API/cryptography), and CHANGELOG.
This commit is contained in:
lockbitchat
2026-07-22 00:41:58 -04:00
parent 0e3e3a2974
commit c98a01b1d5
87 changed files with 1678 additions and 164 deletions
+3 -3
View File
@@ -12345,10 +12345,10 @@ async processMessage(data) {
}
}
// Public method to send files
async sendFile(file) {
async sendFile(file, options = {}) {
// Enforce verification gate for file transfers
this._enforceVerificationGate('sendFile');
if (!this.isConnected()) {
throw new Error('Connection not ready for file transfer. Please ensure the connection is established.');
}
@@ -12371,7 +12371,7 @@ async processMessage(data) {
try {
const fileId = await this.fileTransferSystem.sendFile(file);
const fileId = await this.fileTransferSystem.sendFile(file, options);
return fileId;
} catch (error) {
this._secureLog('error', 'File transfer error:', { errorType: error?.constructor?.name || 'Unknown' });