feat(files): add delete action to file explorer#4
Closed
arnestrickmann wants to merge 3935 commits into
Closed
Conversation
…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
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
Owner
Author
|
Superseded by generalaction#2691. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
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.tsxcorepack 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.tsxcorepack pnpm exec vitest run --project node src/main/core/fs/impl/local-fs.test.tscorepack pnpm run typecheck