Skip to content

feat(files): add delete action to file explorer#4

Closed
arnestrickmann wants to merge 3935 commits into
mainfrom
arne/eng-1672-add-delete-action-for-files-and-folders-in-file-explorer
Closed

feat(files): add delete action to file explorer#4
arnestrickmann wants to merge 3935 commits into
mainfrom
arne/eng-1672-add-delete-action-for-files-and-folders-in-file-explorer

Conversation

@arnestrickmann

Copy link
Copy Markdown
Owner

Summary

  • Add a destructive Delete action to file explorer context menus for files and folders.
  • Confirm deletion before removing workspace items.
  • Forward recursive delete options through the filesystem RPC and cover local recursive folder deletion with a test.

Impact

Users can remove files or whole folders directly from the file explorer. Folder deletion removes the selected folder and its contents, updates the tree, and closes deleted file tabs across split panes.

Validation

  • corepack pnpm exec oxfmt --check src/main/core/fs/controller.ts src/main/core/fs/impl/local-fs.test.ts src/renderer/features/tasks/editor/editor-file-tree.tsx
  • corepack pnpm exec oxlint src/main/core/fs/controller.ts src/main/core/fs/impl/local-fs.test.ts src/renderer/features/tasks/editor/editor-file-tree.tsx
  • corepack pnpm exec vitest run --project node src/main/core/fs/impl/local-fs.test.ts
  • corepack pnpm run typecheck

janburzinski and others added 30 commits June 21, 2026 20:11
…me-command-for-command-code

# Conflicts:
#	packages/plugins/src/agents/impl/commandcode/index.ts
…sume-command-does-not-resume-existing-session-on
…auto-approve

feat(settings): add global auto-approve default
…smdfile

docs(agents): clarify AGENTS.md usage guidance
Davidknp and others added 28 commits June 24, 2026 16:28
feat(ui / chat-ui): improve emdash ui and add chat-ui pkg
…rovements

feat(shared): extend result types
…e-flags-check-9oz70

fix(settings): persist provider flags
SSH remote agents run in detached tmux sessions on the host. Closing a
conversation tab only detaches (preserve-on-close, PR generalaction#2281) — by design, for
resumability — but nothing ever reconciles tmux against live state, so sessions
for deleted conversations/terminals, and every session left behind by an app
restart, accumulate indefinitely. Separately, `tmux kill-session` only SIGHUPs
the pane processes: dev servers (vite/metro/expo, watchman) double-fork / setsid
and survive as port-holding orphans.

- Reconcile on SSH project mount: RemoteTmuxReaperService lists `emdash-*`
  sessions on the host and reaps the orphans — those whose leaf entity is gone
  from the DB. Scoped to the mounted project (decoded from the session name) so a
  tmux server shared by several projects/hosts is never cross-reaped, and
  lifecycle-script sessions (no DB row) are always preserved. This-project
  candidates are resolved before the DB is queried, so a shared host does not
  incur a lookup per mount when nothing here belongs to the project. Detached-
  but-still-tracked sessions are kept, so resumability is unaffected. Also covers
  the app-restart case where in-memory tracking is lost.
- killTmuxSessionTree snapshots the pane process trees before kill-session, then
  SIGKILLs the surviving setsid() descendants. Pane pids are left to kill-session
  (reaping them after they are signalled risks hitting a recycled pid). Wired
  into the explicit SSH Stop/Destroy paths and the reconciler. Reuses the
  process-tree helper from the local PTY fix (generalaction#2110).

DB-dependent reconciliation is split from the DB-free kill helpers so the SSH
providers don't transitively load the database. Adds unit tests for listing,
tree-kill ordering, the ps-unavailable fallback, session-name decoding, and
orphan selection.

Fixes generalaction#2580
…rce-monitor-loading-rp64t

feat: resource monitor loading spinner
Ssh2PtySession.write() ignored the boolean returned by ssh2's channel.write(),
so it kept writing even when the channel's send buffer was over its high-water
mark. A tmux mouse drag (mouse mode is on by default) floods SGR reports faster
than the remote can drain, which froze the panel and the remote tmux server,
requiring an app restart. See generalaction#1994.

Respect the stream contract: when write() returns false, defer further input and
flush it on the next 'drain' event, in order. The normal path (write returns
true) is unchanged. kill() drops any deferred input and detaches the drain
listener so nothing is written to a closed channel.

Fixes generalaction#1994
…root

`uploadFiles` copied attached images straight into the workspace root and
never removed them, so every paste or drop left an untracked `<uuid>-<name>`
file behind and dirtied `git status` on remote SSH projects. It affects every
agent, since the upload runs in the shared PTY layer.

Write uploads into the git-ignored `.emdash/uploads` directory (the same
runtime state dir emdash already uses for the SSH worktree pool and for
`saveAttachment`), so they no longer pollute the tracked working tree.

Fixes generalaction#2680
Addresses a Greptile review note on generalaction#2681: the uploadFiles test assigns
getTask/getWorkspaceId/get onto the shared vi.mock singletons; clear them in
afterEach so a later test still sees the empty mocks.
…session-reaper

fix(ssh): reap orphaned remote tmux sessions and their dev servers
…rite-backpressure

fix(ssh): apply write backpressure on the SSH PTY channel
…-attachments-clutter-worktree

fix(pty): write SSH image attachments into .emdash, not the worktree root
…rovements

feat(platform): add structured logger
…cli-7xgr8

fix: update qwen cli to resume correctly
…er-tab-refresh-bug-5hjwa

fix(in-app-browser): avoid duplicate navigation reload
…outer-mcp-server-8nehd

feat(mcp): add OpenRouter server
…ale-desktop-docs-scripts

chore(desktop): remove stale docs scripts
@arnestrickmann

Copy link
Copy Markdown
Owner Author

Superseded by generalaction#2691.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants