# Changelog ## 2026-02-24 - 2.7.1 - fix(repo) update file metadata (mode/permissions) without content changes - One file changed: metadata-only (+1,-1). - No source or behavior changes — safe to bump patch version. - Change likely involves file mode/permission or metadata update only. ## 2026-02-24 - 2.7.0 - feat(secrets) add ability to fetch and view all secrets across projects and groups, include scopeName, and improve frontend merging/filtering - Add new typed request and handler getAllSecrets to opsserver to bulk-fetch secrets across projects or groups (batched and using Promise.allSettled for performance). - Extend ISecret with scopeName and update provider mappings (Gitea/GitLab) and secret return values to include scopeName. - Frontend: add fetchAllSecretsAction, add an "All" option in the Secrets view, filter table by selected entity or show all, and disable "Add Secret" when "All" is selected. - Create/update actions now merge only the affected entity's secrets into state instead of replacing the entire list; delete now filters by key+scope+scopeId to avoid removing unrelated secrets. - UI: table now shows a Scope column using scopeName (or fallback to scopeId), selection changes trigger reloading of entities and secrets. ## 2026-02-24 - 2.6.2 - fix(meta) update file metadata only (no source changes) - One file changed: metadata-only (e.g. permissions/mode) with no content modifications. - No code, dependency, or API changes detected; safe patch release recommended. - Bump patch version from 2.6.1 to 2.6.2. ## 2026-02-24 - 2.6.1 - fix(package.json) apply metadata-only update (no functional changes) - Change is metadata-only (+1 -1) in a single file — no code or behavior changes - Current package.json version is 2.6.0; recommend a patch bump to 2.6.1 ## 2026-02-24 - 2.6.0 - feat(webhook) add webhook endpoint and client push notifications, auto-refresh UI, and gitea id mapping fixes - Add WebhookHandler with POST /webhook/:connectionId that parses provider-specific headers and broadcasts webhookNotification via TypedSocket to connected clients - Frontend: add auto-refresh toggle, refresh-interval action, dashboard auto-refresh timer, and views subscribing to gitops-auto-refresh events to refresh data - Frontend: add WebSocket client with reconnect logic to receive push notifications and trigger auto-refresh on webhook events - Gitea provider: prefer repository full_name and organization name when mapping project and group ids to ensure stable identifiers - Bump devDependencies: @git.zone/tsbundle ^2.9.0 and @git.zone/tswatch ^3.2.0 - Add ts_bundled/bundle.js and bundle.js.map to .gitignore ## 2026-02-24 - 2.5.0 - feat(gitea-provider) auto-paginate Gitea repository and organization listing; respect explicit page option and default perPage to 50 - getProjects and getGroups now auto-fetch all pages when opts.page is not provided - When opts.page is provided, the provider respects it and does not auto-paginate - Defaults perPage to 50 for paginated requests - Dependency @design.estate/dees-catalog bumped from ^3.43.0 to ^3.43.3 ## 2026-02-24 - 2.4.0 - feat(opsserver) serve embedded frontend bundle from committed ts_bundled instead of using external dist_serve directory - Switch server to use bundledContent from committed ts_bundled bundle (base64ts) instead of pointing at a serveDir - Update bundler config to emit ./ts_bundled/bundle.ts with outputMode 'base64ts' and includeFiles mapping - Remove dist_serve from .gitignore and commit ts_bundled (embedded frontend bundle) - Bump devDependency @git.zone/tsbundle to ^2.8.4 and deno dependency @api.global/typedserver to ^8.3.1 ## 2026-02-24 - 2.3.0 - feat(storage) add StorageManager and cache subsystem; integrate storage into ConnectionManager and GitopsApp, migrate legacy connections, and add tests - Add StorageManager with filesystem and memory backends, key normalization, atomic writes and JSON helpers (getJSON/setJSON). - ConnectionManager now depends on StorageManager, persists each connection as /connections/.json, and includes a one-time migration from legacy .nogit/connections.json. - Introduce cache subsystem: CacheDb (LocalTsmDb + Smartdata), CacheCleaner, CachedDocument and CachedProject for TTL'd cached provider data, plus lifecycle management in GitopsApp. - GitopsApp now initializes StorageManager, wires ConnectionManager to storage, starts/stops CacheDb and CacheCleaner, and uses resolved default paths via resolvePaths. - Export smartmongo and smartdata in plugins and add corresponding deps to deno.json. - Add comprehensive tests: storage unit tests, connection manager integration using StorageManager, and a tsmdb + smartdata spike test. ## 2026-02-24 - 2.2.1 - fix(ts_bundled) add generated bundled JavaScript and source map for ts build (bundle.js and bundle.js.map) - Added ts_bundled/bundle.js (≈168 KB) - compiled/bundled output from ts sources - Added ts_bundled/bundle.js.map (≈309 KB) - source map referencing ../ts/index.ts and ../ts_web/index.ts - This is generated build output (deno bundle) and does not change runtime API ## 2026-02-24 - 2.2.0 - feat(opsserver) Serve bundled frontend from a dedicated dist_serve directory and update frontend UI/packaging - Serve static site using UtilityWebsiteServer with serveDir set to ./dist_serve and pass port into server.start() - Update bundler config: output bundle to ./dist_serve/bundle.js, change outputMode to 'bundle', and include html/index.html - Move root index.html into html/index.html and update .gitignore to ignore dist_serve/ (replace ts_bundled) - Frontend enhancements: add iconName to view tabs and resolvedViewTabs, add Lucide icons for each tab, replace manual stats markup with dees-statsgrid using IStatsTile tiles - Adjust shared CSS: center content, set max-width 1280px and adjust padding - Add npm test script and rename/update tests (test.basic.ts -> test.basic_test.ts) ## 2026-02-24 - 2.1.0 - feat(opsserver) switch to TypedServer and serve bundled UI assets; add index.html; update bundling output and dev watch configuration - Replace UtilityWebsiteServer with TypedServer and load bundledContent from ts_bundled/bundle.ts; enable cors, spaFallback, injectReload, watch, and compression - Add a minimal index.html SPA entry and include it in the bundle so it is served from the bundled assets - Change tsbundle output to ./ts_bundled/bundle.ts with outputMode 'base64ts' and includeFiles ['./index.html'] - Add a tswatch bundle config and replace the previous watcher with a backend watcher that runs the server via 'deno run --allow-all mod.ts server' (restart enabled) - Bump devDependency @git.zone/tswatch from ^2.3.13 to ^3.1.0 and update .gitignore to ignore ts_bundled/ ## 2026-02-24 - 2.0.0 - BREAKING CHANGE(providers) switch GitLab and Gitea providers to use @apiclient.xyz client libraries and export clients via plugins - Add new dependencies: @apiclient.xyz/gitea@^1.0.3 and @apiclient.xyz/gitlab@^2.0.3 in deno.json - Export giteaClient and gitlabClient from ts/plugins.ts - Refactor GiteaProvider to use plugins.giteaClient.GiteaClient for all API interactions and update mapping types/fields - Refactor GitLabProvider to use plugins.gitlabClient.GitLabClient for all API interactions and update mapping types/fields - Remove BaseProvider.apiFetch helper and setAuthHeader abstract method (breaking change to BaseProvider API) - Adjust mapping logic: simplify Gitea visibility, change group name/path and webUrl construction, update GitLab topics and projectCount handling ## 2026-02-24 - 1.0.0 - initial release Initial commit and first release of the project. - Project initialized with the initial codebase and repository scaffold. - Base files and basic configuration added. - Tagged first release as 1.0.0.