From 9fce18cd45581b99ea310a1ae8086f84217736f0 Mon Sep 17 00:00:00 2001 From: ZDDC Date: Fri, 1 May 2026 20:11:38 -0500 Subject: [PATCH] feat: lockstep release infra + cascade/.archive fixes + profile perf + page redesign MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four entangled change-sets from one session, committed together because their file-level overlap (build.sh, docs, embedded/, watcher.go, …) makes post-hoc separation noisy: * fix(archive): nested-party + folder-type cascade transmittalIsUnderVisibleParty short-circuited on the first matched party segment, only checking the immediately-next segment for a folder-type marker. Paths like BM/sub/Issued/ bypassed the Issued toggle entirely. Replaced with isUnderHiddenFolderType (full-path) + any-segment party match. Eight new Playwright cases pin the contract in tests/archive-cascade.spec.js. * refactor(zddc-server): scope .archive index by project archive.Index now buckets by top-level segment (.ByProject[].ByTracking[]). Resolve and AllEntries take a project parameter; handler extracts it from contextPath's first segment. /.archive/ at root returns 404 — stable refs must be project-rooted. Within-project (tracking, rev) collisions emit a WARN with both paths. Cross-project tracking-number duplicates no longer collide. * perf(zddc-server): lazy-load expensive bits of the profile page serveProfilePage now ships a minimal shell: Email, EmailHeader, IsSuperAdmin (root .zddc only). Visible projects + admin subtrees + editable scaffolds populate client-side via /.profile/access. Subtree- admin scaffolds live in