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>
24 lines
885 B
Bash
Executable File
24 lines
885 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Apply Windy Git branding to the Gitea custom tree. Idempotent.
|
|
set -euo pipefail
|
|
CUSTOM="${GITEA_CUSTOM_HOST:-/srv/windygit/git/gitea}"
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
sudo mkdir -p "$CUSTOM"/templates/custom "$CUSTOM"/public/assets/img "$CUSTOM"/public/assets/css
|
|
sudo cp -r "$HERE"/templates/. "$CUSTOM"/templates/
|
|
sudo cp -r "$HERE"/public/. "$CUSTOM"/public/
|
|
sudo chown -R 1000:1000 "$CUSTOM"/templates "$CUSTOM"/public
|
|
|
|
# APP_NAME must sit at the TOP LEVEL. See README trap #1.
|
|
INI="$CUSTOM/conf/app.ini"
|
|
sudo cp "$INI" "$INI.bak-brand-$(date +%s)"
|
|
sudo python3 - "$INI" <<'PY'
|
|
import sys
|
|
p = sys.argv[1]
|
|
lines = [l for l in open(p).read().splitlines()
|
|
if not l.strip().startswith(("APP_NAME", "APP_SLOGAN"))]
|
|
lines.insert(0, "APP_NAME = Windy Git")
|
|
open(p, "w").write("\n".join(lines) + "\n")
|
|
PY
|
|
echo "applied. restart gitea to pick it up."
|