Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ p1_count: 4
---
# Critique: Timbermods hub (index.html)
Method: dual-agent (A design review, B site test + detector + browser + audit)
Tests: (1) PARTIAL FAIL - taglines exist but the first sits at y~860; phone page 8,772px with 770-900px cards; order has no logic; categories don't map to problems; no guidance between the two co-op mods; hub identity thin; (2) MOSTLY PASS - all 8 buttons resolve to the mod zip with version and size, requirements visible, #install clear; fails: Late Game Performance Stable with no caution; (3) FAIL - MultiColony "own land", "where the colonies' roads meet", "colony handover", and "trading not played" contradicts its README; Stability Fork not feature-complete; LGP caution missing.
Tests: (1) PARTIAL FAIL - taglines exist but the first sits at y~860; phone page 8,772px with 770-900px cards; order has no logic; categories don't map to problems; no guidance between the two co-op mods; hub identity thin; (2) MOSTLY PASS - all 8 buttons resolve to the mod zip with version and size, requirements visible, #install clear; fails: Late Game Performance Stable with no caution; (3) FAIL - Timber Together "own land", "where the colonies' roads meet", "colony handover", and "trading not played" contradicts its README; Stability Fork not feature-complete; LGP caution missing.
Heuristics 23/36 (Acceptable).
Priority: [P0] MultiColony copy false; [P1] LGP caution; [P1] cards don't echo the redesigned sites (6 of 8 accents off); [P1] scanning 8 mods slow (no index, no need-first grouping); [P1] fork vs MultiColony choice unexplained; [P2] fork feature-complete; Stable pills on unplayed builds; phone tap targets (22px links, 33px toggle), cramped header; 3+3+2 orphan grid; [P3] banners (LGP chart reads as data; co-op banners near-identical; Tipsy render on grey), dark-only theme-color, toggle state, no og:image, no 404, 16 API calls per first visit.
Priority: [P0] Timber Together copy false; [P1] LGP caution; [P1] cards don't echo the redesigned sites (6 of 8 accents off); [P1] scanning 8 mods slow (no index, no need-first grouping); [P1] fork vs Timber Together choice unexplained; [P2] fork feature-complete; Stable pills on unplayed builds; phone tap targets (22px links, 33px toggle), cramped header; 3+3+2 orphan grid; [P3] banners (LGP chart reads as data; co-op banners near-identical; Tipsy render on grey), dark-only theme-color, toggle state, no og:image, no 404, 16 API calls per first visit.
Test: 15/15 (card article regex, stub DOM selectors, cautions vs data-maturity, release choice, rate limits, footer strings).
Identity: parchment/forest green, rounded cards with soft shadows, same dark banner template on six cards.
8 changes: 4 additions & 4 deletions .impeccable/design.json
Original file line number Diff line number Diff line change
Expand Up @@ -667,9 +667,9 @@
],
"cssVar": "--c (set inline on the mod's panel, need-index swatch and notice entry)"
},
"mod-multicolony": {
"mod-timber-together": {
"role": "tertiary",
"displayName": "MultiColony Teal",
"displayName": "Timber Together Teal",
"canonical": "#1a6a77",
"oklch": "oklch(48.4% 0.076 211.0)",
"tonalRamp": [
Expand Down Expand Up @@ -950,7 +950,7 @@
"kind": "card",
"refersTo": "mod-panel",
"description": "One per mod: warm paper (moss at night) framed 5px in the mod's own colour, its own picture as the banner.",
"html": "<article class=\"ds-panel\" style=\"--c:#1a6a77\"><div class=\"ds-banner\"></div><div class=\"ds-body\"><div class=\"ds-meta\"><span class=\"ds-pill-tag\">Multiplayer</span><span class=\"ds-pill-status\">Stable</span></div><h3><a href=\"#\">BeaverBuddies MultiColony</a></h3><p class=\"ds-tagline\">Two players, one map, a colony each.</p><p class=\"ds-blurb\">Each player runs a colony of their own on one shared map.</p><ul class=\"ds-facts\"><li>Trading Posts exchange goods and beavers</li><li>Folktails and Iron Teeth in one game</li></ul><a class=\"ds-btn\" href=\"#\">Download v1.4.0 <small>3.0 MB</small></a><p class=\"ds-links\"><a href=\"#\"><b>Website</b></a><a href=\"#\">GitHub</a><a href=\"#\">Release notes</a></p></div></article>",
"html": "<article class=\"ds-panel\" style=\"--c:#1a6a77\"><div class=\"ds-banner\"></div><div class=\"ds-body\"><div class=\"ds-meta\"><span class=\"ds-pill-tag\">Multiplayer</span><span class=\"ds-pill-status\">Stable</span></div><h3><a href=\"#\">Timber Together</a></h3><p class=\"ds-tagline\">Two players, one map, a colony each.</p><p class=\"ds-blurb\">Each player runs a colony of their own on one shared map.</p><ul class=\"ds-facts\"><li>Trading Posts exchange goods and beavers</li><li>Folktails and Iron Teeth in one game</li></ul><a class=\"ds-btn\" href=\"#\">Download v1.4.0 <small>3.0 MB</small></a><p class=\"ds-links\"><a href=\"#\"><b>Website</b></a><a href=\"#\">GitHub</a><a href=\"#\">Release notes</a></p></div></article>",
"css": ".ds-panel { display: flex; flex-direction: column; max-width: 340px; background: var(--tile, #f5ecd9); color: var(--tile-ink, #2a2118); border: 5px solid var(--c); border-radius: 8px; overflow: hidden; box-shadow: 0 2px 0 rgba(0,0,0,.22), 0 12px 20px -12px rgba(0,0,0,.65); font-family: var(--sans, system-ui, sans-serif); } .ds-banner { aspect-ratio: 16 / 10; background: linear-gradient(135deg, #e7dcc4, #b9c9a8); border-bottom: 5px solid var(--c); } .ds-body { padding: 14px 16px 16px; } .ds-meta { display: flex; justify-content: space-between; margin: 0 0 8px; } .ds-pill-tag, .ds-pill-status { display: inline-flex; align-items: center; min-height: 24px; padding: 2px 10px; border-radius: 999px; font-family: var(--display, 'Anybody', 'Arial Narrow', sans-serif); font-weight: 700; font-size: .78rem; letter-spacing: .02em; } .ds-pill-tag { background: var(--c); color: #fff; } .ds-pill-status { border: 1.5px solid currentColor; color: var(--ok, #2c6536); } .ds-panel h3 { font-family: var(--display, 'Anybody', 'Arial Narrow', sans-serif); font-weight: 800; font-size: 1.35rem; line-height: 1.08; margin: 0 0 .25em; } .ds-panel h3 a { color: inherit; text-decoration: none; } .ds-panel h3 a:hover { text-decoration: underline; text-decoration-color: var(--c); } .ds-tagline { font-weight: 750; margin: 0 0 .4em; } .ds-blurb { color: var(--tile-muted, #5d4c39); font-size: .95rem; margin: 0 0 .7em; } .ds-facts { list-style: none; padding: 0; margin: 0 0 .8em; font-size: .92rem; } .ds-facts li { position: relative; padding: 5px 0 5px 16px; border-top: 1px solid var(--tile-rule, #dccdab); } .ds-facts li::before { content: ''; position: absolute; left: 0; top: .9em; width: 7px; height: 7px; border-radius: 50%; background: var(--c); } .ds-btn { display: flex; justify-content: center; align-items: center; gap: 8px; min-height: 48px; border-radius: 8px; background: var(--c); color: #fff; font-weight: 750; text-decoration: none; box-shadow: inset 0 -2px 0 rgba(0,0,0,.2); } .ds-btn:hover { filter: brightness(.9); } .ds-panel a:focus-visible { outline: 3px solid var(--focus, #2f5d3a); outline-offset: 3px; } .ds-links { display: flex; justify-content: space-between; border-top: 1px solid var(--tile-rule, #dccdab); margin: 12px 0 0; padding-top: 4px; } .ds-links a { display: inline-flex; align-items: center; min-height: 44px; color: var(--tile-link, #2f5d3a); font-weight: 650; font-size: .92rem; text-underline-offset: 3px; }"
},
{
Expand Down Expand Up @@ -1006,7 +1006,7 @@
"kind": "custom",
"refersTo": "notice",
"description": "A paper panel without a mod colour, in a 5px double rule; fills a board's spare slot.",
"html": "<div class=\"ds-notice\"><h3>Which one? One BeaverBuddies at a time</h3><dl><div style=\"--c:#b8322a\"><dt>Stability Fork</dt><dd>Everyone builds one colony together.</dd></div><div style=\"--c:#1a6a77\"><dt>MultiColony</dt><dd>Each player runs a colony of their own.</dd></div></dl><p>Install only one of the two.</p></div>",
"html": "<div class=\"ds-notice\"><h3>Which one? One BeaverBuddies at a time</h3><dl><div style=\"--c:#b8322a\"><dt>Stability Fork</dt><dd>Everyone builds one colony together.</dd></div><div style=\"--c:#1a6a77\"><dt>Timber Together</dt><dd>Each player runs a colony of their own.</dd></div></dl><p>Install only one of the two.</p></div>",
"css": ".ds-notice { max-width: 320px; background: var(--tile, #f5ecd9); color: var(--tile-ink, #2a2118); border: 5px double var(--tile-rule, #dccdab); border-radius: 8px; padding: 22px 20px; box-shadow: 0 2px 0 rgba(0,0,0,.22), 0 12px 20px -12px rgba(0,0,0,.65); font-family: var(--sans, system-ui, sans-serif); } .ds-notice h3 { font-family: var(--display, 'Anybody', 'Arial Narrow', sans-serif); font-weight: 800; font-size: 1.35rem; line-height: 1.08; margin: 0 0 14px; } .ds-notice dl { margin: 0 0 14px; } .ds-notice dl > div { padding: 10px 0; border-top: 1px solid var(--tile-rule, #dccdab); } .ds-notice dt { font-family: var(--display, 'Anybody', 'Arial Narrow', sans-serif); font-weight: 800; } .ds-notice dt::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 8px; border-radius: 2px; background: var(--c); } .ds-notice dd { margin: 4px 0 0; color: var(--tile-muted, #5d4c39); font-size: .95rem; } .ds-notice > p { margin: 0; padding-top: 12px; border-top: 1.5px solid var(--tile-ink, #2a2118); font-weight: 650; font-size: .95rem; }"
}
],
Expand Down
4 changes: 2 additions & 2 deletions .impeccable/surfaces/index-html.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ related_targets: ["404.html"]

# Surface brief: Timbermods hub (index.html, one page)

Scope: the org hub at timbermods.github.io (index.html, assets/, 404.html new). Persuade + a catalog. Audience: Timberborn players browsing what Timbermods makes, and arrivals from one mod's site. Action: find the mod that fits a problem, get its right zip (versioned button), go on to its own site; install right; follow the co-op rule. Proof: each mod's own look (card art from its own site), the release data (version, size, date) and honest cautions. Constraints: scripts/test-site.mjs (15 checks): article.card[data-repo][data-asset][data-maturity when a caution], no data-repo elsewhere, the fixed card hooks site.js uses, caution label = maturity, /releases fallbacks, [data-generated]; data/releases.json is bot-generated and never touched; relative paths; no external requests but GitHub's API; #install, #mods, #top and the eight card ids; the theme toggle (tbmods.theme). Truth: MultiColony's card from its own README (roads never join except through a Trading Post; waiting room; mixed factions not played; beta); Stability Fork feature-complete; Late Game Performance's caution; no invented numbers. Decisions delegated to the agent.
Scope: the org hub at timbermods.github.io (index.html, assets/, 404.html new). Persuade + a catalog. Audience: Timberborn players browsing what Timbermods makes, and arrivals from one mod's site. Action: find the mod that fits a problem, get its right zip (versioned button), go on to its own site; install right; follow the co-op rule. Proof: each mod's own look (card art from its own site), the release data (version, size, date) and honest cautions. Constraints: scripts/test-site.mjs (15 checks): article.card[data-repo][data-asset][data-maturity when a caution], no data-repo elsewhere, the fixed card hooks site.js uses, caution label = maturity, /releases fallbacks, [data-generated]; data/releases.json is bot-generated and never touched; relative paths; no external requests but GitHub's API; #install, #mods, #top and the eight card ids; the theme toggle (tbmods.theme). Truth: Timber Together's card from its own README (roads never join except through a Trading Post; waiting room; mixed factions not played; beta); Stability Fork feature-complete; Late Game Performance's caution; no invented numbers. Decisions delegated to the agent.

## Direction contract

THESIS: The hub is a collector's binder of trading cards: every Timbermods mod is a card in its own sleeve, printed in its own world's colours and art, so a player who came from one mod's site recognises it at once. The binder only holds them. It refuses the catalog template it wears (parchment and forest green, identical dark banners on six cards, soft-shadow rounded cards, a hero stat strip).

OWN-WORLD: A card collector's desk. Light: a pale grey felt mat (#dcd8cf, produced texture); dark: charcoal felt (#16171a). The binder page is dark PVC (#1d1f23) with punched ring holes, holding clear sleeves with a faint produced sheen. Each card is white card stock (#fbfaf6) framed in its mod's accent (taken from its own site: Stability Fork red #b8322a, MultiColony teal #1a6a77, MixedStorage brass #8a6a2c, Persistent Work Areas gold #8a6512, Optimized Local Housing blue #2d5f9a, Late Game Performance purple #5b3fd0, The Tipsy Tail aqua #1a6773, Hungry Pathing cobalt #1d4a86), with its site's own signature art in the art window. Anybody (display, self-hosted, OFL) for the binder cover and card names; body system-ui.
OWN-WORLD: A card collector's desk. Light: a pale grey felt mat (#dcd8cf, produced texture); dark: charcoal felt (#16171a). The binder page is dark PVC (#1d1f23) with punched ring holes, holding clear sleeves with a faint produced sheen. Each card is white card stock (#fbfaf6) framed in its mod's accent (taken from its own site: Stability Fork red #b8322a, Timber Together teal #1a6a77, MixedStorage brass #8a6a2c, Persistent Work Areas gold #8a6512, Optimized Local Housing blue #2d5f9a, Late Game Performance purple #5b3fd0, The Tipsy Tail aqua #1a6773, Hungry Pathing cobalt #1d4a86), with its site's own signature art in the art window. Anybody (display, self-hosted, OFL) for the binder cover and card names; body system-ui.

STORY: One look: Timbermods, unofficial Timberborn mods, a card each; find one by what you need. Then three binder pages grouped by need: Play together (with which co-op mod to pick), Big colonies, Build and plan; the shared install; the footer's data stamp and credits.

Expand Down
16 changes: 15 additions & 1 deletion 404.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@
<meta name="theme-color" content="#1a211a" media="(prefers-color-scheme: dark)">
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="/assets/style.css">
<script>
// A mod's site that moved with its repository: the same page at the new address.
(function () {
var moved = { '/beaverbuddies-multicolony': '/TimberTogether' };
var path = location.pathname;
for (var from in moved) {
var lower = path.toLowerCase();
if (lower === from || lower.indexOf(from + '/') === 0) {
location.replace(moved[from] + path.slice(from.length) + location.search + location.hash);
return;
}
}
})();
</script>
<script>
try { var t = localStorage.getItem('tbmods.theme'); if (t === 'light' || t === 'dark') document.documentElement.dataset.theme = t; } catch (e) {}
</script>
Expand All @@ -33,7 +47,7 @@ <h1>Nothing built here yet.</h1>
<h2>Each mod's own site</h2>
<ul>
<li><a href="https://timbermods.github.io/BeaverBuddies-Stability-Fork/"><span class="to" style="--c: #b8322a">BeaverBuddies Stability Fork</span></a></li>
<li><a href="https://timbermods.github.io/BeaverBuddies-MultiColony/"><span class="to" style="--c: #1a6a77">BeaverBuddies MultiColony</span></a></li>
<li><a href="https://timbermods.github.io/TimberTogether/"><span class="to" style="--c: #1a6a77">Timber Together</span></a></li>
<li><a href="https://timbermods.github.io/LateGamePerformance/"><span class="to" style="--c: #5b3fd0">Late Game Performance</span></a></li>
<li><a href="https://timbermods.github.io/OptimizedLocalHousing/"><span class="to" style="--c: #2d5f9a">Optimized Local Housing</span></a></li>
<li><a href="https://timbermods.github.io/HungryPathing/"><span class="to" style="--c: #1d4a86">Hungry Pathing</span></a></li>
Expand Down
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ main).

- **Own Colours**: each mod's accent is passed as `--c` (inline `style="--c:#…"` on the `article.card` and on its
need-index `.to` span), taken from that mod's own site. It frames the panel and colours its tag pill, bullets and
download button. Never recolour a mod or share an accent. Accents: Stability Fork #b8322a, MultiColony #1a6a77,
download button. Never recolour a mod or share an accent. Accents: Stability Fork #b8322a, Timber Together #1a6a77,
MixedStorage #8a6a2c, Persistent Work Areas #8a6512, Optimized Local Housing #2d5f9a, Late Game Performance #5b3fd0,
The Tipsy Tail #1a6773, Hungry Pathing #1d4a86. A new accent must hold ≥4.5:1 against white (`#fff` text on it).
- **Wood and Green**: the hub's own colours are birch, walnut, brass, paper, moss and pine green, nothing black/white.
Expand Down Expand Up @@ -111,9 +111,9 @@ main).
Never invent download counts, ratings, reviews or screenshots.
- Keep the credits: BeaverBuddies by thomaswp and contributors ("The multiplayer design is theirs.") and "Not affiliated
with or endorsed by Mechanistry" (footer of both pages).
- Terminology: exact names BeaverBuddies Stability Fork, BeaverBuddies MultiColony, MixedStorage, Persistent Work
- Terminology: exact names BeaverBuddies Stability Fork, Timber Together, MixedStorage, Persistent Work
Areas, Optimized Local Housing, Late Game Performance, The Tipsy Tail, Hungry Pathing; the org is Timbermods;
"Trading Post" capitalised; MultiColony has no land or borders (roads never join except through a Trading Post).
"Trading Post" capitalised; Timber Together has no land or borders (roads never join except through a Trading Post).
- When you change a card, update its entry in PRODUCT.md's Operating Context too, so the two stay in step.

### Update the website (a mod changed, a mod was added, or a mod's site changed its look)
Expand Down
6 changes: 3 additions & 3 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ colors:
log-end: "#e0c79a"
log-ring: "#c7a878"
mod-stability-fork: "#b8322a"
mod-multicolony: "#1a6a77"
mod-timber-together: "#1a6a77"
mod-late-game-performance: "#5b3fd0"
mod-optimized-local-housing: "#2d5f9a"
mod-hungry-pathing: "#1d4a86"
Expand Down Expand Up @@ -152,13 +152,13 @@ components:
mod-panel-body:
padding: "{spacing.panel-body}"
button-download:
backgroundColor: "{colors.mod-multicolony}"
backgroundColor: "{colors.mod-timber-together}"
textColor: "#ffffff"
rounded: "{rounded.lg}"
padding: "8px 16px"
height: "{spacing.button}"
pill-category:
backgroundColor: "{colors.mod-multicolony}"
backgroundColor: "{colors.mod-timber-together}"
textColor: "#ffffff"
typography: "{typography.label}"
rounded: "{rounded.pill}"
Expand Down
Loading
Loading