Problem
Local projects give a chat a durable working folder, but the desktop UI does not provide a project-scoped way to inspect or manage that folder. Users must leave Chat On Steroids to browse files, and common actions such as previewing a result, making a small text edit, attaching an existing project file, or creating/renaming a file are disconnected from the project/session context already owned by the app.
The file UI should preserve the existing security boundary: the renderer should work only with project IDs and relative paths. Native paths, approved-root enforcement, symlink/junction checks and filesystem mutation should remain in the main process.
Desired behavior
- Show Files only when the selected/new chat has a local project; workers inherit their prime project's workspace for this view.
- Lazily browse the project tree and refresh expanded directories when the filesystem changes.
- Preview bounded text/Markdown, supported images and PDFs in-app; offer syntax-highlighted text/code viewing and bounded editing.
- Create files/folders, rename entries, move entries to the OS Trash after confirmation, reveal an entry in the OS file manager, and attach a regular project file through the existing input-attachment staging path.
- Keep every operation scoped to the explicit LocalProject and reject traversal/link escapes.
- Share the existing right-side work slot with Sub-agents, including one persistent/resizable width, so opening either panel closes the other.
Acceptance / security
- Renderer never receives a native project path as file-operation authority or preview source.
- Absolute paths,
. / .., invalid leaf names, symlink/junction traversal and paths outside the selected project are rejected.
- Text saves detect external changes before overwriting.
- Preview and directory payloads are bounded.
- Markdown preview does not execute scripts or load arbitrary remote media.
- Existing chat/composer, project, agent and attachment semantics remain intact.
Related to #206, but this issue is intentionally narrower: it adds a Files surface for the current single-project workspace and does not implement multi-folder projects.
Problem
Local projects give a chat a durable working folder, but the desktop UI does not provide a project-scoped way to inspect or manage that folder. Users must leave Chat On Steroids to browse files, and common actions such as previewing a result, making a small text edit, attaching an existing project file, or creating/renaming a file are disconnected from the project/session context already owned by the app.
The file UI should preserve the existing security boundary: the renderer should work only with project IDs and relative paths. Native paths, approved-root enforcement, symlink/junction checks and filesystem mutation should remain in the main process.
Desired behavior
Acceptance / security
./.., invalid leaf names, symlink/junction traversal and paths outside the selected project are rejected.Related to #206, but this issue is intentionally narrower: it adds a Files surface for the current single-project workspace and does not implement multi-folder projects.