5 Commits
Author SHA1 Message Date
FrankandClaude Sonnet 5 bdf676f1dd Add villager Clover Thorn (18), beekeeper Thorn family, with portrait
Halfling daughter of Bramble and Poppy Thorn, younger sister of Wren.
Portrait cropped of its frame and downsized to 450px wide.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 23:29:59 +02:00
FrankandClaude Sonnet 5 60a6904b22 Update portraits-needed list to the final 41 NPCs
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 15:53:13 +02:00
FrankandClaude Sonnet 5 1d043c35c8 Add 101 NPC portraits (lists 1 & 2), drop spaces from all filenames
- 50 portraits cut from the "Sten Voss … Ralf Brewster" sheet
- 51 from the "Mara Brewster … Poppy Thorn" sheet (incl. one stray
  "HiyHearth" the generator invented between Eli and May Hearth)
- existing 55 files renamed to remove spaces (Garrick Voss.png ->
  GarrickVoss.png)

assets/image/npc-pictures/ now holds 156 files.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 15:52:30 +02:00
FrankandClaude Sonnet 5 710b383bc1 Strip parent mentions from NPC relationships text
Parents now live in the father/mother fields, so "son/daughter/child of
X [and Y]" is redundant noise in Relationships / Notes.

- app:npc:strip-parent-text removes that clause and tidies leftover
  punctuation ("Son of X, husband of Y" -> "Husband of Y"; standalone
  "Son of X and Y" -> cleared). Keeps "grandson of", "father of",
  "daughter-in-law of". 92 rows cleaned.
- data/npcs.csv regenerated from the DB with the cleaned text plus new
  Father / Mother name columns
- app:npc:import resolves those optional columns in a second pass, so a
  fresh install reproduces the parent links without app:npc:link-parents

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 15:41:02 +02:00
FrankandClaude Sonnet 5 1ccab6ed68 Add NPC database table with server-side DataTable and per-NPC game notes
- Npc entity (village spreadsheet columns) + game_notes text field for
  the DM's live play notes, plus updated_at touched on every change
- Race / VillageStatus / BloodCartInvolvement / MysteryImportance as
  string-backed PHP enums, rendered as dropdowns on the edit form
- /npcs: server-side DataTables (paging, global search and column sort
  all run in the backend via NpcRepository::findForDataTable); name cell
  links to the edit page, game notes shown truncated
- /npcs/{id}: Bootstrap-themed edit form (all fields + a large game
  notes textarea); Symfony forms now use the bootstrap_5 theme
- app.js: generic server-side DataTable wiring driven by data-* on the
  <table>/<th> (data-datatable-src, data-row-url, data-format)
- app:npc:import console command - upserts from data/npcs.csv by
  (family, name), never overwrites game_notes; --purge / --dry-run
- data/npcs.csv: 180 villagers exported from the working spreadsheet

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 15:04:39 +02:00