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
32 changes: 27 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,25 @@ in `source/`, game assets and localization in `packaging/PersistentWorkAreas/ver
(`packaging/PersistentWorkAreas/version-1.1/Localizations/enUS_PersistentWorkAreas.csv`), the release notes. Where
the site and README disagree, the README wins (for example co-op: every player installs the same version).

## Writing README and website text

Kyler, 2026-09-24: "simplicity and elegance is effective and desirable." Every change to the README, the website
text and the player docs follows these rules.

- **Write for a Timberborn player** who wants to download, install and use the mod. Developer detail goes in
`DEVELOPING.md` (build, checks, how it works), `VALIDATION.md` (what is tested) or the GitHub release notes
(version history); link to it rather than repeating it.
- **Short.** One idea per sentence, most under about 20 words. A paragraph or FAQ answer is one to three sentences,
a troubleshooting answer a few numbered steps.
- **Lead with the action.** Menu paths as arrow chains; on-screen labels in bold, exactly as in game.
- **Say each thing once**, where a player would look for it; link to it elsewhere.
- **Plain words.** No internals (class names, ids, formats) unless the player needs them to act.
- **Cut** filler, repeated caveats, edge cases a player won't meet, and history ("since …", "no longer", older
builds). Describe the mod as it is now.
- **Check every fact against the code** before writing it; changelogs lag.
- **Keep, briefly:** credits, the unofficial line, the status, and safety facts.
- **Reread as a new player before publishing.** Every step works as written, and nothing is said twice.

## Website

- **Where:** `docs/`: `index.html` (Overview), `install.html`, `troubleshooting.html`, `faq.html`, `404.html`,
Expand Down Expand Up @@ -81,10 +100,12 @@ in `source/`, game assets and localization in `packaging/PersistentWorkAreas/ver

### Content rules

- Describe the mod as it is now. No "New in", "added in", "since version" on player pages; version history lives in
the README's "New in …" / "Earlier versions" and the GitHub release notes (no CHANGELOG file). Upgrade facts players
- All text follows *Writing README and website text* above.
- Describe the mod as it is now. No "New in", "added in", "since version" in the README or on player pages; version
history lives in the GitHub release notes (no CHANGELOG file), and the README links to them. Upgrade facts players
need (replace the whole folder; pins are kept) are the exception.
- Status matches README/VALIDATION exactly. Every current feature has been played extensively in game (1.1.0 on
- Status matches README/VALIDATION exactly: the README's Status lists and the site's `#status` lists are word for
word the same, and "played extensively" is said there only. Every current feature has been played extensively in game (1.1.0 on
1.1.2.4), so none carries the marker today. A new feature not yet played gets
`<span class="unplayed">Checked, not played in game yet.</span>` after it, and loses it once played. Never invent numbers, reviews,
screenshots, download counts. No og image exists; don't fake one.
Expand All @@ -111,15 +132,16 @@ in `source/`, game assets and localization in `packaging/PersistentWorkAreas/ver

### Update the website for a new release

When asked to "update the website for the latest release, consistent with the design":
When asked to "update the website for the latest release, consistent with the design" (write every change by
*Writing README and website text* above):
1. Read the release and the docs: `gh release list -R timbermods/PersistentWorkAreas -L 5`,
`gh release view <tag> -R timbermods/PersistentWorkAreas`, README, VALIDATION.md, the localization CSV,
`packaging/PersistentWorkAreas/version-1.1/manifest.json`. List every player-facing change.
2. Update every place the site states a changed fact. Find them with
`grep -rnE "1\.1\.2\.4|version-1\.1|142|\b77\b|\b65\b|unplayed|Not played|playtested" docs`. There is no version
number in the static HTML (the badge is filled by site.js), and no `data-release-pinned`. The places:
- `index.html`: `<meta name="description">` and `og:description`; hero `.facts` (three) and `.status-note`
("Stable." + played summary); `#features` move sheets; `#how` legend (outlines / doesn't); `#details`
("Stable.", the version badge and the link to `#status`); `#features` move sheets; `#how` legend (outlines / doesn't); `#details`
notes sheet; `#compat` title block (Game version, Other mods, Co-op, Saves); `#status` Tested / Not played yet
(check counts, game version); `.cta` install steps.
- `install.html`: `#requirements` (game version), zip name pattern, the folder tree (`version-1.1` and its
Expand Down
29 changes: 29 additions & 0 deletions DEVELOPING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Developing Persistent Work Areas

The [README](README.md) and the [website](https://timbermods.github.io/PersistentWorkAreas/) are for players. This page is for building and checking the mod.

## How it works

It is a local display only. It does not patch game methods, change simulation or building data, send multiplayer events, or modify saves; the pins live in their own small local file. It uses the same navigation queries as the game's selected-building visualizer and a separate instance of its outline renderer. The renderer reflection is isolated in `source/NativeOutline.cs`; if it fails, pinning turns off for that map only.

The BeaverBuddies Stability Fork's co-op join check compares only the game and BeaverBuddies builds, so this mod doesn't affect joining.

[VALIDATION.md](VALIDATION.md) has the details: the pin file, refresh planning, what the checks cover and the release playtest checklist.

## Build from source

Install the .NET 8 SDK and have Timberborn installed, then run:

```powershell
.\build.ps1 -GameDir 'C:\Program Files (x86)\Steam\steamapps\common\Timberborn'
```

The script builds the mod, runs every check, and creates `dist\PersistentWorkAreas-v<version>.zip`, with the version from `manifest.json`. No game, Unity, Harmony, or BeaverBuddies DLLs are redistributed. The game DLLs are used only as build references.

Without the game, `dotnet run --project tests/Checks.csproj -c Release` runs only the checks that need no game files (pin, refresh-planning, planting-tool and pin-file logic) and reports the rest as skipped. GitHub Actions runs them for pull requests and pushes to `main`.

## Text and releases

All UI text is in `packaging/PersistentWorkAreas/version-1.1/Localizations/enUS_PersistentWorkAreas.csv`; the checks confirm the DLL has no hard-coded UI text.

Version history is in the GitHub release notes. When a release becomes Latest, `.github/workflows/latest-release.yml` updates the README lines ending in `<!-- latest -->` and the site's version text.
9 changes: 5 additions & 4 deletions PRODUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,9 @@ community range-overlay mods is on record; don't invent one.
Timber Together, frame rate in a very large colony, every other mod. Say so plainly in the "What is tested, and what
isn't" section, without alarm. A feature added later and not yet played carries "Checked, not played in game yet."
next to it until it is.
- **Describe the mod as it is now.** Version history belongs in the changelog: the README's "New in 1.1.0" / "Earlier
versions" and the GitHub release notes (there is no separate CHANGELOG file). The site has no "since version" or
"new in" lines; keep it that way. Keep only the upgrade facts players need:
- **Describe the mod as it is now.** Version history belongs in the GitHub release notes (there is no separate
CHANGELOG file); the README links to them. The site and README have no "since version" or "new in" lines; keep it
that way. Keep only the upgrade facts players need:
close the game, replace the whole `PersistentWorkAreas` folder (copying only the DLL shows raw text keys), pins are
kept because they live outside the mod folder.
- **Sources of truth:** `README.md`, `VALIDATION.md`, the localization CSV and the release notes. Where the site and
Expand All @@ -160,7 +160,8 @@ community range-overlay mods is on record; don't invent one.
## Brand Commitments

- **Voice:** a fellow player explaining a small, useful mod. Clear, exact, friendly, never hype. Short sentences; the
exact names players see in game.
exact names players see in game. Short and plain: one idea per sentence, each thing said once, no internals and no
history (see CLAUDE.md, *Writing README and website text*).
- **Native fidelity is the claim:** the outline is the game's own; the site's illustrations say they're illustrations
("Interactive illustration, not a game screenshot.") until real screenshots exist.
- **No official Timberborn logos or key art.** The game's own item and building icons are allowed where used (none are
Expand Down
Loading
Loading