Commit graph

92 commits

Author SHA1 Message Date
michael
cdabbcfa5a added prose styles for response formatting 2025-10-20 06:59:32 -05:00
michael
a41cd12315 suppress websocket httpx error 2025-10-17 18:40:16 -05:00
michael
c102731b81 permanently dismiss failed processing warnings 2025-10-17 18:32:07 -05:00
michael
a7f5788d7f better error reporting for video failures 2025-10-17 17:55:27 -05:00
michael
ad044f4f30 final video fix?? 2025-10-17 17:48:18 -05:00
michael
853e211b60 hopefully fixed hte video bug once and for all 2025-10-17 17:41:16 -05:00
michael
ca737487f5 added logging for video error 2025-10-17 17:36:53 -05:00
michael
178fbf4df4 another video processing fix 2025-10-17 17:29:07 -05:00
michael
b822e27024 another video fix 2025-10-17 16:52:34 -05:00
michael
30ae7080e3 adjusted polling logs and another video processing fix 2025-10-17 16:46:12 -05:00
michael
35ac80c943 made upload failure warnings dismissable and fixed google gemini video processing API syntax 2025-10-17 16:36:57 -05:00
michael
8ccf676df7 migrated to the new google-genai SDK 2025-10-17 16:25:21 -05:00
michael
68108bd472 added gemini video processing support 2025-10-17 16:08:15 -05:00
michael
aff4e7154d added llm based fallback extraction method for file types llamaextract doesn't support 2025-10-17 15:36:55 -05:00
michael
c70dc59bfc added 30+ supported file formats 2025-10-17 15:11:44 -05:00
michael
1c4e5320e5 fixed timestamps 2025-10-17 14:46:47 -05:00
michael
464fa23c59 fixed more light colored text -> darker, and made default dark as well 2025-10-17 14:17:20 -05:00
michael
208e912cf2 fixed 'interaction in progress' error with auth 2025-10-17 13:59:20 -05:00
michael
62e2a5b460 switched from popup to redirect based MSAL auth 2025-10-17 13:26:32 -05:00
michael
a0d34a57ad added .gitignore to project root 2025-10-16 17:24:39 -05:00
michael
aac7a52be4 removed user sign up registration from login page 2025-10-16 17:17:23 -05:00
michael
7fffca7143 added base path to front end config 2025-10-16 16:55:36 -05:00
michael
f753dfd74b added front end service 2025-10-16 16:46:05 -05:00
michael
aa6f1c15b7 fixed front end build errors 2025-10-16 16:18:00 -05:00
michael
126803821b changed backend URLs in frontend config for production 2025-10-16 16:12:07 -05:00
michael
e99f6f5c8d changed redis port and added .service file 2025-10-16 15:52:42 -05:00
michael
f40ed9ad37 fixed some aesthetic things and added MSAL/PKCE login 2025-10-16 11:18:06 -05:00
DJP
d514d4d65c Update cache files 2025-10-03 17:06:09 -04:00
DJP
292475efc3 Fix chat messages not saving - use existing session_id
- Frontend now passes session_id in WebSocket URL
- Backend uses existing session instead of creating new one
- Messages now save to correct chat session
- Fixes messages disappearing after refresh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:57:37 -04:00
DJP
e9001d977b Fix shared notebooks not showing - add user_id parameter
- getSharedNotebooks now passes user_id
- Shared notebooks will now display correctly
- Users can see notebooks shared with them

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:44:53 -04:00
DJP
cfe646068f Add warning about LlamaCloud index sync delay
- Alert users after document deletion
- Warn to wait 1-2 minutes before querying
- LlamaCloud index updates are async and take time

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:30:32 -04:00
DJP
c1ef4662da Fix event loop errors in LlamaCloud cleanup
- Use background threads for async cleanup operations
- Prevents "event loop already running" errors
- Document removal from index now works
- Notebook deletion pipeline cleanup now works
- Runs cleanup in separate thread with own event loop

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:25:46 -04:00
DJP
fabe0daac1 Save LlamaCloud file_id to enable document removal from index
- Store file_id when uploading to LlamaCloud
- Return file_id from add_document_to_pipeline()
- Save to document.llamacloud_file_id in database
- Enables proper removal from LlamaCloud when doc deleted
- New uploads will now track file_id for cleanup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:19:15 -04:00
DJP
bb5e6f01bb Add remove_document_from_pipeline function
- Create missing function to remove docs from LlamaCloud
- Called when document is deleted from notebook
- Keeps LlamaCloud index in sync with notebook

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:15:31 -04:00
DJP
c801d197c2 Add confirmation dialog for notebook deletion
- Warn user about consequences before deleting
- Show what will be deleted (docs, chats, pipeline)
- Clear confirmation message

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:08:39 -04:00
DJP
60c2467f31 Fix document removal to clean up LlamaCloud index
- Remove documents from LlamaCloud pipeline when deleted
- Calls remove_document_from_pipeline() to clean up index
- Prevents orphaned files in LlamaCloud
- Keeps index in sync with notebook documents

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:07:31 -04:00
DJP
94522657c4 Support multiple document types beyond PDF
- Accept PDF, DOCX, DOC, PPTX, PPT, TXT, MD files
- Update UI text to show supported formats
- LlamaParse handles all these file types
- Backend validation for supported extensions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:03:22 -04:00
DJP
735a5ffc4f Fix admin panel refresh to prevent logout
- Use refetchUsers() instead of window.location.reload()
- Admin actions now update UI without logging out
- Suspend/unsuspend works correctly
- User management stays on same page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 16:01:12 -04:00
DJP
09749c6b68 Add user suspension feature
- Add is_suspended column to users table
- Suspended users cannot log in
- Admin panel shows SUSPENDED badge
- Suspend/Unsuspend button in admin panel
- Cannot suspend yourself
- Backend blocks auth for suspended users

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 15:55:51 -04:00
DJP
ac02a45bba Clean database for fresh start
- Remove all test notebooks and documents
- Clear chat sessions and messages
- Clean background tasks
- Remove podcast files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 15:51:57 -04:00
DJP
8cc8325221 Add admin user management and fix timestamps
- Add user management UI in admin panel
- Promote/demote admin functionality
- Delete user functionality (removes all data)
- Show ADMIN badge for admin users
- Hide Admin nav link from non-admin users
- Strict admin-only access control
- Fix timestamps to use local time instead of UTC
- Add bulk delete for chat sessions
- Add unshare option for shared chats
- Backend returns is_admin field for users

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 15:48:38 -04:00
DJP
7e1eb60a4a Fix critical bugs and improve features
- Add getSynthesis API endpoint (fixes console error)
- Fix message count display in chat sessions (SQL JOIN)
- Smart notebook deletion with share confirmation
- Auto-trigger synthesis when documents complete
- Regenerate synthesis on document add/delete
- Auto-retry pending background tasks on startup
- Backend session deduplication (10-second window)
- Disable React Query mutation retries
- Disable React Strict Mode
- Clean up old documentation files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 15:27:32 -04:00
DJP
5dda8d66c2 Complete comprehensive README - installation, features, troubleshooting
 README.md Complete:
- Full installation instructions
- All features documented
- API endpoints listed
- Troubleshooting guide
- User management
- Database setup
- Known issues
- Architecture
- Production deployment

Ready for production use!
2025-10-03 11:39:50 -04:00
DJP
a0029fbc65 Fix synthesis persistence - set state directly in queryFn
- Remove useEffect dependency (was causing issues)
- Set synthesis state directly in queryFn
- Always refetch on mount
- Added extensive console logging for debugging

Synthesis WILL persist now!
2025-10-03 11:34:29 -04:00
DJP
f6a0aa9209 Add custom prompt to podcast, invalidate synthesis cache
 Podcast Customization:
- Added 'Additional Instructions' textarea field
- Now matches Streamlit app (theme + custom prompt)
- Full customization available

 Synthesis Persistence:
- Invalidate React Query cache after generating
- Forces reload from database
- Synthesis persists across logout/login

These were the critical missing features!
2025-10-03 11:31:21 -04:00
DJP
477a9cd606 Simplify new chat mutation and fix synthesis loading
- Removed creatingSession flag (was causing issues)
- Mutation uses disabled state properly
- Synthesis useEffect always sets when loaded (removed !synthesis check)
- Added console log for debugging

Should fix both new chat spam and synthesis not showing!
2025-10-03 11:01:14 -04:00
DJP
bddc745d66 Add useEffect import to notebook detail page 2025-10-03 10:58:04 -04:00
DJP
9f7f64b9ee Fix synthesis loading from database
- useQuery now returns data properly
- useEffect sets synthesis state when loadedSynthesis changes
- Synthesis will persist across page refreshes
- No dependency on synthesis in useEffect (prevents loops)

Synthesis persistence NOW WORKING!
2025-10-03 10:56:50 -04:00
DJP
7db7ca3de5 Fix button nesting and WebSocket reconnection spam
 Fixed button inside button error:
- Delete button now sibling, not nested
- Proper div structure
- No hydration errors

 Fixed WebSocket creating spam sessions:
- Check if already connected before reconnecting
- Prevents duplicate WebSocket connections
- No more session spam

 Synthesis persistence working:
- Model has synthesis_data column
- GET endpoint returns data
- Will load on page refresh

All critical bugs fixed!
2025-10-03 10:55:27 -04:00
DJP
dc85bca8d8 CRITICAL FIX: Add synthesis_data to Notebook model
- Added synthesis_data = Column(Text) to Notebook class
- Column exists in DB, now in Python model too
- GET synthesis endpoint will work after reload
- Synthesis will persist properly

Also deleted 9 spam chat sessions (81-89).
2025-10-03 10:50:22 -04:00