Style rules for /tools/* pages and their supporting components in this repo
(weather-flower, dice-roller, future tools). Covers prose, changelog writing,
and other cross-tool conventions.
Versioning rules and same-day consolidation are documented in each tool’s
changelog.js header comment — they aren’t repeated here. This guide is
about how to write the entries, not how to number them.
Past tense. The changelog describes work that has been done — “added”, “fixed”, “renamed”, “broadened” — not work in progress and not “we add” / “the patch adds”. This applies to summaries, top-level bullets, and sub-bullets equally.
Each top-level bullet covers one topic. “What changed” and “what stayed the same as a deliberate decision” are two topics, not one. If you find yourself joining two ideas with “Also…” or starting a new sentence that introduces a distinct change, split it into a new bullet.
When a top-level bullet describes a category of work with multiple
sub-categories (e.g. several kinds of prose change, several kinds of
configuration update), break those out as sub-bullets via the
{ text, children } shape.
Each sub-bullet follows this shape:
Category clause, past tense. Optional colon, then 2–3 illustrative examples, then
etc.if the list is longer in reality.
Rules for sub-bullets:
Don’t close a bullet with “100 lines edited” / “across all six biomes” / “no calibration shift”. Scope claims belong to the summary or the parent bullet. A sub-bullet that ends with a metric is signalling it’s been asked to do two jobs.
Bad:
"`village` → `settlement` / `local` / `the centre`; `village green` → `the green`; `the lord's reeve` → `the reeve`; `lord's men` → `the watch`; `manor's [X]` → `the [X]`. Fixed counts went scale-relative: `twenty-three` → `into the dozens`. Singular nouns broadened: `the village dog` → `the dogs`. Preserved: parish, priest, diocese, bishop, chronicler, abbey, chapter-house, church, cathedral; tavern, innkeeper, blacksmith, smithy, cooper, verger, steward, apothecary, chandler, miller; `lower quarter` / `upper quarter`; `the lord`. 100 lines edited across all ten effect blocks; no calibration shift, only prose framing."
Three problems: one bullet doing four jobs, exhaustive lists, trailing metrics.
Good:
{
text: "**Cross-infrastructure prose neutralization**. ...",
children: [
"Settlement-specific language was generalized: `village` → `settlement` / `local` / `the centre`, `the lord's reeve` → `the reeve`, etc.",
"Specific numbers were scaled appropriately: `eighty-six out of seven hundred` → `over a tenth of the surviving population`, `fourteen people` → `over a dozen`, etc.",
"Singular nouns were broadened: `the village dog` → `the dogs`, `village girls` → `householders`, `village healer` → `the healer`.",
"Scale-flexible vocabulary was preserved: parish, priest, chronicler, abbey, church, cathedral (religious vocabulary); tavern, innkeeper, blacksmith, smithy (occupations at every scale); `the lord` (fantasy-generic noble figure).",
],
}
Each sub-bullet names its category, shows a few examples with “etc.” where the
real list is longer, and shares a ”
The description: field on each petal in src/data/weather/<biome>/<season>.yaml
renders inside the Today’s Forecast card as italic Crimson Pro at 13px, ~260px
column width (about 40–45 characters per line). The card has a fixed visual
envelope; descriptions outside that envelope shift the card’s height as the GM
rolls through weather, breaking the panel’s visual rhythm.