From 522ce6ec83e33cdee760c87788c39d255cc3d159 Mon Sep 17 00:00:00 2001 From: artheru Date: Wed, 10 Jun 2026 12:02:06 +0800 Subject: [PATCH] quality: fix heading order + asset caching (0.84.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit measured the LIVE site with Lighthouse (best-practices 100, seo 100, agentic-browsing 100; a11y 98, perf 86) and fixed two real flags: - heading-order: the footer column labels were
following an

(skipping h4) — changed to

so the page heading order is sequential; a11y 98 -> 100 - caching: every static asset was served with no cache lifetime (0s). added nginx cache locations on the amerc.ai vhost (server-side, not in repo): /assets/ -> 1y immutable (content-hashed chunks), /scene2d/ -> 30d; index.html stays uncached so it always points at the latest assets. repeat visitors now serve JS/CSS/images from cache. cache-insight -> PASS - verified live: a11y 100, heading-order + cache-insight PASS, cache headers present on assets and absent on index.html --- index.html | 2 +- package.json | 2 +- src/Scene2D.jsx | 8 ++++---- src/styles.css | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 96aa74b..f5f5742 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - + diff --git a/package.json b/package.json index 9c2be54..295de07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amerc-site", - "version": "0.83.0-agentnative", + "version": "0.84.0-quality", "private": true, "type": "module", "scripts": { diff --git a/src/Scene2D.jsx b/src/Scene2D.jsx index fcdee47..b5eac90 100644 --- a/src/Scene2D.jsx +++ b/src/Scene2D.jsx @@ -10,7 +10,7 @@ import { api } from './api.js'; const Menu = ({ size = 20 }) => (); const X = ({ size = 20 }) => (); -const RELEASE = '0.83.0-agentnative'; +const RELEASE = '0.84.0-quality'; const NAV = [ { id: 'home', label: 'Tavern' }, @@ -291,17 +291,17 @@ function Footer({ setRoute }) { {ok === null ? 'checking…' : ok ? 'All systems operational' : 'Service degraded'}{stats ? ` · ${stats.online} online · ${stats.sessions} live` : ''} -
Product
+

Product

-
Resources
+

Resources

Docs For agents ↗
-
Platform
+

Platform

Git Webagent diff --git a/src/styles.css b/src/styles.css index e7caeee..79089ff 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1139,7 +1139,7 @@ button { .ft-status { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: #8fe9c0; background: rgba(54,240,176,0.08); border: 1px solid rgba(54,240,176,0.3); border-radius: 16px; padding: 5px 12px; } .ft-status i { width: 8px; height: 8px; border-radius: 50%; background: #36f0b0; box-shadow: 0 0 0 0 rgba(54,240,176,0.7); animation: ap-pulse 1.8s infinite; } .ft-status.down { color: #ff9f9f; background: rgba(255,122,140,0.08); border-color: rgba(255,122,140,0.3); } .ft-status.down i { background: #ff7a8c; animation: none; } -.ft-col h5 { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: #6f5b8c; margin: 0 0 10px; } +.ft-col h4 { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: #6f5b8c; margin: 0 0 10px; } .ft-col a, .ft-col button { display: block; color: #c3d0e6; font-size: 13px; text-decoration: none; background: none; cursor: pointer; padding: 4px 0; text-align: left; font-family: inherit; } .ft-col a:hover, .ft-col button:hover { color: #27d8ff; } .ft-base { max-width: 1080px; margin: 24px auto 0; padding-top: 14px; border-top: 1px solid #140d22; font-size: 11px; color: #5f4f7a; text-align: center; }