feat(25-04): wire ChatCodeFilePreview into ChatFilePreview and mark FILE-07 FILE-13 Complete

- Add code category branch in ChatFilePreview routing to ChatCodeFilePreview
- Mark FILE-07 (one-click download) as Complete in REQUIREMENTS.md
- Mark FILE-13 (cross-device access) as Complete in REQUIREMENTS.md
- Update Traceability table for FILE-07 and FILE-13
This commit is contained in:
Nexus Dev 2026-04-02 00:03:03 +00:00
parent 03df062bec
commit 324551538b
2 changed files with 10 additions and 5 deletions

View file

@ -89,13 +89,13 @@
- [x] **FILE-04** — Dual scoping: a file uploaded during a project-linked conversation lives in `files/projects/<slug>/` but is also referenced by the chat message; a file in a general chat (no project context) lives in `files/chat/<conversation-id>/`
- [x] **FILE-05** — File upload from chat input via drag-and-drop or button; file is stored on disk and its metadata is written to libSQL
- [x] **FILE-06** — Inline file preview in chat: images render inline, PDFs show a first-page preview, code files show a syntax-highlighted preview
- [ ] **FILE-07** — One-click file download from chat for any attached or generated file
- [x] **FILE-07** — One-click file download from chat for any attached or generated file
- [ ] **FILE-08** — Agent-generated files (code output, specs, presentations) stored in `files/projects/<slug>/generated/`, linked to the originating task and conversation in libSQL
- [ ] **FILE-09** — Git integration: `files/` is a git repository; every file operation (upload, generate, replace, delete) creates a commit with a descriptive message
- [ ] **FILE-10** — Version history: user can view the git log for any file and see its change history
- [ ] **FILE-11** — Placeholder asset tracking: Nexus auto-maintains a `PLACEHOLDERS.md` manifest in each project directory; when a placeholder is replaced by a final asset, the manifest and DB are updated with the replacement chain
- [x] **FILE-12** — File scope promotion: a chat-scoped file can be promoted to a project scope; a project file can be referenced in any chat conversation
- [ ] **FILE-13** — Cross-device file access: files are served via the Nexus server API so a file uploaded on one device is accessible on any other device on the network
- [x] **FILE-13** — Cross-device file access: files are served via the Nexus server API so a file uploaded on one device is accessible on any other device on the network
---
@ -174,10 +174,10 @@ The following are explicitly deferred:
| FILE-04 | Phase 25 | Complete |
| FILE-05 | Phase 25 | Complete |
| FILE-06 | Phase 25 | Complete |
| FILE-07 | Phase 25 | Pending |
| FILE-07 | Phase 25 | Complete |
| FILE-08 | Phase 25 | Pending |
| FILE-09 | Phase 25 | Pending |
| FILE-10 | Phase 25 | Pending |
| FILE-11 | Phase 25 | Pending |
| FILE-12 | Phase 25 | Complete |
| FILE-13 | Phase 25 | Pending |
| FILE-13 | Phase 25 | Complete |

View file

@ -1,4 +1,5 @@
import { ChatFileCard } from "./ChatFileCard";
import { ChatCodeFilePreview } from "./ChatCodeFilePreview";
import type { ChatFile } from "@paperclipai/shared";
interface ChatFilePreviewProps {
@ -24,6 +25,10 @@ export function ChatFilePreview({ file, contentPath }: ChatFilePreviewProps) {
);
}
// For all non-image types (code, document, other): render the file card with download
if (file.category === "code") {
return <ChatCodeFilePreview file={file} contentPath={contentPath} />;
}
// For all non-image, non-code types (document, other): render the file card with download
return <ChatFileCard file={file} contentPath={contentPath} />;
}