Lane 8 PR 4: quests as pages (#734) #890
Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane8-4-quests"
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?
Part of #734 (lane 8), §3.7. Stacked on #884 (2b).
Migrations
8e5f6a7b8c9d_loretype_questaddsquesttoloretype. It chains on8c3d.8f6a7b8c9d0e_quests_as_pagescreatesquest_details,quest_objectivesand objective audiences, then moves the data. Eachplot_threadsrow becomes a quest page, one to one::::gmblock;player_visiblebecomes a table audience, otherwise a GM audience;linked_lore_entry_idbecomes a "concerns" relationship;It's reversible on real data.
quest_details.legacy_plot_thread_idrecords where each page came from. The move skips threads that are already done.downgrade()truly reverses it: threads point back, the "concerns" rows and quest pages are deleted, and the tables are dropped.plot_threadsstays, unread, until PR 9.Server
quest_service.pyis the one place quests are read. Every raw body read renders throughrender_forand is on the allowlist, and the module is in the discussions no-AI list./quests(identical response shape, so the contract stays v2);GETandPOST .../lore/quests. They're placed before/lore/{entry_id}, and a test caught the ordering..../planning/threadsand.../quests.Frontend (only what removing the routes forced)
QuestLog, the Quests drawer quick-add, and Improv's "Add as plot thread".NewThreadhas a "No quest yet" option. It no longer blocks a rumour when there are no quests.Departures
QuestLogand Planning no longer show the old "linked wiki entry". It's now a relationship, and P5 replaces both surfaces.Checks
webapp/backendalone and they need repo paths.🤖 Generated with Claude Code
The one conflict was GET /api/bot/guilds/{guild_id}/quests. #885 (O9) made it resolve one campaign from channel_id/campaign_id (409 when a guild's campaigns are ambiguous); lane 8 PR 4 moved quests from plot_threads to wiki pages. Kept both: the route resolves the campaign as main does, then reads that campaign's active, table-audience quest pages through quest_service, whose guild-wide list_active_table_quests_for_guild becomes the campaign-scoped list_active_table_quests. Response shape unchanged, so no contract bump. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>