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
Drag&drop: Multi-type pasteboard, terminals now accept drops
- New `native_drag.rs` builds `NSPasteboardItem`s vending `public.file-url`,
`public.utf8-plain-text` (joined paths on item 0), and `NSFilenamesPboardType`
(legacy, for stock wry until tauri-apps/wry#1723 ships)
- Permissive op mask (Copy|Link|Generic|Move) so terminals like Warp accept
the drop instead of rejecting it; macOS arbitrates the actual op via
modifier keys natively
- Drops `drag` + `tauri-plugin-drag` Rust deps and `@crabnebula/tauri-plugin-drag`
JS dep; both drag-out paths (single-file and multi-file selection) now route
through `native_drag.rs` via `start_drag_paths` / `start_selection_drag`
- Removes the `mode` parameter from drag IPC end-to-end — modifier handling
belongs in the OS, not at drag-start
Copy file name to clipboardExpand all lines: apps/desktop/src-tauri/src/commands/CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -68,7 +68,7 @@ The frontend has matching TypeScript types in `$lib/tauri-commands/ipc-types.ts`
68
68
-**AI commands** are registered directly from `ai::manager` and `ai::suggestions` — there is no `commands/ai.rs` file.
69
69
-**Platform gates.**`volumes` is macOS-only; `mtp` and `network` are macOS+Linux; `volumes_linux` is Linux-only. Individual functions also use `#[cfg]` where behaviour differs (e.g., `sync_status`).
70
70
-**`delete_files` and `rename_file` accept `volume_id`.** When set to a non-root volume, `delete_files` routes to the volume-aware delete path and skips local `validate_sources` (MTP virtual paths fail `symlink_metadata`). `rename_file` passes `volume_id` through for MTP rename support; permission checks are skipped for non-root volumes.
71
-
-**`start_selection_drag`**requires the main thread. It uses `app.run_on_main_thread()` plus a `std::sync::mpsc` channel to return the result synchronously.
71
+
-**`start_selection_drag` and `start_drag_paths`**require the main thread. Both delegate to a shared `run_drag_on_main_thread` helper that hops via `app.run_on_main_thread()` plus a `std::sync::mpsc` channel and returns the result synchronously. Pasteboard construction lives in `crate::native_drag` (file-URL + shell-escaped text per item).
72
72
-**`list_shares_with_credentials`** has `#[allow(clippy::too_many_arguments)]` because Tauri command parameters must be top-level arguments — no struct bundling.
73
73
-**`set_menu_context` and Close tab (⌘W).** When the main window loses focus, `set_menu_context("other")` disables all
74
74
non-App menu items — but `CLOSE_TAB_ID` is explicitly excluded. On macOS, ⌘W means "close the front window," and the
0 commit comments