From Version 0.74 to 1.0 - A Leap Forward in Privacy and Performance
The upgrade from Silentis AI Assistant v0.74 to v1.0 represents a transformative shift, moving from a Tkinter-based desktop application to a modern, web-driven architecture using Flask and PyQt5. This release introduces a responsive web interface, enhanced AI capabilities, robust API support, and user-focused features like text copying and document integration. The changelog below provides a detailed account of all changes, ensuring transparency and clarity for users and developers.
To highlight the evolution, the following table compares key aspects of v0.74 and v1.0:
| Feature | v0.74 | v1.0 |
|---|---|---|
| Interface | Tkinter-based desktop GUI | Web-based UI with Flask, PyQt5, and Bootstrap |
| Backend | Local Python scripts | Flask server with REST API |
| Chat Interaction | Single-shot responses | Real-time streaming responses |
| Text Copying | Manual selection and copy | Dedicated copy buttons for messages and code blocks |
| Chat History | Basic in-memory storage | Persistent JSON storage with search and pagination |
| Document Support | Not available | Text and PDF uploads with context-aware responses |
| Model Management | Single model loading | Multiple models with UI selection and downloads |
| API Support | Not available | Comprehensive REST API with authentication |
| Theme | Fixed light theme | Light/dark theme toggle |
| Performance Monitoring | Not available | RAM and GPU usage indicators |
| Export Options | Basic text export | JSON and PDF exports with formatting |
The new index.html serves as the cornerstone of Silentis v1.0’s web-based frontend, replacing the Tkinter GUI. Built with HTML, CSS, and JavaScript, it leverages Bootstrap for responsiveness, Highlight.js for code syntax highlighting, and Font Awesome for icons. Key features include:
The index.html file communicates with the Flask backend via AJAX and SSE, enabling a smooth, app-like experience while maintaining offline capability once models are loaded.
ttk, scrolledtext, messagebox, and filedialog, due to their limitations in scalability and cross-platform rendering./chat, /config, /models, and more, enabling a client-server architecture.QWebEngineView to render the web-based UI, providing a hybrid desktop-web experience with better performance than Tkinter.index.html) with Bootstrap 5.3.2, Highlight.js for code highlighting, and Font Awesome for icons, creating a modern, responsive interface.AIAssistantApp(tk.Tk) to AIAssistantApp(QApplication), with Flask server running in a separate thread for concurrent processing.ConfigManager class enhanced with new options:
model_path: Path to the active GGUF model file.selected_model: ID of the currently selected model.download_folder: Directory for model downloads.api_enabled: Toggle for REST API activation.api_port: Port for API access (default 5000).api_key: Optional key for API authentication.document_content: Stores uploaded document text.current_chat_id: Tracks the active chat session.draft_message: Saves unsent message drafts.theme: Stores light/dark theme preference.chat_history.json, with methods load_chat_history and save_chat_history for robust management.supported_models dictionary, detailing models like:
config.json before updates to prevent data loss.AICore class now supports multiple models, each with tailored system prompts (e.g., reasoning-focused for Reasoner v1, concise for Phi-3 Mini).detect_model method to identify models by filename patterns (e.g., “llama”, “phi-3”).check_system_requirements using psutil to ensure sufficient RAM for selected models.update_system_prompt to dynamically adjust prompts based on model type and document context, improving response relevance.generate_response_stream for real-time response streaming via Server-Sent Events, reducing latency.is_document_relevant to check if uploaded documents apply to user queries, enhancing context-aware responses.load_model now supports Windows DLL loading in PyInstaller bundles and sets a testing context size (n_ctx=512).unload_model method to free memory when switching models, improving resource efficiency.POST /chat: Streams AI responses for queries.GET/POST/DELETE /chat_history: Manages chat history.POST /edit_message: Edits specific messages.POST /export_chat, POST /import_chat: Handles JSON chat exports/imports.POST /load_model: Loads a specified model.GET/POST /config: Retrieves or updates configuration.GET /models: Lists supported models.POST /download_model: Initiates model downloads with progress updates.POST /upload_document: Uploads text/PDF files.POST /export_pdf: Generates PDF chat exports.require_api_key decorator for endpoint security, requiring a valid API key when enabled.api_enabled, api_port, api_key), with validation for port ranges (1024–65535).chat_history.json, storing chat IDs, titles, messages, and timestamps./edit_message endpoint and UI buttons, preserving conversation context.draft_message in config.json, auto-restored on chat reload.A highly requested feature, text copying in v1.0 is seamless and user-friendly, addressing v0.74’s reliance on manual selection.
navigator.clipboard API.aria-label="Copy message")..txt and .pdf files using PyPDF2, with content stored in document_content.update_system_prompt and is_document_relevant.requests, with streaming downloads and progress bars in the UI.config.json.theme config, with CSS transitions for smooth switching.psutil (e.g., “6.2/8 GB”).Ctrl+Enter: Send message.Ctrl+N: New chat.Ctrl+L: Clear chat.fpdf to reportlab for PDF generation, supporting richer formatting and styles./export_pdf.flask: Powers the web server and API.psutil: Monitors system resources.requests: Handles model downloads.PyQt5: Renders the web view.PyPDF2: Processes PDF uploads.reportlab: Generates PDFs.tkinter: Native GUI framework.PIL: Image processing for Tkinter.fpdf: Old PDF generation library.index.html.PyQtBridge class for native file/folder dialogs and external link handling in PyQt5.error.log.psutil, displayed in the sidebar for transparency.resource_path function now supports web assets (e.g., favicon, logo) in PyInstaller bundles.api.log for debugging.- Version 1.0 emphasizes modularity, scalability, and user experience, with a web-based interface that supports future extensions like mobile apps or cloud integration. - Tkinter-specific features (e.g., custom window icons, precise widget styling) were replaced with web equivalents, prioritizing cross-platform consistency. - The API-driven design opens possibilities for remote access or third-party integrations, pending user demand. - Text copying and other UX enhancements were prioritized based on user feedback from v0.74. - All changes maintain Silentis’s commitment to offline, privacy-first AI processing.
Last Updated: April 12, 2025
© 2025 Silentis. All rights reserved.