6.4 KiB
6.4 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Planned
- Batch operations for models (pull/delete multiple models)
- Progress streaming for long-running operations
- Model search and filter functionality
- Async background operations with polling
- Rollback support for deleted models
[0.1.0-alpha] - 2025-11-30
Added
Core Features
- Official CLI implementation with complete command hierarchy:
auth- Authentication and token managementchat- Chat operations with streaming supportmodels- Model management (list, info, pull, delete)rag- RAG file and collection operationsadmin- Server statistics and diagnosticsconfig- Configuration management
Authentication
- Interactive login with credential prompts
- Token management with secure keyring storage
- Token precedence system: CLI flag > environment variable > keyring
- Logout functionality
- User information display (whoami)
- Token refresh capability
- Fallback to environment variables when keyring unavailable
Chat Operations
- Real-time streaming chat via Server-Sent Events
- Non-streaming mode with
--no-streamoption - Support for RAG context with
--fileoption - Conversation continuation with
--chat-idoption - Token-by-token response streaming with Rich formatting
Model Management
- List available models with JSON output support
- Get detailed model information
- Pull/download models with progress indicators
- Delete models with safety confirmation
- Force operations with
--forceflag
RAG (Retrieval-Augmented Generation)
- File upload support for documents
- File listing and deletion
- Collection creation and management
- Vector search within collections
- Multi-file batch operations
Admin Operations
- Server statistics retrieval
- User management
- Configuration viewing
- Role-based access control with helpful error messages
Configuration
- XDG-compliant file paths:
- Linux/macOS:
~/.config/openwebui/config.yaml - Windows:
%APPDATA%\openwebui\config.yaml
- Linux/macOS:
- Multi-profile support for different server configurations
- Profile-specific URI and token storage
- Configuration initialization with sensible defaults
- Configuration viewing and validation
Developer Experience
- Type hints throughout codebase (Python 3.11+)
- Comprehensive error handling with 6 exit codes (0-5)
- Rich colored output with tables, lists, and progress bars
- Debug logging with
--verboseflag - Comprehensive help text on all commands
Testing & Quality
- Test suite with 80%+ code coverage
- Type checking with mypy (strict mode)
- Linting with ruff
- Unit tests for all major components:
- Authentication flows
- HTTP client and error handling
- Configuration management
- Chat streaming
- Model operations
- RAG operations
- Admin operations
Security
- Secure token storage via OS keyring (Linux/macOS/Windows)
- No hardcoded credentials
- Token masking in display (show first/last 4 chars only)
- Safe configuration file permissions (0o600)
- Dependency audit with pip-audit
Documentation
- Comprehensive README with:
- Installation instructions
- Quick start guide
- Full usage examples for all commands
- Configuration guide
- Troubleshooting section
- Development setup
- Exit code reference
Fixed
Critical Bugs (P0)
- NoKeyring errors converted to meaningful AuthError with actionable messages
- Streaming response handling for chat operations
- Token precedence system (CLI flag now properly overrides all other sources)
- File permission handling for config operations
Quality Improvements
- Proper error propagation and handling in HTTP layer
- Improved error messages with suggested solutions
- Fixed race conditions in async test fixtures
- Proper resource cleanup in HTTP client context managers
Security
- Tokens stored securely in OS keyring (fallback to environment variables)
- No credentials in configuration files
- Secure file permissions on config files (0o600 on Unix)
- Dependency vulnerability scanning with pip-audit
- Type safety to prevent injection attacks
Changed
Architecture
- Modular command structure using Typer sub-applications
- Centralized error handling with custom CLIError class
- HTTP client abstraction with context manager pattern
- Configuration management via Pydantic settings
Dependencies
typer>=0.9.0- CLI frameworkhttpx>=0.25.0- Async HTTP clientrich>=13.0.0- Terminal formattingpydantic>=2.0.0- Data validationpydantic-settings>=2.0.0- Configurationpyyaml>=6.0- YAML parsingkeyring>=24.0.0- Secure token storage
Known Limitations (Alpha)
- Some commands are stubs or have limited implementation (will be completed in v0.1.1)
- Limited error recovery for network failures (no automatic retry)
- Streaming may fail if proxy/firewall doesn't support Server-Sent Events
- Model pull operation shows basic progress indicator (no detailed percentage)
- Admin operations require admin role (not all endpoints available to regular users)
Technical Details
Exit Codes
0- Success1- General error2- Usage/argument error3- Authentication error4- Network error5- Server error (5xx)
Python Support
- Python 3.11+
- Type hints throughout (mypy strict mode)
- Async/await for streaming operations
Configuration Format
- YAML 1.2 format
- Per-profile token storage in system keyring
- Per-profile server URI configuration
- Global defaults for model, format, streaming
Version History
v0.1.0-alpha
Release Date: 2025-11-30
Initial alpha release with core CLI functionality. All major features implemented and tested. Ready for community feedback and bug reports.
Development Timeline:
- 2025-11-30: Initial scaffolding (commit
8530f74) - 2025-11-30: CLI streaming, error handling, comprehensive tests (commit
fbe6832) - 2025-11-30: Code review fixes, P0 bugs, features (commit
80510a7)
Support
For issues, feature requests, or questions:
- GitHub Issues: https://github.com/dannystocker/openwebui-cli/issues
- Documentation: https://github.com/dannystocker/openwebui-cli#readme
License
MIT License - See LICENSE file for details.