diff --git a/.impeccable/critique/2026-09-23T20-44-49Z__r-code-timbermods-github-io-site-redesign-0cb706f4.md b/.impeccable/critique/2026-09-23T20-44-49Z__r-code-timbermods-github-io-site-redesign-0cb706f4.md
index 96cb487..a37a7a1 100644
--- a/.impeccable/critique/2026-09-23T20-44-49Z__r-code-timbermods-github-io-site-redesign-0cb706f4.md
+++ b/.impeccable/critique/2026-09-23T20-44-49Z__r-code-timbermods-github-io-site-redesign-0cb706f4.md
@@ -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.
diff --git a/.impeccable/design.json b/.impeccable/design.json
index a084e68..5628d36 100644
--- a/.impeccable/design.json
+++ b/.impeccable/design.json
@@ -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": [
@@ -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": "
",
"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; }"
}
],
diff --git a/.impeccable/surfaces/index-html.md b/.impeccable/surfaces/index-html.md
index e20c8a8..a79abdb 100644
--- a/.impeccable/surfaces/index-html.md
+++ b/.impeccable/surfaces/index-html.md
@@ -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.
diff --git a/404.html b/404.html
index 07bbc62..d1a3275 100644
--- a/404.html
+++ b/404.html
@@ -9,6 +9,20 @@
+
@@ -33,7 +47,7 @@
diff --git a/CLAUDE.md b/CLAUDE.md
index 59aeaad..c74bde5 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -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.
@@ -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)
diff --git a/DESIGN.md b/DESIGN.md
index c4c4878..9b70894 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -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"
@@ -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}"
diff --git a/PRODUCT.md b/PRODUCT.md
index ba9c600..6d68fcd 100644
--- a/PRODUCT.md
+++ b/PRODUCT.md
@@ -51,11 +51,11 @@ the card `id`, its accent `--c` (taken from that mod's own site), its category p
1. **BeaverBuddies Stability Fork** (`beaverbuddies-stability-fork`, `#b8322a`, Multiplayer; Harmony, Mod Settings).
- Co-op with fewer crashes and desyncs: an independent fork of BeaverBuddies with Steam friend invites, a connection
panel, teammate cursors and desync fixes.
- - **Feature-complete**: game-update and bug-fix releases only; new features go into MultiColony. GitHub's Latest.
+ - **Feature-complete**: game-update and bug-fix releases only; new features go into Timber Together. GitHub's Latest.
- Its status line follows its README (the newest release is fixes only and hasn't been played yet). GPL-3.0.
-2. **BeaverBuddies MultiColony** (`beaverbuddies-multicolony`, `#1a6a77`, Multiplayer; Harmony, Mod Settings;
+2. **Timber Together** (`timber-together`, `#1a6a77`, Multiplayer; Harmony, Mod Settings;
`data-maturity="Beta"` with a Beta caution).
- - Two players, one map, a colony each; the colonies' roads never join, and they trade only at Trading Posts. Or
+ - Tagline *Build apart. Thrive together.* A colony each on one map; the colonies' roads never join, and they trade only at Trading Posts. Or
share one colony, as in the fork.
- Pre-releases only (no Latest release), so the pill says **Preview**. Built on the Stability Fork. GPL-3.0.
- The caution's played and not-played lists follow its README.
@@ -86,7 +86,7 @@ the card `id`, its accent `--c` (taken from that mod's own site), its category p
profile). Whether PerformanceLog joins the hub is the maintainer's call.
**Game version:** every mod is built for Timberborn **1.1.2.4** (the hero says so; each README agrees). Only the
-Steam version on Windows is stated as tested (Stability Fork, MultiColony).
+Steam version on Windows is stated as tested (Stability Fork, Timber Together).
**The refresh process:** `.github/workflows/refresh-releases.yml` runs `node scripts/update-releases.mjs` on a cron
(`17 * * * *`, hourly on paper; GitHub often runs it only every few hours) and on manual dispatch. It commits
@@ -138,7 +138,7 @@ on every push to `main` and every pull request, Node 22; the bot's pushes don't
starts with a label and a colon (`Beta: …`), and the card's `data-maturity` equals that label. The pill must never
read Stable next to a caution. Remove both together when a mod is ready.
4. **No-JS fallback:** each download `href` in the HTML is the repo's `/releases` page (not `/releases/latest`, which
- 404s for MultiColony's pre-release-only repo), and the notes link likewise.
+ 404s for Timber Together's pre-release-only repo), and the notes link likewise.
5. **Footer stamp:** one `[data-generated]` element (default text "Release data loads from GitHub."); `site.js` sets
"Release data last changed ." from the snapshot, or "Latest releases checked live from GitHub." after a live
check of every card. Tests assert both strings.
@@ -159,14 +159,14 @@ on every push to `main` and every pull request, Node 22; the bot's pushes don't
and follows the same main rule, differing in edge cases). If a `release.js` is ever copied in, it is replaced
byte-for-byte from the shared copy, never edited. `site.js` itself is hub-only and may be changed, with its tests.
-**Exact mod names** (as on the cards and the mods' sites): BeaverBuddies Stability Fork, BeaverBuddies MultiColony,
+**Exact mod names** (as on the cards and the mods' sites): BeaverBuddies Stability Fork, Timber Together,
MixedStorage, Persistent Work Areas, Optimized Local Housing, Late Game Performance, The Tipsy Tail, Hungry Pathing.
-The org is **Timbermods**; the original mod is **BeaverBuddies** by thomaswp. MultiColony's in-game name is
-"BeaverBuddies MultiColony (beta)".
+The org is **Timbermods**; the original mod is **BeaverBuddies** by thomaswp. Timber Together's in-game name is
+"Timber Together".
**Keeping copy true:** each card's tagline, facts, caution and status line restate that mod's README. When a mod's
README changes (features, status, requirements), update its card, the needs index if the mod's purpose changed, and
-this file. Terms to use: Trading Post (capitalized); MultiColony has no land or borders.
+this file. Terms to use: Trading Post (capitalized); Timber Together has no land or borders.
## Brand Commitments
@@ -182,19 +182,19 @@ this file. Terms to use: Trading Post (capitalized); MultiColony has no land or
- **Each mod keeps its own identity.** Its card uses that mod's accent color and imagery, consistent with its own site;
the hub's own look frames the collection without overriding theirs.
- **License:** the hub is MIT (Copyright 2026 Timbermods). Timberborn, its name and artwork are not covered. Each mod
- has its own license (Stability Fork and MultiColony GPL-3.0; MixedStorage and Late Game Performance MIT); the hub
+ has its own license (Stability Fork and Timber Together GPL-3.0; MixedStorage and Late Game Performance MIT); the hub
doesn't restate the others.
## Evidence on Hand
- **Card art:** `assets/img/cards/.webp` (960×600), one per mod, each a capture of the signature element
- of that mod's own site (the Stability Fork's log round, MultiColony's two-colony map, Late Game Performance's pit
+ of that mod's own site (the Stability Fork's log round, Timber Together's two-colony map, Late Game Performance's pit
board, the seating plan, the hunger board, the MixedStorage panel, the pinned-area plan, the Tipsy Tail on its bar).
When a mod's site changes its look, recapture its card. Provenance is in each image's `.json` sidecar.
- **Org profile:** `timbermods/.github/profile/`: its hand-made `banner.svg` and one picture per mod in `cards/*.png`,
rendered by `profile/make_images.py` from this site's pictures.
- **Per-mod sites** each have their own screenshots, icons and demos (MixedStorage: `panel.webp`, `world.webp`;
- MultiColony: mod icon, goods icons, connection-panel screenshot; others per their repos). The hub may link to or
+ Timber Together: mod icon, goods icons, connection-panel screenshot; others per their repos). The hub may link to or
reuse them only as those sites hold them.
- **Live facts:** release tag, publish date, zip size, prerelease flag and GitHub's Latest marker per mod, from the
snapshot and the live API. Nothing else is data-driven.
diff --git a/README.md b/README.md
index 92eecdc..92db3cf 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Timberborn Mods catalog
-A static, no-build catalog site for the Timberborn mods: BeaverBuddies Stability Fork, BeaverBuddies MultiColony, MixedStorage, Persistent Work Areas, Optimized Local Housing, Late Game Performance, The Tipsy Tail and Hungry Pathing. Each card links to the mod's own site and has a **Download latest** button.
+A static, no-build catalog site for the Timberborn mods: BeaverBuddies Stability Fork, Timber Together, MixedStorage, Persistent Work Areas, Optimized Local Housing, Late Game Performance, The Tipsy Tail and Hungry Pathing. Each card links to the mod's own site and has a **Download latest** button.
## Preview locally
diff --git a/assets/img/cards/beaverbuddies-multicolony.webp b/assets/img/cards/timber-together.webp
similarity index 100%
rename from assets/img/cards/beaverbuddies-multicolony.webp
rename to assets/img/cards/timber-together.webp
diff --git a/assets/img/cards/beaverbuddies-multicolony.webp.json b/assets/img/cards/timber-together.webp.json
similarity index 100%
rename from assets/img/cards/beaverbuddies-multicolony.webp.json
rename to assets/img/cards/timber-together.webp.json
diff --git a/index.html b/index.html
index 0516d06..4e54c8a 100644
--- a/index.html
+++ b/index.html
@@ -57,7 +57,7 @@
Co-op through BeaverBuddies. Install one BeaverBuddies at a time: the Stability Fork is one shared colony and is finished; MultiColony is built on it and adds a colony for each player.
+
Play together
Co-op through BeaverBuddies. Install one BeaverBuddies at a time: the Stability Fork is one shared colony and is finished; Timber Together is built on it and adds a colony for each player.
An independent fork of BeaverBuddies for one shared colony, with Steam friend invites, a connection panel, teammate cursors and fixes for desyncs, crashes and reconnects. Feature-complete: it gets fixes and game updates, and new features go into MultiColony.
+
An independent fork of BeaverBuddies for one shared colony, with Steam friend invites, a connection panel, teammate cursors and fixes for desyncs, crashes and reconnects. Feature-complete: it gets fixes and game updates, and new features go into Timber Together.
Invite Steam friends from Steam's overlay, no port forwarding
A connection panel with ping, sync state and chat
Refuses a mismatched build before it can desync
The newest release is fixes only and hasn't been played yet; the one before it was.
Built on the Stability Fork. Each player runs a colony of their own, with its own beavers, stock, science and working hours, on one shared map. The colonies' roads never join: they trade only at Trading Posts. Or share one colony, as in the fork.
Built on BeaverBuddies by thomaswp, through the Stability Fork. Each player runs a colony of their own, with its own beavers, stock, science and working hours, on one shared map. The colonies' roads never join: they trade only at Trading Posts. Or share one colony, as in the fork.
A waiting room before a new game: invite, ready up, start together
Trading Posts exchange goods and beavers between colonies
Folktails and Iron Teeth can play in one game
Beta: the release candidate. Founding, building, Trading Posts and the waiting room were played; starting from the waiting room, mixed factions and the late game haven't been yet. Use a copy of a save.