v0.0.16: clickable file download link instead of auto-download

Files now appear as a styled clickable link in chat:
📎 filename.pdf (1.6 KB) from sender
Click to download. No auto-save dialog.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-03-27 18:17:33 +04:00
parent ebaf5df671
commit f4eac7b2aa
3 changed files with 13 additions and 15 deletions

10
warzone/Cargo.lock generated
View File

@@ -2789,7 +2789,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-client" name = "warzone-client"
version = "0.0.15" version = "0.0.16"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"argon2", "argon2",
@@ -2822,7 +2822,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-mule" name = "warzone-mule"
version = "0.0.15" version = "0.0.16"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@@ -2831,7 +2831,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-protocol" name = "warzone-protocol"
version = "0.0.15" version = "0.0.16"
dependencies = [ dependencies = [
"base64", "base64",
"bincode", "bincode",
@@ -2856,7 +2856,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-server" name = "warzone-server"
version = "0.0.15" version = "0.0.16"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"axum", "axum",
@@ -2883,7 +2883,7 @@ dependencies = [
[[package]] [[package]]
name = "warzone-wasm" name = "warzone-wasm"
version = "0.0.15" version = "0.0.16"
dependencies = [ dependencies = [
"base64", "base64",
"bincode", "bincode",

View File

@@ -9,7 +9,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.0.15" version = "0.0.16"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
rust-version = "1.75" rust-version = "1.75"

View File

@@ -237,7 +237,7 @@ let pollTimer = null;
let ws = null; // WebSocket connection let ws = null; // WebSocket connection
let wasmReady = false; let wasmReady = false;
const VERSION = '0.0.15'; const VERSION = '0.0.16';
let DEBUG = true; // toggle with /debug command let DEBUG = true; // toggle with /debug command
// ── Receipt tracking ── // ── Receipt tracking ──
@@ -641,16 +641,14 @@ function handleFileChunk(result) {
offset += c.length; offset += c.length;
} }
// Trigger download // Show clickable download link
const blob = new Blob([assembled]); const blob = new Blob([assembled]);
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
const a = document.createElement('a'); const d = document.createElement('div');
a.href = url; d.className = 'msg';
a.download = pf.filename; d.innerHTML = '<span class="ts">' + ts() + '</span> &#128206; <a href="' + url + '" download="' + esc(pf.filename) + '" style="color:#67c7eb;background:#0f3460;padding:4px 10px;border-radius:4px;text-decoration:none">' + esc(pf.filename) + ' (' + formatSize(assembled.length) + ')</a> from ' + esc(pf.sender.slice(0,12));
a.click(); $messages.appendChild(d);
URL.revokeObjectURL(url); $messages.scrollTop = $messages.scrollHeight;
addSys('File "' + pf.filename + '" downloaded (' + formatSize(assembled.length) + ')');
delete pendingFiles[result.id]; delete pendingFiles[result.id];
} }
} }