• v3.0.1 99614126c5

    v3.0.1
    All checks were successful
    Tests / End-to-end (mode: path) (push) Successful in 1m13s
    Tests / Actions (TypeScript) (push) Successful in 28s
    Tests / Backend (Go) (push) Successful in 2m16s
    Tests / End-to-end (mode: subdomain) (push) Successful in 1m11s
    Stable

    ses released this 2026-08-22 14:54:16 +00:00 | 4 commits to main since this release

    • Fixed: GET /files/* path-mode lookup now accepts pull-request refs as a pr-<n> path segment, matching the pr-<n> segment already emitted by the deploy action for preview URLs.
    • Fixed: Logging middleware now records the resolved client IP behind reverse proxies and emits structured entries for 403 claims raised by the authentication layer.
    • Updated: Bumped vitest to ^4.1.11 in the action workspaces.
    Downloads
  • v3.0.0 80a4ea6f3a

    v3.0.0
    All checks were successful
    Tests / Actions (TypeScript) (push) Successful in 28s
    Tests / Backend (Go) (push) Successful in 2m10s
    Tests / End-to-end (mode: path) (push) Successful in 1m10s
    Tests / End-to-end (mode: subdomain) (push) Successful in 1m2s
    Stable

    ses released this 2026-08-21 23:32:31 +00:00 | 8 commits to main since this release

    • Breaking Change: deploy_root is removed; configure the new storage_root (absolute path) instead. storage_root replaces the default <base>/doms/<host>/<dir> placement entirely, so plain-HTTP operators (Caddy, nginx) can point the backend at any directory without living under /doms/<host>/. Hostsharing users can leave storage_root unset and keep zero-config behavior.
    • Breaking Change: The singlesite backend no longer accepts apex_path: subs-ssl/www; only htdocs-ssl is valid. URL routing for the www. prefix is now the operator's responsibility (Caddyfile on plain HTTP, .htaccess on Hostsharing).
    • Added: apex_path is optional when storage_root is set. Operators using storage_root on a plain HTTP server (Caddy, nginx) no longer need to invent a plausible value just to satisfy validation, since tenantRoot keys on storage_root and ignores apex_path entirely.
    • Updated: Bumped dev-dependency config-mate to v2.0.1. The library now drops the legacy .conf-in-CWD short-circuit and uses the XDG-spec <xdg>/<app>/<app> lookup; tests, example files, and docs were adapted to the new search order.
    • Fixed: e2e harness now uses the XDG-spec config path expected by config-mate v2.
    Downloads
  • v2.0.0 3dbf9821c1

    v2.0.0
    All checks were successful
    Tests / Actions (TypeScript) (push) Successful in 22s
    Tests / End-to-end (mode: path) (push) Successful in 1m20s
    Tests / Backend (Go) (push) Successful in 2m16s
    Tests / End-to-end (mode: subdomain) (push) Successful in 1m12s
    Stable

    ses released this 2026-08-20 17:19:00 +00:00 | 15 commits to main since this release

    • Breaking Change: The single publish-static-site backend binary is replaced by two flavor binaries. publish-static-site-singlesite (one apex repo per tenant, apex_path ∈ {htdocs-ssl, subs-ssl/www}) and publish-static-site-multisite (many subdomains or path segments, apex_path ∈ {subs-ssl, htdocs-ssl/path}). Operators must pick the matching binary and adjust their apex_path value to one of the per-flavor allowed set. Existing single-binary deployments no longer start.
    • Breaking Change: The wire-protocol X-Publish-Static-Site-Version header advances from v1 to v2. A v1.x backend now rejects any action pinned to @v2 with HTTP 426; consumers still pinned to @v1 continue to receive the last v1.x release. Major-version parity between backend and actions is enforced by version_middleware.go:RequireCompatible.
    • Breaking Change: config-mate is bumped from v1 to v2 (forge.sebatec.eu/ses/config-mate/v2 v2.0.0). Operators using silent-missing-config semantics must verify their config files load under v2.
    • Added: Multisite apex_path modes — subs-ssl (subdomain, default) and htdocs-ssl/path (path under the apex) — with strict per-flavor validation.
    • Added: Multisite path URL mode — many repos/branches served under https://<site_base_host>/<repo>/<branch>/ via mode: path. The default mode: subdomain is unchanged.
    • Added: Hidden-prefix mount — the backend now exposes its API at /_publish-static-site/* for non-FCGI deployments (Caddy, plain HTTP) alongside the existing FastCGI mount. Both routes share auth and handlers.
    • Added: --dry-run flag on the multisite backend to surface the resolved deploy layout without touching disk.
    • Added: Apex-on-main-ref policy plus per-tenant repo whitelist to restrict which refs/branches can deploy.
    • Added: deploy_root override (siteconfig) for tenants who need the on-disk root outside the default Hostsharing layout.
    • Changed: subdomain_repos config key renamed to multi_repo_patterns as part of the multisite config overhaul. The new key covers both subs-ssl (subdomain) and htdocs-ssl/path (path segment) layouts; the previous key is rejected on startup.
    • Improved: Major-version parity check between backend and action bundles — a header mismatch now returns HTTP 426 with both versions in the JSON body for diagnostics.
    • Fixed: e2e harness now uses a random port and the hidden-prefix mount, removing the previous hard-coded port collision.
    • Updated: Dev and CI tooling — TypeScript ^7, Prettier 3.9.6, esbuild ^0.28.2, github.com/go-chi/chi/v5 v5.3.2.
    • Updated: Documentation restructured into Diátaxis layout (docs/explanations/, docs/how-to/, docs/reference/, docs/tutorials/); READMEs slimmed to orientation.
    Downloads