Email Verification
Secure account verification via email. Required for GDPR compliance and enables password resets, invitations, and notifications. 24-hour token expiration with …
Track feature development and bug fixes
Secure account verification via email. Required for GDPR compliance and enables password resets, invitations, and notifications. 24-hour token expiration with …
Upload session transcripts (simple [Speaker]: Message format) and auto-trigger entity extraction. Preview parsed messages before upload with progress indicators.
Full mobile CSS audit with keyboard shortcuts, empty states, tooltips, and help documentation.
Comprehensive loading spinners/skeletons for all async actions. Clear, actionable error messages with proper user guidance.
Pre-built campaign starters, sample campaigns for new GMs, entity templates, and keyboard shortcuts.
Support for Discord exports, Foundry VTT logs, Roll20 logs, and audio transcription via Whisper API.
Superuser dashboard showing AI usage metrics, token consumption, cost tracking, and historical usage graphs for system monitoring and optimization.
Create and track plot threads, link entities to plots, monitor resolution status, and visualize plot thread maps.
Sprint 1, high priority. Move from stacked vertical layout to a master-detail split. Search/filter no longer consumes 200px before content. …
Overview page was removed (commit 7a221df). Campaign landing now redirects to compendium. Rethink as player management improvement — stats are …
Sprint 2, medium priority. Replace vertical category cards with horizontal shelf rows. Upload zone becomes a modal. ## Requirements (from …
Sprint 2, medium priority. Build out the Study page from its current empty state into the GM story cockpit. Campaign …
Sprint 3, low priority. Replace full-page centered Inbox card with email-client split-pane pattern. ## Requirements (from layout-map.html #08-09) ### Notes …
Sprint 3, low priority. Merge the two side-by-side parchment cards into one centered form. ## Requirements (from layout-map.html #07) ### …
Sprint 3, low priority. Convert full-page form views into modals or inline edit patterns. ## Requirements (from layout-map.html #11, #13, …
Sprint 3, low priority. Token/style updates only for pages whose layout is already correct. ## Admin Pages (#23-24, Pattern D) …
Sprint 1, high priority. The most dramatic layout change -- columns go from vertically stacked/wrapped to horizontal full-width lanes. ## …
Users can change their passwords securely through the profile page with proper validation.
Secure user registration with email/password authentication, login/logout functionality, and session management.
Edit user profile information including display name and preferences.
Create, edit, and delete campaigns with story seeds, themes, and foundations. Full CRUD operations for campaign worlds.
Manage campaign participants with join/leave functionality and player invitation system.
Upload campaign documents in multiple formats (.md, .txt, .pdf, .docx) up to 10MB. Documents stored in PostgreSQL with full metadata …
Claude Sonnet 4 integration that automatically extracts characters, locations, factions, threats, hooks, and items from uploaded documents. Processes ~220 entities …
Review extracted entities before importing to knowledge graph. Approve, reject, or skip entities with server-side pagination (20 entities/page). Track imported …
Import approved entities to Memgraph graph database with full relationship tracking. Handles deduplication and provides detailed import statistics.
Create, update, and delete entities (characters, locations, factions, items, etc.) through GraphQL API. Full property management and relationship tracking.
Search entities by name, type, and properties. Browse your campaign world with server-side pagination for optimal performance.
Define and track relationships between entities. Characters can belong to factions, be located in places, and have complex relationship networks.
Beautiful entity detail cards showing all properties and connected relationships. Visual representation of your knowledge graph.
GraphQL-powered pagination system with page/pageSize parameters. Optimized queries with separate COUNT operations. Applied to World Explorer and Entity Review pages …
Create and close game sessions with participant tracking. Sessions track all messages and provide a collaborative space for gameplay.
Real-time messaging interface for game sessions. Send messages, view chat history, and collaborate with players during gameplay.
Admin dashboard showing database status, World Engine health, and system metrics. Superuser-only access for monitoring production health.
Advanced prompt management interface for AI templates. Edit prompts, manage versions, test with AI, and sync from filesystem. Superuser-only access.
Accessible, mobile-friendly pagination with proper keyboard navigation, ARIA labels, and visual feedback.
Comprehensive style guide with exploration and cartography philosophy. Parchment theme with antique map aesthetic. Full BEM methodology throughout the application.
Public roadmap showing completed, in-progress, and planned features. Community feature suggestion form with voting system.
Public-facing elevator pitch explaining Terra Incognita's value proposition, features, and philosophy. Accessible to all visitors.
Remove "bring your own API key" complexity. Use system Anthropic API key with per-user usage tracking for simplified UX and …
Verifying API key auth works in production
Extract the 3,800-line monolith static/css/main.css into 4 focused files: - tokens.css: :root block (design tokens) + @import for fonts (~120 …
relationship-graph.css (232 lines) is byte-identical in two apps: - apps/campaign_management/static/campaign_management/css/relationship-graph.css - apps/compendium/static/compendium/css/relationship-graph.css Move canonical copy to static/css/relationship-graph.css (global shared). Update …
Replace 51 inline style= attributes across 14 templates with BEM utility classes or component modifiers. Worst offenders: - user_management/detail.html (16 …
Review 44 !important declarations across CSS files. Breakdown: - 20 legitimate utilities (.u-hidden, .sr-only) — keep - 24 in relationship-graph.css …
Define all 120+ --ti-* semantic tokens with v2 target values (not aliases). Add [data-theme="hearthfire"] block. Update base.html to load tokens-v2.css …
Define all 120+ --ti-* semantic tokens with v2 target values. Add [data-theme=hearthfire] block. Update base.html to load tokens-v2.css and set …
Swap all v1 token references to --ti-* tokens in kanban.css, notes.css, dashboard.css, prompt-admin.css. Spacing uses v2 values (--ti-space-md = 12px). …
Swap all v1 token references in workbench.css and graph styles. Entity cards, graph panel, sidebar, smart filters. Graph node colors …
The big one. ~2,380 lines with highest token density. Buttons, cards, forms, modals, tabs, tables, messages, filter UI, loading states. …
~1,290 lines combined. layout.css: nav, grids, responsive, hero, accessibility. base.css: reset, body, headings, links. Typography renders with correct --ti-font-* and …
Sweep remaining app-level CSS: campaigns.css, relationship-graph.css, situation_room.css, compendium CSS, library CSS, session CSS, user management CSS. grep for v1 tokens …
Final cleanup: delete v1 token definitions from tokens.css, swap font imports (Crimson Text -> Crimson Pro, Open Sans -> Source …
Pre-work for hardcoded color tokenization: 1. Delete prompt-platform.css (dead file, not loaded by any template, 1151 lines, ~84 hardcoded colors) …
Batch 1: Confirm and tokenize remaining hardcoded colors in: - campaigns_layout.css (3 hex, 1 rgba) - campaign-time.css (2 hex) - …
Batch 2: Replace ~44 hardcoded colors. - document_view.css (~31 hex): CRITICAL — renders on light card surface, must use --ti-text-on-card …
Batch 3: Replace ~41 hardcoded colors. - typeahead.css (~14 hex): light-bg dropdown, remove @media (prefers-color-scheme) dark block (tokens handle themes) …
Batch 4: Replace ~87 hardcoded colors (many kept hardcoded). - relationship-graph.css (~19 hex, 4 rgba): 8 entity-type colors tokenize, vis.js …
Batch 5: Replace ~94 hardcoded colors (largest batch). - components.css (~36 hex, 39 rgba): speaker message themes, parchment gradients (KEEP …
Post-work after all batches complete: 1. layout.css cleanup (~4 hex, 13 rgba — mostly structural shadows) 2. Migrate JS entity …
Add user-facing theme switcher to the navbar — dropdown or toggle to switch between Hearthfire, Neonwire, and Eldritch themes. All …
Crimson Pro and Source Sans 3 were swapped in during Phase 1 (commit 2b17155) but font metrics were not audited. …
5 structural shadows in components.css .card use Hearthfire-specific color tints that will look wrong on Neonwire/Eldritch dark themes. Affected lines …
Add entity create, edit, and delete functionality to the workbench app. Currently these operations only exist in the compendium app, …
Port the vis-timeline campaign timeline from compendium world-builder to the workbench app. This is the last cross-app feature needed before …
prompt-platform.css is a dead file — 1,151 lines with ~84 hardcoded hex colors, not loaded by any template. Verification before …
Sprint 0 foundation ticket. Build the shared layout primitives that every page will use. ## Requirements (from layout-map.html) ### Nav …
Sprint 0 foundation. Build the campaign shell that Overview, Compendium, Workbench, Study, and Library all share. ## Requirements (from layout-map.html) …
Sprint 1, high priority. Replace the centered 2x2 campaign card grid with the 3-column Command Center layout. ## Requirements (from …
Sprint 1, high priority. Restructure the Workbench to match the layout proposal mockup -- entity list moves into a collapsible …
Sprint 2, medium priority. Move from flat scrolling list to grouped master-detail with inline editing. ## Requirements (from layout-map.html #10) …