The DuckDuckGo search library creates asyncio event loops that
produce harmless cleanup warnings. Added warnings filter and
simplified DDGS usage.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace calc(100vh - X) with fixed pixel heights to avoid
iframe expansion loop in HuggingFace Spaces context.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change chatbot height from fixed 500px to responsive 60vh
- Replace fixed positioning with proper layout flow (works in iframes)
- Add touch-friendly styles (16px font prevents iOS zoom)
- Add larger touch targets for mobile buttons
- Compact TTS audio and settings on mobile
- Add extra small screen optimizations
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
📚 Documentation Enhancements:
- Complete rewrite of README with modern formatting
- Organized sections for features, models, and technical details
- Added comprehensive USER_GUIDE.md with tutorials
- Quick start guide for beginners
- Advanced configuration guide for power users
📖 README Updates:
- Modern layout with clear sections
- Feature highlights with emojis for easy scanning
- Model categorization by size and purpose
- Technical flow explanation
- Performance and customization info
- Contributing guidelines
📝 User Guide Includes:
- 5-minute quick start tutorial
- Detailed feature explanations
- Advanced parameter guide with use cases
- Preset configurations for common tasks
- Tips & tricks for better results
- Troubleshooting section
- Best practices for different user levels
- Keyboard shortcuts reference
🎯 Content Organization:
- Beginner-friendly introduction
- Progressive complexity
- Practical examples throughout
- Visual tables for quick reference
- Clear explanation…
Major UI/UX improvements for better user experience
✨ Enhanced Interface:
- Modern gradient theme with Soft design and custom colors
- Organized layout with clear visual hierarchy
- Collapsible accordions for advanced settings
- Better spacing and visual grouping
🎨 Visual Improvements:
- Custom CSS with gradient headers and smooth transitions
- Improved chatbot styling with shadows and rounded corners
- Enhanced button designs with hover effects
- Better form controls with info tooltips
🚀 UX Enhancements:
- Auto-hide web search settings when disabled
- Example prompts to help users get started
- Improved tooltips and descriptions for all controls
- Better responsive layout for different screen sizes
- Clear visual feedback for all interactions
📱 User-Friendly Features:
- Copy button on chat messages
- Larger, more accessible input area
- Prominent Send and Stop buttons
- Collapsible debug info to reduce clutter
- Helpful footer with usage tips
🎯 Balance:
- Simple interface by default (core settings always visible)
- Advanced opt…
Fix UI not resetting after cancel - add reset handler
- Add reset_ui_after_cancel function to properly reset UI components
- Chain .then() after cancel button click to reset UI state
- Clear cancel_event flag for next generation
- Ensures Submit button becomes interactive again after cancellation
Fix GeneratorExit handling to prevent runtime error
- Catch GeneratorExit and re-raise it to satisfy Python's generator protocol
- Track cancellation state to prevent yielding in finally block after GeneratorExit
- Prevents 'generator ignored GeneratorExit' RuntimeError
- Ensures proper cleanup without violating generator contract
Fix cancel generation feature by removing GeneratorExit handler
- Removed GeneratorExit exception handler from UI layer that was preventing cancellation
- Allow GeneratorExit to propagate to backend generator where cancel_event checks work
- Cancel button now properly stops text generation mid-stream
- UI state resets correctly after cancellation
Handle GeneratorExit by yielding UI reset and returning cleanly
- Revert stopping criteria to check cancel_event.is_set()
- Confirmed stopping criteria mechanism works (generation stopped after 1 token in test)
- Cancel should now work properly, stopping generation after current token when clicked
- Temporarily modify CancelStoppingCriteria to always return True
- This will test if stopping criteria are being checked during generation
- If generation stops after first token, stopping criteria work; if not, they are ignored
- Add additional cancel checks before each yield in the streaming loop
- Ensures generation stops immediately when cancel is triggered, preventing partial responses from being displayed
- Complements the StoppingCriteria to provide more robust cancellation
Fix cancel generation to gracefully stop ongoing response generation
- Add StoppingCriteria import and CancelStoppingCriteria class
- Integrate stopping criteria into generation pipeline to halt token generation when cancel event is set
- Ensures generation stops at the model level, preventing unnecessary GPU usage
- Shows estimated GPU seconds for current inference settings
- Updates in real-time when model, search settings, or max tokens change
- Displays model size, AOT status, and search status
- Helps users manage precious ZeroGPU time budget effectively
Improve model size detection: replace ad-hoc string parsing with reliable params_b field in MODELS dict