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.