Commit Graph
75 Commits
Author SHA1 Message Date
ctao ec4ff5dfa2 content split + copy audit + css polish: content (news/pages/uploads) moves to the ctao/content repo (build overlays it — two-repo build.sh, link-content.sh for local dev); portal copy trimmed to source-documents-only (dashboard empty states, minimal privacy/disclaimer, no mock badges); css: inverted selection on navy bands, featured-card text-track floor, 44px toc target, mobile search dates on own line, footer link row gap; DESIGN.md rewritten as a short handoff 2026-09-03 18:54:01 +02:00
ctao 2e6d374b4b article headlines: --fs-h2 instead of --fs-h1 (long news titles filled the viewport at 56px; editorial 32-40px convention) 2026-09-03 15:14:44 +02:00
ctao c4d21b59be review round 2: deterministic checks (npm run check: build + zero-dep link checker; tsconfig with docs-recommended include/exclude, astro check dropped — OOMs at 12GB on a 200-entry collection), sitemap static pages derived from route files, non-recursive content glob (id/slug trap), --header-h token, honest CDN comments (sveltia UI fonts), preview.css drift (prose a wrap, img block, h1 size) 2026-09-03 15:11:43 +02:00
ctao cec8018c18 handoff pass: vendored sveltia bundle, astro pinned ^7.2.10, root README + refreshed deploy runbook, review fixes (coverless card grid, shared NewsCard/lib, real site origin, nginx security headers, linger step, dead config removed, preview.css sync, tsconfig) 2026-09-03 14:56:53 +02:00
ctao c64528a1d3 cors: full-origin ALLOW_DOMAIN (no SCHEME key in 1.27) + Authorization in allowed headers 2026-07-29 10:47:02 +02:00
ctao 746b015e85 vhost switch: Sveltia backend + Gitea ROOT_URL to https ingress domains, CORS locked to the portal origin 2026-07-29 10:35:26 +02:00
ctao a74eef0e47 ui iteration: nav underline moved to ::before (restores external arrow on Data), card reveal tuned (entry 75%, 28px), reading progress 3px, permanent lifted header shadow; article honesty pass: app-in-path class line (Grav/Tina clarified), 'is Gitea a second CMS' section, no-VPN claim removed 2026-07-29 07:55:22 +02:00
ctao c6de06f017 fix: esbuild css minifier — lightningcss folds animation-timeline into the animation shorthand (invalid), silently killing scroll-driven effects in production 2026-07-28 21:25:59 +02:00
ctao bbbb090cce ui polish pass: scroll-driven effects (card reveal, header shadow, reading progress), nav underline-grow, card meta icons, og:image svg fallback, apple-touch-icon+favicon, hero 472->180KB + preload, article cover CLS guard, ::selection, per-article lang, robots noindex (demo); article: db-cms comparison diagram, 6-year pros/cons, reuse section 2026-07-28 20:57:51 +02:00
ctao 54de9d3ee9 content: demo article tone pass (neutral wording) 2026-07-28 20:08:36 +02:00
ctao f6340a89b3 article meta: inline icons (tag/author/date/read-time) in the existing .ico stroke family 2026-07-28 20:06:49 +02:00
ctao 93712a1481 content: demo article — custom SVG diagrams (machine architecture, publish flow, attack surface) + cover, dated to sit second on the list 2026-07-28 20:03:44 +02:00
ctao 71b9808a11 content: demo presentation article (architecture, links, static-vs-database comparison) 2026-07-28 19:53:25 +02:00
ctao c0edb2033d cms: 1:1 article preview (mirror .prose tokens/rules), webp upload transformations to keep repo lean 2026-07-28 19:49:37 +02:00
ctao 145490fe60 Update Article “the-ctao-eric-council-visits-ctao-north-in-la-palma” 2026-07-28 17:37:51 +00:00
ctao 48fa17c351 Update Article “the-ctao-eric-council-visits-ctao-north-in-la-palma” 2026-07-28 17:36:58 +00:00
ctao ba629e2a96 cms: oauth-only sign-in (documented auth_methods), note on localhost-only local-repo button 2026-07-28 19:33:51 +02:00
ctao d06c2cf0c0 cms: CTAO branding on sign-in (app_title, logo.src instead of deprecated logo_url) 2026-07-28 19:29:04 +02:00
ctao c0d06f4a17 fix: /admin redirect loses port behind tunnel/proxy (absolute_redirect off, trailing slash in footer link) 2026-07-28 19:24:34 +02:00
ctao 99f5601456 deploy log: OAuth app via API, Sveltia pointed at machine Gitea, editor-cycle latency measured (12s/21s) 2026-07-28 18:35:41 +02:00
ctao 29385a5ca7 content: remove latency-test article 2026-07-28 16:31:58 +00:00
ctao 5744c16a1c content: simulate a Sveltia editor save (test) 2026-07-28 16:30:34 +00:00
ctao bc0201252d cms: point Sveltia at the machine Gitea (localhost:3000, machine OAuth app_id) 2026-07-28 18:24:40 +02:00
ctao 46ec5e2e3c deploy: npm ci --ignore-scripts (kills postinstall vector + esbuild ETXTBSY race); persistent npm cache; deployment log 2026-07-28 15:39:00 +02:00
ctao 80d886c0cb deploy: join gitea netns instead of bridge (machine kernel lacks ip_tables for rootless netavark); pin image digests; push-to-create repo 2026-07-28 14:07:44 +02:00
ctaoandClaude Fable 5 ed7a9c01e7 deploy: machine deployment — quadlets (gitea, nginx, isolated build network), poll+build pipeline, runbook
Reviewed (Opus security review, all findings verified) and tested end-to-end
locally: cold build 23s, no-op poll 45ms, incremental rebuild 4s, prune,
gitea-down grace, real bridge network with container DNS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jWfn3RwPfFGTtBddm36Uy
2026-07-28 13:44:46 +02:00
ctao 4102974927 test: trigger deploy pipeline (empty commit) 2026-07-28 13:33:05 +02:00
ctao beb585e5dc fix: eyebrow/UI font jump — Inter inlined too; zero font swaps site-wide 2026-07-26 00:18:49 +02:00
ctao 47902f7278 fix: hero headline font jump on load — Space Grotesk inlined as data URI in the stylesheet (renders correctly from first paint; no swap-triggered balance reflow) 2026-07-26 00:12:28 +02:00
ctao/demoandClaude Fable 5 0bb378e0cc fix: typing-in-header scroll jump — global scroll-padding-top made Chrome's per-keystroke caret reveal walk the page to 0; offset moved to anchor targets (main [id] scroll-margin-top)
Chrome re-scrolls the focused editable into view on every keystroke and
honours the viewport's scroll-padding-top while ignoring the editable's
own scroll-margin (crbug.com/41492445) — so the sticky-header search
field, which sits above the 76px line and can never be scrolled below
it, dragged the page toward 0 one keystroke at a time, and the previous
negative-scroll-margin counter could not work. CDP harness bisection:
of all suspects (smooth scroll, sticky header, overflow clip,
animations, ambient layer, suggest siblings) only removing the global
scroll-padding stops the jump. TOC/skip anchor offset now lives as
scroll-margin-top on the in-content targets; harness confirms scrollY
constant while typing and anchors still land below the header.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jWfn3RwPfFGTtBddm36Uy
2026-07-25 23:56:05 +02:00
ctao 694b7d2003 fix: page jumped to top while typing in header search — caret-visibility scrolling honours scroll-padding-top; negative scroll-margin on header inputs cancels it (suggestions re-enabled) 2026-07-25 18:59:57 +02:00
ctao 61f5d8444f fix: scroll jumps while typing — overflow-anchor:none on live search lists (Chrome scroll anchoring) 2026-07-25 18:50:54 +02:00
ctao affa3262ef fix: search scroll jump (atomic list swap, no clear-before-await); services grid back to 6 tiles (2 subdued planned) + planned line for the rest 2026-07-25 18:33:06 +02:00
ctao 1ef2cab89e fix: navigation blink root-caused — defer search-client.js (was parser-blocking mid-body), npm run demo serves the production build through the tunnel; DESIGN.md documents the VT removal + font-swap decision 2026-07-25 17:48:48 +02:00
ctao c9161af655 style: login card refined per guidebook — SG-medium h2 headline, D.3.4 hierarchy, logo min-size, token rhythm 2026-07-25 17:35:28 +02:00
ctao d0eeedb62b Revert "feat: login rewritten — split-screen auth (white form column + living aurora pane, tagline), 2026 convention"
This reverts commit 185380ffa5.
2026-07-25 17:25:42 +02:00
ctao 185380ffa5 feat: login rewritten — split-screen auth (white form column + living aurora pane, tagline), 2026 convention 2026-07-25 17:03:40 +02:00
ctao e7c804c9da fix: zero font jumping on navigation — preload both brand fonts + font-display: optional (no late swaps; brand-approved Arial if cold) 2026-07-25 15:36:31 +02:00
ctao 075d44dce3 feat: hero photo — LST-1 under the Milky Way (full-res original fetched from ctao.org) 2026-07-25 15:17:33 +02:00
ctao 6e3f8e23b6 style: one protagonist per surface — photo hero keeps Ken Burns only (flares removed), login gets Gemini-style large soft aurora; services trimmed to 4 real tiles + planned line 2026-07-25 14:55:01 +02:00
ctao 95f8f7b1a6 fix: lava-lamp blobs — defined 30% cores, alpha .5-.6, screen blend, 9s cycle, wide travel (motion objectively 12x stronger: 0.6%->7.6% px delta) 2026-07-25 14:44:23 +02:00
ctao 4082be0c37 fix: hero motion clearly perceptible — Ken Burns on the photo layer, glow opacity pulse, faster cycles (12s/26s) 2026-07-25 14:21:47 +02:00
ctao 97d1a0aa43 content: unpublish test article (will be recreated live during the demo) 2026-07-25 13:45:10 +02:00
ctao 3362b214c3 fix: final-review findings — own-lead descriptions, PHS integration landing, planned tiles, 404, sitemap math, cleanups 2026-07-25 13:13:27 +02:00
ctao ffe54bc766 fix: light dismiss for header menu/search overlays (outside tap closes, never activates) 2026-07-25 12:33:09 +02:00
ctaoandClaude Fable 5 4fa35e5317 fix: mobile gutters, header search tiers, suggest wiring + empty-state, news pagination, hero CTAs, ghost button
- padding-block on .page/.page-head/.article: container gutter survived only >=1176px (shorthand padding zeroed it) — mobile content sat flush left
- restore <=1024px tiers: field hidden, magnifier + menu visible (header no longer overflows at 375px)
- re-wire hdr-q suggestions lost in the field restore; newsSearch inits null-safe
- focused-empty search state: recent queries (localStorage, cap 4) + latest articles (Baymard autocomplete guidance)
- suggest panel 480px (Baymard/DocSearch width convention)
- /news page 1 = 25 items (featured + 24 = even 3-col rows), later pages 24, custom slicing
- hero CTAs: primary Browse news (/news, spec-first real service), ghost Explore the data (external); mock Proposals out of hero
- .btn.btn--ghost compound selector — .btn base defined later was filling ghosts with Cherenkov

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jWfn3RwPfFGTtBddm36Uy
2026-07-25 12:16:41 +02:00
eaf511a976 feat: Apple-grade pass — scale, type, photographic hero, de-noise, single-signal chrome, lighter header
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jWfn3RwPfFGTtBddm36Uy
2026-07-25 11:47:30 +02:00
ctao 3202b853a7 Update Article “the-ctao-eric-council-visits-ctao-north-in-la-palma” 2026-07-25 09:39:48 +00:00
ctao d564f840e8 Update Article “the-ctao-eric-council-visits-ctao-north-in-la-palma” 2026-07-25 09:39:25 +00:00
ctao 0516cae5b2 content: Opus editorial workflow — headings for 132 articles, markdown hygiene for 150 (206 reviewed); disclaimer content credit 2026-07-25 07:54:14 +02:00