Fix #235: repo description field #242

Merged
crueber merged 1 commit from fix/issue-235 into main 2026-09-09 17:23:21 +00:00
Owner

Per-repo short description: stored as the description key in the WAL-published settings TOML (persistence/revision/authorship/admin-writes free; single-line, ≤512 chars, validated at publish), surfaced on the summary wire ("" when unset, ETag ~d<fnv> suffix so description-only changes bust SWR, +0 store round trips via the manifest-inline copy), shown in the repo header right of owner/repo (muted, omitted when unset), editable in a new General settings tab (first + default) that serializes into the settings doc through the existing SDK surface. Owner-list rows explicitly descoped (names-only listing). No new deps.

Verification: gofmt/vet clean; go test -race green on internal/api, internal/config, internal/maintain, internal/server; cover 95.4% api / 95.6% config; node --test 455/455; vite+esbuild build OK; live server: reader GET 200 with description, reader PUT 403, admin PUT 200, stale-etag revalidation, bundle ships the feature. Real-browser check is OPEN: the hub chrome-cdp daemon blocks localhost/loopback/private-IP navigations, so no local test-server address is reachable from it (tried walgit.localhost, localhost, 127.0.0.1, LAN IP). Docs updated (07_api §9.1, 11_config_cli §4, 12_web_ui) with Decisions entries.

Per-repo short description: stored as the `description` key in the WAL-published settings TOML (persistence/revision/authorship/admin-writes free; single-line, ≤512 chars, validated at publish), surfaced on the summary wire ("" when unset, ETag `~d<fnv>` suffix so description-only changes bust SWR, +0 store round trips via the manifest-inline copy), shown in the repo header right of owner/repo (muted, omitted when unset), editable in a new General settings tab (first + default) that serializes into the settings doc through the existing SDK surface. Owner-list rows explicitly descoped (names-only listing). No new deps. Verification: gofmt/vet clean; go test -race green on internal/api, internal/config, internal/maintain, internal/server; cover 95.4% api / 95.6% config; node --test 455/455; vite+esbuild build OK; live server: reader GET 200 with description, reader PUT 403, admin PUT 200, stale-etag revalidation, bundle ships the feature. Real-browser check is OPEN: the hub chrome-cdp daemon blocks localhost/loopback/private-IP navigations, so no local test-server address is reachable from it (tried walgit.localhost, localhost, 127.0.0.1, LAN IP). Docs updated (07_api §9.1, 11_config_cli §4, 12_web_ui) with Decisions entries.
Storage: top-level `description` key in the WAL-published repo settings
TOML (11_config_cli.md §4) — single line, ≤512 chars, validated at publish;
Merge ignores it (display metadata, never host config).

Read: SummaryData/summaryBody carry `description` ("" when unset;
07_api.md §9.1), folded from the manifest-inline copy at +0 store round
trips; ETag gains ~d<fnv1a32hex> so description-only changes bust SWR.

UI: header shows it right of owner/repo (muted, omitted when unset);
new General tab first + default with a description editor serializing into
the settings doc via the existing SDK surface (12_web_ui.md). Owner-list
rows explicitly descoped (names-only listing). No new deps.

Decisions appended in 07_api.md, 11_config_cli.md, 12_web_ui.md.
Sign in to join this conversation.
No description provided.