G2.3: Windy Git branding — and get it out of one host's disk into the repo
The front end was 100% stock Gitea: green teacup, "Gitea: Git with a cup of tea", "A painless, self-hosted Git service". G2.3 was specified in the plan with an acceptance test and never executed, and nothing enforced it. Now: Windy Git name, wind-mark logo, brand-blue accent, and a landing page that says what this actually is. Uses Gitea's SUPPORTED surface (custom templates + public assets) so upstream upgrades keep arriving — no source modified (D-2/I-1). Two traps this cost, both now documented and tested: 1. GITEA__DEFAULT__APP_NAME does not work. Gitea reads APP_NAME from the TOP LEVEL of app.ini; the env var created a literal [default] section that Gitea ignores, so the installer's stock APP_NAME kept winning while the config looked correct. The env-to-ini pass also APPENDED a second APP_NAME rather than replacing the first — a new variant of the documented G4A.3 trap. 2. Cloudflare caches /assets/* for 6h and no token in this stack can purge, so the new logo and CSS were invisible while being correct at origin. Brand assets now carry a VERSION IN THE FILENAME; bump it on every change. Committed with an idempotent apply.sh, because applying it straight to Veron's disk first was itself the config-drift trap this project documents: a rebuild would have silently reverted to stock Gitea. 85 tests green. Co-Authored-By: Claude (Fable 5) <noreply@anthropic.com>
This commit is contained in:
27
deploy/branding/public/assets/css/theme-windy.v2.css
Normal file
27
deploy/branding/public/assets/css/theme-windy.v2.css
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Windy Git brand accent. Layered on top of Gitea's theme rather than
|
||||
replacing it, so upstream theme fixes keep arriving. */
|
||||
:root {
|
||||
--color-primary: #0ea5e9;
|
||||
--color-primary-dark-1: #0284c7;
|
||||
--color-primary-dark-2: #0369a1;
|
||||
--color-primary-light-1: #38bdf8;
|
||||
--color-primary-light-2: #7dd3fc;
|
||||
}
|
||||
.wg-hero { max-width: 780px; margin: 4rem auto 2rem; padding: 0 1.5rem; text-align: center; }
|
||||
.wg-hero h1 { font-size: 2.6rem; margin: 1.2rem 0 .4rem; letter-spacing: -.02em; }
|
||||
.wg-hero .wg-sub { font-size: 1.15rem; opacity: .78; margin-bottom: 2.2rem; }
|
||||
.wg-grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit,minmax(230px,1fr));
|
||||
max-width: 900px; margin: 0 auto 2.5rem; padding: 0 1.5rem; text-align: left; }
|
||||
.wg-card { border: 1px solid var(--color-secondary); border-radius: 8px; padding: 1.1rem 1.2rem; }
|
||||
.wg-card h3 { margin: 0 0 .35rem; font-size: 1.02rem; }
|
||||
.wg-card p { margin: 0; opacity: .74; font-size: .9rem; line-height: 1.5; }
|
||||
.wg-cta { margin-bottom: 3rem; }
|
||||
|
||||
/* Logo swap via CSS.
|
||||
Cloudflare cached the stock /assets/img/logo.svg for 6h and no available API
|
||||
token can purge. Pointing at a NEW filename sidesteps the stale object
|
||||
without touching Gitea's own templates — the supported customisation surface,
|
||||
per D-2 (membrane, not merge). */
|
||||
img[src$="/assets/img/logo.svg"] {
|
||||
content: url("/assets/img/wg-mark.svg");
|
||||
}
|
||||
Reference in New Issue
Block a user