← Back to Sign In
The GM DeckThe GM Deck

Patch Notes

A chronicle of all changes, great and small.

Changelog

v1.0.0

2026-04-17

The GM Deck is officially live at [thegmdeck.com](https://thegmdeck.com). Everything built during the beta is now running on production infrastructure — your worlds, campaigns, and sessions are here to stay.

v0.23.0

2026-04-16

Added

  • World export & import — download a complete world as a portable `.gmdeckworld` archive (all pages, plotlines, timelines, and images), and re-import it to create a new world. Great for backups, sharing between accounts, and migration. Premium feature — export up to 5 times per day.
  • Custom entity templates — create your own templates with custom fields (text, rich text, number, dropdown, page links) from the new Templates page on each world. Custom templates appear alongside built-in templates when creating or editing entity pages.
  • Free Forever accounts — admins can grant permanent premium access to any user, no subscription required. Pre-register emails so new users automatically receive free-forever status on sign-up, complete with a welcome splash on first login.

Improved

  • Session recaps show your notes — the Recap tab now displays your full session notes alongside the generated summary, so you can read both in one place without switching tabs. The raw session log section has been removed for a cleaner view.

v0.22.0

2026-04-16

Added

  • Session recaps — after ending a session, generate a structured "last time on…" summary from your session notes, activity log, and plotline progress. Recaps are editable and can be copied as plain text for Discord or chat. Session activity logs are now saved on completed and paused sessions.

Improved

  • Admin panel redesigned — the admin page now opens to a search bar instead of loading every user upfront. Search by email or name, then click into a detailed profile showing account info, content stats, storage usage, subscription details, and all moderation actions in one place. Nuke is only available after suspending the account first.
  • Subscriptions are fairer — trials are now one-time only. Re-subscribing after a cancelled trial starts billing immediately, with no second trial offered. Standard-to-Premium upgrades are charged with immediate proration instead of opening a fresh checkout.

Fixed

  • 3D dice use the full screen — dice physics were sometimes constrained to a small area in the top-left corner on certain browsers and viewport sizes. Dice now reliably tumble across the entire viewport.

v0.21.0

2026-04-16

Added

  • Dice roll button in the editor toolbar — The toolbar now has a dice button next to the `@` mention button. Click it to pick a common roll (d4/d6/d8/d10/d12/d20/d100, 2d6, 3d6, advantage, disadvantage…) or type a custom expression like `2d8+3`, and a roll chip is inserted at your cursor — no need to remember the slash-command syntax.
  • Public pricing page — A new `/pricing` page, linked from the top bar of the landing page and the site footer, lists the Standard and Premium plans with a monthly/annual toggle. Prices are pulled live from Paddle so you see the right currency and amount for your country, with applicable taxes shown at checkout. New visitors get a one-click path to create an account; existing subscribers are pointed at Settings to manage their plan.
  • Graduated admin moderation actions — The Administration page now offers a full range of user moderation tools beyond the old single-shot delete. Each user row has an Actions menu with Suspend (disable the account and sign them out of every device — reversible with Reinstate), Block email (prevents anyone from signing up again with that address — reversible with Unblock), Delete content (wipes a user's worlds, campaigns, and uploads but keeps the account), and Nuke (the old full-delete, with an optional "also block this email" checkbox). Suspend and Nuke now warn up-front when the user still has an active Paddle subscription, with a direct link to the Paddle dashboard so you can stop billing first. Every action is recorded in an audit log.

Improved

  • 3D dice roll bigger and use the whole screen — Rolled dice are now substantially larger and tumble across the full viewport instead of huddling in the corner, so the physics roll actually feels like a tabletop throw. The dice also clear from the screen at the same moment the result toast dismisses, rather than lingering until your next roll.
  • Google sign-in now captures Terms of Service acceptance — Signing in with Google previously skipped the consent step that email/password sign-ups see at registration. The first time a Google user arrives on the app, a short overlay now asks them to agree to the Terms of Service and Privacy Policy before they can continue, and records the version and timestamp of their acceptance on their account — the same record we keep for every other user.

Fixed

  • Page share links work again — Clicking the share button on a page failed with a CORS error and did nothing. The share API route is now wired up correctly so you get a share link back as expected.
  • Printing entity pages prints the content, nothing else — The Print button on an entity page was producing either a blank page or a page with app navigation mixed in with the content. Printing now shows just the page itself — no sidebar, no action buttons, no banners, and no back link — on a clean white background.
  • Slash dice commands no longer leave a stray `/` — Typing a dice command like `/d20 ` or `/2d6 ` could leave the leading `/` in the document next to the roll chip in some positions. The stray slash is now always removed, whether the command starts a line or follows existing text.

v0.20.0

2026-04-15

Added

  • Terms of Service — A new public Terms of Service page spells out the agreement between you and Mirrorhead Creative for using The GM Deck, including acceptable use, subscription handling, and your statutory rights. Linked from the signup form, the site footer, and the Refund Policy.
  • Refund Policy — A new public Refund Policy page explains when you're entitled to a refund, including the 14-day right of withdrawal for UK and EU consumers, how goodwill refunds are considered outside that window, and how refunds are issued through Paddle.
  • Signup consent — Creating an account now requires you to tick a box confirming you agree to the Terms of Service and Privacy Policy. The version you accepted and the date you accepted it are recorded on your account so you can later see what you signed up to.

Improved

  • Mirrorhead Creative attribution — The landing page, auth pages, and all policy pages now share a unified footer that identifies The GM Deck as a product of Mirrorhead Creative, with our logo, links to every policy, a direct support email, and the Patch Notes link.
  • Support contact unified — All policy pages and the footer now point to a single support address, info@mirrorhead.uk, in place of the previous mix of addresses.
  • Policy pages refreshed — The Privacy Policy has been updated to credit Mirrorhead Creative as the operator of the service and to match the styling of the new Terms and Refund pages.

v0.19.0

2026-04-15

Added

  • Master Plan shows inline on the campaign page — Your campaign's master plan now renders directly on the campaign overview instead of hiding behind a link. The full editor is still one click away via the "Edit" affordance in the section header.
  • Public share links for any entity page — Click "Share" on any NPC, location, item, or other entity to generate a public link you can send to players. A "Notes" entity type is now available for crafting player-facing handouts that aren't part of another entity. Recipients access your shared content at an unauthenticated link with a clean, distraction-free view—no account needed.

Fixed

  • `/d20` no longer leaves a stray `/` — When you typed a dice command at the very start of a paragraph, the leading slash was left behind next to the chip (so you'd see `/🎲 1d20`). The input rule now cleans up the slash in every position, whether the command begins a line or follows existing text.
  • Printing preserves in-page navigation and links — The print stylesheet was hiding every element that used a `sticky` or `fixed` utility class, which accidentally stripped breadcrumbs, editor toolbars, and inline navigation from the printed page. Printed pages now keep the useful links you'd expect and style them with a proper underline so they still read as links on paper.
  • 3D physics dice are visible again — The dice canvas sat one layer below the page's noise-texture overlay, so rolls would play out invisibly and you'd only see the toast. The dice layer now renders above the overlay, so rolling from the Dice FAB or a dice chip shows the rolling dice as intended.
  • Onboarding waits long enough for slow Paddle webhooks — The "Finalising your subscription…" overlay only gave Paddle's webhook 10 seconds to land before redirecting, which occasionally dropped users back onto the plan picker when the webhook took a little longer. The overlay now waits up to 30 seconds and polls faster at the start, so the common fast case still feels instant while slow webhooks no longer loop you.

Changed

  • Master Plan opens in the same tab — The "Edit Master Plan" and "Create Master Plan" links on the campaign page no longer spawn a new browser tab. Navigation now behaves like every other link in the app, so your back button returns you to the campaign view.

v0.18.0

2026-04-15

Fixed

  • 3D dice now scale with your window — The physics dice no longer pile up as a tiny cluster in the corner on larger screens. Dice size now follows your viewport and re-tunes itself when you resize the window, so a roll on a 27-inch monitor reads as easily as one on a laptop.
  • Master Plan editor scrolls properly — When a campaign plan grew past the viewport the text box would quietly overflow instead of showing a scrollbar. The editor now scrolls inside itself as you'd expect, keeping the toolbar pinned at the top and the search pane fixed on the right.
  • Inline dice commands use shorter `/d` syntax — Dice commands inside rich-text editors are now just the slash and the dice notation: `/d20`, `/2d6`, `/d10+6`, `/2d20kh1`. The trigger (including the trailing space) is consumed cleanly so no `/roll` text is left behind in your notes. Clicking the resulting chip still rolls fresh in 3D every time.
  • Print / PDF export is no longer blank — Printing an entity page or the world export view once again produces the expected document. The print stylesheet was hiding the `<body>` element along with its background noise overlay; it now suppresses just the noise texture and leaves the page content intact.
  • "Create Handout" button is back on entity pages — The handouts feature flag was defaulting to off in staging builds, which hid every Create / Remove Handout button across the app. The flag now defaults on so the button is visible again from entity pages, the side drawer, and the session-runner search pane.
  • No more onboarding loop after payment — After completing a Paddle checkout, the app now hands you off cleanly to the dashboard. Previously a race between the onboarding screen and the dashboard's own subscription refresh could leave you briefly bounced back to the plan picker, as though the payment hadn't landed.

Removed

  • Entity Relationship Web — The force-directed graph view on the world page and the "Web" shortcut on entity pages have been retired. The grid view is now the single canonical layout for browsing a world's entities — use the tag browser and filter presets for the cross-cutting slices that the web view was meant to surface.

v0.17.0

2026-04-14

Added

  • Player Handouts *(staging preview)* — Mark any NPC, location, item, or other entity as a handout from a new "Create Handout" button on the entity page, the side drawer, and the session-runner search pane. Pick whether the handout shows the entity's image, its notes, or both, set a title, and optionally carry the source's portrait over as a starting point. Once a handout exists for an entity the same button flips to "Remove Handout" so you can clean up between sessions. The session runner gains a new Handouts block at the top of the middle column that lists every handout across the campaign's linked worlds — pin the ones the table will see this session and they float to the top, expand to see the top eight with a title search, click any row to open it in the drawer. Public share links are scaffolded for a follow-up release.
  • Dice rolling with 3D physics — A new dice tray lives in the bottom-right of every dashboard page, stacked just above the Quick Create button. Click any standard die (d4–d100) to roll instantly, set a modifier with the +/− stepper, or type custom notation like `2d20kh1+5` for advantage rolls. Every roll spawns full 3D physics dice that tumble across the screen and settle on the table — the face values you see on the dice are the values that get reported in the toast and history (no faked numbers). The session-long history in the tray lets you re-roll any past expression with one click. Inside any rich-text editor, type `/roll 1d20+5` followed by a space to drop a clickable dice chip into your notes — clicking the chip always rolls fresh in 3D, so a stat block's "1d8+3 slashing" stays interactive every session. Roll tables now share the same 3D pipeline, so picking a row from a wandering monsters table tumbles a real d20 across the screen instead of a flat number.

Improved

  • Campaign Master Plan layout — The Master Plan editor now fills the viewport vertically and scrolls inside the text box itself, so the writing surface stays put while you work through long plans. The reference panel on the right has been replaced with the same search experience used in the session runner — search across entities, plotlines, and timelines from every linked world, drill into full details, and step back through your navigation history without ever leaving your plan. Ctrl/Cmd+S now saves directly from the keyboard.

v0.16.0

2026-04-14

Added

  • Tag Browser (`/tags`) — A new top-level page lists every tag you've used across every world, with usage counts, search, and sort. Click any tag to drill into a panel that lists every entity carrying it, grouped by world, with entity-type tabs to narrow further. Reachable from the new Tags entry in the sidebar and the Tags tile on the dashboard.
  • Multi-tag filters on the world page — A new Tag Filters panel above the search bar lets you combine any number of "must include" and "must exclude" tag filters on a world. Includes are AND-matched (a page must carry every required tag); excludes are NOT-matched (a page is hidden if it carries any). Active filters appear as gold/red chips with one-click removal, and a live match count tracks how many entities pass the filter.
  • Tag autocomplete everywhere — The tags input on the create/edit page form is now a chip editor: type a tag, press Enter to add it, Backspace to remove. As you type, an autocomplete dropdown surfaces existing tags from the same world along with their usage counts — so you stop accidentally creating "merchant" and "Merchant" as two separate tags. The same autocomplete is wired into the world-page filter input (Enter to include, Shift+Enter to exclude).
  • Saved filter presets per world — Save any combination of include/exclude tags + entity type as a named preset (e.g. "Session 5 prep", "Unfinished NPCs"). Apply a preset with one click from the Presets dropdown above the filter panel, or delete one with the X. Presets are stored per world in your browser.
  • Campaign Master Plan editor — The campaign plan now opens in its own full-screen editor with a generous writing area and a side panel that lets you search across every page in the campaign's linked worlds. Click an entity in the side panel to peek at it in the drawer without leaving your plan. Reach it from the new "Create Master Plan" / "Edit Master Plan" button on the campaign page; the editor opens in a new tab and auto-saves on demand.

Improved

  • Entity Image moved to the right-hand sidebar — The image attached to NPCs, items, encounters, factions, and other non-location entities now appears as a compact panel under the Info card on the right side of the page, instead of dominating the main column. The label "Portrait" has been retired in favour of the more general "Entity Image".
  • Smoother checkout completion — After paying for a plan you'll now be taken straight to your dashboard automatically, with a brief "Finalising your subscription…" screen while the new plan is activated. No more staring at the pricing page wondering whether the payment went through.
  • Cleaner Create Campaign modal — The "Campaign Plan" rich-text field has been removed from the campaign creation modal; you'll write your master plan from the campaign page once it's created, in the dedicated full-screen editor.

Fixed

  • Print and export pages no longer come out blank — The Print button on entity pages and the world Export view now reliably render the full document instead of producing an empty page with only browser-added headers. Multi-page documents export correctly.

Security

  • Brute-force protection on sign-in — After 10 failed sign-in attempts on the same email, further attempts are blocked for 5 minutes. You'll see a clear message telling you how long to wait before trying again. Successful sign-ins reset the counter immediately, and Google sign-in is unaffected.

v0.15.0

2026-04-14

Added

  • Ambient / music links — Locations, Encounters, and Sessions can now hold a playlist URL (Spotify, YouTube, SoundCloud, or any link). It appears as a one-click "Ambience" chip on entity detail pages, the session runner header, location and encounter cards in the runner, and the entity drawer. Opens in a new tab — no more hunting through browser tabs during play.
  • Privacy policy — A new public Privacy Policy page explains what data we collect, how it's used, who we share it with, and your rights. Linked from the landing page footer and from Settings.
  • Premium plan — A new Premium tier is now available alongside Standard. Premium includes 20GB of image storage (versus 5GB on Standard), with monthly and annual billing options. Upgrade at any time from Settings.
  • Paddle-managed free trial — New sign-ups now pick a plan and enter a payment method during onboarding before the trial starts. Your card is not charged until the 14-day trial ends — cancel anytime in Settings. This replaces the previous no-card trial.
  • In-app trial countdown — A dismissible banner at the top of the dashboard shows how many days remain on your free trial, with a one-click link to Settings to manage your plan. Dismiss it for the current session; it reappears the next time you sign in.
  • Storage usage with limits — Settings now displays your storage usage against your plan's cap (5GB on Standard, 20GB on Premium) with a progress bar. Uploads are blocked once the cap is reached; you'll see a prompt to upgrade if you approach the limit.
  • Always-visible Manage Subscription link — The "Manage Subscription" button in Settings is now visible during your trial as well as on paid plans, so you can review or change your plan at any time.

Improved

  • Upgrade prompt — The modal that appears when a read-only account tries to create or edit content now uses clearer copy ("Upgrade to continue") and routes directly to Settings.
  • Administrator access — Admin accounts are exempt from subscription gating and storage limits across the entire app, with a clear "unlimited" indicator in Settings.

Fixed

  • Page export showed a blank page — The Print/Export button on entity and world pages produced a blank or single-page output. The print view now expands the full document correctly and captures all content across multiple pages.

v0.14.0

2026-04-14

Added

  • Subscription plan — Settings now shows your current plan (Standard, Premium, or Free Trial) with the exact trial end date and a live countdown of days remaining. Active subscribers see their next renewal date.
  • Free trial — New accounts receive a 14-day free trial of the Standard plan on first sign-in. No payment details required to start.
  • Manage subscription — A "Manage Subscription" button in Settings opens the Paddle customer portal where you can update your payment method, view billing history, or cancel.
  • Read-only mode — Accounts without an active subscription (trial expired or no plan) continue to have full read access to all content. Creating or editing anything — worlds, entities, campaigns, sessions, plotlines, timelines — requires an active subscription. The session runner also requires an active subscription to use.
  • Account protection — Changing your password in Settings works regardless of subscription status, so you never lose access to your account management.

v0.13.1

2026-04-13

Added

  • Delete users from the admin panel — Administrators can now permanently remove a user from the platform. Deletion cascades to all of the user's worlds, entity pages, plotlines, maps, campaigns, sessions, timelines, and uploaded files (maps, entity images, editor images). Requires typing the target user's email to confirm. Admins cannot delete their own account.

Fixed

  • Account verification emails not arriving — After the 0.13.0 release, sign-up verification codes were not being delivered. Verification emails now arrive correctly.

v0.13.0

2026-04-13

Improved

  • Emails sent from `@thegmdeck.com` — Account verification codes and calendar invites now arrive from `noreply@thegmdeck.com` and `invites@thegmdeck.com` respectively, instead of a personal address. Sender name displays as "The GM Deck" in your inbox.

v0.12.0

2026-04-13

Added

  • Administrator panel — Internal admin page for managing platform users. View all registered users with their usage stats, force-send password reset emails, and create new admin accounts. Accessible only to users in the Admins group.
  • Print & export — Export any world as a formatted summary via the browser's built-in print dialog. Includes a table of contents, entity type filters, and clean print-optimized styling. Individual entity pages also have a print button.
  • Quick-create timelines and plotlines — The floating quick-create menu now includes Timeline and Plotline options. Create either directly from any page without navigating away.
  • Pagination on world pages — Entity, timeline, and plotline grids on world detail pages now paginate (8 items per page) with navigation controls, replacing the previous unbounded lists.

Improved

  • Rebranded to The GM Deck — All references to "Dungeon Manager" updated to "The GM Deck" across the app, including a new logo.
  • Relationship web zoom — The relationship web now uses click-to-activate zoom (prevents scroll hijacking), auto-fits all nodes after the simulation completes, and has a fixed container height for consistent layout.
  • Settings page — Account section now shows the active subscription tier and includes a working change password form. Sign-up now requires password confirmation.

v0.11.0

2026-04-12

Improved

  • Custom domain — The app is now served from `dev.thegmdeck.com` (staging). Production will use `thegmdeck.com`.

v0.10.0

2026-04-12

Added

  • Landing Page — A new public-facing front page for unauthenticated visitors, showcasing features and inviting sign-up. Authenticated users are automatically redirected to the dashboard.
  • Entity Relationship Web — Visualise connections between all entities in a world as an interactive force-directed graph. Colour-coded by entity type with search, filters, zoom/pan, and focus mode. Accessible via a toggle on the world page or from any entity detail page.
  • Calendar Invites — When you set or change the Next Session date on a campaign, calendar invites (.ics) are automatically emailed to all players who have an email address on file. Replaces the previous scheduled email reminder system.
  • Player Email Field — Player entries on campaigns now support an optional email address, used for calendar invites.
  • Branded Emails — All emails from Dungeon Manager (account verification, calendar invites) now use a consistent dark-themed branded template.

Improved

  • Recent pages scoped to user — The sidebar's recent pages list is now tied to your account, so switching users no longer shows another user's recent pages.

Removed

  • Scheduled email reminders — Replaced by automatic calendar invites when the session date is set (see "Calendar Invites" above). The reminder lead-time preference has been removed.

v0.9.0

2026-04-12

Added

  • Sign in with Google — Users can now sign in or sign up using their Google account. Existing email/password accounts are detected automatically to avoid duplicates, with helpful guidance shown if a conflict occurs.
  • Campaign Plan on create — The campaign plan rich text editor is now available directly in the "New Campaign" modal, so DMs can start outlining their campaign from the very beginning.
  • Next Session date — Set an upcoming session date on any campaign. The date is displayed prominently on the campaign detail page and on the dashboard for at-a-glance visibility across all campaigns.
  • Session reminders — Optionally receive an email reminder before your next session. Choose from 24 hours, 48 hours, or 1 week lead time. Reminders include the campaign name, session title, and a direct link to session prep.
  • Upcoming Sessions on dashboard — The dashboard now shows upcoming sessions across all active campaigns, sorted by date with a countdown.

Fixed

  • Storage usage showing zero — The storage usage stat on the Settings page now correctly calculates the total size of uploaded maps, editor images, and entity images.
  • Session timeline data not saving — Timelines selected during session planning now persist correctly when saving the session.

v0.8.0

2026-04-12

Added

  • User Profile & Settings page — View your account stats including world, entity, campaign, session, timeline, and plotline counts, plus total storage used. Accessible from a new Settings link in the sidebar. Placeholders for subscription plan and password reset.
  • Campaign Plan — Campaigns now have a rich text Plan field. A new "Campaign Plan" tab appears in the session runner alongside Session Plan and Notes, giving DMs a place for overarching campaign goals and long-term strategy. Sessions expanded on the campaign page now display Plan and Notes as separate tabs.
  • Quick-create sessions — The floating quick-create menu now includes a Session option. Select a campaign, enter a title and optional date, and jump straight into session planning.
  • Session @mentions — Sessions can now be mentioned with `@` in any rich text field. Type `@` to search sessions alongside entities. Clicking a session mention navigates to the campaign page.
  • Clickable @mentions while editing — Entity and session mentions are now clickable during editing, not just in read-only mode. Clicking a mention opens the entity drawer (or navigates to the campaign for session mentions).

Improved

  • Timelines section always visible in session runner — The Timelines section in the session runner middle column now always displays, showing a helpful placeholder when no timelines were selected during planning, consistent with other sections.

Fixed

  • Quick-create shortcut triggering in text fields — The `N` keyboard shortcut for quick-create no longer fires when typing in rich text editors or other content-editable fields.

v0.7.2

2026-04-12

Added

  • Rich text timeline entry descriptions — Timeline entry descriptions now support full rich text editing (bold, italic, headings, lists, tables, images, entity @mentions) via the same editor used across the app, replacing the previous plain text field.
  • Timelines in session search pane — Timelines are now searchable alongside entities and plotlines in the session runner's search pane. Click any timeline to view its entries, categories, and descriptions inline.
  • Timeline selection in session planning — Select relevant timelines during session planning, just like locations and plotlines. Selected timelines appear as a dedicated section in the session runner's middle column for quick reference during live play.

Fixed

  • Timeline "Show details" not responding to clicks — The "Show details" button on timeline entries now correctly expands to reveal all entry details (category, date label, linked entities, and description).

v0.7.1

2026-04-12

_Various behind-the-scenes reliability fixes._

Changed

  • Timelines reworked to top-level entities — Timelines are now standalone, multi-world entities (like campaigns) rather than world-scoped entries. Each timeline has a title, description, and can be linked to multiple worlds. Timeline entries (title, date label, category, description, linked entities) are managed as a nested array on the timeline item. New dedicated `/timelines` listing page with search and create. New `/timelines/{timelineId}` detail page with vertical timeline UI, inline entry editing, and category filters. Timelines linked to a world now appear in a dedicated section on the world detail page. Sidebar and dashboard updated for direct timeline navigation.

Fixed

  • Dashboard Timelines tile linking to wrong page — The Timelines tile on the dashboard now correctly links to `/timelines` instead of `/worlds`.

v0.7.0

2026-04-11

Added

  • World Timelines — A chronological timeline view for each world. Create timeline entries with titles, date labels (free text for in-world calendars), categories (Battle, Political, Discovery, Personal, Other), and rich text descriptions. Link any existing entity to timeline entries for cross-referencing. Filter by category, expand/collapse entries, and manage the full timeline from a dedicated page accessible from each world.
  • Create Anywhere (Global Quick-Create) — A persistent floating `+` button on all authenticated pages. Click it to open a quick-create menu listing all entity types, then create any entity in an overlay without leaving your current page. If you're inside a world, that world is pre-selected; otherwise a world picker appears. Press `N` as a keyboard shortcut.

v0.6.4

2026-04-11

Fixed

  • Rich text safety — Rich text content is now sanitized before rendering, preventing a class of cross-site scripting risks via crafted page content.
  • Safer file uploads — File uploads now validate the upload destination before sending data.

v0.6.3

2026-04-11

Added

  • Pinned entities on world page — Star/pin any entity card to keep it in a dedicated "Pinned" section at the top of the world page. Pinned entities remain visible regardless of active filters or search. The section is collapsible and pins persist across sessions.
  • Session pinned entities — Pin any entity during session planning for quick access. Pinned entities appear in a dedicated section at the top of the session runner's middle column, giving instant one-click access to key references during live play.
  • Bulk actions on world entity grid — Select multiple entity cards and apply bulk actions: add tags, set a colour label, or delete. A floating toolbar appears at the bottom of the page with all available actions. Includes "Select All" and confirmation dialog for bulk delete.
  • Collapsible session runner sections — All sections in the session runner's middle column (Where is the Party?, Relevant NPCs, Encounters, Plotlines) can now be collapsed and expanded by clicking their headers.

Fixed

  • Session runner Plan/Notes tabs showing same content — Switching between the Plan and Notes tabs in the session runner could show the session plan in both tabs. Each tab now displays its own content correctly.

v0.6.2

2026-04-11

Added

  • Colour-coded entity cards — Entity cards on the world page now have a coloured left border by type: NPC (green), Location (light blue), Item (yellow), Encounter (red), Faction (grey), Lore (dark blue), Roll Table (orange).
  • Pre-select entity type on new page — When a type filter is active on the world page, clicking "New Page" opens the form with that entity type already selected.
  • Search by tags and content — The world page search now matches against tags and description text in addition to page titles.
  • Sort options — Sort entity pages alphabetically (A–Z or Z–A) or by date (newest or oldest first) using a new dropdown next to the search bar.
  • Recent pages in sidebar — The sidebar now shows your 5 most recently visited pages (entities, plotlines, campaigns, and sessions) for quick navigation.

Fixed

  • Session plan and notes not displaying in runner — Session plans and notes could occasionally appear empty in the session runner depending on load order. They now display reliably.
  • Rich text floating toolbar — Added a floating bubble toolbar that appears near selected text, ensuring formatting controls remain accessible even when scrolled past the static toolbar.

v0.6.1

2026-04-11

Fixed

  • Session notes and plans not displaying in runner — Notes and session plans written on the session planning page now correctly appear in the session runner's Plan and Notes tabs.
  • Session runner column widths — Rebalanced the three-column session runner layout so the left and right columns are equal width, with the centre column slightly narrower.
  • Rich text editor toolbar not sticky on scroll — The formatting toolbar now stays pinned to the top of the scrollable area when scrolling through long editor content.

v0.6.0

2026-04-11

Added

  • Session Runner Three-Column Layout — The session runner page now uses a three-column layout: Session Plan and Session Notes in a tabbed left panel, locations/NPCs/encounters/plotlines in the scrollable middle, and the search pane always visible on the right.

Fixed

  • Campaign create window off-centre — The "New Campaign" modal (and all other modals) now centres correctly relative to the main content area, accounting for the sidebar.
  • Session list not showing sessions — The sessions list page now correctly loads and displays all sessions across all campaigns.

v0.5.1

2026-04-11

Added

  • Session Pause — Pause a live session from the session runner page. Paused sessions appear with an orange badge across all session views and can be resumed at any time.
  • Roll Tables in Drawer & Search Pane — Roll tables now display their full table and dice rolling button when viewed in the entity drawer or the session runner search pane, matching the full page experience.

Fixed

  • Session list showing all statuses — The sessions list page and campaign detail page now correctly display sessions of all statuses (including paused) in the active section, with only completed sessions collapsed.

v0.5.0

2026-04-11

Added

  • Session Plan — New rich text field on sessions for DM prep (outline, objectives, key beats). Editable on the session planning page, and displayed alongside Session Notes in a two-column layout on the session runner page. Both auto-save independently.
  • Sessions in sidebar — Sessions page is now a full sidebar navigation link (promoted from "Coming soon").

Fixed

  • Plotline cards showing raw HTML — Plotline descriptions in the session runner cards and search pane now render properly instead of displaying raw HTML tags.
  • Version number not updating — The version badge on the login page and under sign out now reads from the correct source and displays the current version.

Improved

  • Sticky rich text toolbar — The formatting toolbar in the rich text editor now sticks to the top when scrolling through long content, so it's always accessible.
  • Location-based entity filtering — NPCs and encounters in the session runner "By Location" groups are now hidden by default. Select a location in "Where is the Party?" to reveal only the NPCs and encounters at that location.
  • Auto in-progress status — Opening the session runner now automatically sets the session status to "In Progress", so in-progress sessions correctly appear on the sessions list page.

v0.4.0

2026-04-10

_No public-facing changes._

v0.3.0

2026-04-10

_No public-facing changes yet._

v0.2.0

2026-04-10

Added

  • Roll Tables — New entity type for random tables used in D&D. Create tables with standard dice types (d4, d6, d8, d10, d12, d20, d100), custom roll ranges, and result text. Five templates: Generic, Random Encounter, Loot / Treasure, Weather, and NPC Trait.
  • Dice Rolling Animation — Roll button on roll table detail pages plays an animated dice roll before revealing the result. The matching row is highlighted for 10 seconds.
  • Roll Table Linking — All existing entity types can now link to roll tables via a new "Roll Tables" multi-link field on key templates (NPC Generic, all Encounter templates, Faction Generic, Location Region/Dungeon/Tavern).
  • Auto-fill Ranges — Roll table editor includes an auto-fill button to evenly distribute dice ranges, and a "Generate Table" button to create a blank table with one row per die face.
  • Maps Gallery — New standalone `/maps` page showing all maps across all worlds. Browse and search maps by title or world name, filter by world, and click any map to navigate to its location page. Each card shows a map thumbnail, world badge, location name, template, and pin count.
  • Session Selection — New `/sessions` page accessible from the dashboard. Displays all sessions across all campaigns as cards with Run and Plan buttons. Completed sessions are grouped in a collapsible section at the bottom. The dashboard "Sessions" tile is now active and links to this page.

v0.1.0

2026-04-10

Added

  • Auth — Sign in, sign up, and forgot password flows with cookie-based sessions and protected routes.
  • Worlds — Create and manage multiple D&D worlds with CRUD, search, and card grid overview.
  • Entity Pages — Six entity types (characters, locations, factions, items, creatures, lore) with 20+ templates and full CRUD.
  • Page Linking — Link entity pages together with an inline drawer for quick navigation.
  • Maps — Upload world maps and place named pins on them.
  • Rich Text Notes — Rich text editor on entity pages.
  • Dashboard — Central hub showing your worlds and recent activity.
  • Campaign Management — Multi-world campaigns with player roster tracking.
  • Plotlines — World-level narrative arcs with user-defined stages and entity page linking.
  • Campaign Plotline Progress — Track plotline advancement per campaign independently of the world.

✦ THE GM DECK ✦