The .archive virtual directory now emits both <tracking>.html (highest base rev) and <tracking>_<rev>.html (each specific base rev) so HTML documents can deep-link to a known revision and have it resolve to the first chronologically received copy. Modifier files (<rev>+C1 etc.) stay reachable via the resolver but aren't surfaced in the listing. .archive at any folder depth serves the same global index — the depth exists so offline HTML can use ../.archive/<tracking>.html and let the browser resolve it before the request reaches the server. The earlier attempt at scoping listings to the contextPath subtree was wrong; gating is purely by ACL: contextPath gates the listing endpoint, and each entry's resolved file gets its own per-target ACL check (404 on denial, not 403, so cross-subtree existence isn't disclosed). Adds the first tests for the previously untested archive package, plus end-to-end ACL coverage for the handler (cascade direction, default-deny once any .zddc exists, anonymous denied under allow:[\"*@…\"], stable Location across contextPaths). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| adminhandler.go | ||
| adminhandler_test.go | ||
| archivehandler.go | ||
| archivehandler_test.go | ||
| cors.go | ||
| cors_test.go | ||
| directory.go | ||
| logring.go | ||
| logring_test.go | ||
| middleware.go | ||
| projectshandler.go | ||
| projectshandler_test.go | ||
| static.go | ||