# Changelog ## 2025-11-27 - 1.8.0 - feat(backup) Add backup scheduling system with GFS retention, API and UI integration - Introduce backup scheduling subsystem (BackupScheduler) and integrate it into Onebox lifecycle (init & shutdown) - Extend BackupManager.createBackup to accept schedule metadata (scheduleId) so scheduled runs are tracked - Add GFS-style retention policy support (IRetentionPolicy + RETENTION_PRESETS) and expose per-tier retention in types - Database migrations and repository changes: create backups and backup_schedules tables, add schedule_id, per-tier retention columns, and scope (all/pattern/service) support (migrations up to version 12) - HTTP API: add backup schedule endpoints (GET/POST/PUT/DELETE /api/backup-schedules), trigger endpoint (/api/backup-schedules/:id/trigger), and service-scoped schedule endpoints - UI: add API client methods for backup schedules and register a Backups tab in Services UI to surface schedules/backups - Add task scheduling dependency (@push.rocks/taskbuffer) and export it via plugins.ts; update deno.json accordingly - Type and repository updates across codebase to support schedule-aware backups, schedule CRUD, and retention enforcement ## 2025-11-27 - 1.7.0 - feat(backup) Add backup system: BackupManager, DB schema, API endpoints and UI support Introduce a complete service backup/restore subsystem with encrypted archives, database records and REST endpoints. Implements BackupManager with export/import for service config, platform resources (MongoDB, MinIO, ClickHouse), and Docker images; adds BackupRepository and migrations for backups table and include_image_in_backup; integrates backup flows into the HTTP API and the UI client; exposes backup password management and restore modes (restore/import/clone). Wire BackupManager into Onebox initialization. - Add BackupManager implementing create/restore/export/import/encrypt/decrypt workflows (service config, platform resource dumps, Docker image export/import) and support for restore modes: restore, import, clone. - Add BackupRepository and database migrations: create backups table and add include_image_in_backup column to services; database API methods for create/get/list/delete backups. - Add HTTP API endpoints for backup management: list/create/get/download/delete backups, restore backups (/api/backups/restore) and backup password endpoints (/api/settings/backup-password). - Update UI ApiService and types: add IBackup, IRestoreOptions, IRestoreResult, IBackupPasswordStatus and corresponding ApiService methods (getBackups, createBackup, getBackup, deleteBackup, getBackupDownloadUrl, restoreBackup, setBackupPassword, checkBackupPassword). - Expose includeImageInBackup flag on service model and persist it in ServiceRepository (defaults to true for existing rows); service update flow supports toggling this option. - Integrate BackupManager into Onebox core (initialized in Onebox constructor) and wire HTTP handlers to use the new manager; add DB repository export/import glue so backups are stored and referenced by ID. ## 2025-11-27 - 1.6.0 - feat(ui.dashboard) Add Resource Usage card to dashboard and make dashboard cards full-height; add VSCode launch/tasks/config - Introduce ResourceUsageCardComponent and include it as a full-width row in the dashboard layout. - Make several dashboard card components (Certificates, Traffic, Platform Services) full-height by adding host classes and applying h-full to ui-card elements for consistent card sizing. - Reflow dashboard rows (insert Resource Usage as a dedicated row and update row numbering) to improve visual layout. - Add VSCode workspace configuration: recommended Angular extension, launch configurations for ng serve/ng test, and npm tasks to run/start the UI in development. ## 2025-11-27 - 1.5.0 - feat(network) Add traffic stats endpoint and dashboard UI; enhance platform services and certificate health reporting - Add /api/network/traffic-stats GET endpoint to the HTTP API with an optional minutes query parameter (validated, 1-60). - Implement traffic statistics aggregation in CaddyLogReceiver using rolling per-minute buckets (requestCount, errorCount, avgResponseTime, totalBytes, statusCounts, requestsPerMinute, errorRate). - Expose getTrafficStats(minutes?) in the Angular ApiService and add ITrafficStats type to the client API types. - Add dashboard UI components: TrafficCard, PlatformServicesCard, CertificatesCard and integrate them into the main Dashboard (including links to Platform Services). - Enhance system status data: platformServices entries now include displayName and resourceCount; add certificateHealth summary (valid, expiringSoon, expired, expiringDomains) returned by Onebox status. - Platform services manager and Onebox code updated to surface provider information and resource counts for the UI. - Add VSCode workspace launch/tasks recommendations for the UI development environment. ## 2025-11-26 - 1.4.0 - feat(platform-services) Add ClickHouse platform service support and improve related healthchecks and tooling - Add ClickHouse as a first-class platform service: register provider, provision/cleanup support and env var injection - Expose ClickHouse endpoints in the HTTP API routing (list/get/start/stop/stats) and map default port (8123) - Enable services to request ClickHouse as a platform requirement (enableClickHouse / platformRequirements) during deploy/provision flows - Fix ClickHouse container health check to use absolute wget path (/usr/bin/wget) for more reliable in-container checks - Add VS Code workspace launch/tasks/extensions configs for the UI (ui/.vscode/*) to improve local dev experience ## 2025-11-26 - 1.3.0 - feat(platform-services) Add ClickHouse platform service support (provider, types, provisioning, UI and port mappings) - Introduce ClickHouse as a first-class platform service: added ClickHouseProvider and registered it in PlatformServicesManager - Support provisioning ClickHouse resources for user services and storing encrypted credentials in platform_resources - Add ClickHouse to core types (TPlatformServiceType, IPlatformRequirements, IServiceDeployOptions) and service DB handling so services can request ClickHouse - Inject ClickHouse-related environment variables into deployed services (CLICKHOUSE_* mappings) when provisioning resources - Expose ClickHouse default port (8123) in platform port mappings / network targets - UI: add checkbox and description for enabling ClickHouse during service creation; form now submits enableClickHouse - Add VS Code recommendations and launch/tasks for the UI development workflow ## 2025-11-26 - 1.2.1 - fix(platform-services/minio) Improve MinIO provider: reuse existing data and credentials, use host-bound port for provisioning, and safer provisioning/deprovisioning - MinIO provider now detects existing data directory and will reuse stored admin credentials when available instead of regenerating them. - If data exists but no credentials are stored, MinIO deployment will wipe the data directory to avoid credential mismatch and fail early with a clear error if wiping fails. - Provisioning and deprovisioning now connect to MinIO via the container's host-mapped port (127.0.0.1:) instead of relying on overlay network addresses; an error is thrown when the host port mapping cannot be determined. - Bucket provisioning creates policies and returns environment variables using container network hostnames for in-network access; a warning notes that per-service MinIO accounts are TODO and root credentials are used for now. - Added logging improvements around MinIO deploy/provision/deprovision steps for easier debugging. - Added VSCode workspace files (extensions, launch, tasks) for the ui project to improve developer experience. ## 2025-11-26 - 1.2.0 - feat(ui) Sync UI tab state with URL and update routes/links - Add VSCode workspace recommendations, launch and tasks configs for the UI (ui/.vscode/*) - Update Angular routes to support tab URL segments and default redirects for services, network and registries - Change service detail route to use explicit 'detail/:name' path and update links accordingly - Make ServicesList, Registries and Network components read tab from route params and navigate on tab changes; add ngOnDestroy to unsubscribe - Update Domain detail template link to point to the new services detail route ## 2025-11-26 - 1.1.0 - feat(platform-services) Add platform service log streaming, improve health checks and provisioning robustness - Add WebSocket log streaming support for platform services (backend + UI) to stream MinIO/MongoDB/Caddy logs in real time - Improve platform service lifecycle: detect unhealthy 'running' containers, mark for redeploy and wait/retry health checks with detailed logging - MinIO health check now uses container IP (via Docker) instead of hostname to reliably probe the service - MongoDB and MinIO providers updated to use host-mapped ports for host-side provisioning and connect via 127.0.0.1: - Docker manager: pullImage now actively pulls images and createContainer binds service ports to localhost so host-based provisioning works - UI: platform service detail page can start/stop/clear platform log streams; log stream service state cleared on disconnect to avoid stale logs - Caddy / reverse-proxy improvements to manage certificates and routes via the Caddy manager (Caddy runs as Docker service) - Add VSCode workspace helpers (extensions, launch, tasks) to improve developer experience All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added - Initial project structure - Core architecture classes - Docker container management - Nginx reverse proxy integration - Cloudflare DNS management - Let's Encrypt SSL automation - SQLite database layer - Angular web UI - Multi-user authentication - Systemd daemon integration - CLI commands for all operations - Metrics collection and historical data - Log aggregation - Registry authentication support ## [1.0.0] - TBD ### Added - First stable release