Frontend overhaul + auto-update pipeline #1

Merged
nicweyand merged 24 commits from feat/archive-frontend-overhaul into main 2026-05-27 13:16:17 -04:00
Owner

Summary

Template-level frontend overhaul of argand-archive (propagates to all instances, e.g. trumpswarcrimes.com) + a scheduled auto-update pipeline. Implements the design/plan in docs/superpowers/.

Frontend fixes (all template-level so they reach every instance)

  • Middle-mouse scroll (overflow-x: clip); content-page centering + ToC; search Ctrl+F→Ctrl+K; browse Apply-hide + facet overflow; single header search bar (drops redundant link+magnifier); per-visit random home entry; footer column merge + Tor/I2P; collapsible-month timeline + rail (drops Most Active); self-contained SVG choropleth map (replaces CSP-blocked Leaflet/OSM tiles); theme system-preference regression tests.

Auto-update pipeline

  • .forgejo/workflows/template-sync.yml (nightly sync → auto-merge PR) + deploy-on-main.yml; hardened sync-from-template.sh (port fix + conflict-proof preserve).

Pre-existing bug fixed (was blocking CI)

  • Implemented the missing news-pipeline/lib/openseeker-client.mjs that corroborate.mjs imported but was never written (dormant-by-default client for the OpenSeeker local research CLI; paren-safe URL extraction; deterministic jobId attribution). pnpm test is now 291/291 green (was 8 failing).

Verification

  • check 0 errors · components 37/37 · full vitest 291/291 · e2e 20✓/2 skip (axe 0 WCAG violations) · pa11y 12/12 · Lighthouse perf+budgets pass.

Rollout (bootstrap)

  1. Merge to main.
  2. On each existing instance (trumpswarcrimes.com first): run bash scripts/sync-from-template.sh once + bash scripts/deploy.sh (an instance cant auto-update to the version containing the auto-updater).
  3. Per-instance: branch protection on main requiring the ci check + secrets FORGEJO_TOKEN / DEPLOY_*.
  4. Nightly auto-update is then self-sustaining.

Verify-on-deploy (non-fatal)

  • The auto-merge call uses merge_when_checks_succeed:true (confirmed supported on Forgejo 14.0.5/gitea-1.22). If it ever fails, the sync PR simply stays open for manual merge.
  • The OpenSeeker client was coded from reading the OpenSeeker source (no live instance); the CLI invocation + artifact paths should be validated against a live OpenSeeker deployment. It is dormant unless OPENSEEKER_HOME+OPENSEEKER_CLI are set, so it is inert by default.
## Summary Template-level frontend overhaul of `argand-archive` (propagates to all instances, e.g. trumpswarcrimes.com) + a scheduled auto-update pipeline. Implements the design/plan in `docs/superpowers/`. ### Frontend fixes (all template-level so they reach every instance) - Middle-mouse scroll (`overflow-x: clip`); content-page centering + ToC; search Ctrl+F→Ctrl+K; browse Apply-hide + facet overflow; single header search bar (drops redundant link+magnifier); per-visit random home entry; footer column merge + Tor/I2P; collapsible-month timeline + rail (drops Most Active); **self-contained SVG choropleth map** (replaces CSP-blocked Leaflet/OSM tiles); theme system-preference regression tests. ### Auto-update pipeline - `.forgejo/workflows/template-sync.yml` (nightly sync → auto-merge PR) + `deploy-on-main.yml`; hardened `sync-from-template.sh` (port fix + conflict-proof preserve). ### Pre-existing bug fixed (was blocking CI) - Implemented the missing `news-pipeline/lib/openseeker-client.mjs` that `corroborate.mjs` imported but was never written (dormant-by-default client for the OpenSeeker local research CLI; paren-safe URL extraction; deterministic jobId attribution). **`pnpm test` is now 291/291 green** (was 8 failing). ## Verification - check 0 errors · components 37/37 · full vitest 291/291 · e2e 20✓/2 skip (axe 0 WCAG violations) · pa11y 12/12 · Lighthouse perf+budgets pass. ## Rollout (bootstrap) 1. Merge to `main`. 2. On each existing instance (trumpswarcrimes.com first): run `bash scripts/sync-from-template.sh` once + `bash scripts/deploy.sh` (an instance cant auto-update *to* the version containing the auto-updater). 3. Per-instance: branch protection on `main` requiring the `ci` check + secrets `FORGEJO_TOKEN` / `DEPLOY_*`. 4. Nightly auto-update is then self-sustaining. ## Verify-on-deploy (non-fatal) - The auto-merge call uses `merge_when_checks_succeed:true` (confirmed supported on Forgejo 14.0.5/gitea-1.22). If it ever fails, the sync PR simply stays open for manual merge. - The OpenSeeker client was coded from reading the OpenSeeker source (no live instance); the CLI invocation + artifact paths should be validated against a live OpenSeeker deployment. It is dormant unless `OPENSEEKER_HOME`+`OPENSEEKER_CLI` are set, so it is inert by default.
Template-level fixes that propagate to all instances: theme system-pref,
random home entry, about padding/ToC, browse facet overflow + auto-apply,
single header search bar, search-page in-page find, collapsible timeline +
sticky rail (drop Most Active), self-contained SVG choropleth map, footer
merge + Tor/I2P, middle-mouse scroll. Plus scheduled per-instance template
sync -> PR -> auto-merge + deploy on green CI.
- Merges footer-behind + footer-project nav placements into a single de-duplicated
  "The Project" column at the component level (propagates to all instances)
- Adds conditional Mirrors & access block driven by config.resilience (torOnion,
  i2p, mirrors[]) — renders only when at least one field is set
- Adds i2p field to resilienceSchema (52-char base32 .b32.i2p regex)
- Switches .site-footer__inner grid from repeat(3, 1fr) to auto-fit/minmax so the
  layout adapts to 2 or 3 columns without a fixed hardcode
- Adds footer.access / footer.tor / footer.i2p i18n keys to all 6 locale files
  (ar/es/fr/ru/zh-Hans translated; en authoritative)
- Updates e2e Tier 0 test: was toBe(3), now toBeGreaterThanOrEqual(2) with a
  comment explaining the conditional third column; assertion coverage preserved
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nicweyand/argand-archive!1
No description provided.