Skip to content

Major feature sprint: map drawing, bulk ops, genre presets, sidebar rewrite#213

Merged
keyxmakerx merged 3 commits intomainfrom
claude/chronicle-launch-fixes-LcWMJ
Apr 6, 2026
Merged

Major feature sprint: map drawing, bulk ops, genre presets, sidebar rewrite#213
keyxmakerx merged 3 commits intomainfrom
claude/chronicle-launch-fixes-LcWMJ

Conversation

@keyxmakerx
Copy link
Copy Markdown
Owner

Summary

35 commits covering new features, UX overhauls, bug fixes, and launch prep.

New Features

  • Map Drawing Tools (W-2) — Interactive Leaflet toolbar: freehand, rectangle, circle, polygon, text. Color picker, stroke width. Right-click to delete. No external deps.
  • Bulk Operations (W-4) — Multi-select on entity list with floating action bar: Change Type, Add Tags, Visibility, Delete. 4 new web endpoints.
  • Genre Presets (T-4b) — 5 genre presets (Fantasy, Sci-Fi, Horror, Modern, Historical) with visual picker on campaign creation form.
  • Topbar Image Upload — Image mode for topbar background in Appearance editor.
  • Entity Type Hierarchy — Sub-types via parent_type_id (migration 000019). Layout Studio + sidebar display.

UX Overhauls

  • Sidebar Editor Rewrite (W-7) — Single pencil trigger replaces gear + grip. Inline edit mode.
  • Settings Consolidation — Features tab merged into Settings with instant toggles. Compacted layout. Duplicate nav removed.
  • Nav Glow Refinement — Bottom-right border wrap + gradient wash. Removed 418 lines of dead CSS.
  • Mobile — 40px touch targets, responsive entity pages, tighter grids.
  • Admin Cleanup — Content Packs hidden (WIP), Design Lab → Demo Page, terminology fixes.

Bug Fixes

  • Layout editor save (button ID mismatch between Layout Studio and editor widget)
  • Game system not loading (manifest file vs script_file field name)
  • Game system discovery (ScanPackageDir at startup + callback on install)
  • CreateEntityType returns JSON for API callers (was HTMX redirect)
  • Sidebar editor destroying nav content on exit
  • Sidebar drill "+" pre-selects category
  • CSS glow conflicts (duplicate definitions removed)

Infrastructure

  • AGPL-3.0 LICENSE
  • Foundry module unbundled (now package-manager installed)
  • Docker: MariaDB/Redis → latest
  • README cleaned for launch

Test plan

  • Map drawing: open a map, use each tool (freehand, rect, circle, polygon, text), verify saves persist on reload
  • Bulk operations: go to entity list, select multiple, use Change Type / Add Tags / Delete
  • Genre presets: create new campaign, select a genre, verify correct entity types seeded
  • Settings Features tab: toggle addons on/off, verify instant response
  • Sidebar edit: click pencil, reorder items, exit, verify order persists
  • Sub-types: create sub-type in Layout Studio, verify shows indented in sidebar
  • Game system: install via Packages, verify appears in Settings > Game System dropdown
  • make test passes, make lint clean

https://claude.ai/code/session_01A5jpDgqUvW6iLXXSj49F27

claude added 3 commits April 6, 2026 19:47
The Draw Steel system manifest uses "file" for widget script paths but
the validator required "script_file". This caused the entire system to
fail validation with: "widget 0 (monster-builder): script_file is required"

Now accepts both field names — if script_file is empty but file is set,
file is copied to script_file before validation continues.

Root cause found via server logs:
  failed to load package system slug=Chronicle-Draw-Steel
  error=widget 0 (monster-builder): script_file is required

https://claude.ai/code/session_01A5jpDgqUvW6iLXXSj49F27
New map_drawing_tools.js provides browser-side drawing on Leaflet maps:

Tools (Scribe+, floating toolbar on map view):
- Freehand: click-drag to draw, releases to save
- Rectangle: two clicks define corners
- Circle: click center, click edge to set radius
- Polygon: click vertices, double-click to close
- Text: click to place text annotation (prompt input)
- Color picker and stroke width control
- Escape key cancels active tool
- Right-click any drawing to delete

Implementation:
- Uses Leaflet native APIs (no Leaflet.Draw dependency)
- Percentage-based coordinates (0-100) for resolution independence
- Persists via POST /campaigns/:id/maps/:mid/drawings REST API
- Loads existing drawings on page load
- Coordinate conversion: percentage ↔ Leaflet CRS.Simple pixel coords

Template changes:
- Map show page exports window.chronicleMap for drawing tools access
- Drawing tools script loaded for Scribe+ only
- CSS for text annotation markers

Security:
- Max 10,000 points per drawing (prevents DoS via massive point arrays)

WebSocket real-time sync was already wired (routes.go:2083) — drawing
events broadcast to all connected clients automatically.

https://claude.ai/code/session_01A5jpDgqUvW6iLXXSj49F27
…es/fixes

Entry #69 covers: map drawing tools (W-2), bulk operations (W-4),
genre presets (T-4b), topbar image, entity type hierarchy, sidebar
editor rewrite (W-7), settings consolidation, admin cleanup, nav
glow refinement, and numerous bug fixes.

https://claude.ai/code/session_01A5jpDgqUvW6iLXXSj49F27
@keyxmakerx keyxmakerx merged commit 04ee71f into main Apr 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants