Storyline: per-chapter DM notes

Each chapter page gets a collapsible "Chapter notes" card at the top — a
free-text log the DM fills during play (the story the party tells after
the Crooked Goose, names given to NPCs, threads for next time). Saved
per chapter slug with a "saved <timestamp>" marker, same shape as the
Enemy/NPC game-notes field.

New: ChapterNote entity (slug-keyed, unique) + repository findOrCreate(),
ChapterNoteType form, chapter_note table migration (ENGINE = InnoDB
pinned). The storyline chapter route now also accepts POST to save.

Chapters stay hand-written Twig; only the mutable notes live in the DB.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Frank
2026-09-08 18:51:53 +02:00
co-authored by Claude Sonnet 5
parent 56f4641564
commit 5c821bd7ad
8 changed files with 257 additions and 2 deletions
+17
View File
@@ -429,6 +429,23 @@ table.dataTable {
}
.storyline-pager-title { font-weight: 600; }
/* Chapter notes: collapsible card above the chapter body */
.storyline-notes > summary {
cursor: pointer;
list-style: none;
font-weight: 600;
}
.storyline-notes > summary::-webkit-details-marker { display: none; }
.storyline-notes > summary::before {
content: "\25B8"; /* right-pointing triangle */
display: inline-block;
margin-right: 0.5rem;
color: var(--bs-secondary-color);
transition: transform 0.15s ease;
}
.storyline-notes[open] > summary::before { transform: rotate(90deg); }
.storyline-notes textarea { font-size: 0.95rem; line-height: 1.6; }
/* Chapter list: kicker line above each title */
.storyline-chapter-kicker {
display: block;