# Changelog

## 2026-07-23 - 6.2.0

### Features

- stabilize authenticated state and proxy observations (runtime)
  - Serialize protected requests by intent and mutation domain, coalesce duplicate reads, fence stale session generations, and merge concurrent action and socket state without losing updates.
  - Verify persisted sessions before mounting the dashboard, enforce JWT expiry, retain last-good resource data, and distinguish authentication failures from temporary backend failures.
  - Observe CoreTraffic through bounded authoritative Docker checks and render starting, failed, unavailable, and stale states instead of reporting uncertain runtime state as inactive.

## 2026-07-23 - 6.1.3

### Fixes

- pin release binaries to the verified Deno compiler (release)
  - Require Deno v2.7.11 for every binary build because Deno v2.9.3 omits required npm runtime packages from self-extracting artifacts.
  - Pin the App Store, interfaces, catalog, and container archive runtime graph so pnpm and Deno consume the same published versions.
  - Verify the tagged binary starts and embeds the lockfile-installed runtime package versions before publishing.

## 2026-07-23 - 6.1.2

### Fixes

- build release binaries from an isolated Deno package cache (release)
  - Prevent stale runner cache state from omitting runtime packages and verify the x64 binary starts with the tagged version before publishing assets.

## 2026-07-23 - 6.1.1

### Fixes

- use the published binary-safe App Store runtime dependency (dependencies)
  - Update App Store to v1.1.1 so clean self-extracting builds embed the single shared interfaces v17.3.0 graph and start successfully.

## 2026-07-23 - 6.1.0

### Features

- adopt the shared workload app runtime format (appstore)
  - Consume the current App Store environment declarations, including public, secret, and generated values, without persisting plaintext credentials in service metadata.
  - Forward container arguments and deliver file-only secrets through Docker Swarm while rejecting unsupported or unsafe runtime combinations.
  - Encrypt service secret bundles, migrate legacy plaintext runtime values, and preserve ciphertext in portable backups.
  - Make install, update, image cleanup, platform-resource provisioning, and rollback ownership durable across partial failures and restarts.

## 2026-07-23 - 6.0.1

### Fixes

- replace stale active MinIO labels with SmartStorage naming (platform-services)
  - Map platform service details to the SmartStorage endpoint and update UI, README, and source descriptions while retaining legacy migration and backup compatibility.

## 2026-07-23 - 6.0.0

### Breaking Changes

- replace password-based administrator login with passkey-only authentication (auth)
  - Require first-run WebAuthn enrollment with a short-lived bootstrap code shown only in local startup logs.
  - Bind administrator sessions to active passkey credentials and reject legacy password-era sessions.
  - Add a confirmed local passkey reset command and remove legacy password hashes after enrollment.

## 2026-07-07 - 5.1.0

### Features

- support canonical service target ports and public port mappings (service-routing)
  - Add targetPorts, domains, and publicPortMappings to service types, persistence, backups, and App Store install/upgrade flows
  - Configure reverse proxy, CoreTraffic, and external gateway routes from canonical service routing data, including TCP/UDP public listeners
  - Add a startup migration to normalize legacy services to canonical target port and domain route fields
  - Improve service update and cleanup flows to keep gateway and public port route lifecycle in sync

## 2026-06-21 - 5.0.0

### Breaking Changes

- rename SmartProxy platform integration to CoreTraffic and add read-only MCP endpoint (platform)
  - Replaces SmartProxy platform service type, provider, manager, container name, backend status, and admin token key with CoreTraffic equivalents.
  - Adds a startup migration for persisted SmartProxy platform services, secret tokens, dcrouter target host settings, service requirements, and backup records.
  - Adds an admin-authenticated /mcp endpoint with read-only service, domain, and platform-service summary tools that omit secrets.
  - Updates UI text, documentation, and tests for CoreTraffic naming and MCP support.

## 2026-06-18 - 4.2.3

### Fixes

- use Gitea API raw URL for installer downloads (installer)
  - Fetch install.sh through the Gitea raw API endpoint across updater, release workflow, installer help, and documentation.
  - Quote installer URLs in shell commands so the query string is preserved.
  - Clarify bootstrap admin password setup in the README.

## 2026-06-18 - 4.2.2

### Fixes

- authenticate SmartProxy admin API with persistent token (smartproxy)
  - Switch SmartProxy service image to coretraffic
  - Generate and store the SmartProxy admin token as an encrypted secret setting
  - Pass the admin token to the service and authorize route reload requests
  - Clean up SmartProxy service and Docker client state after failed startup

## 2026-06-14 - 4.2.1

### Fixes

- bump @api.global/typedserver to ^8.5.3 (deps)
  - Update @api.global/typedserver from ^8.4.6 to ^8.5.3.

## 2026-06-11 - 4.2.0

### Features

- complete the MinIO to smartstorage unification (platform-services)
  - Rewrite migrated service env vars by credential value so template-specific names (e.g. S3_ACCESSKEY) are updated too.
  - Decommission the MinIO platform service automatically once no resources reference it (container stopped, record removed, data directory kept).
  - Remove the MinIO provider; S3 provisioning is smartstorage-only. Restoring pre-migration backup archives remains supported.

## 2026-06-11 - 4.1.0

### Features

- add smartstorage S3 provisioning and MinIO migration (platform-services)
  - Add a smartstorage platform service provider for corestore-backed S3 buckets with scoped credentials.
  - Provision new S3 requirements through smartstorage while keeping legacy MinIO resources supported.
  - Add an admin migration request to copy MinIO bucket objects, update resource records, and swap service environment variables.
  - Extend backup import/export and network port handling to recognize smartstorage buckets.

## 2026-06-10 - 4.0.1

### Fixes

- prune dangling images after service image updates (services)
  - Run Docker image pruning after updates that pull a replacement image to prevent disk usage from accumulating.
  - Log image prune failures without failing an otherwise completed service update.
  - Add service cleanup coverage to verify image pruning is triggered during image updates.

## 2026-06-09 - 4.0.0

### Breaking Changes

- adopt canonical gateway client contracts and drop legacy dcrouter compatibility (gateway)
  - External gateway sync now uses only the canonical gateway-client API (syncGatewayClientRoute, getGatewayClientDomains); the legacy syncWorkAppRoute/getWorkHosterDomains fallbacks were removed.
  - Removes the legacy dcrouterWorkHosterId setting key and settings field; dcrouterGatewayClientId is the only supported key.
  - External gateway requests are now typed against @serve.zone/interfaces gateway contracts (dependency bumped to ^7.4.0).

## 2026-06-08 - 3.3.0

### Features

- support force-pulling unchanged service images (services)
  - Add a forcePull option to service update payloads to refresh unchanged image tags.
  - Pull requested images before replacing running containers so pull failures leave the existing runtime intact.

## 2026-06-07 - 3.2.0

### Features

- add app store source metadata and package source support (appstore)
  - Default the app store resolver to the packaged source unless remote options are provided
  - Expose sourceInfo in app store template responses and client state
  - Display app store package, version, and remote URL details in the web UI
  - Bump @serve.zone/appstore to ^0.3.0

## 2026-06-04 - 3.1.0

### Features

- add real-time service and platform telemetry streaming (telemetry)
  - Introduce telemetry subscription requests and an OpsServer telemetry handler for live log and metric pushes.
  - Subscribe dashboard detail views to service and platform telemetry with cleanup on navigation and disconnect.
  - Demux Docker stdout/stderr log frames and preserve source metadata for historical and streamed logs.
  - Refresh or stop telemetry workers when service and platform runtimes change.

## 2026-05-29 - 3.0.0

### Breaking Changes

- migrate Onebox from Deno to Node.js runtime (runtime)
  - Replace Deno APIs, imports, commands, and filesystem access with Node-compatible runtime helpers.
  - Switch package, build, binary, install, and test workflows to pnpm/Node tooling.
  - Serve the Ops UI from dist_serve and update systemd/upgrade behavior for the Node runtime.
  - Remove legacy SQLite repository and migration code in favor of SmartDB-only storage.

### Fixes

- keep the installer script executable (installer)

### Maintenance

- document binary and source installer usage (docs, installer)
  - Replace stale package-install guidance with the one-line Linux binary installer flow.
  - Keep installer version examples generic so docs do not drift after releases.

## 2026-05-29 - 2.3.11

### Fixes

- abort service deletion before runtime removal when external gateway cleanup fails (services)
  - Move external gateway route deletion ahead of runtime and reverse proxy cleanup for domain-backed services
  - Add regression coverage to ensure gateway policy failures leave the service and runtime intact

## 2026-05-29 - 2.3.10

### Fixes

- rehydrate SmartProxy runtime config during daemon sync (reverseproxy)
  - Reapplies the current SmartProxy routes and certificates after service status synchronization to recover from Docker task replacement.
  - Adds a reverse proxy runtime reapply method that reloads SmartProxy config without clearing desired in-memory state.
  - Covers runtime config reapplication with a reverse proxy test.

## 2026-05-28 - 2.3.9

- replace Redis platform service with Valkey
  - Renames the platform provider, service type, App Store requirement handling, injected env vars, UI labels, and backup/restore paths to Valkey.
  - Adds startup migration for existing platform metadata, credentials, backup metadata, and local platform data directories.

## 2026-05-28 - 2.3.8

### Fixes

- make service deletion strict and leak-free (services)
  - Clean Docker runtime, service-owned volumes/images, registry tags, backups, DNS/certs, platform resources, log streams, and workspace sessions before deleting the service row.
  - Keep the service row when required cleanup fails so deletion can be retried.
  - Preserve OCI blobs shared by other repositories during registry image cleanup.
- make service deletion strict and leak-free (services)
  - Clean Docker runtime resources, owned volumes/images, registry tags, backups, DNS records, certificates, platform resources, log streams, and workspace sessions before deleting the service row.
  - Keep service records intact when required cleanup fails so deletion can be retried.
  - Preserve OCI blobs shared by other tags or repositories during registry image cleanup.

## 2026-05-28 - 2.3.7

- fix SmartData document API serialization for service rows

### Fixes

- serialize SmartData documents to API data (database)
  - Build API data from declared saveable properties and SmartData serializers instead of returning the raw savable object
  - Add regression coverage for service document serialization

## 2026-05-28 - 2.3.6

- move startup data migrations into `ts_migration`

### Fixes

- move startup data migrations into ts_migration (migrations)
  - Extract legacy SQLite import logic from database initialization into a dedicated migration module
  - Run startup migrations during database initialization and record completion in metadata
  - Add test coverage for legacy SQLite import completion metadata

## 2026-05-28 - 2.3.5

- bump `@serve.zone/appstore` to `^0.2.2` so Ghost and Gitea App Store details support mixed-case env keys

## 2026-05-28 - 2.3.4

### Fixes

- skip legacy metrics and logs during startup migration to keep first SmartDB boot bounded
- skip legacy telemetry imports during startup migration (database)
  - Avoid importing legacy metrics and logs into SmartDB to keep first boot bounded
  - Continue migrating non-telemetry legacy tables and add regression coverage

## 2026-05-28 - 2.3.3

### Fixes

- compile Linux binaries as self-extracting artifacts so SmartDB sidecar assets are available at runtime
- initialize SmartData documents before saving default storage records to avoid duplicate-key startup failures
- bump `@push.rocks/smartdb` to `^2.10.2` for missing database collection listing support
- initialize SmartData documents before saving default storage records (database)
  - Create SmartData documents after framework initialization to avoid duplicate-key startup failures.
  - Add a database initialization regression test for default storage targets and classes.
  - Build Linux binaries as self-extracting artifacts so SmartDB sidecar assets are available at runtime.
  - Bump SmartDB to ^2.10.2 for database collection listing support.

## 2026-05-28 - 2.3.2

### Fixes

- set `HOME` and `DENO_DIR` for detached Onebox upgrade systemd units
- make `install.sh` provide writable Deno cache defaults in minimal service environments
- set writable Deno cache defaults for installer and detached upgrades (installer)
  - Exports HOME and DENO_DIR for detached systemd upgrade units.
  - Creates the Deno cache directory during installation for minimal service environments.

## 2026-05-27 - 2.3.1

### Fixes

- show safe App Store backend errors instead of falling back to app-not-found UI
- guard App Store config responses against null typed RPC payloads
- bump `@api.global/typedrequest` to `^3.3.2` for sanitized server-side typed errors
- surface safe App Store backend errors (appstore)
  - Return sanitized App Store typed request errors for config loading and installs
  - Show config load failures with retry controls instead of falling back to the app-not-found UI
  - Guard against empty App Store config responses and display deploy failures as toast errors
  - Bump @api.global/typedrequest to ^3.3.2

## 2026-05-27 - 2.3.0

- refactor Onebox persistence and storage configuration (storage,persistence)
  - Move Onebox persisted entities onto managed SmartData documents with explicit API serialization.
  - Add storage targets and storage classes for local, NFS, SMB, backup, and custom Docker volume backends.
  - Resolve service, App Store, and platform database volumes through configurable storage classes.
  - Add Settings UI management for storage targets, classes, and platform database storage selection.

### Features

- add configurable storage classes with SmartData persistence (storage,persistence)
  - Move persisted Onebox entities to SmartData documents with legacy SQLite import and explicit API serialization.
  - Add storage targets and storage classes for local, NFS, SMB, backup, and custom Docker volume backends.
  - Resolve service, App Store, and platform volumes through configurable storage classes.
  - Expose storage management in settings and deployment flows.

## 2026-05-26 - 2.2.0

- add hosted app lifecycle protocol support (hostedapp)
  - Injects generic hosted-app runtime identity environment variables into managed services.
  - Adds token-scoped Hosted App TypedRequest handlers for lifecycle reporting, bootstrap setup, and managed self-upgrades.
  - Injects a Docker host alias so hosted apps can reach the Onebox runtime URL from managed containers.
  - Shows hosted-app bootstrap and upgrade state in the service detail view with a mark-done cleanup action.

### Features

- add hosted app lifecycle protocol support (hostedapp)
  - Inject hosted app runtime identity environment variables into managed services and persist lifecycle records.
  - Add token-scoped TypedRequest handlers for lifecycle reporting, bootstrap actions, and managed app upgrades.
  - Show hosted app bootstrap and upgrade state in the service detail view with a mark-done cleanup action.
  - Configure Docker host gateway aliases so managed containers can reach the Onebox runtime URL.
  - Bump @serve.zone/interfaces to ^6.1.0.

## 2026-05-25 - 2.1.3

### Fixes

- deduplicate dees-catalog in the admin UI bundle (web)
  - Collapse transitive `@design.estate/dees-catalog` resolution to a single version to avoid duplicate custom element registration.
- deduplicate dees-catalog in the admin UI bundle (web)
  - Collapse transitive @design.estate/dees-catalog resolution to a single version to avoid duplicate custom element registration.
  - Update the bundled web artifact with the deduplicated dependency resolution.

## 2026-05-25 - 2.1.2

### Fixes

- keep self-upgrades alive after stopping the service (upgrade)
  - Launch dashboard-triggered upgrades as transient systemd units outside the service cgroup.
  - Download and validate installer binaries before stopping the running service.
  - Restart the previous service if installation fails after it was stopped.

## 2026-05-25 - 2.1.1

### Fixes

- disable dees-catalog build scripts in workspace config (pnpm-workspace)
  - Adds @design.estate/dees-catalog to pnpm allowBuilds with a false value to explicitly prevent its build scripts from running.

## 2026-05-25 - 2.1.0

### Features

- add App Store upgrade progress tracking and interactive workspace processes (appstore,workspace)
  - Track App Store upgrade operations with async start/list requests and streamed progress updates.
  - Show running and failed upgrade status in App Store and service detail views while preventing duplicate upgrade actions.
  - Route App Store upgrades through the shared service update flow to restore service routes before gateway sync.
  - Add backend workspace shell discovery plus interactive process start/input/kill/output/exit APIs backed by Docker exec streams.
  - Bump Docker and workspace UI dependencies for interactive stdin streaming and shell selection support.

## 2026-05-25 - 2.0.0

### Breaking Changes

- switch Onebox App Store resolution to the shared appstore client
  - Uses `@serve.zone/appstore` and `@serve.zone/interfaces` for App Store metadata, parsing, and Docker digest resolution
  - Renames App Store typed request methods to `getAppStoreTemplates`, `getAppStoreConfig`, `installAppStoreApp`, and `getUpgradeableAppStoreServices`
  - Removes local duplicated App Store DTO and resolver code while preserving Onebox install and upgrade behavior

## 2026-05-25 - 1.31.0

### Features

- resolve repo manifests and docker digest-tracked images (appstore)
  - Add catalog source, resolved source, channel, runtime, upgrade strategy, and version metadata types for appstore manifests.
  - Resolve catalog entries from repo manifests and pin digest-tracked Docker images using registry digests.
  - Propagate resolved image digests into app version configs and service creation options.
  - Add runtime coverage for repo manifest resolution and digest-tracked latest images.

## 2026-05-24 - 1.30.2

### Fixes

- reduce remaining reverse proxy wording to required legacy SmartProxy cleanup and migration identifiers
- clean up legacy reverse proxy naming for SmartProxy (smartproxy)
  - Update legacy reverse proxy service naming and logs used during SmartProxy startup cleanup.
  - Clarify migration and documentation wording for the legacy reverse proxy to SmartProxy transition.
  - Bump @serve.zone/catalog to ^2.12.6 and add pnpm workspace build dependency settings.

## 2026-05-24 - 1.30.1

### Fixes

- align Onebox settings gateway cards with the dees-tile footer action pattern
- align settings gateway cards with dees-tile footer actions (settings-ui)
  - Replaces custom gateway card wrappers with dees-tile header and footer slots.
  - Uses tile-styled action buttons for Admin UI and dcrouter settings saves.

## 2026-05-24 - 1.30.0

### Features

- add configurable Onebox Admin UI domain
  - expose Admin UI domain in settings
  - sync the Admin UI route as a first-class dcrouter gateway route
  - keep Admin UI routing separate from app service routes
- add configurable Admin UI domain routing (admin-ui)
  - Expose and validate the Admin UI domain in settings
  - Sync the Admin UI as a dedicated dcrouter gateway route and SmartProxy route
  - Preserve configured and legacy Admin UI routes during stale-route reconciliation

### Fixes

- preserve Onebox Admin UI routes during external gateway stale-route reconciliation

## 2026-05-24 - 1.29.0

### Features

- add Onebox runtime update prompts and admin-triggered self-upgrades
  - expose Onebox update status through system status
  - reuse the CLI upgrade logic for web-triggered detached upgrades
  - show an update banner and guided DeesUpdater flow in the dashboard

## 2026-05-24 - 1.28.0

### Features

- add enterprise-ready App Store runtime support for declared volumes and raw published ports
  - validate app template schemas before install, fail invalid port/volume declarations early, and preserve declarations across upgrades and backups
  - preflight Docker/host published port conflicts and back up declared service volume data
  - show App Store volume mounts and raw host port exposure before deploy

### Fixes

- fix Onebox dashboard system metrics rendering and traffic polling
- update `@serve.zone/catalog` to `^2.12.5`
- preserve an existing managed dcrouter config file instead of rewriting it on container creation
- remove stale external gateway routes during route reconciliation

## 2026-05-21 - 1.27.0

### Features

- group Onebox sidebar navigation into Apps, Network, and Registry sections (web)
  - add parent/subview routes for grouped app, network, and registry pages

## 2026-05-21 - 1.26.3

### Fixes

- use `dees-table` for gateway domains and DNS records views (web)
  - replace custom row grids with catalog tables, filtering, refresh, and row actions
- use dees-table for gateway domains and DNS records views (web)
  - replace custom row layouts with dees-table in gateway domains and DNS records views
  - add table filtering, refresh actions, and row/context actions for dcrouter management

## 2026-05-20 - 1.26.2

### Fixes

- reload SmartProxy routes after managed startup (proxy)
  - reloads SmartProxy routes immediately after the admin API is ready during startup, avoiding an empty route table when Docker task state lags behind service readiness

## 2026-05-09 - 1.26.1 - fix(external-gateway)
derive gateway client identity from the dcrouter token and make the settings UI read-only

- Resolves external gateway ownership and domain sync to use the gateway client context returned by dcrouter instead of a locally entered client ID.
- Falls back to stored gateway client settings only when token context is unavailable.
- Removes editable Gateway Client ID fields from settings and shows them as diagnostic read-only values for managed and external modes.
- Updates external gateway tests to validate token-derived gateway client IDs and admin-token behavior.

## 2026-05-09 - 1.26.0 - feat(dcrouter)
add managed local dcrouter mode with status controls and gateway integration

- Adds a ManagedDcRouterManager to provision and control a local dcrouter container with default gateway settings.
- Updates gateway sync logic to support managed, external, and disabled dcrouter modes, including managed local route targets.
- Exposes managed dcrouter status, start, stop, and restart operations through OpsServer typed requests.
- Extends settings APIs and the settings UI to configure managed dcrouter ports, image, data directory, and mode selection.
- Adjusts Onebox startup to prepare managed dcrouter settings, shift proxy ports when managed mode is active, and initialize the local gateway before route sync.

## 2026-05-09 - 1.25.0 - feat(external-gateway)
add gateway client domain and DNS record support for dcrouter integration

- switch dcrouter route syncing to gateway-client APIs with fallback to legacy workHoster endpoints
- add admin endpoints and frontend views for browsing gateway domains and DNS records
- introduce dcrouterGatewayClientId settings support while preserving compatibility with the legacy workHoster ID

## 2026-05-08 - 1.24.7 - fix(web-ui)

align Delegate Routing settings with the Dees catalog control and theme conventions

- replace raw Delegate Routing inputs and save button with `dees-input-text` and `dees-button`
- style the Delegate Routing card with explicit `cssManager.bdTheme(...)` colors

## 2026-05-08 - 1.24.6 - fix(auth)

avoid bcrypt worker crashes in compiled binaries during login and password creation

- replace bcrypt password hashing with a Web Crypto PBKDF2 hash format
- remove legacy password-hash fallbacks; existing deployments need their admin user hash updated

## 2026-05-08 - 1.24.5 - fix(opsserver)

start the OpsServer with typedserver custom routes registered through the UtilityWebsiteServer hook

- fixes daemon startup with the current typedserver lifecycle
- cap SmartProxy readiness waiting at 10 seconds during daemon startup

## 2026-05-08 - 1.24.4 - fix(installer)

avoid documenting a hardcoded initial admin password for fresh installs

- update installer output to point operators to the service logs or `ONEBOX_ADMIN_PASSWORD` for initial credentials

## 2026-05-08 - 1.24.3 - fix(runtime)

upgrade runtime dependencies and harden registry/shutdown behavior

- update Deno, API, Docker, Cloudflare, SmartACME, SmartRegistry, SmartStorage, TaskBuffer, catalog, and build-tool dependencies
- expose the embedded OCI registry through OpsServer `/v2` routes with the configured token realm
- avoid creating a hardcoded default admin password and close Docker/log receiver resources during shutdown

## 2026-03-24 - 1.24.2 - fix(deps)
bump runtime and build tool dependencies

- update @design.estate/dees-catalog to ^3.49.0
- update development tooling packages @git.zone/tsbundle, @git.zone/tsdeno, and @git.zone/tswatch

## 2026-03-24 - 1.24.1 - fix(repo)
migrate smart build config to .smartconfig.json and tidy repository metadata

- Rename npmextra.json to .smartconfig.json and extend it with CLI project metadata for the repository.
- Mark the package as private and add an empty pnpm overrides block in package.json.
- Expand .gitignore to cover common build artifacts, caches, install directories, and local tooling folders.
- Reformat changelog and README files for cleaner spacing and Markdown table alignment without changing documented behavior.

## 2026-03-24 - 1.24.0 - feat(backup)

add containerarchive-backed backup storage, restore, download, and pruning support

- add database support for archive snapshot IDs and stored size tracking for backups
- initialize and close the backup archive during onebox lifecycle startup and shutdown
- allow backup download and restore flows to work with archive snapshots as well as legacy file-based backups
- schedule daily archive pruning based on the most generous configured retention policy
- replace smarts3 with smartstorage for registry-backed S3-compatible storage

## 2026-03-21 - 1.23.0 - feat(appstore)

add remote app store templates with service upgrades and Redis/MariaDB platform support

- introduces an App Store manager, API handlers, shared request types, and web UI flow for browsing remote templates and deploying services from template metadata
- tracks app template id and version on services, adds upgrade discovery and migration-based service upgrades, and includes a database migration for template version columns
- adds Redis and MariaDB platform service providers with provisioning plus backup and restore support, and exposes their requirements through service creation and app template config

## 2026-03-18 - 1.22.2 - fix(web-ui)

stabilize app store service creation flow and add Ghost sqlite defaults

- Defers App Store navigation to the services view to avoid destroying the current view during the deploy event handler.
- Processes pending app templates after services view updates so the create flow opens reliably.
- Adds default Ghost environment variables for sqlite3 and the database file path in the App Store template.
- Removes obsolete Gitea CI and npm publish workflow definitions.

## 2026-03-18 - 1.22.1 - fix(repo)

no changes to commit

## 2026-03-18 - 1.22.0 - feat(web-appstore)

add an App Store view for quick service deployment from curated templates

- adds a new App Store tab to the web UI with curated Docker app templates
- passes selected app templates through UI state into the services view for quick deployment
- supports quick deploy creation with prefilled image, port, environment variables, and optional platform service flags
- updates @serve.zone/catalog to ^2.8.0 to support the new app store view

## 2026-03-18 - 1.21.0 - feat(opsserver)

add container workspace API and backend execution environment for services

- introduces typed workspace handlers for reading, writing, listing, creating, removing, and executing commands inside service containers
- adds frontend backend-execution environment integration so the service view can open a workspace against a selected service
- extends Docker exec lookup to resolve Swarm service container IDs when a direct container ID is unavailable

## 2026-03-17 - 1.20.0 - feat(ops-dashboard)

stream user service logs to the ops dashboard and resolve service containers for Docker log streaming

- add typed socket support for pushing live user service log entries to the web app
- extend platform log streaming to include running user services with separate dashboard handlers
- fall back from direct container lookup to service-to-container resolution when streaming Docker logs
- update log parsing to preserve timestamps and infer log levels for service log entries
- bump @serve.zone/catalog to ^2.7.0

## 2026-03-17 - 1.19.12 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.11 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.10 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.9 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.8 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.7 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.6 - fix(repository)

no changes to commit

## 2026-03-17 - 1.19.5 - fix(repo)

no changes to commit

## 2026-03-17 - 1.19.4 - fix(repository)

no changes to commit

## 2026-03-16 - 1.19.3 - fix(repo)

no changes to commit

## 2026-03-16 - 1.19.2 - fix(docs)

remove outdated UI screenshot assets from project documentation

- Deletes multiple PNG screenshots that documented previous dashboard, service form, and hello-world states.
- Reduces repository clutter by removing obsolete image assets no longer needed in docs.

## 2026-03-16 - 1.19.1 - fix(dashboard)

add updated dashboard screenshots for refresh and resource usage states

- Adds new dashboard screenshots covering post-refresh, resource usage, and populated data views.
- Updates visual assets to document current dashboard behavior and UI states.

## 2026-03-16 - 1.19.1 - fix(dashboard)

add aggregated resource usage stats to the dashboard

- Aggregate CPU, memory, and network stats across all running user and platform service containers in getSystemStatus
- Extend ISystemStatus.docker interface with cpuUsage, memoryUsage, memoryTotal, networkIn, networkOut fields
- Fix getContainerStats to properly handle Swarm service IDs by catching exceptions and falling back to label-based container lookup
- Wire dashboard resource usage card to display real aggregated data from the backend

## 2026-03-16 - 1.19.0 - feat(opsserver,web)

add real-time platform service log streaming to the dashboard

- stream running platform service container logs from the ops server to connected dashboard clients via TypedSocket
- parse Docker log timestamps and levels for both pushed and fetched platform service log entries
- enhance the platform service detail view with mapped statuses and predefined host, port, version, and config metadata
- add the typedsocket dependency and update the catalog package for dashboard support

## 2026-03-16 - 1.18.5 - fix(platform-services)

fix platform service detail view navigation and log display

- Add back button to platform service detail view for returning to services list
- Fix DOM lifecycle when switching between platform services (destroy and recreate dees-chart-log)
- Fix timestamp format for log entries to use ISO 8601 for dees-chart-log compatibility
- Clear previous stats/logs state before fetching new platform service data

## 2026-03-16 - 1.18.4 - fix(repo)

no changes to commit

## 2026-03-16 - 1.18.3 - fix(deps)

bump @serve.zone/catalog to ^2.6.1

- Updates the @serve.zone/catalog runtime dependency from ^2.6.0 to ^2.6.1.

## 2026-03-16 - 1.18.2 - fix(repo)

no changes to commit

## 2026-03-16 - 1.18.1 - fix(repo)

no changes to commit

## 2026-03-16 - 1.18.0 - feat(platform-services)

add platform service log retrieval and display in the services UI

- add typed request support in the ops server to fetch Docker logs for platform service containers
- store fetched platform service logs in web app state and load them when opening platform service details
- render platform service logs in the services detail view and add sidebar icons for main navigation tabs

## 2026-03-16 - 1.17.4 - fix(docs)

add hello world running screenshot for documentation

- Adds a new PNG asset showing the application in a running hello world state.
- Supports project documentation or README usage without changing runtime behavior.

## 2026-03-16 - 1.17.3 - fix(mongodb)

downgrade the MongoDB service image to 4.4 and use the legacy mongo shell for container operations

- changes the default MongoDB container image from mongo:7 to mongo:4.4
- replaces mongosh with mongo for health checks, provisioning, and deprovisioning inside the container

## 2026-03-16 - 1.17.2 - fix(platform-services)

provision ClickHouse, MinIO, and MongoDB resources via docker exec instead of host port access

- switch ClickHouse provisioning and teardown to in-container client commands to avoid host port mapping issues
- replace MinIO host-side S3 API calls with in-container mc commands for bucket creation and removal
- run MongoDB provisioning and deprovisioning through mongosh inside the container and improve docker exec failure reporting

## 2026-03-16 - 1.17.1 - fix(repo)

no changes to commit

## 2026-03-16 - 1.17.0 - feat(web/services)

add deploy service action to the services view

- Adds a prominent "Deploy Service" button to the services page header.
- Routes users into the create service view directly from the services listing.
- Includes a new service creation form screenshot asset for the updated interface.

## 2026-03-16 - 1.16.0 - feat(services)

add platform service navigation and stats in the services UI

- add platform service stats state and fetch action
- show platform services in the services list and open a platform detail view
- enable dashboard clicks to jump directly to the selected platform service
- refresh platform service stats after start and restart actions
- bump @serve.zone/catalog to ^2.6.0 for the new platform service UI components

## 2026-03-16 - 1.15.3 - fix(install)

refresh systemd service configuration before restarting previously running installations

- Re-enable the systemd service during updates so unit file changes are applied before restart
- Add a log message indicating the service configuration is being refreshed

## 2026-03-16 - 1.15.2 - fix(systemd)

set HOME and DENO_DIR for the systemd service environment

- Adds HOME=/root to the generated onebox systemd unit
- Adds DENO_DIR=/root/.cache/deno so Deno cache paths are available when running as a service

## 2026-03-16 - 1.15.1 - fix(systemd)

move Docker installation and swarm initialization to systemd enable flow

- Ensures Docker is installed before writing and enabling the systemd unit that depends on docker.service.
- Removes Docker auto-installation from Onebox initialization so setup happens in the service management path.

## 2026-03-16 - 1.15.0 - feat(systemd)

replace smartdaemon-based service management with native systemd commands

- adds a dedicated OneboxSystemd manager for enabling, disabling, starting, stopping, checking status, and following logs
- introduces a new `onebox systemd` CLI command set and updates install and help output to use it
- removes the smartdaemon dependency and related service management code

## 2026-03-16 - 1.14.10 - fix(services)

stop auto-update monitoring during shutdown

- Track the auto-update polling interval in the services manager
- Clear the auto-update interval when Onebox shuts down to prevent background checks after shutdown

## 2026-03-16 - 1.14.9 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.8 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.7 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.6 - fix(project)

no changes to commit

## 2026-03-16 - 1.14.5 - fix(onebox)

move Docker auto-install and swarm initialization into Onebox startup flow

- removes Docker setup from daemon service installation
- ensures Docker is installed before Docker initialization during Onebox startup
- preserves automatic Docker Swarm initialization on fresh servers

## 2026-03-16 - 1.14.4 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.3 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.2 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.1 - fix(repo)

no changes to commit

## 2026-03-16 - 1.14.0 - feat(daemon)

auto-install Docker and initialize Swarm during daemon service setup

- Adds a Docker availability check before installing the Onebox daemon service
- Installs Docker automatically when it is missing using the standard installation script
- Attempts to initialize Docker Swarm after installation and handles already-initialized environments gracefully

## 2026-03-16 - 1.13.17 - fix(ci)

remove forced container image pulling from Gitea workflow jobs

- Drops the `--pull always` container option from CI, npm publish, and release workflows.
- Keeps workflow container images unchanged while avoiding forced pulls on every job run.

## 2026-03-16 - 1.13.16 - fix(ci)

refresh workflow container images on every run and bump @apiclient.xyz/docker to ^5.1.1

- add --pull always to CI, release, and npm publish workflow containers to avoid stale images
- update @apiclient.xyz/docker from ^5.1.0 to ^5.1.1 in deno.json

## 2026-03-15 - 1.13.15 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.14 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.13 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.12 - fix(ci)

run pnpm install with --ignore-scripts in CI and release workflows

- Update CI workflow dependency installation steps to skip lifecycle scripts during builds.
- Apply the same install change to the release workflow for consistent automation behavior.

## 2026-03-15 - 1.13.11 - fix(project)

no changes to commit

## 2026-03-15 - 1.13.10 - fix(deps)

bump @git.zone/tsdeno to ^1.2.0

- Updates the tsdeno development dependency from ^1.1.1 to ^1.2.0.

## 2026-03-15 - 1.13.9 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.8 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.7 - fix(repo)

no changes to commit

## 2026-03-15 - 1.13.6 - fix(ci)

correct workflow container image registry path

- Update Gitea CI, release, and npm publish workflows to use the corrected ht-docker-node image path
- Align all workflow container references from hosttoday to host.today to prevent pipeline image resolution issues

## 2026-03-15 - 1.13.5 - fix(workflows)

switch Gitea workflow containers from ht-docker-dbase to ht-docker-node

- Updates the CI, release, and npm publish workflows to use the Node-focused container image consistently.
- Aligns workflow runtime images with the project's Node and Deno build and publish steps.

## 2026-03-15 - 1.13.4 - fix(ci)

run workflows in the shared build container and enable corepack for pnpm installs

- adds the ht-docker-dbase container image to CI, release, and npm publish workflows
- enables corepack before pnpm install in build and release jobs to ensure package manager availability

## 2026-03-15 - 1.13.3 - fix(build)

replace custom Deno compile scripts with tsdeno-based binary builds in CI and release workflows

- adds @git.zone/tsdeno as a dev dependency and configures compile targets in npmextra.json
- updates CI and release workflows to install Node.js dependencies before running tsdeno compile
- removes the legacy scripts/compile-all.sh script and points the compile task to tsdeno compile

## 2026-03-15 - 1.13.2 - fix(scripts)

install production dependencies before compiling binaries and exclude local node_modules from builds

- Adds a dependency installation step using the application entrypoint before cross-platform compilation
- Updates all deno compile targets to use --node-modules-dir=none to avoid bundling local node_modules

## 2026-03-15 - 1.13.1 - fix(deno)

remove nodeModulesDir from Deno configuration

- Drops the explicit nodeModulesDir setting from deno.json.
- Keeps the package version unchanged at 1.13.0 while simplifying runtime configuration.

## 2026-03-15 - 1.13.0 - feat(install)

improve installer with version selection, service restart handling, and upgrade documentation

- Adds installer command-line options for help, specific version selection, and custom install directory.
- Fetches the latest release from the Gitea API when no version is provided and installs the matching platform binary.
- Preserves Onebox data directories, stops and restarts the systemd service during updates, and refreshes installation instructions in the README including upgrade usage.

## 2026-03-15 - 1.12.1 - fix(package.json)

update package metadata

- Single metadata-only file changed (+1, -1)
- No source code or runtime behavior modified; safe patch release

## 2026-03-15 - 1.12.0 - feat(cli,release)

add self-upgrade command and automate CI, release, and npm publishing workflows

- adds a new `onebox upgrade` CLI command that checks the latest release and reinstalls the current binary via the installer script
- introduces Gitea CI workflows for type checks, build verification, multi-platform binary compilation, release creation, and npm publishing
- adds a reusable release template describing installation options, supported platforms, and checksum availability

## 2026-03-03 - 1.11.0 - feat(services)

map backend service data to UI components, add stats & logs parsing, fetch service stats, and fix logs request param

- Fix: rename service logs request property from 'lines' to 'tail' when calling typedRequest
- Add data transformation helpers: formatBytes, parseImageString, mapStatus, toServiceDetail, toServiceStats, parseLogs
- Transform service list and detail props to match @serve.zone/catalog component interfaces (map status, image, repo/tag, timestamps, registry)
- Dispatch fetchServiceStatsAction on service click and surface transformed stats with default values to avoid nulls
- Parse and normalize logs into timestamp/message pairs for the detail view

## 2026-03-02 - 1.10.3 - fix(bin)

make bin/onebox-wrapper.js executable

- Metadata-only change: file mode updated for bin/onebox-wrapper.js to include the executable bit
- No source or behavior changes to the code

## 2026-03-02 - 1.10.2 - fix(build)

update build/watch configuration, switch to esbuild bundler and tswatch, and bump catalog and tooling dependencies

- Switch watch script to 'tswatch' (replaced previous concurrently command invoking deno + tswatch).
- npmextra.json: set bundler to 'esbuild', enable production mode, include html/index.html in the bundle, and extend watchPatterns to include ./html/\*_/_.
- Backend watcher: expanded watch globs and changed command to include --unstable-ffi and runtime flags (--ephemeral --monitor); restart and debounce kept.
- Bump runtime deps: @design.estate/dees-catalog -> ^3.43.3, @serve.zone/catalog -> ^2.5.0.
- Bump devDependencies: @git.zone/tsbundle -> ^2.9.0, @git.zone/tswatch -> ^3.2.0.

## 2026-02-24 - 1.10.1 - fix(package.json)

update package metadata

- Single metadata-only file changed (+1 -1)
- No source code or runtime behavior modified; safe patch release
- Current package version is 1.10.0; recommend patch bump to 1.10.1

## 2026-02-24 - 1.10.0 - feat(opsserver)

introduce OpsServer (TypedRequest API) and new lightweight web UI; replace legacy Angular UI and add typed interfaces

- Add OpsServer (ts/opsserver) with TypedRequest handlers for admin, services, platform, dns, domains, registry, network, backups, schedules, settings and logs.
- Integrate typedrequest/typedserver and smartjwt/smartguard plugins (ts/plugins.ts) and add comprehensive ts_interfaces for requests and data shapes.
- Replace legacy HTTP server usage with OpsServer throughout daemon, Onebox class and CLI (ts/classes/daemon.ts, ts/classes/onebox.ts, ts/cli.ts).
- Implement log streaming via VirtualStream and support for downloading/restoring backups and registry token management within handlers.
- Introduce new web UI built with dees-element web components under ts_web (ob-app-shell and views) and bundle/watch tooling (npmextra.json, tsbundle/tswatch integration).
- Update package.json: add build/watch scripts, tsbundle/tswatch dev deps and new runtime dependencies for typedrequest and catalog components.
- Remove large Angular-based ui application and related services/components in ui/ (major cleanup of Angular code and assets).
- Note: This adds many new endpoints and internal API changes (TypedRequest-based); consumers of the old UI/HTTP endpoints should migrate to the new OpsServer TypedRequest API and web components.

## 2025-12-03 - 1.9.2 - fix(ui)

Add VS Code configs for the UI workspace and normalize dark theme CSS variables

- Add VS Code workspace files under ui/.vscode:
- - extensions.json: recommend the Angular language support extension
- - launch.json: Chrome launch configurations for 'ng serve' and 'ng test' (preLaunchTask hooks)
- - tasks.json: npm 'start' and 'test' tasks with a background TypeScript problem matcher to improve dev workflow
- Update ui/src/styles.css dark theme variables to use neutral black/gray HSL values for background, foreground, cards, popovers, accents, borders, inputs and ring to improve contrast and consistency

## 2025-11-27 - 1.9.1 - fix(ui)

Correct import success toast and add VS Code launch/tasks recommendations for the UI

- Fix backup import success toast in backups-tab.component to reference response.data.service.name (previously response.data.serviceName), preventing incorrect service name display.
- Add VS Code workspace settings for the UI: extensions recommendation, launch configurations for 'ng serve' and 'ng test', and npm tasks for start/test to simplify local development and debugging.

## 2025-11-27 - 1.9.0 - feat(backups)

Add backup import API and improve backup download/import flow in UI

- Backend: add /api/backups/import endpoint to accept multipart file uploads or JSON with a URL and import backups (saves temp file, validates .tar.enc, calls backupManager.restoreBackup in import mode).
- Backend: server-side import handler downloads remote backup URLs, stores temporary file, invokes restore/import logic and cleans up temp files.
- Frontend: add downloadBackup, importBackupFromFile and importBackupFromUrl methods to ApiService; trigger browser download using Blob and object URL with Authorization header.
- Frontend: replace raw download link in service detail UI with a Download button that calls downloadBackup and shows success/error toasts.
- Dev: add VS Code launch, tasks and recommended extensions for the ui workspace to simplify local development.

## 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:<hostPort>) 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:<hostPort>
- 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
