Settings → the wiki's rules (CAMP-14) has no server: who may edit, and reputation's levels #779

Closed
opened 2026-09-23 16:36:13 +00:00 by claude-bot · 2 comments
Collaborator

Found building lane 3's last Settings PR (#729).

CAMP-14 draws two controls, and neither has anything behind it:

  • IS-053, who may edit the wiki. The rule is hard-coded in _can_edit_lore_entry (webapp/backend/app/routers/campaigns.py, ~line 498). There is no campaign setting it reads, so a form that changed it would save nothing.
  • IS-088, reputation's levels. Stored nowhere.

D36 — a control is never a dead button — so the section stays built: false in shell/settingsSections.js, with a comment saying why, and is absent from the Settings index and the Contents. Nothing is drawn that cannot work.

What building it takes

This is real backend work, not a field:

  1. Edit permissions as a setting — the drawn modes (who may edit directly, who may suggest, whether suggestions queue for the GM's approval), stored on the campaign or in its settings, and enforced by _can_edit_lore_entry and every write path it guards. A setting that the UI respects and the API ignores would be worse than none.
  2. A suggest-for-approval queue, if the drawn modes include one. Lane 8's WIKI-10 (suggested wiki updates) is the obvious thing to share it with.
  3. Reputation levels — a per-campaign list of levels with names and thresholds, and whatever reads them.

Then the page itself is small: flip built, and two sections of form.

Probably belongs with lane 8 (the wiki) rather than as a lane-3 leftover, since the enforcement lives in the wiki's write paths.

🤖 Generated with Claude Code

Found building lane 3's last Settings PR (#729). CAMP-14 draws two controls, and **neither has anything behind it**: - **`IS-053`, who may edit the wiki.** The rule is hard-coded in `_can_edit_lore_entry` (`webapp/backend/app/routers/campaigns.py`, ~line 498). There is no campaign setting it reads, so a form that changed it would save nothing. - **`IS-088`, reputation's levels.** Stored nowhere. D36 — a control is never a dead button — so the section stays `built: false` in `shell/settingsSections.js`, with a comment saying why, and is absent from the Settings index and the Contents. Nothing is drawn that cannot work. ## What building it takes This is real backend work, not a field: 1. **Edit permissions as a setting** — the drawn modes (who may edit directly, who may suggest, whether suggestions queue for the GM's approval), stored on the campaign or in its settings, and **enforced** by `_can_edit_lore_entry` and every write path it guards. A setting that the UI respects and the API ignores would be worse than none. 2. **A suggest-for-approval queue**, if the drawn modes include one. Lane 8's `WIKI-10` (suggested wiki updates) is the obvious thing to share it with. 3. **Reputation levels** — a per-campaign list of levels with names and thresholds, and whatever reads them. Then the page itself is small: flip `built`, and two sections of form. Probably belongs with lane 8 (the wiki) rather than as a lane-3 leftover, since the enforcement lives in the wiki's write paths. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Collaborator

Owner, 2026-09-23: lane 8 builds this (#734). The enforcement lives in the wiki's write paths, and WIKI-10's suggestion queue is the natural thing for "suggest for approval" to share. Until then, CAMP-14 stays built: false in settingsSections.js.

🤖 Generated with Claude Code

**Owner, 2026-09-23: lane 8 builds this** (#734). The enforcement lives in the wiki's write paths, and WIKI-10's suggestion queue is the natural thing for "suggest for approval" to share. Until then, CAMP-14 stays `built: false` in `settingsSections.js`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Collaborator

Closing: built in lane 8 (#734; the server in #874, the page in #911). Checked against main on 1 Oct.

  • Who may edit: Campaign.wiki_edit_mode with four modes (GMs only, own pages, everyone, suggest for approval), enforced on every wiki write through wiki_edit.page_right and create_right. Changing it is GM-only and audited.
  • Suggestions: a suggested page or edit waits for a GM and is merged as its writer.
  • Reputation levels: a per-campaign ordered list, starting from Pathfinder's seven, which the party page reads. They travel in the campaign export.
  • The page: Settings → Wiki (/campaigns/:id/settings/wiki), marked built in settingsSections.js. It also holds each page kind's starting text.

Tests: tests/wiki/test_wiki_edit_api.py and CampaignSettingsWiki.test.jsx.

Closing: built in lane 8 (#734; the server in #874, the page in #911). Checked against main on 1 Oct. - **Who may edit:** `Campaign.wiki_edit_mode` with four modes (GMs only, own pages, everyone, suggest for approval), enforced on every wiki write through `wiki_edit.page_right` and `create_right`. Changing it is GM-only and audited. - **Suggestions:** a suggested page or edit waits for a GM and is merged as its writer. - **Reputation levels:** a per-campaign ordered list, starting from Pathfinder's seven, which the party page reads. They travel in the campaign export. - **The page:** Settings → Wiki (`/campaigns/:id/settings/wiki`), marked built in `settingsSections.js`. It also holds each page kind's starting text. Tests: `tests/wiki/test_wiki_edit_api.py` and `CampaignSettingsWiki.test.jsx`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#779
No description provided.