aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-09 10:48:49 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-09 10:48:49 +0200
commit29e93e5e553c94818cd2b4e587b0e54cfe7d8424 (patch)
tree0c4e9a7c834566c3a7abd4e4f9f085b4f29d78bc /packages/meshbay-hub/src/meshbay_hub/static/locales
parentcb43495f998015850f34829329aa4509bd55d2cb (diff)
downloadmeshbay-29e93e5e553c94818cd2b4e587b0e54cfe7d8424.tar.gz
feat(spa): pause and resume a download, in session
Stage 7a of ~/next/improve-downloads.md: pausing within a session, on the targets that can actually do it. Resuming across a reload is 7b. A paused transfer holds **nothing**. Its slot goes back to the node the moment it stops and resuming rejoins the queue at the tail, because anything else lets one member close a node by pausing four downloads and going to lunch. So the lease is taken inside the run loop rather than before it, and pause is refused outright for a transfer that could not ask for another one. Resuming is exact rather than approximate: the pipeline stops between two chunks and never inside one, so what is on disk is always a whole number of chunks and `fromChunk` is a verified position. The failure mode being avoided is a file that looks complete and is quietly corrupt. The target has to survive it, so a pause no longer reaches the `abort()` that a failure does -- that would delete Electron's `.part` or the file just created in the granted folder, leaving nothing to continue. And the in-memory fallback keeps its accumulated chunks rather than starting a second array. The button is drawn only where the target says it can. A service-worker stream says no, in its own code and for its own reasons: the browser is already writing an HTTP response into its own download folder, not feeding it stalls that download where we cannot see or resume it, and an idle worker is terminated within seconds. Firefox and Safari therefore keep cancel and get no pause, which is the decision recorded in §6.5. Cancelling a paused transfer ends it. A paused run is parked on a promise; without waking it the row said "cancelled" over work that had not stopped and a target that was still open. Six cases, each checked against the unfixed source. Hub suite 842 passed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HCGdheDLxGReuKHga3BtST
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/de.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/en.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/es.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/it.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js5
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js5
10 files changed, 50 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
index f0ec776..ae20687 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
@@ -586,6 +586,11 @@ export default {
'transfers.group_waiting': 'Wartend',
'transfers.group_finished': 'Abgeschlossen',
'transfers.cancel_one': '{name} abbrechen',
+ 'transfers.pause': 'Anhalten',
+ 'transfers.resume': 'Fortsetzen',
+ 'transfers.paused': 'Angehalten',
+ 'transfers.pause_one': '{name} anhalten',
+ 'transfers.resume_one': '{name} fortsetzen',
'transfers.eta_seconds': 'noch {n} s',
'transfers.eta_minutes': 'noch {n} Min.',
'transfers.eta_hours': 'noch {n} Std.',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
index c065b8a..7033778 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
@@ -702,6 +702,11 @@ export default {
'transfers.group_waiting': 'Waiting',
'transfers.group_finished': 'Finished',
'transfers.cancel_one': 'Cancel {name}',
+ 'transfers.pause': 'Pause',
+ 'transfers.resume': 'Resume',
+ 'transfers.paused': 'Paused',
+ 'transfers.pause_one': 'Pause {name}',
+ 'transfers.resume_one': 'Resume {name}',
'transfers.eta_seconds': '{n}s left',
'transfers.eta_minutes': '{n} min left',
'transfers.eta_hours': '{n} h left',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
index f655bc0..311ba1f 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
@@ -582,6 +582,11 @@ export default {
'transfers.group_waiting': 'En espera',
'transfers.group_finished': 'Finalizados',
'transfers.cancel_one': 'Cancelar {name}',
+ 'transfers.pause': 'Pausar',
+ 'transfers.resume': 'Reanudar',
+ 'transfers.paused': 'En pausa',
+ 'transfers.pause_one': 'Pausar {name}',
+ 'transfers.resume_one': 'Reanudar {name}',
'transfers.eta_seconds': 'quedan {n} s',
'transfers.eta_minutes': 'quedan {n} min',
'transfers.eta_hours': 'quedan {n} h',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
index e011873..106e3cd 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
@@ -585,6 +585,11 @@ export default {
'transfers.group_waiting': 'En attente',
'transfers.group_finished': 'Terminés',
'transfers.cancel_one': 'Annuler {name}',
+ 'transfers.pause': 'Suspendre',
+ 'transfers.resume': 'Reprendre',
+ 'transfers.paused': 'En pause',
+ 'transfers.pause_one': 'Suspendre {name}',
+ 'transfers.resume_one': 'Reprendre {name}',
'transfers.eta_seconds': '{n} s restantes',
'transfers.eta_minutes': '{n} min restantes',
'transfers.eta_hours': '{n} h restantes',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
index 80e3c17..a610683 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
@@ -585,6 +585,11 @@ export default {
'transfers.group_waiting': 'In attesa',
'transfers.group_finished': 'Completati',
'transfers.cancel_one': 'Annulla {name}',
+ 'transfers.pause': 'Sospendi',
+ 'transfers.resume': 'Riprendi',
+ 'transfers.paused': 'In pausa',
+ 'transfers.pause_one': 'Sospendi {name}',
+ 'transfers.resume_one': 'Riprendi {name}',
'transfers.eta_seconds': '{n} s rimanenti',
'transfers.eta_minutes': '{n} min rimanenti',
'transfers.eta_hours': '{n} h rimanenti',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
index 5dbb4fa..aed4ba0 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
@@ -577,6 +577,11 @@ export default {
'transfers.group_waiting': '待機中',
'transfers.group_finished': '完了',
'transfers.cancel_one': '{name} をキャンセル',
+ 'transfers.pause': '一時停止',
+ 'transfers.resume': '再開',
+ 'transfers.paused': '一時停止中',
+ 'transfers.pause_one': '{name} を一時停止',
+ 'transfers.resume_one': '{name} を再開',
'transfers.eta_seconds': '残り {n} 秒',
'transfers.eta_minutes': '残り {n} 分',
'transfers.eta_hours': '残り {n} 時間',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
index f9c7cf3..fe10e12 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
@@ -586,6 +586,11 @@ export default {
'transfers.group_waiting': 'Wachtend',
'transfers.group_finished': 'Voltooid',
'transfers.cancel_one': '{name} annuleren',
+ 'transfers.pause': 'Pauzeren',
+ 'transfers.resume': 'Hervatten',
+ 'transfers.paused': 'Gepauzeerd',
+ 'transfers.pause_one': '{name} pauzeren',
+ 'transfers.resume_one': '{name} hervatten',
'transfers.eta_seconds': 'nog {n} s',
'transfers.eta_minutes': 'nog {n} min',
'transfers.eta_hours': 'nog {n} u',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
index b26f3cb..c2ba35c 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
@@ -598,6 +598,11 @@ export default {
'transfers.group_waiting': 'Oczekuje',
'transfers.group_finished': 'Zakończone',
'transfers.cancel_one': 'Anuluj {name}',
+ 'transfers.pause': 'Wstrzymaj',
+ 'transfers.resume': 'Wznów',
+ 'transfers.paused': 'Wstrzymano',
+ 'transfers.pause_one': 'Wstrzymaj {name}',
+ 'transfers.resume_one': 'Wznów {name}',
'transfers.eta_seconds': 'pozostało {n} s',
'transfers.eta_minutes': 'pozostało {n} min',
'transfers.eta_hours': 'pozostało {n} godz.',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
index db5a408..83d179b 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
@@ -584,6 +584,11 @@ export default {
'transfers.group_waiting': 'Aguardando',
'transfers.group_finished': 'Concluídos',
'transfers.cancel_one': 'Cancelar {name}',
+ 'transfers.pause': 'Pausar',
+ 'transfers.resume': 'Retomar',
+ 'transfers.paused': 'Pausado',
+ 'transfers.pause_one': 'Pausar {name}',
+ 'transfers.resume_one': 'Retomar {name}',
'transfers.eta_seconds': 'faltam {n} s',
'transfers.eta_minutes': 'faltam {n} min',
'transfers.eta_hours': 'faltam {n} h',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
index ba88f4e..9acfb17 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
@@ -565,6 +565,11 @@ export default {
'transfers.group_waiting': '等待中',
'transfers.group_finished': '已完成',
'transfers.cancel_one': '取消 {name}',
+ 'transfers.pause': '暂停',
+ 'transfers.resume': '继续',
+ 'transfers.paused': '已暂停',
+ 'transfers.pause_one': '暂停 {name}',
+ 'transfers.resume_one': '继续 {name}',
'transfers.eta_seconds': '剩余 {n} 秒',
'transfers.eta_minutes': '剩余 {n} 分钟',
'transfers.eta_hours': '剩余 {n} 小时',