- Changed INVOICES_PER_PAGE from 10 to 5
- Modal properly opens from Invoices section when clicking 'View All'
- Supports pagination with multiple pages in the popup
- Modified handleUndoMessage in server.js to remove the undone message from session history
- Added persistState() call to save the updated session state after undo
- Message is now removed from UI when undo is completed
- Works for opencode/build messages that are completed, errored, or cancelled
1. Fix Ollama 504 Gateway Timeout - add 30s timeout to prevent long hangs
2. Add Ollama to provider error classification for proper fallback handling
3. Show model selector when proceed with build modal opens
These fixes ensure Ollama failures are handled gracefully with proper fallback
to Groq, and users can select their model before starting the build.
This document describes the architecture and functionality of the PluginCompass AI provider management system, including:
- Admin panel structure and authentication
- Provider management with supported providers (OpenRouter, Mistral, Google, Groq, NVIDIA, Chutes, Ollama)
- Rate limiting system with per-provider and per-model limits
- Fallback system architecture with multi-level fallback chains
- Usage tracking and monitoring capabilities
The documentation covers both technical implementation details and operational guidance for managing the provider infrastructure.
- Add pattern matching to detect clarification requests in plan responses
- Hide Proceed with Build button when AI asks questions about missing details
- Button will still show for complete plans that are ready to build
- Changed getUserSession to getAdminSession for all contact message endpoints
- Admin panel now properly authenticates and displays contact messages
- Fixed list, mark-read, and delete operations
- Added Tailwind CSS and matching navigation from home.html
- Implemented glass-morphism navigation with mobile menu
- Added navbar scroll effects and responsive design
- Verified backend contact form functionality exists and works correctly
The scripts were hardcoded to look for OpenSMTPD at a custom workspace
path, but the Dockerfile installs it via apt to /usr/sbin/smtpd. This
change adds fallback logic to check multiple locations:
1. Custom workspace path (for backward compatibility)
2. System path /usr/sbin/smtpd
3. Anywhere in PATH
Also adds graceful handling when OpenSMTPD is not installed, logging
an informative message instead of failing with "No such file or directory".
- Change openrouter/pony-alpha model status from 'alpha' to 'beta' to prevent deletion
- Fix ReferenceError where heartbeat was used before initialization in cleanupStream
- Declare heartbeat and streamTimeout with let before cleanupStream function
- Change const assignments to let assignments for timer variables
- Simplified scrollChatToBottom() with more reliable techniques
- Added scrollIntoView on last message as fallback
- Added additional scroll with direct scrollTop assignment after delay
- Added CSS optimizations for scrolling behavior (-webkit-overflow-scrolling, transform, will-change)
- Added more robust scroll attempts in renderMessages after DOM updates