Agents can return multiple commands with the same name (e.g.,
claude-api). Using command.name as React key caused DOM elements
to persist with stale content when the filtered list changed.
On Unix, use detached process groups with process.kill(-pid).
On Windows, skip detached (avoids console window) and use
taskkill /T /F for tree kill instead.
Spawn agent processes with detached: true to create a process group,
then use process.kill(-pid) to terminate the entire tree on disconnect.
Also add disconnect cleanup to onunload for plugin disable scenarios.
Clicking markdown links with absolute filesystem paths in agent
responses would create a folder tree in the vault root. Now decodes
URL-encoded paths and strips the vault prefix before passing to
openLinkText. Absolute paths outside the vault are ignored.
Separate agentCwd from vaultPath so the agent's working directory
can differ from the vault root. Add ChangeDirectoryModal with text
input and native folder picker (Electron dialog API). Both sidebar
and floating More menus get the new menu item.
Also adds a cwd banner below the header when working outside vault,
and syncs agentCwd on session restore/fork from history.
Introduce agentCwd variable to distinguish the agent's working
directory from the vault root path. Currently agentCwd = vaultPath,
but this separation prepares for future features like
"New chat in directory..." where they may differ.
Notify users via OS system notifications when the agent finishes
responding or requests permission, so they can switch back from
other apps. Notifications are suppressed while Obsidian is focused.
Enabled by default, configurable in settings under Notifications.
Stop force-opening sidebar when approve/reject permission or
toggle-auto-mention commands are invoked. These now follow the
same event-only pattern as new-chat, cancel, and export commands.
BREAKING CHANGE: Command IDs renamed — users must re-bind hotkeys.
- open-floating-chat → open-floating-chat-view
- open-new-floating-chat → open-new-floating-chat-view
- minimize-floating-chat → minimize-floating-chat-view
- close-floating-chat → close-floating-chat-view
- open-chat-with-{id} → switch-agent-to-{id}
Also unify new-chat-requested event to use targetViewId pattern,
matching all other workspace events. Agent switch commands now
work on the last active view (sidebar or floating) instead of
forcing sidebar activation.
Move New chat, Session history, Export, Open new floating chat, and
Restart agent from individual header buttons into a single More menu.
The floating header now shows only the agent dropdown, More button,
Minimize, and Close — reducing visual clutter while keeping all
actions accessible.
Add pencil icon to session history items that opens an EditTitleModal
for renaming sessions. The title is persisted locally via saveSession
with optimistic update and rollback on error. For agent-only sessions,
the original session cwd is preserved (not the current vault path).