diff --git a/src/repixelizer/gui_static/index.html b/src/repixelizer/gui_static/index.html index 2275a39..22b8a63 100644 --- a/src/repixelizer/gui_static/index.html +++ b/src/repixelizer/gui_static/index.html @@ -23,20 +23,52 @@ - - - +
How To Use It
1. Drop an input on the right or choose a file.
diff --git a/src/repixelizer/gui_static/landing.html b/src/repixelizer/gui_static/landing.html index 74ddc34..6ecb6ec 100644 --- a/src/repixelizer/gui_static/landing.html +++ b/src/repixelizer/gui_static/landing.html @@ -144,20 +144,52 @@How to enter
Pick a provider when hosted auth is enabled.
diff --git a/src/repixelizer/gui_static/styles.css b/src/repixelizer/gui_static/styles.css index 7101024..ceaa360 100644 --- a/src/repixelizer/gui_static/styles.css +++ b/src/repixelizer/gui_static/styles.css @@ -338,38 +338,63 @@ p { align-items: start; } -.header-github-link { +.header-community-links { + display: inline-flex; + align-items: flex-start; + justify-content: center; + gap: 0.7rem; + line-height: 0; + justify-self: center; + align-self: start; +} + +.header-community-link { display: inline-flex; align-items: center; justify-content: center; - width: 5.2rem; - height: 5.2rem; padding: 0; color: rgba(247, 239, 216, 0.96); text-decoration: none; line-height: 0; flex: 0 0 auto; - justify-self: center; - align-self: start; } -.header-github-link svg { +.header-community-icon { + width: 4.7rem; + height: 4.7rem; +} + +.header-community-wordmark { + min-width: 10rem; + height: 4.7rem; +} + +.header-community-link svg { display: block; - width: 4rem; - height: 4rem; fill: currentColor; filter: drop-shadow(0 0 0.9rem rgba(89, 183, 255, 0.34)) drop-shadow(0 0 1.6rem rgba(89, 183, 255, 0.14)); } -.header-github-link:hover, -.header-github-link:focus-visible { +.header-community-icon svg { + width: 3.5rem; + height: 3.5rem; +} + +.header-community-wordmark svg { + width: 9rem; + height: auto; + max-height: 1.35rem; +} + +.header-community-link:hover, +.header-community-link:focus-visible { color: #fff3e8; } -.header-github-link:hover svg, -.header-github-link:focus-visible svg { +.header-community-link:hover svg, +.header-community-link:focus-visible svg { filter: drop-shadow(0 0 0.45rem rgba(255, 216, 74, 0.44)) drop-shadow(0 0 1.2rem rgba(255, 174, 26, 0.22)); @@ -1060,8 +1085,33 @@ select:focus-visible { align-items: flex-start; } - .header-github-link { + .header-community-links { justify-self: start; + flex-wrap: wrap; + justify-content: flex-start; + } + + .header-community-icon, + .header-community-wordmark { + height: 3.9rem; + } + + .header-community-icon { + width: 3.9rem; + } + + .header-community-icon svg { + width: 2.9rem; + height: 2.9rem; + } + + .header-community-wordmark { + min-width: 8.6rem; + } + + .header-community-wordmark svg { + width: 7.8rem; + max-height: 1.15rem; } .brand-lockup { diff --git a/state/evidence.jsonl b/state/evidence.jsonl index a6ebfcb..ac7587b 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -29,3 +29,4 @@ {"ts": "2026-04-29T21:42:58+00:00", "type": "implementation", "status": "ok", "note": "Oversize uploads were hitting nginx 413 before FastAPI and the GUI masked the response with a double-read error; GUI now preflights file size and reads failed responses once so users see the actual upload limit."} {"ts": "2026-05-20T12:43:01+00:00", "type": "implementation", "status": "ok", "note": "Repixelizer Heimdall mode now stores a separate httpOnly refresh cookie and calls Heimdall's session-refresh endpoint with app-owned Discord/Patreon entitlement policies before forcing provider OAuth again."} {"ts": "2026-05-20T17:56:36+00:00", "type": "deployment", "status": "ok", "note": "Deployed Repixelizer hosted refresh-cookie support to Yggdrasil and verified repixelizer-gui.service active, public health/config checks passing, and installed access.py contains the Heimdall sessions/refresh call."} +{"ts": "2026-05-24T10:01:54+00:00", "type": "implementation", "status": "ok", "note": "Added GameCult Patreon and Discord links to Repixelizer hosted/app headers using GameCult-site URLs; verified GUI tests and desktop/mobile header link boxes."} diff --git a/tests/test_gui.py b/tests/test_gui.py index f8e1baa..9cd7e5c 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -402,6 +402,8 @@ def test_gui_static_assets_disable_browser_caching() -> None: css_text = css_body.decode("utf-8") assert "./styles.css?v=" in html_text assert "./app.js?v=" in html_text + assert 'href="https://www.patreon.com/GameCult"' in html_text + assert 'href="https://discord.gg/SwaNeVJRSq"' in html_text assert 'id="deviceField" class="field" hidden' in html_text assert 'id="stripBackgroundField" class="toggle-row ui-surface ui-frame" hidden' in html_text assert "skipRerankInput" not in html_text @@ -426,6 +428,8 @@ def test_gui_hosted_root_serves_landing_page(monkeypatch, tmp_path: Path) -> Non assert headers["cache-control"] == "no-store, no-cache, must-revalidate, max-age=0" assert "Repixelizer hosted demo" in html assert "Force fake pixel art back onto a real grid, then inspect each step with a full solver view." in html + assert 'href="https://www.patreon.com/GameCult"' in html + assert 'href="https://discord.gg/SwaNeVJRSq"' in html assert 'href="/app/"' in html assert 'href="/privacy"' in html assert 'href="/terms"' in html