chore(release): v3.9.0 — Game-Aware Systems #212
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/v3.9-game-aware-systems"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Merges the complete v3.9.0 Game-Aware Systems pillar (milestone: 7/7 issues) into
main. This is the single, final merge of the pillar — each issue landed as its own reviewed PR onto thefeat/v3.9-game-aware-systemsintegration branch first (PRs #205–#211).The pillar
Campaigns can link to a first-class registry of TTRPG systems instead of only free text — unlocking richer AI context, versioned schema-validated stat blocks, a typed editor, schema-targeted generation, and an opt-in wizard to backfill structured stats. Fully opt-in and reversible: free-text campaigns behave exactly as before. Foundation for the FoundryVTT pillar.
statsstorage + validationMigrations (4)
b5c6d7e8f9a0(game_systems + campaigns.game_system_id) →c7d8e9f0a1b2(game_system_schemas + lore_entries/versions.stats) →d8e9f0a1b2c3(lore_entry_drafts.current_stats) →e9f0a1b2c3d4(convert_stats enum + current_stats_notes). Head:e9f0a1b2c3d4. Each verifiedupgrade → downgrade → upgradeagainst real Postgres 16.Verification
Every issue was verified in Docker before merge:
node:20-alpine).Compatibility
BOT_CONTRACT_VERSIONstays 1. The bot package is untouched; bot payloads send the resolved effective system name with no shape change.statsstored as JSON'null'vs SQLNULL) was found and fixed during #145 (none_as_null=True).Known follow-ups (non-blocking, out of scope)
patch_draftdoesn't yet accept inlinecurrent_stats/value edits during draft review (#142/#145) — GM edits sidebar rows, stats re-derive on approve.statsenvelope (flagged in #139) — a stat block is lost on export→re-import; candidate for a small follow-up with an export-schema-version bump.Merging this to
maincuts v3.9.0.🤖 Generated with Claude Code