From ad6860448ad6a422458ee36731ec1d4ee1d2848c Mon Sep 17 00:00:00 2001 From: John Coffey Date: Tue, 8 Sep 2026 22:52:17 -0700 Subject: [PATCH] A way back out, and the tags a crawler reads The same two gaps the wumpus had, closed the same way, because they are the same site. The way back sits leftmost in the footer, next to SOURCE, and the arrow is a pseudo-element so it can be the right arrow for the skin: a chevron on the remaster, and the two ASCII characters the Atari's character set actually had on the 1979 one. Absolute rather than "/", because this game is served from a subdirectory in production and from the root in development -- the relative answer is right in one of those and points at the game itself in the other. The head gains canonical, Open Graph, Twitter and robots, plus VideoGame and BreadcrumbList structured data. Canonical is not boilerplate here: the container falls back to index.html for anything under /lemonade/, so without it /lemonade/anything-at-all is a separate indexable page with the same content. The preview image is served by the site rather than added here. Every pixel of this game is SVG drawn in code and there are no artwork files; a social card is not part of the game, and it belongs with the deployment. A noscript block describes the game and links onwards rather than leaving an empty div for a reader without scripts. Build clean. --- index.html | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++-- src/App.css | 14 ++++++ src/App.tsx | 19 ++++++++ 3 files changed, 163 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 17223ac..fae48b9 100644 --- a/index.html +++ b/index.html @@ -2,17 +2,143 @@ - - + Lemonade Stand — 1979 business sim, in your browser - Lemonade Stand + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/src/App.css b/src/App.css index c8deaa5..b2a888c 100644 --- a/src/App.css +++ b/src/App.css @@ -771,6 +771,20 @@ a.btn { letter-spacing: 0.06em; } +/* + * The way back. The arrow is a pseudo-element rather than part of the label so + * that it can be the right arrow for the machine you are looking at: a chevron + * on the remaster, and the two ASCII characters the Atari's character set + * actually had on the 1979 skin. + */ +.controls .back::before { + content: '\2039\00a0'; +} + +:root:not([data-skin='modern']) .controls .back::before { + content: '<-\00a0'; +} + .seed { color: #566079; margin-left: auto; } html[data-skin='modern'] .seed { color: #9b8ac4; } diff --git a/src/App.tsx b/src/App.tsx index 594a36a..d03524c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -28,6 +28,17 @@ import './App.css' */ const SOURCE_URL = 'https://github.com/Coffey-Labs/lemonade' +/** + * The way back out. + * + * Absolute rather than `/`, because this game is served from a subdirectory in + * production and from the root in development -- so the relative answer is + * right in one of those and points at the game itself in the other. The + * destination is a particular site, and naming it is the honest way to say so. + * The source link next to it works the same way for the same reason. + */ +const GAMES_URL = 'https://games.jcoffey.dev/' + export default function App() { const [seed] = useState(randomSeed) const [state, dispatch] = useReducer(reducer, seed, initialState) @@ -213,6 +224,14 @@ export default function App() { + {/* Leftmost, because that is where a way back belongs. */} + + GAMES + {