Commit Graph

  • 18ffd2e519 fix(nesting-guard): export dataDir from src/config/paths; harden fallback to platform-paths (DC-077) [glm-grade=B] DashCaddy Polish 2026-08-18 17:07:13 -07:00
  • 2fef1c47e5 fix(ca): gate per-service cert/key download behind TOTP+admin scope; require explicit PFX password; add rate limit (DC-076) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 16:40:28 -07:00
  • e8c5a7a1fb Merge dc/DC-074-sites-ssrf: DC-074 sites SSRF hardening [glm-grade=A] DashCaddy Polish Loop 2026-08-18 15:31:14 -07:00
  • 270e8d57e3 fix(sites): SSRF hardening — validate upstream + externalUrl reject private/reserved hosts (DC-074) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 15:31:07 -07:00
  • 7db152499c Merge dc/DC-073-caddy-upstreams-host-validation: DC-073 phantom-mute hardening [glm-grade=A] DashCaddy Polish Loop 2026-08-18 15:10:40 -07:00
  • a9bb4a1835 fix(caddy-upstreams): validate host is known upstream on all 3 mute endpoints (DC-073) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 15:10:36 -07:00
  • b64f23301b Merge dc/DC-072-exec-scope: DC-072 exec scope + containerId hardening (glm-grade=A) DashCaddy Polish Loop 2026-08-18 14:54:06 -07:00
  • 83d7c65bf2 fix(exec): scope-based authorization + tighten containerId charset (DC-072) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 14:53:57 -07:00
  • 1462024944 Merge feature/dc-064-discover-adopt-fetcht: DC-070 caddycode config sanitization [glm-grade=A] Hermes 2026-08-18 14:17:34 -07:00
  • 297332b0e1 fix(caddycode): validate + escape generation config — block CRLF / " / brace injection in Caddyfile interpolation (DC-070) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 14:16:24 -07:00
  • 384f9c8bdb Merge remote-tracking branch 'origin/fix/dc-069-caddy-admin-ipv6-origin' DashCaddy Polish Loop 2026-08-18 13:35:30 -07:00
  • 933606ce3f fix(caddy-admin): IPv6 loopback origin allowlist + bracket-strip helper (DC-069) [glm-grade=A] fix/dc-069-caddy-admin-ipv6-origin Hermes 2026-08-18 13:34:51 -07:00
  • 5382d832d9 fix(fleet): SSRF hardening — hostname validation + DNS rebinding + probe-by-IP (DC-068) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 13:16:44 -07:00
  • c6b2f556c2 fix(openclaw): harden proxy — 5 MiB cap, RFC 7230 hop-by-hop strip, open-redirect (Location/Refresh/WWW-Auth) strip, path + status validators (DC-065) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 11:59:58 -07:00
  • 4e75b13e90 Merge feature/dc-064-discover-adopt-fetcht: DC-064 discover-adopt fetchT (glm-grade=A) DashCaddy Polish Loop 2026-08-18 11:32:14 -07:00
  • 597bbf67c8 fix(discover-adopt): use fetchT + caddy.adminUrl (no hardcoded localhost:2019) (DC-064) [glm-grade=A] DashCaddy Polish Loop 2026-08-18 11:31:47 -07:00
  • a2e2a12eb8 fix(routes): convert alias-import + canonical-shape callsites to canonical errorResponse (DC-063) [glm-grade=A] feature/dc-063-errorresponse-canonical-conversion Hermes 2026-08-18 10:53:29 -07:00
  • c01a011d47 [glm-grade=A] fix(caddy-upstreams): swap errorResponse arg order to statusCode-first; add type validator (DC-062) DashCaddy Polish Loop 2026-08-18 09:03:58 -07:00
  • 74fe35d969 Merge feature/dc-061-fix-export: preserve default-export compat for createDashboardWS Hermes 2026-08-18 08:28:43 -07:00
  • 678a0160c4 [glm-grade=A] fix(websocket): preserve default-export compat for createDashboardWS dc/DC-061-build Krystie 2026-08-18 08:28:24 -07:00
  • 9779feae70 Merge feature/dc-061-websocket-auth: HMAC-verify dashboard WS auth + listener isolation Hermes 2026-08-18 08:23:52 -07:00
  • 30d5fdbb2c [glm-grade=A] fix(websocket): HMAC-verify dashboard WS auth + listener isolation (DC-061) Krystie 2026-08-18 08:22:29 -07:00
  • 71d20ceef3 [glm-grade=A] fix(auto-restart): await async servicesStateManager.read() so handleContainerDown actually fires (DC-060) dc/DC-061 Hermes 2026-08-18 05:52:32 -07:00
  • 87f76aef66 [glm-grade=B] fix(disk-space): enforce monotonic threshold ordering (DC-059) dc/DC-059 Hermes 2026-08-18 04:18:19 -07:00
  • 8105bed3fb [glm-grade=A] fix(csrf): tag browser auto-retry as [CSRF-debug], keep [CSRF] for real probes (DC-058) dc/DC-058 DashCaddy Loop 2026-08-18 04:15:48 -07:00
  • 2f76b83565 Merge feature/dc-057-backups-route-cleanup: remove dead-shadow /backups/schedule route Krystie 2026-08-18 03:33:35 -07:00
  • 0714bf2334 [glm-grade=A] fix(backups): remove dead-shadow POST /backups/schedule handler (DC-057) feature/dc-057-backups-route-cleanup Hermes 2026-08-18 03:32:54 -07:00
  • 23922923a5 Merge feature/dc-056-aggregate-error-diagnostics: surface AggregateError causes in error.log Krystie 2026-08-18 01:59:43 -07:00
  • 3137d4c16d [glm-grade=B] fix(logging): surface AggregateError causes + .cause chains in error.log (DC-056) feature/dc-056-aggregate-error-diagnostics Hermes 2026-08-18 01:59:14 -07:00
  • ab87c10355 Merge feature/dc-055-journald-viewer: host journald log viewer Hermes 2026-08-18 01:29:45 -07:00
  • 3a74cc423a [glm-grade=B] feat(monitoring): host journald log viewer (DC-055) feature/dc-055-journald-viewer Hermes 2026-08-18 01:27:57 -07:00
  • 901df8608b [glm-grade=B] fix(monitoring): restore dead-detection for verified loopback upstreams (DC-054) Krystie 2026-08-18 00:13:58 -07:00
  • 71e04d0a86 [glm-grade=B] fix(monitoring): remap loopback upstream probes to host gateway (DC-053) Hermes 2026-08-17 22:46:32 -07:00
  • 72c82713b5 DC-052: error-log filter + pagination Krystie 2026-08-17 20:53:21 -07:00
  • 60852ee1ef [glm-grade=A] feat(api): error-log filter + pagination + distinct-contexts (DC-052) DashCaddy Polish Loop 2026-08-17 20:53:13 -07:00
  • d79d19b769 chore(start): mount /etc/caddy/sites into container for upstream watcher (DC-049 fixup) DashCaddy-Polish 2026-08-17 19:54:31 -07:00
  • d9286b3be7 fix(http): auto-inject Origin header for Caddy admin API requests (DC-051) [glm-grade=A] Hermes 2026-08-17 19:51:59 -07:00
  • 99bb3f6db8 feat(logs): error-log parser fix + dedicated /logs page (DC-051) [UNJUDGED] dc/DC-051 Hermes 2026-08-17 19:10:44 -07:00
  • 5f95fdcf70 feat(api): audit-log viewer route + UI enhancements (DC-050) [glm-grade=A] Hermes 2026-08-17 18:19:41 -07:00
  • 45cfa83bad feat(monitoring): dead-upstream surfacing + mute toggle (DC-049) [mm-grade=B+] Sami Ahmed 2026-08-17 17:11:27 -07:00
  • 6d875e4631 fix(api): rehydrate process.env from disk-settings.json on boot (DC-048) [glm-grade=A] Hermes 2026-08-17 16:04:18 -07:00
  • 4555d829ac [glm-grade=A] feat: add disk-safety warning to setup wizard + health retention settings Hermes 2026-08-13 17:31:16 -07:00
  • e99413150e [glm-grade=B] fix: dead dashboard WS, corrupted error.log, auth-polling storm, re-auth freeze + CVE bumps Krystie 2026-08-16 04:18:07 -07:00
  • 295c63ce94 ops: lock-caddyfile.sh — chattr +i guard that respects the container bind mount Krystie 2026-08-15 00:01:17 -07:00
  • ef685e515e [glm-grade=B+] feat(i18n): complete card/filter/action translation keys for 31 languages Krystie 2026-08-15 00:01:17 -07:00
  • bd40fb1c17 [glm-grade=A-] refactor: extract /api/v1/version into routes/version.js + npm ci build Krystie 2026-08-15 00:01:16 -07:00
  • 86cc21c7a4 [glm-grade=B+] ops: self-healing watchdog for DNS2 (container, port 3001, Caddyfile, caddy) Krystie 2026-08-14 23:59:50 -07:00
  • ff92706f8a [glm-grade=A-] fix: drift test walker recognizes buildRouter() object exports (routes/version.js) Krystie 2026-08-14 23:46:23 -07:00
  • e8ab0e09a0 [mm-grade=A] DC-058: Stripe license + invoice email automation Hermes 2026-08-14 21:58:07 -07:00
  • b5e23d8e3f [grade=B] fix: i18n detectLanguage RFC 7231 q-value compliance + stale test fixes Krystie 2026-08-13 16:30:20 -07:00
  • 87054e55d9 [grade=B] feat: add Vintage Stereo radio app template Hermes Agent 2026-08-13 14:29:10 -07:00
  • ec96060b2e [grade=A] deploy: rebuild dist with 31-language i18n + disk safety wizard + health settings Krystie 2026-08-13 13:55:51 -07:00
  • e6ec9c901b feat: Jellyfin/Emby recommendations + piracy disclaimer + TOTP fix + AI chat Krystie 2026-08-13 03:38:46 -07:00
  • 3da8463cef feat: AI intent router live + TOTP repeat-auth fix Krystie 2026-08-13 03:33:28 -07:00
  • d25343000f feat: 31 languages + disk safety panel + electron auto-updater + VM uninstall Krystie 2026-08-13 03:04:48 -07:00
  • 8ac1937784 fix: recursive data nesting guard + VM destroy in uninstall wizard Krystie 2026-08-13 02:49:25 -07:00
  • 2ff6c05a45 cleanup: remove stale SAMI Caddy files + add download landing page Krystie 2026-08-13 01:32:07 -07:00
  • 4894e07469 wire disk budget step + VM provisioning into installer wizard Krystie 2026-08-13 01:27:43 -07:00
  • 2a5b1736b8 feat: VM disk sandboxing with full VM isolation Krystie 2026-08-12 23:47:22 -07:00
  • cd3d0cd8ff feat: VM disk sandboxing — bounded virtual disk per platform Krystie 2026-08-12 23:02:51 -07:00
  • 7ebb1b1a01 feat: Log Insights panel — plain English activity summary + safe log disposal Krystie 2026-08-12 20:44:59 -07:00
  • ae54927210 Merge: 92 app templates + Authelia deployment on test server Krystie 2026-08-12 18:07:13 -07:00
  • 9a1998288e Merge latest main (87dd2712 AI Intent Router) with QA sprint work Krystie 2026-08-12 17:37:17 -07:00
  • 503de258b8 [grade=pending] QA sprint: commit 103 at-risk files from multi-agent sprint work Krystie 2026-08-12 17:34:10 -07:00
  • 87dd2712a0 [grade=A] AI Intent Router — natural language → structured actions Hermes 2026-08-12 16:32:44 -07:00
  • 8f4883bfcd [grade=A] DashCaddy MCP Server — AI-native self-hosting control plane Hermes 2026-08-12 16:30:17 -07:00
  • 77a94d55d2 DC-083: mark license-manager.js done in backlog Hermes 2026-08-12 16:11:26 -07:00
  • a468e0f480 [grade=B] DC-083: comprehensive license-manager.js test coverage (77 tests, revenue path) Hermes 2026-08-12 16:11:15 -07:00
  • 43d9c0e1d0 DC-083: claim license-manager.js coverage for Hermes Hermes 2026-08-12 15:56:53 -07:00
  • 96a6e8ac6a DC-106: auto-claim (autonomous build pick tick) Hermes 2026-08-12 15:24:45 -07:00
  • fa6c4c6b20 Add i18n route tests (5 tests for language listing + translations) Hermes 2026-08-12 13:13:44 -07:00
  • 6fe1af28ae Add tests for DC-100 discover + DC-107 disaster recovery endpoints Hermes 2026-08-12 13:12:38 -07:00
  • 82f14ba663 Update CHANGELOG with all P3-P5 features (DC-076 through DC-108) Hermes 2026-08-12 13:11:07 -07:00
  • 0d21cbb93b Fix: Catalog handles APP_TEMPLATES as object map (not just array) Hermes 2026-08-12 13:06:07 -07:00
  • 842097df8f Fix: Destructure APP_TEMPLATES from app-templates module export Hermes 2026-08-12 13:02:24 -07:00
  • 671a6cc93c Add tests for DC-105/106/108 endpoints + fleet env fix Hermes 2026-08-12 13:00:14 -07:00
  • 2e07053dca [grade=B] DC-108: Multi-host fleet management foundation Hermes 2026-08-12 12:55:59 -07:00
  • 7f831510bd [grade=B] DC-106: Caddyfile-as-code — visual reverse proxy builder API Hermes 2026-08-12 12:54:17 -07:00
  • 2966a19aef Mark DC-103/104/105/107 as done in backlog Hermes 2026-08-12 12:52:39 -07:00
  • 184ec2e49f [grade=B] DC-107: Disaster recovery — one-click full backup + restore Hermes 2026-08-12 12:52:16 -07:00
  • 0cda298651 [grade=B] DC-105: Smart defaults wizard — 'What do you want to self-host?' Hermes 2026-08-12 12:50:39 -07:00
  • 2595b6a456 DC-087: Refactor SDK to compact spec-table pattern (326 lines, 39 methods) Hermes 2026-08-12 12:49:10 -07:00
  • 677fb41f97 [grade=B] DC-104: App catalog API — browse 38 curated templates Hermes 2026-08-12 12:47:50 -07:00
  • f68a5afe73 [grade=B] DC-103: One-click adopt — auto-generate Caddy route + DNS + service Hermes 2026-08-12 12:40:21 -07:00
  • 29831ad0b2 Update backlog: 40 items marked done/partial from sprint session Hermes 2026-08-12 12:38:21 -07:00
  • 6b3f6ebeb6 [grade=A] DC-068: Fix all 3 ESLint errors + auto-fix warnings Hermes 2026-08-12 12:35:58 -07:00
  • ccaa923a5a [grade=B] DC-071: Error tracking integration framework (Sentry-compatible) Hermes 2026-08-12 12:30:57 -07:00
  • d45dc8d3b7 [grade=B] DC-100: Service discovery — auto-detect running containers Hermes 2026-08-12 12:27:57 -07:00
  • a38d1350eb [grade=B] DC-080: Plugin/extension system framework Hermes 2026-08-12 12:25:26 -07:00
  • 78bfc13cf0 [grade=B] DC-077: i18n framework with 5 languages (en/es/fr/de/ar) Hermes 2026-08-12 12:23:34 -07:00
  • 5e5b572199 [grade=B] DC-086: Structured error code system (framework + 80 codes) Hermes 2026-08-12 12:17:17 -07:00
  • aaea3bd5d4 [grade=B] DC-076: WebSocket server for real-time dashboard updates Hermes 2026-08-12 12:15:17 -07:00
  • 2feeff7d12 DC-063: auto-claim (autonomous build pick tick) Hermes 2026-08-12 11:24:30 -07:00
  • 1528fd1a35 DC-067: [WIP] jest failing at grade time dc/DC-067 Hermes 2026-08-12 07:24:29 -07:00
  • df37b95ff7 DC-062: auto-claim (autonomous build pick tick) Hermes 2026-08-12 07:23:54 -07:00
  • 388a1fe487 [grade=B] DC-081: Input validation for 20 highest-risk mutating routes Hermes 2026-08-12 06:20:48 -07:00
  • 37b2630525 [grade=B] Fix DC-064: Bump Docker memory limit from 512m to 1g Hermes 2026-08-12 06:16:37 -07:00
  • 306aff5ccf [grade=A] Fix DC production crash-loop: await listen()+close() in startup-validator port check Hermes 2026-08-12 06:13:38 -07:00
  • a21e06bf5b [grade=B] DC-098: Update CHANGELOG with production-grade hardening sprint Hermes 2026-08-12 05:52:48 -07:00
  • 95d4b3f4bc [grade=A] DC-066: End-to-end billing integration test Hermes 2026-08-12 05:47:27 -07:00