Lane 8 page P7: the map; tiling that works; the trail kept in its campaign (WIKI-11, IS-124, IS-102) #923
Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane8-p7-map"
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?
Lane 8 page P7 (#734). Building the page against the real stack turned up four server bugs from PR 6, one of them a cross-campaign read/write. They're fixed here.
Security and correctness (server)
GET/POST /campaigns/{cid}/parties/{party_id}/trailnever checkedparty.campaign_id. Any member could read another campaign's trail by party id, and a GM of one campaign could add stops to another's party. Both return 404 now, and a stop's marker, map and session must belong to this campaign.MissingGreenlet: the audience collection of a new row was lazy-loaded). Nothing tested creation through the API; now a test does.mediaread-only (its comment predates PR 6's tiling task), so every upload ended in "Read-only file system". The mount is writable in all three compose files, andOPERATIONS.mdsays so for customised overrides. Operators with an override that redefines the worker's volumes must drop:ro.New routes (additive, no migration)
DELETE /markers/{id}(a GM any, a player her own);GET /maps/{id}/links(both ends visible);GET /lore/{id}/markers("On the map"); markers carrycreated_by.The page
/wiki/mapuses Leaflet 1.9.4 (CRS.Simpleover the image's pixels) on the private tiles route, falling back to the whole image until tiles are cut. It has crumbs up the atlas, filters by kind, the party's trail (one stop per place, with its sessions and days on the road) and "The party is here" inside its town's label (IS-082). A panel per marker offers: open its map, travel a link, open its page, Reveal it… with an Undo, and Remove. A GM adds a map (as its own atlas or opened from a marker) and records where the party ended. Every marker is also listed under the map; the canvas pans with the arrow keys and zooms with its buttons. The wiki front page says where the party is (IS-124), and an article says where its page is on the map (IS-102, IS-087). The Contents gains The map.Departures, stated in
Map.jsx: a marker can't be moved or renamed (there's no update route), and travel links are followed but made only through the API.Checked
0369065c.Found in passing and fixed separately: #922 (the wiki named the demo GM in every campaign) and #919 (a Tuesday-only test failure).
Part of #734.
🤖 Generated with Claude Code
Security (lane 8 PR 6's routes): - GET/POST /parties/{party_id}/trail never checked the party was this campaign's: any member could read another campaign's trail by id, and a GM of one campaign could add stops to another's party. Both are 404 now, and a stop's marker, map and session must be this campaign's. - A trail stop on a map or marker the reader can't see listed its map, marker and position. It still lists its session and days on the road, but not where it is. - A GM's marker could link a page, holding or zoom map from another campaign by id; refused. A crash: creating an atlas, a map or a marker through the API assigned the audience people of a row whose collection was never loaded, so the lazy load ran outside the async session (MissingGreenlet, a 500). Nothing tested creation through the API; now a test does. For P7's pages: - A player adds her own marker (IS-076): a note, a place or a danger, for herself and the GMs, the party or the table, and nothing linked. - DELETE /markers/{id}: a GM any, a player her own. - GET /maps/{id}/links: travel links whose both ends the reader can see. - GET /lore/{id}/markers: where a page is on the map ("On the map"). - A marker says who added it (created_by). No migration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Full backend suite, local (fresh Postgres, ruff 0.4.4 check + format clean): 5830 passed, 13 skipped, 1 failed. The failure is
test_scheduling_lane4.py::test_needs_you_asks_again_after_a_move, which fails on every UTC Tuesday on main too and is fixed by #919. This branch picks up that fix when main is merged in.