Commit graph

2012 commits

Author SHA1 Message Date
Nexus Dev
4dfd2f6e8d docs(26): UI design contract for PWA & Performance phase
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
dd217cfa48 docs(26): auto-generated context (discuss skipped) 2026-04-02 15:08:51 +00:00
Nexus Dev
ca0614da26 docs(phase-25): evolve PROJECT.md after phase completion 2026-04-02 15:08:51 +00:00
Nexus Dev
8661543b80 docs(phase-25): complete phase execution 2026-04-02 15:08:51 +00:00
Nexus Dev
eb5d9b646f test(25): persist human verification items as UAT
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
3b3bdc2b39 feat(25-06): merge git file service and history endpoint from worktree
Adds gitFileService with commitFile/getLog, wires git commits into
upload flow, adds GET /files/:fileId/history endpoint, and exports
ChatFileHistoryEntry type.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
23b801db21 docs(25-07): complete agent-generated file support and placeholder tracking plan — SUMMARY, STATE, ROADMAP updated 2026-04-02 15:08:51 +00:00
Nexus Dev
73859ab014 feat(25-07): add placeholder and agent-generated file routes
- Import placeholderService and resolveDefaultStorageDir in chat-files routes
- Track agent_generated project-scoped uploads in PLACEHOLDERS.md manifest
- Add POST /files/:fileId/replace endpoint for placeholder replacement
- Replace endpoint updates manifest and creates cross-reference chain
- Mark FILE-08 and FILE-11 Complete in REQUIREMENTS.md
2026-04-02 15:08:51 +00:00
Nexus Dev
2cafff8054 feat(25-07): create placeholderService and add markAsPlaceholder method
- Create server/src/services/placeholder-service.ts with addEntry, replaceEntry, listEntries
- Generates PLACEHOLDERS.md with Active Placeholders and Replaced markdown tables
- Add ChatPlaceholderEntry interface to packages/shared/src/types/chat.ts
- Export ChatPlaceholderEntry from packages/shared/src/index.ts
- Add markAsPlaceholder method to chatFileService in chat-files.ts
2026-04-02 15:08:51 +00:00
Nexus Dev
e9f5897eec docs(25-06): add self-check results to SUMMARY.md 2026-04-02 15:08:51 +00:00
Nexus Dev
a1c6fd157e docs(25-06): complete git file versioning plan — SUMMARY, STATE, ROADMAP updated
- gitFileService with ensureRepo/commitFile/getLog using safe execFile
- GET /files/:fileId/history endpoint for git version history
- FILE-09 and FILE-10 marked Complete
2026-04-02 15:08:51 +00:00
Nexus Dev
3721db0cea docs(25-04): complete syntax-highlighted code preview plan — SUMMARY, STATE, ROADMAP updated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
b6bb7b2196 chore(25-06): mark FILE-09 and FILE-10 complete in REQUIREMENTS.md
- FILE-09: git commit on every file operation — implemented via gitFileService
- FILE-10: version history endpoint — implemented via GET /files/:fileId/history
2026-04-02 15:08:51 +00:00
Nexus Dev
9723482b12 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
2026-04-02 15:08:51 +00:00
Nexus Dev
ff3aa8793d feat(25-04): create ChatCodeFilePreview with syntax highlighting
- Add ChatCodeFilePreview component with hljs syntax highlighting
- Fetch file content from contentPath with credentials
- Use DOMParser-based safe rendering (no dangerouslySetInnerHTML)
- Include copy button, language label, and ChatFileCard download below
- Add extToLang extension-to-language mapping
- Register 14 common languages with hljs
- Add highlight.js as direct dependency in ui/package.json
2026-04-02 15:08:51 +00:00
Nexus Dev
51eaf33c9e docs(25-05): complete file scope promotion plan — SUMMARY, STATE, ROADMAP, REQUIREMENTS updated 2026-04-02 15:08:51 +00:00
Nexus Dev
4795260aca docs(25-08): complete voice input plan — VoiceRecordButton, transcription endpoint, INPUT-02/03/04 complete 2026-04-02 15:08:51 +00:00
Nexus Dev
4142aa1591 feat(25-05): mark FILE-12 Complete in REQUIREMENTS.md 2026-04-02 15:08:51 +00:00
Nexus Dev
bb11e8fece feat(25-08): wire VoiceRecordButton into ChatInput and mark INPUT-02/03/04 complete
- Add enableVoiceInput prop to ChatInput props interface
- Add handleTranscription callback that appends transcription text to textarea state
- Render VoiceRecordButton conditionally when enableVoiceInput is true
- Pass enableVoiceInput={true} from ChatPanel to ChatInput
- Mark INPUT-02, INPUT-03, INPUT-04 as Complete in REQUIREMENTS.md traceability table
2026-04-02 15:08:51 +00:00
Nexus Dev
f2f15aa9ad feat(25-08): create VoiceRecordButton and server transcription endpoint
- Add VoiceRecordButton with MediaRecorder API, recording/transcribing/idle states
- Add POST /transcribe endpoint to chat-files.ts using execFileAsync (safe, no shell)
- Tries whisper-cpp first, falls back to openai-whisper Python CLI
- Returns 503 with helpful message if whisper is not installed
2026-04-02 15:08:51 +00:00
Nexus Dev
0766f614db docs(25-08): fix voice input wiring — add ChatPanel enableVoiceInput prop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
00e61f1311 docs(25-file-system): create gap closure plans 04-08 2026-04-02 15:08:51 +00:00
Nexus Dev
41f1880a29 fix(25): handle missing chat_files table in listMessages and update addMessage test
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
f2ad8bada5 docs(25-03): complete file preview and flow wiring plan — SUMMARY, STATE, ROADMAP updated 2026-04-02 15:08:51 +00:00
Nexus Dev
35a7814032 feat(25-03): wire files into ChatMessage, ChatPanel, and server listMessages
- ChatMessage: files prop, renders ChatFilePreview for each attached file
- ChatMessageList: passes files prop through to ChatMessage
- ChatPanel: wires useChatFileUpload, passes pendingFiles/onRemoveFile/onFilesPicked to ChatInput
- ChatPanel handleSend: attaches uploaded files to message after creation, invalidates query
- chatApi: adds attachFilesToMessage (parallel PATCH /files/:fileId for each fileId)
- server/chat.ts: listMessages fetches chatFiles by messageId (inArray), attaches files array
- server/chat.ts: addMessage returns files: [] for consistency
2026-04-02 15:08:51 +00:00
Nexus Dev
3e13ac88dc feat(25-03): create ChatFilePreview and ChatFileCard components
- ChatFileCard: icon, filename, size, download button with theme-aware bg-muted styling
- ChatFilePreview: inline image rendering with constrained max-h-[300px], ChatFileCard for all other types
- formatFileSize helper (B, KB, MB)
- lucide icons: ImageIcon, FileCode, FileText, File per category
2026-04-02 15:08:51 +00:00
Nexus Dev
261db60d1d docs(25-01): complete chatFileService and chatFileRoutes plan — SUMMARY, STATE, ROADMAP updated 2026-04-02 15:08:51 +00:00
Nexus Dev
5483991d38 feat(25-01): create chatFileRoutes and wire into app.ts
- Create chatFileRoutes with upload, list, content, references, attach endpoints
- Wire into app.ts after assetRoutes, export from routes/index.ts
- Real tests replacing todo stubs in chat-file-routes.test.ts
2026-04-02 15:08:51 +00:00
Nexus Dev
ae7f80e965 docs(25-02): complete file upload UI plan — ChatFileDropZone, useChatFileUpload, ChatInput wired
- SUMMARY.md documents XHR progress pattern and backward-compatible props
- STATE.md advanced to plan 2, decisions logged, metrics recorded
- ROADMAP.md updated with 2/4 summaries complete for phase 25
- REQUIREMENTS.md marks FILE-05 complete
2026-04-02 15:08:51 +00:00
Nexus Dev
0592af9e4b feat(25-02): create ChatFileDropZone and integrate into ChatInput
- Create ChatFileDropZone component with drag-and-drop state and overlay
- Add onFilesPicked/pendingFiles/onRemoveFile props to ChatInput
- Wrap form in ChatFileDropZone for drag-and-drop support
- Add handlePaste for clipboard image paste (clipboardData.files)
- Add Paperclip icon button with hidden file input for file picker
- Show pending file chips above textarea with progress and remove button
- Add tests: renders file attach button, calls onFilesPicked, shows pending chips
2026-04-02 15:08:51 +00:00
Nexus Dev
db4eb801d3 feat(25-01): create chatFileService with DB operations and deriveCategory helper
- Implement chatFileService(db) with create, getById, listByConversation, listByMessage, createReference, listReferences, attachToMessage
- Export deriveCategory() helper mapping MIME types to image/code/document/other
- Add unit tests verifying service methods and category derivation with mocked DB
2026-04-02 15:08:51 +00:00
Nexus Dev
81f25d3546 feat(25-02): add chatApi.uploadFile and useChatFileUpload hook
- Add uploadFile method to chatApi using XHR for progress tracking
- Add ChatFileUploadResponse to shared type imports
- Create useChatFileUpload hook with PendingFile lifecycle management
- Hook manages uploading/done/error states with progress callbacks
2026-04-02 15:08:51 +00:00
Nexus Dev
0cc655d792 docs(25-00): complete file system foundation plan — schema, types, validators, test stubs
- Create 25-00-SUMMARY.md with full plan documentation
- Update STATE.md: advance to plan 2/4, record metrics and decisions
- Update ROADMAP.md: phase 25 in progress (1/4 summaries)
- Update REQUIREMENTS.md: mark FILE-01, FILE-02, FILE-03 complete
2026-04-02 15:08:51 +00:00
Nexus Dev
16a849bd69 feat(25-00): add shared types, validators, and test stubs for file system
- Add ChatFile, ChatFileReference, ChatFileUploadResponse, ChatFileListResponse interfaces to types/chat.ts
- Add optional files?: ChatFile[] field to ChatMessage interface
- Add uploadChatFileSchema and createFileReferenceSchema Zod validators to validators/chat.ts
- Re-export all new types and validators from shared/src/index.ts
- Create test stubs for chat-file-service.test.ts and chat-file-routes.test.ts with it.todo() entries
2026-04-02 15:08:51 +00:00
Nexus Dev
d7cdfed881 feat(25-00): create chat_files and chat_file_references DB schema + migrations
- Add chatFiles Drizzle schema with companyId, conversationId, messageId, filename, mimeType, sizeBytes, objectKey, sha256, source, category, projectId columns
- Add chatFileReferences Drizzle schema for cross-conversation file references
- Add 0053_create_chat_files.sql migration with all columns, FKs, and indexes
- Add 0054_create_chat_file_references.sql migration with cascade deletes
- Export both tables from schema/index.ts
- Update _journal.json with entries for idx 53 and 54
2026-04-02 15:08:51 +00:00
Nexus Dev
38ad0b8191 docs(25-file-system): create phase plan — 4 plans in 3 waves
Plans cover FILE-01 through FILE-06: DB schema + shared types (wave 1),
server file service + routes and UI file upload (wave 2, parallel),
file preview components + full wiring (wave 3).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
a24b7f4411 docs(25): auto-generated context (discuss skipped) 2026-04-02 15:08:51 +00:00
Nexus Dev
1eb913e7eb docs(phase-24): mark phase complete — 4/4 plans, gap closed inline 2026-04-02 15:08:51 +00:00
Nexus Dev
26b74f7347 feat(24-03): add JSON export button to ChatPanel header (HIST-04 gap closure) 2026-04-02 15:08:51 +00:00
Nexus Dev
f12c07ef47 docs(24-03): complete integration wiring plan — SUMMARY, STATE, ROADMAP updated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
ce037c235c feat(24-03): add bookmark toggle to ChatMessage and ChatMessageActions
- Add onBookmark/isBookmarked props to ChatMessageActions
- Render ChatMessageBookmark as last action for user and assistant messages
- Add onBookmark/isBookmarked props to ChatMessage, thread to ChatMessageActions
- System messages do not receive bookmark actions
2026-04-02 15:08:51 +00:00
Nexus Dev
0dde83b566 feat(24-03): wire search, branch selector, export, scroll-to-message into ChatPanel
- Add scrollToMessageId/setScrollToMessageId to ChatPanelContext
- Add "Search chat messages" item to CommandPalette (dispatches nexus:open-chat-search)
- Integrate ChatSearchDialog, ChatBranchSelector, ChatBookmarkList into ChatPanel
- Add export buttons (Markdown) and bookmarks panel toggle in header
- Wire branch-on-edit: branchConversation called when editing message with subsequent replies
- Add scroll-to-message support in ChatMessageList via virtualizer.scrollToIndex
- Show GitBranch icon for branch conversations in ChatConversationList
2026-04-02 15:08:51 +00:00
Nexus Dev
6b474f5d26 docs(24-02): complete UI components plan — hooks, API methods, search/bookmark/branch components 2026-04-02 15:08:51 +00:00
Nexus Dev
0ab633fc53 docs(24-01): complete search-history-branching plan 01 — service methods and routes
- SUMMARY.md: 6 service methods + 6 route handlers documented
- STATE.md: advanced to plan 3/4, recorded metrics and decisions
- ROADMAP.md: updated phase 24 progress (2/4 summaries)
2026-04-02 15:08:51 +00:00
Nexus Dev
8ab8e592d4 feat(24-02): UI components — ChatSearchDialog, ChatMessageBookmark, ChatBookmarkList, ChatBranchSelector
- ChatSearchDialog: CommandDialog with shouldFilter=false for server-side FTS, term highlighting via React components
- ChatMessageBookmark: ghost icon button with fill-current for bookmarked state, aria-label toggle
- ChatBookmarkList: scrollable list with skeleton loading, empty state, navigation callbacks
- ChatBranchSelector: horizontal branch picker bar with GitBranch icon, active branch highlight
2026-04-02 15:08:51 +00:00
Nexus Dev
2af9de913d feat(24-01): add search, bookmark, branch, and export Express route handlers
- GET /companies/:companyId/messages/search: FTS search with ZodError 400 guard
- POST /conversations/:id/bookmarks: toggle bookmark with UUID validation
- GET /companies/:companyId/bookmarks: list bookmarks with optional conversationId filter
- POST /conversations/:id/branch: branch conversation from message point
- GET /conversations/:id/branches: list child conversations
- GET /conversations/:id/export: download Markdown or JSON with Content-Disposition header
2026-04-02 15:08:51 +00:00
Nexus Dev
430588a54e feat(24-01): add searchMessages, toggleBookmark, getBookmarks, branchConversation, listBranches, exportConversation service methods
- searchMessages: tsvector FTS with ts_rank ordering, joins conversations for companyId scoping
- toggleBookmark: transactional insert-or-delete bookmark
- getBookmarks: joins bookmarks+messages+conversations, supports conversationId filter
- branchConversation: copies messages up to branch point into new child conversation
- listBranches: queries child conversations by parentConversationId
- exportConversation: LEFT JOINs agents for name resolution, produces Markdown or JSON with file headers
2026-04-02 15:08:51 +00:00
Nexus Dev
1b80631b66 feat(24-02): API client methods and React Query hooks for search, bookmarks, branches
- Add searchMessages, toggleBookmark, getBookmarks, branchConversation, listBranches, exportConversation to chatApi
- Create useChatSearch hook with debounced FTS, placeholderData, 30s staleTime
- Create useChatBookmarks and useToggleBookmark with cache invalidation for bookmarks and search queries
2026-04-02 15:08:51 +00:00
Nexus Dev
d78bdad0a9 docs(24-00): complete foundation plan — migrations, schema, types, test stubs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 15:08:51 +00:00
Nexus Dev
3eb4463cbb feat(24-00): shared types, validators, and Wave 0 test stubs for phase 24
- Add ChatMessageSearchResult, ChatMessageSearchResponse to shared types
- Add ChatBookmark, ChatBookmarkWithMessage, ChatBookmarkListResponse, ChatBookmarkToggleResponse
- Add parentConversationId + branchFromMessageId to ChatConversation and ChatConversationListItem
- Add searchMessagesSchema + branchConversationSchema to validators
- Re-export all new types and validators from shared/src/index.ts
- Add Wave 0 it.todo stubs: searchMessages, toggleBookmark, branchConversation, exportConversation
- Add Wave 0 it.todo stubs for 4 new route groups in chat-routes.test.ts
2026-04-02 15:08:51 +00:00