You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4bf1b7f
Browse filesBrowse the repository at this point in the historyBrowse files
feat(commands): context-menu operations, registry commands, Help menu; fixes
File context menu gains Copy / Move / Pack to Archive; the pane menu
gains Paste and Refresh, and "Open in Default App" is relabelled Reveal
in File Manager. directory_properties and open_config_file become
registry commands (palette, bindable, newt cmd). macOS gets a Help menu
with Documentation. Palette disambiguation: "Back (History)…" /
"Forward (History)…", distinct short names for send_to_terminal and
focus_terminal, focus commands moved to the Terminal category.
Fixes riding along: saving or deleting a connection refuses to proceed
when connections.toml exists but fails to parse, instead of treating it
as empty and writing back a one-entry list; the preferences watcher
compares resolved bindings and commands by value, so an in-place edit
of a [[bind]] entry reloads; the file server validates a remote object's
Content-Type before using it as a header; the drag ghost is built from
DOM nodes rather than innerHTML.
Copy file name to clipboardExpand all lines: FEATURE_DUMP.md
+7-3Lines changed: 7 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,7 +73,7 @@ Zoom is applied via the webview zoom factor and persisted app-wide in the runtim
73
73
-**Close Window** (Mod+Shift+W): Closes the current window. Shifted (gnome-terminal convention) so a session window can't be closed on a stray Mod+W. Viewer/editor children can't outlive the session they were spawned from, so closing a main window takes them along: a Rust-side `CloseRequested` interceptor (covers the command, the menu item, and the OS close button alike) closes viewer children outright and sweeps editor children — dirty ones prompt, the window close resumes once the last child editor is gone, and refusing a prompt aborts the close.
74
74
-**Quit Newt** (Mod+Q): Closes all main windows, exiting the app. Open editor windows are swept first so their unsaved-changes prompts fire: the quit waits (event-driven, via the `Destroyed` handler) for the last editor to close before the main windows go, and refusing any editor's prompt aborts the quit (`cancel_quit`), leaving all remaining windows open. Pre-warmed hidden editors are exempt from the sweep. OS-initiated termination (macOS Dock quit, logout) goes through the same sweep via an `applicationShouldTerminate:` method injected into tao's app delegate at runtime (`terminate_guard` in `main.rs` — tao doesn't implement the selector and `RunEvent::ExitRequested` never fires for OS termination, see tauri#9198): a dirty editor cancels the termination and runs the sweep, a clean app terminates immediately so it never blocks logout. Editor dirty state is mirrored to Rust for this via `set_editor_dirty`. The `ExitRequested { code: None }` handler remains as a safety net for the all-windows-closed path.
75
75
-**Reload Window**: Available in the Debug dialog (debug builds only).
76
-
-**Refresh File List** (Mod+R): Force-refreshes the active pane's directory listing.
76
+
-**Refresh File List** (unbound by default — `mod+r` would be Quick Connect's Ctrl+R on Windows/Linux; palette, pane context menu): Force-refreshes the active pane's directory listing.
77
77
78
78
Multiple main windows coexist in the same process: "New Window", remote connections, and elevated sessions all create additional windows within the running app. Each window has its own independent session, panes, terminals, and operations; closing the last main window exits the app.
79
79
@@ -85,6 +85,7 @@ Main windows carry a minimal native menu on macOS (Windows/Linux main windows ha
85
85
-**File**: New Window, Connect to Remote Host…, Close Window.
86
86
-**Edit**: predefined Cut/Copy/Paste/Select All (required so macOS routes Cmd+C/V/X/A to the webview — previously the sole content of the main-window menu).
87
87
-**Window**: predefined Minimize, Zoom.
88
+
-**Help**: Newt Documentation (`documentation`).
88
89
89
90
Viewer and editor windows prepend an app submenu with Quit Newt (Cmd+Q) on macOS, so quit works whichever window is focused.
90
91
@@ -276,6 +277,7 @@ The default browser context menu is suppressed in the main window (but not in th
| Windows Menu | Shift+RClick (Windows host + host-local files only) |
297
301
298
302
**Windows shell context menu** (Windows host, host-local files): the trailing "Windows Menu" item — or Shift+right-click to skip our menu entirely — pops the classic `IContextMenu` shell menu (not the Windows 11 abbreviated one) for the effective selection; on empty space (or the `..` row) it targets the current directory itself. Implementation (`main_window/shell_menu.rs`, `shell_context_menu` command): runs synchronously on the main thread (`TrackPopupMenuEx` pumps its own modal loop), `SHParseDisplayName` on de-verbatimed paths (`launch_cwd`) → parent `IShellFolder::GetUIObjectOf` → `QueryContextMenu` → `TrackPopupMenuEx(TPM_RETURNCMD)` → `InvokeCommand`, with the Tauri window temporarily subclassed to forward `WM_INITMENUPOPUP`/`WM_DRAWITEM`/`WM_MEASUREITEM`/`WM_MENUCHAR` to `IContextMenu2/3` so dynamic submenus ("Open with", "Send to") populate. User-cancelled verbs (`ERROR_CANCELLED`) are not errors; shell-side mutations (delete, rename, …) reach the pane through the directory watcher. In **elevated sessions** the menu is still built and invoked by the non-elevated UI process — items the desktop user can't read (e.g. `C:\Windows\System32\config\*`) fail at `SHParseDisplayName` with an error, and any verb that did run would run non-elevated. Deliberate: an agent-side menu (feasible for the UAC transport, which shares the interactive desktop) would invoke *every* verb elevated — "Open"/"Open with" silently spawning admin-token processes — which is why Explorer refuses to run elevated too. Power users who need shell verbs on admin-only files can just run `newt.exe` itself elevated.
0 commit comments