• v0.5.0 7c921a4e5f

    v0.5.0 Stable

    rwachters released this 2026-05-29 20:42:13 +00:00 | 563 commits to master since this release

    📦 Release v0.5.0

    📝 Executive Summary

    This release introduces comprehensive user preference management with device tracking, enhanced version compatibility features across the server-worker-client ecosystem, and significant UI improvements including syntax-highlighted markdown rendering and a unified theming system. The update also includes deployment automation scripts and several bug fixes for chat input handling and authentication.

    🚀 What's New

    App

    • Highlighted Markdown Rendering: Chat messages now render with syntax highlighting using a token-based markdown tokenizer for code blocks, inline code, and other markdown elements.
    • Expanded Chat Input: Increased collapsed input field height and auto-expand thresholds to show more message lines before scrolling.
    • Server Version Metadata: App fetches and displays server version info; shows dismissible warning banner when client and server versions differ.
    • User Preference Repository: Reactive repository for theme and detailed preferences with sync/update flows and system theme fallback.
    • User Preference API Client: Ktor-backed client for authenticated /api/v1/me preference operations with device-id header support.
    • Version Display: App version now shown in desktop window title and browser document title for consistent branding across platforms.
    • About Settings Tab: New About section in settings featuring app name, version, tagline, links, and license information.
    • Appearance Theme Tab: Dedicated settings tab for theme selection with system, light, and dark mode options plus three new brand color schemes (Deep Cobalt, Modern Neutral, Tech Innovation).
    • Centralized Version Info: Project version now defined centrally in settings.gradle.kts and accessible via generated VersionInfo.kt in commonMain.
    • Unified App Lifecycle: CommonAppLifecycleManager consolidates startup, setup, error, and ready-state handling across Android, Desktop, and WasmJS platforms.
    • Platform-Aware Theming: Shared AppTheme with expect/actual PlatformTheme wrappers for scrollbar styling on desktop and web.

    Server

    • Public Metadata Endpoint: New /api/v1/public/info endpoint exposing app name, version, and server start time.
    • User Device Registry: Added user_devices table and DAO to track per-user client devices with usage timestamps and cascade delete support.
    • User Preferences API: Full /api/v1/me/preferences API for reading, updating, and deleting global and device-scoped preferences.
    • Preference Service: Server-side UserPreferenceService with support for preference merging, key validation, and device-scoped resolution.
    • Device Sync on Login: Authentication service now upserts device records on successful login for preference scope resolution.

    Worker

    • Version Compatibility Check: Worker startup now fetches server metadata and compares versions, logging mismatches as non-fatal warnings.
    • Generated Version Info: Worker version logged at startup using centrally generated VersionInfo for clearer runtime identification.

    Common

    • Markdown Tokenizer: Best-effort line-based tokenizer supporting headings, lists, quotes, fences, tables, links, images, code, emphasis, and escapes.
    • Preference Models: Added PreferenceScope enum and DTOs (UserPreferenceDTO, PreferenceDetailDTO) for global and device-scoped preferences.

    Infrastructure

    • Deployment Scripts: PowerShell scripts for building Windows, web, and WSL Linux release packages, plus Docker image build/push workflow for GHCR.

    🐛 Bug Fixes & Improvements

    • Chat Input Focus: Preserved input focus and text state across expand/collapse transitions; shared focus requester prevents focus stealing.
    • Input Area Scroll: Updated to Compose Multiplatform 1.11.0 with improved text field APIs and better scroll/focus behavior.
    • Message Auto-Collapse: Fixed session message auto-collapse to trigger only on new session display, avoiding repeated collapsing.
    • LLM Stream Handling: Switched to readLine() to prevent premature stream termination on long responses.
    • Inactive Account Logging: Added warning log for login attempts rejected due to non-active accounts.
    • Loading Overlay Theme: Loading screen now uses MaterialTheme.colorScheme.surface instead of fixed black tint.

    🏗️ Technical Updates

    • IDE Cleanup: Removed committed IDE inspection profile from version control; added inspectionProfiles to .gitignore.
    • Auth Flow Refactoring: Removed standalone add-account dialog; authentication flow now handles add account action by setting session unauthenticated.
    • Database Migration V12: Added migration for user_devices and user_preferences tables with unique constraints and cascade delete support.
    • Kotlin Upgrade: Bumped Kotlin and related tooling versions (Ktor, Exposed, Coroutines, Flyway, logging) to latest releases.
    • Koin Modernization: Updated to newer KoinApplication configuration API, removing deprecated lambda form.
    • Dependency Cleanup: Removed unused Typesafe Config dependency and SQLDelight references from the app module.
    • Build Configuration: Replaced deprecated webpack static API usage in common module.
    • Environment Mappings: Added SERVER_URL and email configuration (EMAIL_PROVIDER, EMAIL_SENDER, SMTP properties) to env mapping for deployment configuration.
    Downloads