From 697f7f22c8762d44ea5aaeedd5d43cb8212458fe Mon Sep 17 00:00:00 2001 From: Jokin Date: Fri, 14 Aug 2026 13:12:05 +0200 Subject: [PATCH] Rename Copy to Send and put it first in the row context menu The main feature (copy selection to the other panel, F5) is now labeled "Send" in the toolbar button, tooltips, and context menu across all 7 locales. Internal identifiers (copyToOtherPanel, ctx-copy, i18n keys) and secondary strings (toasts, status bar, errors) are unchanged. The context-menu entry moves ahead of Open/Edit as the first row item. README, marketing site, and the Windows QA checklist updated to match. Co-Authored-By: Claude --- README.md | 6 +++--- docs/platform-notes.md | 5 +++-- site/index.html | 6 +++--- src/bun/context-menu.ts | 2 +- src/shared/i18n/de.ts | 8 ++++---- src/shared/i18n/en.ts | 8 ++++---- src/shared/i18n/es.ts | 8 ++++---- src/shared/i18n/eu.ts | 8 ++++---- src/shared/i18n/fr.ts | 8 ++++---- src/shared/i18n/ja.ts | 8 ++++---- src/shared/i18n/zh.ts | 8 ++++---- 11 files changed, 38 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index bc79918..b8155cb 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Dense reference material lives in [docs/](docs/): [architecture](docs/architectu - Dual-panel commander UI; either panel can be Local or any saved connection. - **Session tabs**: each tab is an independent left/right workspace; remote sessions stay connected and transfers keep running in background tabs. -- Per-panel action toolbar with a direction-explicit copy button, plus a +- Per-panel action toolbar with a direction-explicit send button, plus a VSCode-style status bar showing live transfer progress (click to expand the transfer queue with per-file speed and ETA). - **Overwrite confirmation** on name collisions, with a source-vs-destination @@ -42,7 +42,7 @@ Dense reference material lives in [docs/](docs/): [architecture](docs/architectu cleanup at the next start. - Browse, sort (name/size/modified, folders first), keyboard navigation. - Create folder / file, rename, delete (recursive), change permissions (chmod). -- Upload, download, and remote→remote copy — files **and** whole folders — +- Upload, download, and remote→remote send — files **and** whole folders — with a transfer queue, per-job progress, and cancel. - Connection manager: saved connections organised into folders, password or private-key auth (with passphrase). @@ -170,7 +170,7 @@ Saved connections live in a plain JSON file in the OS app-data directory `Tab` switch panel · `↑`/`↓`/`PgUp`/`PgDn`/`Home`/`End` move cursor · `Space` select · `Enter` open folder · `Backspace` parent · -`Ctrl/Cmd+A` select all · `F5` copy to other panel · `F2` rename · +`Ctrl/Cmd+A` select all · `F5` send to other panel · `F2` rename · `F7` new folder · `F8`/`Delete` delete · `Cmd/Ctrl+T` new tab · `Cmd/Ctrl+W` close tab · `Ctrl+Tab` next tab. diff --git a/docs/platform-notes.md b/docs/platform-notes.md index 9280db4..8fb2a0f 100644 --- a/docs/platform-notes.md +++ b/docs/platform-notes.md @@ -83,8 +83,9 @@ Code paths written blind (no Windows box was available); verify in order: 5. External editor: default app opens via `cmd /c start`; the Choose… picker starts in Program Files and accepts an .exe; remote temp-edit → save → auto-upload works (directory watcher on NTFS). -6. Context menus: Show in Explorer, Move to Recycle Bin (item restorable from - the bin), Copy Path; Permissions ABSENT on local rows, present on remote. +6. Context menus: Send to Other Panel is the first row item; Show in Explorer, + Move to Recycle Bin (item restorable from the bin), Copy Path; Permissions + ABSENT on local rows, present on remote. 7. Ctrl+T/W/F/S and Ctrl+digit tab jumps; tooltips read "Ctrl+…". 8. connections.json ACL: `icacls connections.json` shows only the current user after saving a connection. diff --git a/site/index.html b/site/index.html index 4797aa6..37cc29c 100644 --- a/site/index.html +++ b/site/index.html @@ -169,10 +169,10 @@

Same tool you know, only a little different

If you've ever used a two-pane file manager to move files over SFTP, you already know how to - use miniSCP. Two panels, a connection on each side, copy between them. Nothing to relearn.

+ use miniSCP. Two panels, a connection on each side, send between them. Nothing to relearn.

The difference is in the corners. Both panels are fully symmetric — either side can be - your local disk or any saved server — so a copy isn't only up or down. You can move files + your local disk or any saved server — so sending isn't only up or down. You can move files straight from one server to another, remote to remote, without staging them on your machine first.

@@ -183,7 +183,7 @@

What's different:

-

Remote → remote. Copy straight between two servers — nothing +

Remote → remote. Send straight between two servers — nothing staged on your machine.

Symmetric panels. Either side is your local disk or any saved server. Every panel is equal.

diff --git a/src/bun/context-menu.ts b/src/bun/context-menu.ts index ff9111e..fa8a0bd 100644 --- a/src/bun/context-menu.ts +++ b/src/bun/context-menu.ts @@ -95,6 +95,7 @@ export class PanelContextMenu { return items; } + items.push({ label: t("ctx.copyToOther"), action: "ctx-copy" }); if (ctx.type === "dir") { items.push({ label: t("ctx.open"), action: "ctx-open" }); } else { @@ -103,7 +104,6 @@ export class PanelContextMenu { } items.push({ label: t("ctx.edit"), action: "ctx-edit", accelerator: "e" }); } - items.push({ label: t("ctx.copyToOther"), action: "ctx-copy" }); items.push({ label: t("ctx.rename"), action: "ctx-rename" }); // chmod on Windows local files only flips the read-only bit — hide the lie if (!(ctx.isLocal && IS_WIN)) { diff --git a/src/shared/i18n/de.ts b/src/shared/i18n/de.ts index 9a90d86..5145a1c 100644 --- a/src/shared/i18n/de.ts +++ b/src/shared/i18n/de.ts @@ -78,9 +78,9 @@ export const de = { }, panel: { choosePanel: "Wählen, was dieses Panel anzeigt", - copy: "Kopieren", - copyToRight: "In rechtes Panel kopieren (F5)", - copyToLeft: "In linkes Panel kopieren (F5)", + copy: "Senden", + copyToRight: "An rechtes Panel senden (F5)", + copyToLeft: "An linkes Panel senden (F5)", edit: "Bearbeiten", editFile: "Datei bearbeiten (F4)", rename: "Umbenennen (F2)", @@ -282,7 +282,7 @@ export const de = { open: "Öffnen", openDefault: "Mit Standard-App öffnen", edit: "Bearbeiten", - copyToOther: "In anderes Panel kopieren", + copyToOther: "An anderes Panel senden", rename: "Umbenennen", permissions: "Berechtigungen", copyPath: "Pfad kopieren", diff --git a/src/shared/i18n/en.ts b/src/shared/i18n/en.ts index 3c167c8..0d32123 100644 --- a/src/shared/i18n/en.ts +++ b/src/shared/i18n/en.ts @@ -82,9 +82,9 @@ export const en = { }, panel: { choosePanel: "Choose what this panel shows", - copy: "Copy", - copyToRight: "Copy to right panel (F5)", - copyToLeft: "Copy to left panel (F5)", + copy: "Send", + copyToRight: "Send to right panel (F5)", + copyToLeft: "Send to left panel (F5)", edit: "Edit", editFile: "Edit file (F4)", rename: "Rename (F2)", @@ -286,7 +286,7 @@ export const en = { open: "Open", openDefault: "Open with the default application", edit: "Edit", - copyToOther: "Copy to Other Panel", + copyToOther: "Send to Other Panel", rename: "Rename", permissions: "Permissions", copyPath: "Copy Path", diff --git a/src/shared/i18n/es.ts b/src/shared/i18n/es.ts index 82863e3..1ff289a 100644 --- a/src/shared/i18n/es.ts +++ b/src/shared/i18n/es.ts @@ -78,9 +78,9 @@ export const es = { }, panel: { choosePanel: "Elige qué muestra este panel", - copy: "Copiar", - copyToRight: "Copiar al panel derecho (F5)", - copyToLeft: "Copiar al panel izquierdo (F5)", + copy: "Enviar", + copyToRight: "Enviar al panel derecho (F5)", + copyToLeft: "Enviar al panel izquierdo (F5)", edit: "Editar", editFile: "Editar archivo (F4)", rename: "Renombrar (F2)", @@ -282,7 +282,7 @@ export const es = { open: "Abrir", openDefault: "Abrir con la aplicación predeterminada", edit: "Editar", - copyToOther: "Copiar al otro panel", + copyToOther: "Enviar al otro panel", rename: "Renombrar", permissions: "Permisos", copyPath: "Copiar ruta", diff --git a/src/shared/i18n/eu.ts b/src/shared/i18n/eu.ts index 2b2996a..a2de41c 100644 --- a/src/shared/i18n/eu.ts +++ b/src/shared/i18n/eu.ts @@ -80,9 +80,9 @@ export const eu = { }, panel: { choosePanel: "Aukeratu panel honek zer erakusten duen", - copy: "Kopiatu", - copyToRight: "Kopiatu eskuineko panelera (F5)", - copyToLeft: "Kopiatu ezkerreko panelera (F5)", + copy: "Bidali", + copyToRight: "Bidali eskuineko panelera (F5)", + copyToLeft: "Bidali ezkerreko panelera (F5)", edit: "Editatu", editFile: "Editatu fitxategia (F4)", rename: "Berrizendatu (F2)", @@ -284,7 +284,7 @@ export const eu = { open: "Ireki", openDefault: "Ireki lehenetsitako aplikazioarekin", edit: "Editatu", - copyToOther: "Kopiatu beste panelera", + copyToOther: "Bidali beste panelera", rename: "Berrizendatu", permissions: "Baimenak", copyPath: "Kopiatu bidea", diff --git a/src/shared/i18n/fr.ts b/src/shared/i18n/fr.ts index d619bac..8dd7626 100644 --- a/src/shared/i18n/fr.ts +++ b/src/shared/i18n/fr.ts @@ -78,9 +78,9 @@ export const fr = { }, panel: { choosePanel: "Choisir ce qu'affiche ce panneau", - copy: "Copier", - copyToRight: "Copier vers le panneau droit (F5)", - copyToLeft: "Copier vers le panneau gauche (F5)", + copy: "Envoyer", + copyToRight: "Envoyer vers le panneau droit (F5)", + copyToLeft: "Envoyer vers le panneau gauche (F5)", edit: "Éditer", editFile: "Éditer le fichier (F4)", rename: "Renommer (F2)", @@ -282,7 +282,7 @@ export const fr = { open: "Ouvrir", openDefault: "Ouvrir avec l'application par défaut", edit: "Éditer", - copyToOther: "Copier vers l'autre panneau", + copyToOther: "Envoyer vers l'autre panneau", rename: "Renommer", permissions: "Autorisations", copyPath: "Copier le chemin", diff --git a/src/shared/i18n/ja.ts b/src/shared/i18n/ja.ts index 369a6a4..5339b97 100644 --- a/src/shared/i18n/ja.ts +++ b/src/shared/i18n/ja.ts @@ -79,9 +79,9 @@ export const ja = { }, panel: { choosePanel: "このパネルに表示する内容を選択", - copy: "コピー", - copyToRight: "右のパネルへコピー (F5)", - copyToLeft: "左のパネルへコピー (F5)", + copy: "送信", + copyToRight: "右のパネルへ送信 (F5)", + copyToLeft: "左のパネルへ送信 (F5)", edit: "編集", editFile: "ファイルを編集 (F4)", rename: "名前を変更 (F2)", @@ -282,7 +282,7 @@ export const ja = { open: "開く", openDefault: "既定のアプリで開く", edit: "編集", - copyToOther: "もう一方のパネルへコピー", + copyToOther: "もう一方のパネルへ送信", rename: "名前を変更", permissions: "アクセス権", copyPath: "パスをコピー", diff --git a/src/shared/i18n/zh.ts b/src/shared/i18n/zh.ts index 9f1b097..388dd14 100644 --- a/src/shared/i18n/zh.ts +++ b/src/shared/i18n/zh.ts @@ -79,9 +79,9 @@ export const zh = { }, panel: { choosePanel: "选择此面板显示的内容", - copy: "复制", - copyToRight: "复制到右侧面板 (F5)", - copyToLeft: "复制到左侧面板 (F5)", + copy: "发送", + copyToRight: "发送到右侧面板 (F5)", + copyToLeft: "发送到左侧面板 (F5)", edit: "编辑", editFile: "编辑文件 (F4)", rename: "重命名 (F2)", @@ -282,7 +282,7 @@ export const zh = { open: "打开", openDefault: "用默认应用打开", edit: "编辑", - copyToOther: "复制到另一个面板", + copyToOther: "发送到另一个面板", rename: "重命名", permissions: "权限", copyPath: "复制路径",