Commit Graph

  • af970aa564 [grade=B] feat: real macOS .dmg built entirely on Linux (libguestfs + libdmg-hfsplus) main v1.0.0 Hermes 2026-09-01 03:36:16 -07:00
  • d87ca00e58 [grade=B] docs+cleanup: fix BUILD_GUIDE factual errors, document wine/i386 NSIS pitfall, drop .bak junk Hermes 2026-09-01 00:51:24 -07:00
  • 468bc00106 [grade=A] installer: stop shipping production CA private keys in installers Hermes 2026-09-01 00:20:00 -07:00
  • b08de2955b [grade=A] installer: fix 17 failing tests across 4 suites + tld data-loss bug Hermes 2026-08-31 23:37:38 -07:00
  • c28322eb46 [grade=B] api: fix undeclared 'format' runtime bug in routes/ca.js + 10 lint errors Hermes 2026-08-31 23:37:00 -07:00
  • b6678cf591 DC-061: remove superseded status/pricing/index.html and obsolete pricing-page-catalog test Hermes 2026-08-23 20:24:42 -07:00
  • a7a2b70b2d DC-061: claim for Hermes Hermes 2026-08-23 20:20:43 -07:00
  • 65a4d825fb fix(dns): container DNS fallback must serve internal .sami TLD — replace 8.8.8.8 with DNS1 Technitium secondary (DC-121) Hermes 2026-08-23 17:55:11 -07:00
  • 46b6952c36 [glm-grade=A] fix(security): DC-120 surface caddy-source perimeter events in Log Insights dashboard — new GET /api/v1/security/events/perimeter endpoint with per-IP/per-vhost aggregations, event-store compileFilter/filterEvents primitives, and Perimeter section in Log Insights modal with XSS-safe rendering and stale-request guards Hermes 2026-08-23 17:26:07 -07:00
  • 4d97a11978 fix(build): frontend build determinism across line endings (DC-119) [glm-grade=A] Hermes 2026-08-23 16:34:49 -07:00
  • 1744d1c86e fix(security): caddy-event self-noise conjunction filter for host curl probes (DC-118) [glm-grade=A] Hermes 2026-08-23 15:53:58 -07:00
  • 2dce6dca5e fix(security): event-store retention + race + total-cap defects (DC-116) [glm-grade=B] Hermes 2026-08-23 15:02:00 -07:00
  • 65457ff8e0 feat(security): activate caddy security-event pipeline — bounded first-start replay, self-noise filter, host fidelity (DC-113) [glm-grade=A] Hermes 2026-08-23 12:40:32 -07:00
  • a29a59a320 fix(security): name caddy-worker SSO gate events + dead-path visibility (DC-112) [glm-grade=A] Hermes 2026-08-23 09:37:18 -07:00
  • 56b807543c fix(audit): restore named audit actions for SSO gate traffic — 3 live defects (DC-111) [glm-grade=A] Hermes 2026-08-23 09:05:27 -07:00
  • 0721b1cb04 fix(security): audit-logger PII masking parity with unified logger (DC-110) [glm-grade=A] Hermes 2026-08-23 08:01:29 -07:00
  • 9322831f1b fix(security): quoted local-part email mask — strip delimiter quotes, split on last @ (DC-109) [glm-grade=A] Hermes 2026-08-23 07:28:10 -07:00
  • c429b8fdd7 fix(security): redact-on-rotate for error.log archive + README PII docs (DC-108) [glm-grade=B] Hermes 2026-08-23 05:22:04 -07:00
  • 5efacd11e8 fix(security): close rotateEncryptionKey crash window with in-process key rollback (DC-107) [glm-grade=A] Hermes 2026-08-23 04:40:41 -07:00
  • eb2bab7a96 refactor(persistence): migrate credential-manager to canonical atomic-write util (DC-106) [glm-grade=B] Hermes 2026-08-23 03:06:58 -07:00
  • b1464d9b85 refactor(persistence): migrate caddy-upstream-watcher state to canonical atomic-write util (DC-105) [glm-grade=A] Hermes 2026-08-23 02:31:16 -07:00
  • 3c04a740e4 refactor(persistence): migrate bridge events file to canonical atomic-write util (DC-104) [glm-grade=A] Hermes 2026-08-23 01:57:20 -07:00
  • 6f8fac142f refactor(persistence): migrate fulfillment-store to canonical atomic-write util (DC-103) [glm-grade=A] Hermes 2026-08-23 01:21:28 -07:00
  • 521b2f24a1 refactor(persistence): migrate share-store to canonical atomic-write util (DC-102) [glm-grade=A] Hermes 2026-08-23 00:50:47 -07:00
  • 7fd651f388 [grade=B] docs(backlog): resolve DC-054/085/086 status drift — mark done with verified evidence; DC-055 held in-progress with live-surface verification + explicit unverified end-to-end-Stripe gap Hermes 2026-08-23 00:30:52 -07:00
  • 09d56fde2c refactor(persistence): migrate user-store to canonical atomic-write util (DC-101) [glm-grade=A] Hermes 2026-08-23 00:21:41 -07:00
  • 3742e2658d refactor(persistence): migrate invite-store to canonical atomic-write util (DC-100) [glm-grade=A] Hermes 2026-08-22 23:54:37 -07:00
  • 86e4c9fc81 wip: Windows desktop app scaffold (WinUI 3/.NET 8) + NSIS installer + docs wip/windows-app-scaffold Hermes 2026-08-22 23:44:34 -07:00
  • 80a82c4cae refactor(persistence): canonical atomic file writer + notifications.json crash-safety (DC-099) [glm-grade=B] Hermes 2026-08-22 23:28:36 -07:00
  • 8d42eae6ac feat(maintenance): one-shot PII redaction tool for pre-DC-095 log files (DC-098) [glm-grade=A] Hermes 2026-08-22 22:24:38 -07:00
  • 3ccd00d1a1 fix(notifications): persist canonicalized config on load — legacy keys no longer stale on disk (DC-097) [glm-grade=B] Hermes 2026-08-22 21:52:19 -07:00
  • bb59595d6d fix(config): monitoring.public gate was dead 4 ways — live gate + schema + dedupe (DC-096) [glm-grade=A] Hermes 2026-08-22 21:35:51 -07:00
  • 83ef84d218 feat(logging): central email PII masking across all log sinks [glm-grade=A] Hermes 2026-08-22 20:49:09 -07:00
  • 97672f7e74 [glm-grade=A] fix(notifications): un-gate 7 dead emitters + repair legacy 4-arg send shape (DC-094) Hermes 2026-08-22 19:42:25 -07:00
  • 5add962178 [glm-grade=B] fix(auth): /auth/me hotfix — isValid not isSessionValid + guard (DC-093 r2) Hermes 2026-08-22 19:06:34 -07:00
  • 4125d7a4e1 [glm-grade=B] fix(auth): mount /auth/me on single-user installs — kill the 60s 404 log storm (DC-093) Hermes 2026-08-22 18:54:57 -07:00
  • 7e4ee60dcf [glm-grade=B] fix(notifications): repair UI/API contract drift — SMTP auth, event gate, test button (DC-092) Hermes 2026-08-22 18:16:47 -07:00
  • 1328cfda6b [glm-grade=B] fix(notifications): repair UI/API contract drift — SMTP auth, event gate, test button (DC-092) dc/DC-092-notifications-contract-drift Hermes 2026-08-22 18:16:47 -07:00
  • 5e60c27f2b [grade=A] Harden server-managed license renewals Hermes 2026-08-22 17:35:34 -07:00
  • df55677bd1 Merge DC-091: config-schema KNOWN_KEYS licenseBackup/_version fix [glm-grade=A] Hermes 2026-08-22 17:22:20 -07:00
  • ddbea0a040 [glm-grade=A] fix(config): teach schema KNOWN_KEYS the licenseBackup/_version writer keys (DC-091) Hermes 2026-08-22 17:22:13 -07:00
  • 1d1cd5c95e Merge dc/DC-090-incident-hysteresis-parity: outage incidents follow displayed hysteresis status [glm-grade=A] Hermes 2026-08-22 16:53:02 -07:00
  • 88f1d4a414 [glm-grade=A] fix(monitoring): DC-090 outage incidents follow displayed hysteresis status dc/DC-090-incident-hysteresis-parity Hermes 2026-08-22 16:52:53 -07:00
  • dd1110ef52 Merge dc/DC-089-invite-log-pii-masking: mask invite/user emails in server logs [glm-grade=B] Hermes 2026-08-22 16:23:06 -07:00
  • 6732a1e1df [glm-grade=B] fix(auth): DC-089 mask invite/user emails in server logs dc/DC-089-invite-log-pii-masking Hermes 2026-08-22 16:22:53 -07:00
  • ea96abe95a Merge dc/DC-088-remove-service-tombstones: removeService generation tombstones + incident closure [glm-grade=B] Hermes 2026-08-22 15:55:29 -07:00
  • 3ccf66754a [glm-grade=B] fix(monitoring): DC-088 removeService generation tombstones + incident closure Hermes 2026-08-22 15:55:26 -07:00
  • c71b794ccc Merge dc/DC-087-test-mirrors-fetcht: hermetic caddy-admin test mirrors + raw-fetch guard [glm-grade=B] Hermes 2026-08-22 15:14:35 -07:00
  • f2285a2550 test(api): DC-087 hermetic caddy-admin health mirrors + file-level raw-fetch guard [glm-grade=B] dc/DC-087-test-mirrors-fetcht Hermes 2026-08-22 15:14:25 -07:00
  • 54a1df5ac4 [glm-grade=A] build(status): rebuild dist + sw — DC-085 link-first invite frontend bundle Hermes 2026-08-22 14:28:21 -07:00
  • eb546bf468 Merge dc/DC-085-link-first-invite-dc-086-flicker-fix: DC-085 link-first invite + DC-086 badge flicker hysteresis + race hardening [glm-grade=A] Hermes 2026-08-22 14:27:54 -07:00
  • 84e051d975 Merge earlier-tick staging branch (duplicate DC-085/086 cherry-picks + auth-gate/vault tests) — content identical to eab2b00/f8b99f9 dc/DC-085-link-first-invite-dc-086-flicker-fix Hermes 2026-08-22 14:27:40 -07:00
  • 628bbe32f6 [glm-grade=A] fix(monitoring): DC-086 round-2 — probe/config race hardening + env parse + incident compare Hermes 2026-08-22 14:23:25 -07:00
  • f8b99f9b5a DC-086 service-status flicker fix — asymmetric hysteresis Hermes 2026-08-20 04:46:17 -07:00
  • eab2b00b13 DC-085 link-first invite — Discord-style share it however you want Hermes 2026-08-20 04:46:12 -07:00
  • 84edb035e3 [grade=B] feat(auth): onboard missing credentials into encrypted vault Hermes 2026-08-22 05:41:38 -07:00
  • d313b1e872 [grade=B] fix(auth): reuse valid session for cross-host SSO Hermes 2026-08-22 04:06:27 -07:00
  • be021588c7 DC-086 service-status flicker fix — asymmetric hysteresis Hermes 2026-08-20 04:46:17 -07:00
  • d8459a4a87 DC-085 link-first invite — Discord-style share it however you want Hermes 2026-08-20 04:46:12 -07:00
  • 499fcc2742 Merge dc/DC-084-arch-sami-caddy-healthcheck-removal: DC-084 remove redundant active Caddy health check from arch.sami [glm-grade=A] Hermes 2026-08-19 01:43:30 -07:00
  • 93d6c44e45 [glm-grade=A] docs(backlog): document DC-084 — remove redundant active Caddy health check from arch.sami dc/DC-084-arch-sami-caddy-healthcheck-removal Hermes 2026-08-19 01:43:10 -07:00
  • 4c4ffc35ca Merge dc/DC-082-update-manager-compose-prefix: DC-083 public share endpoint input hardening [glm-grade=A] Hermes 2026-08-19 00:11:24 -07:00
  • 7e68955e66 [glm-grade=A] fix(share): public-endpoint input hardening + rate limit (DC-083) dc/DC-082-update-manager-compose-prefix Hermes 2026-08-19 00:10:37 -07:00
  • 7938cc76ec [grade=A] docs: update DC-106 CHANGELOG to cover frontend builder dc/DC-106 Hermes 2026-08-18 23:51:33 -07:00
  • 5abf385c7e [grade=A] feat(caddy-builder): DC-106 visual reverse proxy builder (frontend) Hermes 2026-08-18 23:46:48 -07:00
  • 089f5d2902 [glm-grade=A] fix(update-manager): compose-prefixed image names probe <project>/<service> not library/<project>-<service> (DC-082) Hermes 2026-08-18 19:45:08 -07:00
  • 0e7bb97129 [glm-grade=A] fix(log-insights): wire dispose to /app/data paths + bound keepDays (DC-081) dc/DC-081-log-insights-dispose Hermes 2026-08-18 18:56:13 -07:00
  • 98737995a9 Merge dc/DC-080: Tailscale admin endpoint validation hardening (DC-080) [glm-grade=B] DashCaddy Polish Loop 2026-08-18 18:35:59 -07:00
  • 99ec6ebc53 fix(tailscale-admin): harden apiToken/tags/description validation (DC-080) [glm-grade=B] dc/DC-080 Hermes 2026-08-18 18:32:34 -07:00
  • a7260436d1 fix(disaster-recovery): stage Caddyfile + close path-traversal in assets/themes (DC-079) [glm-grade=A] feature/dc-064-discover-adopt-fetcht dashcaddy-polish 2026-08-18 17:52:49 -07:00
  • a4e4b24732 fix(update-manager): force IPv4 + per-request timeout + transient-only retry on registry digest probes (DC-078) [glm-grade=A] Hermes 2026-08-18 17:35:59 -07:00
  • 0086de97da Merge feature/dc-064-discover-adopt-fetcht: DC-077 nesting-guard silent no-op fix [glm-grade=B] Hermes 2026-08-18 17:07:47 -07:00
  • 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