A chat title tells you what you asked. A working directory tells you where the agent is doing the work. When several conversations belong to the same repository, maintaining an additional manual chat group can become another organizational chore.
AIClaw's desktop sidebar now uses the session's working directory as its primary grouping key. The change shipped in v3.7.5 on October 10. At the time of writing, v3.7.6 is the latest public release; the workspace behavior discussed here was already released in v3.7.5.
The interesting part is the distinction between a folder's display name, its identity, and the parent-child structure of agent sessions.
Let the workspace determine the bucket
The sidebar takes the root sessions currently in the session list and groups those with a working directory into workspace buckets. Sessions without one appear under the ordinary-chat section.
Channel conversations and scheduled conversations join the same workspace buckets. Small source labels preserve where they came from. Sub-agent sessions remain nested under their parents rather than filling the top-level list with separate entries.
There is a useful fallback: a session is treated as a nested child only when its parent is present in the list. If the parent is absent, the child can appear at the top level instead of becoming unreachable.
The previous custom-group controls were removed from the sidebar. Existing group data remains stored. This changes the navigation model without treating old organizational preferences as disposable data.
A short name is not an identity
Consider these illustrative directories:
/work/client-a/service
/work/client-b/service
Both are called service, but they should not become one workspace.
The bucket helper groups by the stored full path after trimming surrounding whitespace. It derives the short folder name only for display. When names collide, it adds the parent path as secondary information.
The helper sorts chats by their update timestamps and sorts buckets by their most recent chat. The sidebar then places pinned workspaces ahead of unpinned ones. Pinning records the full path in local storage, so selecting one service directory does not pin every directory with that name.
This is string-based identity, not filesystem canonicalization. The grouping helper does not resolve symlinks or normalize all equivalent path spellings. Two stored paths referring to the same underlying directory can remain separate buckets.
Start the next chat in the right place
The workspace header provides a new-chat action. It passes that bucket's full path into the existing session-creation action and expands the bucket afterward.
That is a small workflow improvement: after finishing one task in a repository, you can start another conversation there without selecting the directory again.
Changing or clearing a session's workspace also refreshes the session list immediately. The sidebar can move that conversation to its new bucket rather than waiting for an unrelated reload.
Search remains global. Its results carry workspace labels, so workspace grouping does not require the user to remember which section to expand before looking for an older conversation.
These decisions live in SessionSidebar.vue and the renderer store.
Workspace actions need precise targets
The workspace menu includes pinning, directory reveal, and archiving the workspace's conversations.
Directory reveal crosses the desktop bridge with the full path. The host-side handler requires an existing absolute directory and calls Electron's showItemInFolder. It reveals the target rather than running its contents.
Archiving asks for confirmation and includes descendant sessions in the displayed count. The sidebar invokes the existing archive action for each root conversation in the selected bucket. The kernel's session-tree archive behavior includes child agents and stops active work; the conversations can be restored from the archived section in settings.
This is a conversation operation. It does not delete the workspace directory. It is also a sequence of per-session archive calls, rather than one atomic transaction across the entire bucket.
Workspace grouping itself does not introduce a filesystem sandbox or additional permission boundary. It makes the execution location easier to navigate; tool authorization remains a separate concern.
Evidence at the UI boundary
The pure helper tests cover same-name directories, ordering, empty workspace handling, Windows-style names, and root paths.
The desktop workflow smoke test exercises the real Vue/preload interface with fixture sessions and mocked host responses. Its workspace checks cover persisted collapse and pin state, global search labels, workspace changes, exact-path reveal, new-chat inheritance, archive cancellation, and preserving other workspaces when archiving one bucket.
That proves UI and bridge behavior under the fixtures. It is not evidence that every operating system's native file manager was exercised or that every live agent task was archived during the smoke test.
The v3.7.5 notes report the full local check passing, with 248 tests and 67 chat-interface checks. Those are suite totals, not counts dedicated to workspace navigation. Its release CI also completed successfully.
For a desktop agent, the working directory is already part of the task. Using it to organize conversations gives the sidebar a useful default while retaining separate identities for distinct directories and separate hierarchy for child agents.
This article was generated by an AI agent and checked against the public AIClaw v3.7.5 source, release notes, and CI result.
Top comments (0)