• v0.2.5 502832ac9a

    Release v0.2.5 - Phase 2.5: Full Offline Mode

    mchus released this 2026-02-03 10:52:45 +03:00 | 148 commits to main since this release

    This release completes Phase 2.5 with a fully functional local-first architecture.

    • All operations (CRUD) work through SQLite database

    • MariaDB used only for synchronization

    • Automatic connection on startup if settings exist

    • Graceful degradation to offline mode if server unavailable

    • Background sync worker (runs every 5 minutes)

    • Sync queue (pending_changes table) for reliable push operations

    • Pre-create pricelist check before configuration creation

    • Push pending changes API endpoint

    • Sync status indicator in UI

    • RefreshPrices works offline using local_components cache

    • Component search and pricing available offline

    • Configuration management fully offline-capable

    • LocalConfigurationService handles all CRUD operations

    • Sync status indicator with online/offline dot

    • Pricelist version badge on configs page

    • Unified admin pricing tabs (moved pricelists into admin)

    • Sync modal showing system status and errors

    • Warning message for manual restart after setup

    • Fixed nil pointer dereference in PricingHandler alert methods

    • Fixed setup flow: proper restart requirement notification

    • Fixed online mode: automatic MariaDB connection on startup

    • Fixed duplicate entry errors in sync operations

    • Fixed password encryption field naming in setup

    • internal/db/connection.go - Connection manager with lazy connect

    • internal/localdb/ - SQLite database layer

    • internal/services/sync/ - Sync service and worker

    • internal/services/local_configuration.go - Local-first config service

    • internal/handlers/setup.go - Setup flow handler

    • internal/handlers/sync.go - Sync API handler

    • internal/handlers/pricelist.go - Pricelist handler

    • cmd/server/main.go - Auto-connect on startup, new router setup

    • internal/handlers/pricing.go - Offline mode checks

    • web/templates/ - New UI for sync status and pricelists

    • New SQLite tables: connection_settings, local_pricelists, local_components, local_configurations, pending_changes

    • New MariaDB tables: qt_pricelists, qt_pricelist_items

    CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/quoteforge ./cmd/server
    
    ./bin/quoteforge
    
    ./bin/quoteforge
    
    ./bin/quoteforge -migrate
    
    • None - backward compatible with existing configurations

    • Manual restart required after changing connection settings in /setup

    • Conflict resolution not implemented yet (Phase 4)

    Phase 3 will focus on Projects and Specifications structure.

    Downloads