Wiki infobox: suggested facts by page type, a picture caption, a map as the picture, and a title bar #1279

Closed
opened 2026-10-29 17:18:51 +00:00 by claude-bot · 6 comments
Collaborator

The owner, 2026-10-29, comparing the page margin with Wikipedia's infobox (Pathfinder RPG as the example). The margin already has a picture and free label/value Facts (sidebar_fields); the owner hadn't found that facts could be added, and wants the editor to prompt for the important details instead of relying on memory.

Scope (the owner: "those four options are probably a good start")

  1. Suggested facts by page type. The editor's Facts panel starts with that type's fields, empty. A blank field is never shown to readers. Fields can still be removed, renamed or added. Changing a page's type offers the new type's fields without losing what's already filled in.
  2. A caption under the picture.
  3. A map as the picture: choose one of the campaign's maps, shown as its thumbnail and linking to the map, with the reader's audience checked as ![[Map: X]] already does.
  4. A title bar with the page's name at the top of the box.

Proposed fields by type (draft for the owner to review; a value can link to a page with [[…]]). Things the page already holds elsewhere are not repeated: pronouns, "Also called", stat blocks and sheets, an artifact's holder, timeline events, and "On the map".

Type Fields
Player Character Player · Ancestry · Class · Level · Background · Home · Allegiances
NPC Role · Ancestry · Home · Allegiances · Status (alive / dead / missing / unknown) · First met
Settlement Region · Size · Population · Ruler · Allegiance · Notable places · Known for
Country Capital · Ruler · Government · Population · Languages · Religion · Currency · Allies · Rivals
Geography Kind (forest, mountain, sea…) · Region · Climate · Dangers · Inhabitants · Notable places
Organization Leader · Headquarters · Founded · Goals · Allies · Rivals · Symbol
Deity Domains · Alignment · Symbol · Worshippers · Holy days · Allies · Rivals
Business Owner · Location · Trade · Prices · Hours · Staff
Historical Event Date · Place · Involved · Outcome · Aftermath
Artifact Kind · Rarity · Attunement · Powers · Made by · Origin
Creature Type · Size · Habitat · Diet · Danger · Behaviour
Concept Kind (magic, law, custom…) · Known to · Origin
Document Author · Written · Language · Where kept · Kind

Open questions for the owner

  • Should some fields be per game system (e.g. Alignment only where the system has it)? The campaign's game system is known.
  • A GM-only fact, e.g. an NPC's true allegiance? Today facts are visible to whoever can read the page; this may want the wiki's GM-block audience.
  • Should "First met" and "Status" fill themselves in from sessions, or stay hand-written?

Release: new functionality → 4.7.0 (the X.Y.0 / X.Y.Z rule).

The owner, 2026-10-29, comparing the page margin with Wikipedia's infobox (Pathfinder RPG as the example). The margin already has a picture and free label/value **Facts** (`sidebar_fields`); the owner hadn't found that facts could be added, and wants the editor to **prompt for the important details** instead of relying on memory. **Scope (the owner: "those four options are probably a good start")** 1. **Suggested facts by page type.** The editor's Facts panel starts with that type's fields, empty. A blank field is never shown to readers. Fields can still be removed, renamed or added. Changing a page's type offers the new type's fields without losing what's already filled in. 2. **A caption** under the picture. 3. **A map as the picture**: choose one of the campaign's maps, shown as its thumbnail and linking to the map, with the reader's audience checked as `![[Map: X]]` already does. 4. **A title bar** with the page's name at the top of the box. **Proposed fields by type** (draft for the owner to review; a value can link to a page with `[[…]]`). Things the page already holds elsewhere are **not** repeated: pronouns, "Also called", stat blocks and sheets, an artifact's holder, timeline events, and "On the map". | Type | Fields | |---|---| | Player Character | Player · Ancestry · Class · Level · Background · Home · Allegiances | | NPC | Role · Ancestry · Home · Allegiances · Status (alive / dead / missing / unknown) · First met | | Settlement | Region · Size · Population · Ruler · Allegiance · Notable places · Known for | | Country | Capital · Ruler · Government · Population · Languages · Religion · Currency · Allies · Rivals | | Geography | Kind (forest, mountain, sea…) · Region · Climate · Dangers · Inhabitants · Notable places | | Organization | Leader · Headquarters · Founded · Goals · Allies · Rivals · Symbol | | Deity | Domains · Alignment · Symbol · Worshippers · Holy days · Allies · Rivals | | Business | Owner · Location · Trade · Prices · Hours · Staff | | Historical Event | Date · Place · Involved · Outcome · Aftermath | | Artifact | Kind · Rarity · Attunement · Powers · Made by · Origin | | Creature | Type · Size · Habitat · Diet · Danger · Behaviour | | Concept | Kind (magic, law, custom…) · Known to · Origin | | Document | Author · Written · Language · Where kept · Kind | **Open questions for the owner** - Should some fields be per game system (e.g. Alignment only where the system has it)? The campaign's game system is known. - A GM-only fact, e.g. an NPC's true allegiance? Today facts are visible to whoever can read the page; this may want the wiki's GM-block audience. - Should "First met" and "Status" fill themselves in from sessions, or stay hand-written? **Release:** new functionality → 4.7.0 (the X.Y.0 / X.Y.Z rule).
Author
Collaborator

The owner's decisions (2026-10-29):

  1. Pronouns on PC, NPC and Deity pages. NPC and PC already have pronouns (HAS_PRONOUNS in editorText.js), shown beside the title; Deity is new. The infobox shows them too. The player's pronouns follow their name in a PC's "Player" fact, when set (users.pronouns).
  2. Fields by game system: the suggested facts depend on the campaign's system, using what that system uses (e.g. Alignment, or Class/Level as the system names them), with a system-neutral set for "generic".
  3. Filled from a content pack: a page made from or "based on" a rules entry (source_reference_entry_id) fills the matching facts from that entry.
  4. Fact visibility: GMs set who sees each fact, like the wiki's restricted blocks (GMs only, or chosen players). Already built: RowsEditor gives every fact row its own "Who sees it", and wiki_audience.visible_items filters sidebar_fields per reader. The owner hadn't found it, so this item is about making it discoverable in the new infobox editor, not building it.
  5. Suggested updates fill facts. Start with "First met" and "Status", then extend. Proposed staging, pending the owner's answer:
    • Stage 1, no AI: First met / Last seen from lore_session_appearances; Player (+ pronouns) from the campaign member; class, level and ancestry from a character sheet; content-pack fields; a place's Region from the map it sits on.
    • Stage 2, the self-hosted model, as suggestions a GM approves: one narrow, schema-constrained question per page that appeared in a session ("did this one's status, leader, ruler, owner or allegiance change?"), each answer carrying a quote from the transcript, which is checked against it the way summary beats are. GM-only until approved, through the existing draft review.
    • Not attempted: open-ended inference (a settlement's population, an implied motive) and synthesis across many sessions. Too unreliable on the local model.
**The owner's decisions (2026-10-29):** 1. **Pronouns** on PC, NPC and **Deity** pages. NPC and PC already have `pronouns` (`HAS_PRONOUNS` in `editorText.js`), shown beside the title; Deity is new. The infobox shows them too. **The player's pronouns** follow their name in a PC's "Player" fact, when set (`users.pronouns`). 2. **Fields by game system:** the suggested facts depend on the campaign's system, using what that system uses (e.g. Alignment, or Class/Level as the system names them), with a system-neutral set for "generic". 3. **Filled from a content pack:** a page made from or "based on" a rules entry (`source_reference_entry_id`) fills the matching facts from that entry. 4. **Fact visibility:** GMs set who sees each fact, like the wiki's restricted blocks (GMs only, or chosen players). **Already built:** `RowsEditor` gives every fact row its own "Who sees it", and `wiki_audience.visible_items` filters `sidebar_fields` per reader. The owner hadn't found it, so this item is about making it discoverable in the new infobox editor, not building it. 5. **Suggested updates fill facts.** Start with "First met" and "Status", then extend. Proposed staging, pending the owner's answer: - **Stage 1, no AI:** First met / Last seen from `lore_session_appearances`; Player (+ pronouns) from the campaign member; class, level and ancestry from a character sheet; content-pack fields; a place's Region from the map it sits on. - **Stage 2, the self-hosted model, as suggestions a GM approves:** one narrow, schema-constrained question per page that appeared in a session ("did this one's status, leader, ruler, owner or allegiance change?"), each answer carrying a quote from the transcript, which is checked against it the way summary beats are. GM-only until approved, through the existing draft review. - **Not attempted:** open-ended inference (a settlement's population, an implied motive) and synthesis across many sessions. Too unreliable on the local model.
Author
Collaborator

The owner agreed the staging (2026-10-29). Stage 2, facts suggested by the local model, is split out as #1280. This issue keeps stage 1 (no AI) together with the infobox itself.

The owner agreed the staging (2026-10-29). Stage 2, facts suggested by the local model, is split out as #1280. This issue keeps stage 1 (no AI) together with the infobox itself.
Author
Collaborator

Picking this up (stage 1, no AI). First, a drawing on the prototype lane: the reader's infobox (title bar, picture or map with caption, the facts that are filled, with pronouns) and the editor's Facts panel (the type's suggested fields, empty, plus "Who sees it" on each). The per-system field lists go to the owner as questions before anything is built.

Picking this up (stage 1, no AI). First, a drawing on the prototype lane: the reader's infobox (title bar, picture or map with caption, the facts that are filled, with pronouns) and the editor's Facts panel (the type's suggested fields, empty, plus "Who sees it" on each). The per-system field lists go to the owner as questions before anything is built.
Author
Collaborator

The owner's answers (2026-11-03), recorded as D319–D322 (commit 4e7e9127 on design/1279-infobox; the drawing is lane 6i):

  • Q210 → D319: the suggested-fact lists are right as drawn, per type and per system (Pathfinder 2e, D&D 5e, Generic).
  • Q211 → D320: facts Quest Board already knows stay live. Readers see the known value while the fact is empty, and typing a value overrides it.
  • Q212 → D321: a map can be the picture on any page type.
  • Q213 → D322: readers see only the value, not its source. Pronouns move into the box and no longer sit under the title.

Building now.

**The owner's answers (2026-11-03), recorded as D319–D322** (commit 4e7e9127 on `design/1279-infobox`; the drawing is lane 6i): - **Q210 → D319:** the suggested-fact lists are right as drawn, per type and per system (Pathfinder 2e, D&D 5e, Generic). - **Q211 → D320:** facts Quest Board already knows stay live. Readers see the known value while the fact is empty, and typing a value overrides it. - **Q212 → D321:** a map can be the picture on any page type. - **Q213 → D322:** readers see only the value, not its source. Pronouns move into the box and no longer sit under the title. Building now.
Author
Collaborator

Prod check and fix (owner's ask, 2026-11-03):

  • One live prod campaign, World Quest (created 14 Mar, before the game system registry, #133), had "Pathfinder 2e" as free text but no game_system_id. It therefore read as Generic for rules browsing, sheets and these suggested facts.
  • At the owner's explicit request I linked it to pf2e with a one-row update, guarded on its id and on game_system_id still being null. The before state was game_system_id = NULL; to undo, set it back to null.
  • All 3 live campaigns now read as pf2e.
  • The registry migration never linked existing campaigns by name. No migration was added, because nobody else runs Quest Board today.
**Prod check and fix (owner's ask, 2026-11-03):** - One live prod campaign, World Quest (created 14 Mar, before the game system registry, #133), had "Pathfinder 2e" as free text but no `game_system_id`. It therefore read as Generic for rules browsing, sheets and these suggested facts. - At the owner's explicit request I linked it to pf2e with a one-row update, guarded on its id and on `game_system_id` still being null. The before state was `game_system_id = NULL`; to undo, set it back to null. - All 3 live campaigns now read as `pf2e`. - The registry migration never linked existing campaigns by name. No migration was added, because nobody else runs Quest Board today.
Author
Collaborator

Done: stage 1 merged in #1324 (D319–D322, lane 6i).

  • Reader: one box with a title bar, the type, the picture or a map with a caption, pronouns as the first row (PC, NPC, Deity), and then only the filled facts.
  • Known facts: First met and Last seen, Player with pronouns, sheet values, a place's Region, and rules-entry fields. They are computed per reader and never stored. A written value, even a GMs-only one, always suppresses its known value.
  • Editor: each page type starts with its suggested facts by system. A known value shows greyed with its source. Removing a suggestion dismisses it, and changing the type adds facts without dropping any. The Picture panel offers "A picture | A map" with a caption.
  • Server: migration e1279a0b1c2d adds image_caption, image_map_id and facts_dismissed. The suggested lists live in app/services/suggested_facts.json, beside a new GET …/wiki/suggested-facts. Export, import and setup copy all carry the new fields.
  • Checks:
    • The render check was clean: 36 shots, axe clean, title bar contrast 7.8:1 and 8.3:1.
    • The owner approved the wording (part s).
    • CI passed. It first caught two older migration round trips and a title-reader guard, all fixed in tests only.
  • Prod: World Quest is now linked to Pathfinder 2e (see above).

Stage 2, facts suggested by the local model, is #1280.

**Done:** stage 1 merged in #1324 (D319–D322, lane 6i). - **Reader:** one box with a title bar, the type, the picture or a map with a caption, pronouns as the first row (PC, NPC, Deity), and then only the filled facts. - **Known facts:** First met and Last seen, Player with pronouns, sheet values, a place's Region, and rules-entry fields. They are computed per reader and never stored. A written value, even a GMs-only one, always suppresses its known value. - **Editor:** each page type starts with its suggested facts by system. A known value shows greyed with its source. Removing a suggestion dismisses it, and changing the type adds facts without dropping any. The Picture panel offers "A picture | A map" with a caption. - **Server:** migration `e1279a0b1c2d` adds `image_caption`, `image_map_id` and `facts_dismissed`. The suggested lists live in `app/services/suggested_facts.json`, beside a new `GET …/wiki/suggested-facts`. Export, import and setup copy all carry the new fields. - **Checks:** - The render check was clean: 36 shots, axe clean, title bar contrast 7.8:1 and 8.3:1. - The owner approved the wording (part s). - CI passed. It first caught two older migration round trips and a title-reader guard, all fixed in tests only. - **Prod:** World Quest is now linked to Pathfinder 2e (see above). Stage 2, facts suggested by the local model, is #1280.
Sign in to join this conversation.
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#1279
No description provided.