Beta Version v1.21.0
2026-04-30Polish and performance updates across the board.
Improved
- ✦All Entities page: tighter columns, no wasted space — The All Entities page now splits roughly one-third for the organisation column and two-thirds for the editor pane on desktop, giving the inline editor the room it needs without squashing the list. The page also fills the available height now — no more empty space at the bottom on tall viewports — with each column scrolling internally as you browse or edit.
- ✦Compact pickers when editing entities — Editing an existing entity from the To-Do Queue, the All Entities page, or the entity detail page now shows the entity type and template as compact dropdowns instead of the wider chip-style pickers. The chip pickers stay on the create form, where the wider style helps you understand the choice — but for an entity you’re only tweaking, the dropdown keeps the rest of the form (description, notes, tags, custom fields) closer to hand on smaller viewports.
- ✦World page fits the screen, Plot tab paginated — The world detail page now fills the available height exactly — no more empty space at the bottom on tall viewports, and no more page-level scrolling when a world has lots of plotlines or timelines. The world plan on the left scrolls internally, the tabbed section on the right does the same. The Plot tab’s Timelines and Plotlines now show 4 at a time with Prev / Next pagination so they never push the page past the viewport.
- ✦Folders show up in search — Folders are now a first-class result type in the search pane on the campaign master plan and the session runner. Type a folder name and the search returns the folder alongside the usual entity / plotline / timeline / campaign / session matches; click it to open a folder detail view in the same pane that lists everything inside — sub-folders and member pages — so you can drill in mid-session without leaving the runner.
- ✦Session planning page rebuilt — The session planning page is reflowed around the work that actually happens there: prep notes alongside a live search pane, with compact pickers above. Locations, factions, plotlines, and timelines are now compact pickers — only what you’ve already picked shows by default; click the search input and the full list appears in a popover. A note at the top of the page makes it expl
Beta Version v1.20.0
2026-04-29Folders are here! Now when you go to an entities page, you will see a new link to "All Entities". This is now the main page for viewing and editing all of your entities. You can organise them however you like, including automatic tag-based folders as an option.
Added
- ✦Folders and Editing — A new editor view available by selecting "All entities" in a world. Organise your entries into folders, including optional automatic tag-based folders.
- ✦"What's new" pop-up after a release — When a new release ships, the next time you sign in you'll see a one-shot dialog with the full release notes — what was added, improved, fixed, and changed — so you don't have to remember to check the version pill in the corner. Dismiss with the "Got it" button, Esc, or by clicking outside; it won't show up again until the next release. There's also a "Read full patch notes →" link if you want to scroll through the older entries.
Improved
- ✦Tighter recent-activity list on world pages — The Entities tab on a world's main page now shows the 8 most-recent items instead of 10, giving the page a cleaner two-row layout. Use "View all entities" to browse the full set on the dedicated entities page.
Fixed
- ✦Various bug fixes and adjustments to improve performance
Beta Version v1.19.0
2026-04-29Folders and organisation.
Added
- ✦Browse every entity in a world from one page — every world now has a dedicated "All Entities" page that lists every entity, timeline, and plotline side-by-side in a To-Do-Queue-style split-pane browser. Search across the whole world, multi-select filter chips for any combination of entity types, sort by recently updated / created / title / type, and edit any selection in place without leaving the page. Reach it from the new "View all entities" link on the world's Entities tab.
- ✦Recent activity on the world page — the Entities tab on a world now shows the 10 most-recent items at a glance instead of a paginated grid, with a one-click jump into the full browser when you want to dig deeper.
- ✦Folders for organising your world — group entities into folders alongside the new All Entities page. A folder has a name and a rich-text description, and you can file an entity into one or more folders without touching the entity itself. Find folders mixed in with the rest of your world on the All Entities page, with a Folder filter chip to narrow the list. Renaming a folder, editing its description, or shuffling its contents is all inline-editable from the right pane.
- ✦File-into-folders from any entity — every entity's edit form gains a Folders picker below Tags. Search the world's folders, multi-select with chips, or create a new folder inline without leaving the form.
- ✦Nest folders inside folders — folders now form a tree. Filter the All Entities page to "Folder" only and the list collapses into a navigable hierarchy with caret chevrons to expand or collapse each branch. The trail to whichever folder you have selected stays expanded automatically.
- ✦Move-to-folder action — every folder gains a "Move to folder…" button in the right pane. Search the picker, pick a parent, and the move applies in one click — or pick "Top level" to pull the folder back out to the root. The picker hides anything that would create a circular nesting, and the server backstops with a clear error if anything tries to slip through.
- ✦Sub-folders show inside their parent — opening a folder lists the sub-folders that live underneath it alongside the entities filed there, indented for clarity. Click a sub-folder to jump straight into it.
Beta Version v1.18.0
2026-04-28Added
- ✦Session prep checklist — Each session now has its own structured checklist alongside the prep notes, so you can tick off "Review plotline progress", "Prep encounter maps", "Update NPC stats" or whatever else lives on your prep routine. Items can be reordered by drag, edited inline, or deleted in place.
- ✦Prep progress at a glance — A done/total fraction shows up next to the session date on the campaign detail page so you can see how far through prep you are without opening the planner. The badge turns green when the whole list is ticked off.
- ✦Reusable checklist templates — Save a frequently-used prep list as a named template on the campaign and apply it to future sessions in a click. Templates carry over when you duplicate a campaign.
Improved
- ✦Entity-link search pickers always show the latest pages — Linking one entity to another (faction affiliation, encounter NPCs, page-link fields, the @-mention search inside notes, and similar pickers) now refreshes its candidate list every time you open it. Anything you just created in another tab — or via the quick-create button in the same tab — shows up immediately, no reload required.
Fixed
- ✦Create dialogs no longer clip off the top of the screen — Opening "New World", "New Campaign", "New Timeline", "New Plotline" or any of the other create dialogs on a typical laptop now keeps the title and first form fields fully visible. When the dialog is taller than the viewport, the page itself scrolls so nothing is ever stranded above the fold.
- ✦Session planning page is now centred in the column — The Plan Session and Edit Session screens previously hugged the left edge of the page with empty space sitting on the right. They now sit centred in the content column, matching the rest of the dashboard.
Beta Version v1.17.0
2025-04-27Help and Tutorials Update
Added
- ✦Help page — A new public Help page at /help walks through every feature in The GM Deck, with a sticky left rail of section anchors on desktop and an "On this page" jump select on mobile. Each section explains what the feature is, when a DM would reach for it, and how to use it. Reachable from the landing-page top nav, the footer on every public page, and the dashboard sidebar.
- ✦Tutorial tips — A small, dismissible toast appears the first time you visit each main page in The GM Deck, pointing at the surface and what it does. Hit Got it to dismiss, Don't show tutorials to silence them all, or open Settings to reset and bring every one back. Each toast can deep-link to the matching section on the Help page.
Beta Version v1.16.0
2026-04-27Polishing and spring cleaning update.
Improved
- ✦Send Invites button on the Next Session block — Calendar invites no longer go out every time you tap the date input. Editing the date just persists the value; pressing the new Send Invites to Players button is what actually emails everyone with an email address. An "Invite Sent · Sent {time ago}" badge appears next to the button and survives a page reload, and changing the date clears the badge so you are prompted to re-send for the new date.
- ✦Session runner stays put while you read — The runner page no longer scrolls as a whole. Each column now scrolls independently inside its own bounds, so the column tabs, ambient chip, and End Session button stay reachable at all times while you scroll through long Session Notes or a deep NPC list.
- ✦Timeline preview matches the editor — Opening a timeline in the session runner Search Pane or the entity drawer now uses the same era-ribbon design as the main timeline editor, with the orientation flipped vertical to fit narrow side panels. Eras flow top-to-bottom as bands, multi-event stacks expand vertically without spilling out of the panel, and category filter chips sit at the top.
Fixed
- ✦HP change popover no longer clips inputs — The Damage / Heal / Set HP rows inside the combat tracker's HP popover now stay inside the popover at every breakpoint, including the runner's narrow combat reflow. Three-digit values render without clipping and the Apply buttons stay aligned with their inputs.
- ✦Dice roll advantage / disadvantage chips fit their buttons — The 2d20kh1 and 2d20kl1 chips in the rich-text editor's Insert Dice Roll popover now render entirely inside their chip borders. The two wide presets span two columns of the picker so the simple presets keep their tight 4-up rhythm.
Beta Version v1.15.0
2026-04-26Added
- ✦To-Do Queue — A new personal queue for anything you want to come back to. Bookmark pages, worlds, campaigns, sessions, timelines, or plotlines from any Create form ("Save & add to Queue") or any detail page (small bookmark button next to Share). Open To-Do Queue in the sidebar to see everything you've queued in one place — search and sort it, click an item to edit it inline, or remove it once you're done. Entity pages get the full editor; worlds, campaigns, timelines, and plotlines get a quick top-fields editor with a one-click jump to the full page when you need it.
Improved
- ✦Reputations next to Plotlines — On the campaign detail page, the All Reputations browser now lives in the right-hand sidebar directly under Plotlines instead of as a separate block at the bottom of the page. Reputation tracking sits beside the storylines it relates to.
Fixed
- ✦HP adjust popover stays in view — The Damage / Heal / Set HP popover on the combat tracker no longer gets clipped by the edge of the combat column. It now opens entirely within the visible area on every breakpoint.
- ✦Dice roll picker stays in view — The dice-roll insertion popover in the rich-text toolbar no longer gets cut off when the editor is hosted inside a narrow surface like an entity-edit modal or the session runner's left column.
- ✦Combat tracker advances cleanly past dropped or skipped combatants — When the active combatant drops to 0 HP or is manually skipped, clicking Next Turn now advances to the next valid combatant in the order instead of jumping back to the top.
Beta Version v1.14.0
2026-04-26The Pre-Update for the Combat Tracking system.
Added
- ✦Mob template for NPCs — A new combat-focused NPC template alongside Generic and Merchant. The Mob template carries the full 5e statblock — Armour Class, Initiative, HP, Speed, the six ability scores with rollable Modifier and Save chips, a 5e skills picker, Languages, CR, XP, and repeatable rich-text Traits, Actions, and Legendary Actions. Every modifier and skill bonus is a clickable dice chip; clicking rolls 1d20+N through the in-app dice tray.
- ✦5e Statblock and Rollable custom-template fields — Custom templates can now drop in the entire 5e statblock as one composite field, or add freeform Rollable fields with a DM-defined dice expression that renders as a clickable chip. Reproduce the Mob template from a custom template in two clicks (5e Statblock + a rich-text Description).
- ✦Skull glyph for Mob map pins — Pinning a Mob NPC to a map auto-defaults the inner glyph to a skull. The skull glyph is also available as a manual pick on the per-pin icon picker for any pin.
- ✦Combat Tracker — Run live combat from any encounter. Click Launch Encounter on the encounter detail page or from the search pane during a session. Inside a session the tracker takes over the runner's middle column with combat state persisted; outside a session it opens in a modal. Tracks initiative ordering, NPC HP with damage / heal / set-HP popover, the 15 standard 5e conditions per combatant (chip strip with one-click remove and tooltips), dropped (auto when HP hits 0) and skipped states, mid-combat additions with a "(new)" suffix, and round counting. Players track their own HP at the table — the tracker shows their initiative and conditions but no HP cell.
- ✦NPC turn auto-open — When the current turn lands on an NPC, the search pane jumps to that NPC's statblock so every modifier and skill bonus is one click from a roll. On phones the column tab flips to Explore for the same effect.
- ✦Combat persistence — Combat survives page refresh and session pause/resume. End Combat writes a session log entry, appends a one-line recap, and restores the standard runner layout.
- ✦Combat mobile tab — A fourth column tab "Combat" appears on phones whenever combat is active. Auto-selected on Launch.
Improved
- ✦Generic NPC combat block — The Generic NPC template's combat fields now use the same 5e statblock layout as Mob, so named NPCs and adversary mooks share one consistent shape. Modifier and Save are independent rollable cells. Initiative is a clickable d20+N chip. Traits, Actions, and Legendary Actions are repeatable rich-text entries — write attack damage, special abilities, and legendary actions with full formatting and inline dice chips.
- ✦Encounter "Non-player Combatants" label — The "NPCs Involved" field on every Encounter template is now labelled "Non-player Combatants" to match the combat-tracker terminology. Existing data is unchanged.
Fixed
- ✦Patch notes loading reliability — Patch notes now load consistently after a fresh release, and the in-app version badge updates promptly when a new version is published. Transient loading failures no longer get cached as an empty page.
- ✦Entity links in the session runner and campaign planner — Clicking an @mention in rich text on the session runner or campaign master plan now opens the entity in the right-hand search pane instead of overlaying it with the global drawer. Other surfaces are unchanged.
- ✦### Fixed
- ✦Encounter location links auto-sync — Linking an encounter to a location (or vice versa) now updates both sides automatically — same as the parent / sub-location auto-sync on locations. The session runner's "Encounters at selected locations" section also reads both sides, so encounters linked from either direction surface correctly.
- ✦Plotline progress bar in the runner top bar — The progress bar in the Plotlines top-bar dropdown is now legible and fills correctly. Marking a plotline complete fills the bar; marking individual stages updates it proportionally.
- ✦Combat setup column headers — The combat tracker setup form now shows "HP" and "Initiative" headers above the matching input columns, so it's clear which value goes where without hovering the inputs.
- ✦Sidebar collapse button — The dashboard sidebar collapse toggle and the reopen rail now actually shrink and expand the sidebar. The state was persisting correctly all along; the visual was getting stuck because of a Tailwind utility class conflict.
Beta Version v1.13.0
2026-04-25Improved maps with customisable pins, and map handouts with custom player views.
Added
- ✦Pin groups — Organise map pins into named groups (Taverns, Quest Locations, etc.) with colour swatches and per-group visibility toggles, so you can focus the map on a single slice for any given scene.
- ✦Map regions — Draw freeform polygon regions on a location map ("Elven Forest", "Danger Zone", "Court territory"), pick a colour, optionally link them to an entity, and the regions render as semi-transparent overlays on the map.
- ✦Hide pins or regions from handouts — Mark any pin or region as hidden — you'll still see it on the DM map (dimmed, with a small hidden indicator) but it disappears from the public handout for that location.
- ✦Handout scope picker — When creating a share link, choose which sections of the page players see: Image, Map, Details, Notes, or any combination. Toggles only show for the surfaces the page actually has, and your choice persists on each share link individually.
- ✦Map handouts with labelled pins — Sharing a Location with the Map surface on produces a public map view where every pin is labelled by name and sub-type ("Ashfall Keep — Fortification") right on the marker. No clicking required to read the map.
Improved
- ✦Handouts now live-update — Edits you make to a page's content show up on its share link immediately. The public page reads the source on every load instead of caching for an hour.
- ✦Full rich text in handouts — Headers, lists, tables, blockquotes, and embedded images all render faithfully on the public handout. Previously some formatting was being lost.
- ✦@mentions on handouts — The text of an @mentioned entity stays in the prose so the in-fiction reference is intact, but the link target is removed since players can't navigate to the linked page.
Fixed
- ✦Mobile session runner header — On phone-portrait widths the In Progress badge and the Pause / End Session buttons now sit on separate rows instead of overlapping, so both stay readable and tappable.
- ✦Mobile viewport fit — The bottom of the dashboard, the session runner, the Web graph, and the auth pages stays inside the visible area when your phone's browser URL bar is showing. Last cards and buttons no longer get clipped below the fold.
- ✦Handout image crop — Entity portraits on a public handout now render at their full natural aspect ratio. Previously the image was clipped to a fixed maximum height with parts of it cropped out.
Changed
- ✦Entity-type pin markers — Pins are now coloured teardrops with the linked entity's icon painted into the bulb (NPC pins green with the NPC glyph, Location pins sky blue, Encounter pins red, and so on) so the map reads at a glance.
- ✦Pins can link to any entity — Map pins can now point at any entity type, not just locations. Pin an NPC, an encounter, an item, a roll table — whatever the location needs.
- ✦Pin edit panel — Clicking a pin now opens an inline panel below the map with group assignment, visibility, link/unlink, and a one-click "Open" button for the linked entity, instead of the previous click-and-it-just-opens-the-drawer flow.
Beta Version v1.12.0
2026-04-24Timeline revamp and and polish.
Added
- ✦Timeline revamp — Eras, horizontal layout, drag-and-drop — Timelines now flow left-to-right across named Eras instead of running as a single vertical list. Each Era can span a number of years or be marked Current and open-ended, and you can drag events to reorder them inside an Era or move them between Eras. Drag the Era headers themselves to reshuffle the ribbon.
- ✦First-class mobile layout — The sidebar collapses into a hamburger drawer on phones, the session runner's three columns collapse to a Notes / Quick Links / Explore tab switcher in portrait, and headers and pill rows across Worlds, Campaigns, and Timelines now wrap cleanly at narrow widths instead of forcing a sideways scroll.
Fixed
- ✦Pinned entity outline on the session runner — Pinned cards on the session runner used to render with a stark accent outline that read as harsh against the dark theme. The pinned state now uses the same subtle gold wash used elsewhere on the runner, keeping the entity-type colour as a left stripe only.
Beta Version v1.11.0
2026-04-24Shop Tables, Hover Cards, Sidebar Collapse, Template Overhauls
Added
- ✦Shop Tables — a new entity type for structured price lists. Each shop table holds one or more freely named sub-tables (Weapons / Potions / Rare Stock / whatever you like) with rows of name, price, quantity, and notes. Attach a shop table to any NPC, location, or faction via the new Shop Tables picker and the full inventory renders inline on that parent's detail page, in the drawer, and in the session runner's search pane. A per-sub-table Copy button dumps the rows as markdown so you can paste them straight into Discord or a handout. Price is freeform, so "25 gp", "1d4 × 50 gp", and "Barter only" all work.
Improved
- ✦Collapsible sidebar — a chevron in the sidebar header slides the nav panel off to the left, reclaiming the horizontal space for whatever you're working on. A slim rail stays pinned to the edge so a single click brings the sidebar back, and the app remembers your choice between visits.
Changed
- ✦NPC templates refreshed — the Generic NPC template is rebuilt around the new Combat and Abilities section plus Shop Tables and Roll Tables sections. Merchant is simplified to Name / Description / Race / Shop Name / Location / Faction Alignment / Shop Tables / Roll Tables — linked shop tables replace the old free-text Wares field. The standalone Quest Giver, Villain, and Ally templates have been retired; use Generic for all three. Existing NPCs keep every field value they already had — their structured template fields reappear once you re-pick Generic or Merchant on edit.
Beta Version v1.10.0
2026-04-23Added
- ✦Patch notes are now admin-managed — the Patch Notes page is no longer tied to a file in the codebase. A new Changelog tile in the admin panel lets the team add, edit, reorder, hide, publish, and delete release notes directly from the app. Each entry carries a version, phase label (Alpha / Beta), date, optional intro prose, and the familiar Added / Improved / Fixed / Changed sections with bullet items — so the public `/patch-notes` layout is unchanged. Edits land on the live page within a minute without a redeploy. A one-click Seed from file button migrated every past release into the new store so nothing was lost.
- ✦Party reputation tracker (DUN-191) — keep a plain-English note of how the party stands with any NPC, Location, or Faction — no "+3 reputation" scale, just a sentence or two in the DM's own voice. Notes live on the campaign, so the Harpers can be "friendly, trading openly" in one campaign and "mortal enemies after the warehouse job" in another without any overlap. Edit from a new All Reputations section at the bottom of each campaign page (collapsed by default, filter by NPC / Location / Faction, search, paginate, inline autosave), or from three new dropdowns on the session runner top bar — Faction Rep (for factions you picked during planning), Location Rep (for locations), and Relationships (for NPCs the runner has already surfaced at the table). Faction entities also gain a Default Player Reputation field on every built-in template; when a campaign hasn't written its own note yet, the default shows as a greyed-out hint so you start from a sensible baseline instead of a blank box.
- ✦Relevant Factions on session planning (DUN-183) — the session planner now has a Factions picker alongside Locations, Plotlines, and Timelines. Mark which factions are in play for the upcoming session (searchable, grouped by linked world, multi-select via checkboxes), and the selections carry through to the campaign detail page as rose-bordered chips on the session row, and to the session runner as a collapsible Relevant Factions block below Relevant NPCs. Clicking a faction card in the runner opens it in the search pane.
Improved
- ✦Session runner — Plotlines and Timelines moved to a top bar (DUN-189) — a new horizontal bar sits at the top of the active session view and hosts contextual reference dropdowns. Plotlines and Timelines have been lifted out of the middle column and into this bar, freeing the column to focus on live-play reference (Pinned, Where is the Party?, NPCs, Encounters). Each dropdown shows its selection count in the trigger, surfaces the same plotline progress bars and timeline entry counts as before, and dismisses itself on Escape, click-outside, or when you open another dropdown. Clicking a plotline or timeline inside a dropdown opens it in the search pane on the right exactly as it always has.
Fixed
- ✦New Session button now matches the rest of the app — the New Session button in the header (and the empty-state prompt) on the Sessions page had slightly rounded corners while every other primary CTA on the listing pages has sharp corners. Both now render with the same sharp-cornered shape as New Campaign, New World, and the other list-page buttons.
Beta Version v1.9.0
2026-04-22Added
- ✦Create a new session from the main Sessions page — The top-level Sessions page now has a New Session button in the header. If you only have one campaign, clicking it drops you straight into planning a new session for that campaign. With multiple campaigns, it opens a campaign picker so you can choose which campaign the session belongs to. The empty state on the Sessions page leads with the same button, so a brand-new user doesn't need to hunt for it. If you haven't created any campaigns yet, the button is disabled and the empty state points you at the Campaigns page first.
Improved
- ✦Tidier page headers — the cluster of secondary action buttons (Print, Clone, Delete, and similar) in the top-right of each page has been collapsed into a single … menu. Primary actions (Edit, Save, New) stay as persistent buttons so the common path is still one click, but the row of smaller utility buttons no longer competes for attention with your content. The menu is fully keyboard-accessible: Tab to focus the trigger, Enter or Space to open, arrow keys to move between items, Esc to close.
- ✦World detail pages split into a planner column and a tabbed view — Each world's detail page has been reshaped to match the rhythm of the campaign master plan. The left third is a live rich-text World Plan you can write into as free-form prose; it auto-saves as you type. The right two-thirds holds a tabbed view: Entities (the familiar page grid with search, filters, and pagination) and Plot & Timelines (the plotline and timeline sections that used to sit at the bottom of the page). The entity-type filter has been replaced with a compact dropdown instead of the long row of type buttons, and the divider between the two columns uses the same soft-contrast tone used elsewhere rather than a harsh white line. Your last-used tab is remembered per-world so opening the same world again lands you where you left off.
- ✦Campaign detail pages now lead with the master plan — The campaign page has been re-laid so the master plan is the focal surface, matching the column approach used elsewhere in the app. The next-session card stays at the top. Below it, the master plan takes the left two-thirds of the page as the dominant surface, while Worlds, Players, Sessions, and Plotlines stack in that order down a single right-hand sidebar — pushing the day-to-day reference material out of the way of the story you're actually writing. Dividers between sidebar sections and the vertical rule between the plan and the sidebar are now rendered in the same muted, low-contrast tone used elsewhere in the app instead of the harsh white rules that used to fight the dark theme. On narrow screens the sidebar collapses below the plan rather than squeezing it.
- ✦Handouts now show their image and rich text — when you open a handout on its detail page or in the side-drawer preview, it now leads with the image your players will see and renders the description as rich text — headings, lists, bold, italic, links, and inline images all survive from the editor to the viewer. The DM-side preview now matches exactly what players see on the public share link, so there's no more guessing about what's about to land in the table chat. Non-handout pages are unchanged — they keep the existing plain-text lore italic for their descriptions.
Fixed
- ✦Harsh white dividers gone from every page — thin bright hairlines had been creeping back in between sections on the campaigns, sessions, and world detail pages (and elsewhere). They were the result of a long-standing theme bug where certain divider opacity shortcuts silently fell through to the page's text colour instead of the subtle divider colour, painting a near-white line every time. Every page now uses the correct soft, low-contrast divider consistently.
- ✦Terms & privacy agreement now always appears on first sign-in — users signing in with Google were sometimes able to reach the app without being shown the terms & privacy prompt that email/password users saw during sign-up. The prompt now reliably appears before any other UI on first sign-in, can't be dismissed with Esc or by clicking outside, and is recorded against your account so signing out and back in (or coming back tomorrow on a new machine) never un-does it. If the agreement is ever missing on a later sign-in, the prompt comes back until it's accepted. Email/password users see no change in behaviour.
Beta Version v1.8.1
2026-04-21Added
- ✦Clone worlds, campaigns, and entity pages — a new Clone button on world, campaign, and entity-page detail screens duplicates the item with a single click. Cloning a world deep-copies every page, plotline, timeline, and uploaded image, then opens the copy so you can rename it and tweak from there — perfect for spinning up a parallel-universe variant of your setting, a sandbox to experiment in without touching the canonical world, or a head-start template for a new campaign. Cloning a campaign copies the plan, world links, and party roster but starts the session log and plotline progress fresh, which is the right shape for "run the same story with a new group." Cloning an entity page copies the page's map, portrait, notes, tags, and templated fields; any `@`-mention inside the copy that pointed back at the original now points at the clone so you can edit freely without the two diverging invisibly.
Improved
- ✦The Web is now in the sidebar — the relational graph view has graduated from the dashboard tile into a proper top-level nav entry, sitting between Timelines and Tags. It's reachable with one click from any page in the app instead of only from the dashboard.
- ✦Search pane now finds campaigns and sessions — the search pane in the session runner, the campaign Master Plan, and The Web can now search across campaigns and sessions as well as entities, plotlines, and timelines. Campaign results open a detail view with the linked worlds, a quick count of players / sessions / plotlines, and a list of sessions you can drill straight into. Session results show the DM's session plan, the in-session notes, and the recap, with a one-click link into the session runner. On The Web, clicking a campaign or session node on the graph now opens its details in the pane instead of only recentring the canvas.
Fixed
- ✦Create Campaign dialog now opens centred and fully visible — the New Campaign dialog on the campaigns page was opening off-centre and clipping its title at the top of shorter screens, so you had to scroll the page to even see the heading. It now sits centred in the viewport on every screen size, keeps its title bar pinned at the top, and scrolls its own content internally when the form is taller than the window — the page behind it no longer scrolls along with you.
- ✦Rich-text sanitiser updated to the latest security release — the library that scrubs pasted and editor-rendered HTML before it reaches the page has been updated to pick up upstream security fixes. No behaviour change for you; just keeping defences current.
- ✦Security headers now applied to every response, including images and other static assets — a handful of response-header best-practice signals (HTTPS enforcement, MIME-sniffing protection, clickjacking protection, and a few others) were already being set on the main app pages but were missing from the edge-cached image and asset responses. They now ride on every response regardless of what's serving it. No behaviour change you'll notice; just closes the remaining gaps a security scan surfaced.
- ✦Search pane category headers no longer have a bright white line under them — the headings above Timelines, Plotlines, and Entity Pages in the session runner, Master Plan, and The Web search pane were supposed to show a faint low-contrast divider, but were instead rendering a harsh near-white rule that fought the dark theme. The divider now uses the intended soft low-opacity white, so each category reads as a quiet label rather than a heavy banner.
- ✦Renaming an entity now updates every `@`-mention of it — when you renamed an NPC, location, item, or any other entity page, existing `@Old Name` mentions scattered through your session notes, plotline descriptions, campaign plan, and session plans kept showing the old name. Every mention now resolves to the current title the moment the rename saves, both in read-only views and while you're editing. The same applies to session mentions — renaming a session in the runner updates every `@`-mention of it across the app.
Beta Version v1.7.0
2026-04-22Changed
- ✦New payment provider — Polar — The GM Deck has moved its checkout, subscription management, and receipts from Paddle to Polar. Polar is now the merchant of record for every subscription, which means your card statement, email receipts, and VAT invoices will show Polar handling the transaction on behalf of Mirrorhead Creative (the business behind The GM Deck) rather than Paddle. The pricing page now opens Polar's embedded checkout, and the Manage subscription link in Settings now opens the Polar customer portal for updating payment details or cancelling a plan.
Beta Version v1.6.0
2026-04-20Added
- ✦Public Roadmap page — a new Roadmap link in the landing-page top nav opens a live list of what's being built next, grouped into In Progress, Planned, and Shipped. Each item shows a title and an optional short blurb, and the order on the page matches the order the team plans to tackle things in. The page is visible to anyone — you don't need to sign in to see it — and refreshes automatically so you always see the latest version without a redeploy.
Improved
- ✦Softer search pane in The Web, session runner, and Master Plan — search-result rows and section headings now use a subtler separator that sits properly against the dark theme instead of reading as a stack of near-white hairlines. Row hover has been nudged a touch brighter so the affordance stays obvious against the softer rules.
- ✦The Web — filter chips are grouped by Worlds and Campaigns — the chip row above the graph now splits into two clearly labelled groups with a thin divider between them, instead of a single row under a generic "Filter:" label. With more than a handful of worlds and campaigns it's now immediately obvious which chip filters which dimension. Empty groups collapse out of the bar, and the Clear button still sits pinned to the right.
Fixed
- ✦The Web — filter chips no longer scatter the graph — toggling a world or campaign filter used to reset the force layout and fling every remaining node out from the centre. Filters now fade nodes in and out on the existing layout, so the graph you built up stays exactly where it was and the chips feel instant instead of disruptive.
- ✦The Web — connecting lines no longer disappear when filtering — a follow-up to the change above: the first time a filter was toggled, every edge between nodes would vanish until the page was reloaded. Edges now stay drawn between any two nodes that are still visible, and hide cleanly only when one of their endpoints is filtered out.
- ✦The Web — search pane stays in its column — on wide screens the search pane on the right-hand side could shrink to its content height or stretch past the viewport when a long result list was open. It's now pinned to the column it was allocated, and long result lists scroll inside the pane rather than pushing the graph canvas around.
Beta Version v1.5.0
2026-04-20Added
- ✦The Web — A new visual graph view under a dedicated tab on the dashboard. See all your worlds, campaigns, and entities laid out as an interactive, pannable, zoomable force-directed graph. Click any node to inspect it, and use filter chips to focus on specific worlds or campaigns. The graph updates in real time as you build, giving you a high-level bird's-eye view of your entire campaign at a glance. (DUN-171)
Improved
- ✦Feedback form matches the rest of the app — the category dropdown and message textarea on the Give feedback popup were rendering with a white background that jarred against the dark theme. They now use the same raised-surface and divider tokens as every other form control in the app.
- ✦World page keeps its shape as you page through — on a world page with more than one page of entities (or timelines, or plotlines), the grid used to collapse to whatever fit on the last page, pulling the pagination controls up into the middle of the section. The grid now always reserves a full page's worth of space, so clicking Next and Prev feels steady instead of making the layout jump.
Fixed
- ✦Version badge is always accurate — the small version number pinned to the bottom-right of the app now moves in lockstep with every release instead of occasionally lagging behind.
- ✦Changelog dates — every prior release in this file that previously read "Unreleased" now carries its real release date.
Beta Version v1.4.0
2026-04-20Added
- ✦Send us feedback from anywhere in the app — a new Give feedback button sits pinned at the bottom of the left sidebar, just above Settings. Click it and a small popup opens where you can pick a category (Bug, Feature request, Other), type what's on your mind, and optionally tick Remain anonymous so the team sees the message without seeing your name or email. The current screen you were on and your app version get attached automatically, so we have the context to actually act on what you send. A thank-you confirmation shows once it's been received, and you can keep working without leaving the page.
Improved
- ✦Dashboard count numerals — the small count shown next to each dashboard card's icon (Worlds, Maps, Campaigns, Sessions, Timelines, Tags) has been restyled. The old pill with a pale outline and utility-font digits has been replaced with a borderless gold numeral set in the same Cinzel display face as the card titles, so the number reads as deliberate page typography rather than a debug tag. The numeral sits in a muted gold at rest and deepens to the full accent gold when you hover the card, matching the card title and "Open →" treatment.
- ✦Icons on cards now use the new set — the six dashboard cards (Worlds, Maps, Campaigns, Sessions, Timelines, Tags) have swapped their coloured emoji for the monochrome dynamic icons already used in the sidebar, so the dashboard is visually consistent with the rest of the app. Icons sit in a muted gold at rest and brighten to accent gold on hover, in lockstep with each card's title and count. The main icon on every Worlds, Campaigns, and Timelines list card has been migrated off the old lucide glyphs to the same set, including the timeline cards shown inside a world's detail view.
- ✦Entity icons now match their card accent — on world pages, the small type icon on each entity card (NPC, Location, Item, Encounter, Faction, Lore, Roll Table, Notes, Vehicle, Other) now tints to the same colour as the card's left-border accent stripe. Previously the icon used a separate palette — NPC was purple but the card border was green, Location was emerald but the border was sky, Item was amber but the border was yellow — so the two never quite lined up. The per-type hue is now single-sourced, so picking up an NPC card and an entity icon beside it reads as the same colour at a glance.
Beta Version v1.3.1
2026-04-20Changed
- ✦New icon set for menu and entity types — every icon in the left sidebar (Dashboard, Worlds, Campaigns, Sessions, Maps, Timelines, Tags, Trash, Settings) and every entity-type icon (NPC, Location, Item, Encounter, Faction, Lore, Roll Table, Notes, Vehicle, Other) has been replaced with a custom, dedicated icon set. The new icons are monochrome and inherit the colour of their surroundings, so hover/active states and per-entity-type colour coding look sharper and more consistent than the previous mix of Lucide glyphs and emoji. Behaviour is unchanged — same layouts, same sizes, same click targets — only the artwork changes.
Beta Version v1.3.0
2026-04-20Added
- ✦Trash — undelete for everything important — deleted a world, campaign, timeline, page, or plotline by mistake? It now lives in a new Trash view (sidebar → Trash) for 30 days, grouped by type and sorted by when you removed it. One click restores the item and it's back in its normal list exactly as it was. A second button, Delete forever, hard-deletes the row for good with a confirmation prompt. Trashed items no longer show up anywhere else — dashboard counters, lists, search, public share links, and scheduled session reminders all hide them automatically, so deleting something still feels like deleting while you get a safety net underneath.
Improved
- ✦Accessibility polish — The GM Deck now reads and navigates properly with the keyboard and with assistive tech. Press Tab from anywhere and a "Skip to main content" link appears, letting you jump past the sidebar without having to tab through every link. Every interactive element — buttons, links, chips, toolbar icons, filter tags — now shows a visible gold focus ring when you reach it with the keyboard. Dialogs and drawers (page previews, plotline details, the Terms-of-Service gate, the create/edit overlays) now trap Tab inside while open and return focus to whatever you were on when you close them. Icon-only buttons (the inline rename confirm/cancel, filter-chip remove, rich-text toolbar) have proper labels so screen readers announce their purpose. The rich-text toolbar announces itself as a toolbar with each button's name and pressed state. If your system has "Reduce motion" turned on, decorative animations (fade-ups, shimmer, glows) are held still; functional loading spinners keep spinning.
- ✦Snappier, calmer loading — list and detail pages now paint shape-of-content placeholders in the same layout as the real content (world/campaign cards, entity grids, map tiles, tag clouds, the upcoming sessions rail), instead of a single "Loading…" line. When your data finishes arriving the real thing slots in without the page jumping around.
- ✦Lists stay fresh across tabs — open The GM Deck in two browser tabs and they now keep each other in sync. Delete a world or rename a campaign in tab A and tab B's list updates on its own, without you having to reload it. If you come back to a tab that's been sitting idle for more than 30 seconds, the current view quietly refreshes in the background so you're never staring at stale data.
- ✦Instant deletes with safe undo — deleting a world, campaign, or timeline now removes the card from the grid the moment you click, instead of waiting for the server. If the delete fails (network dropped, permission changed), the card reappears and a toast pops up offering a one-click Retry. No more clicking a button and waiting on a spinner before you know whether it worked.
- ✦Honest error messages — the plain browser `alert()` box that used to fire on delete failures has been replaced with a themed toast that names what went wrong ("Couldn't delete \"Faerûn\". Please try again.") and offers a Retry button inline.
- ✦Save-state indicator — a small pill above the version badge now shows at a glance whether your latest edit has reached the server. It flashes Saving… while work is in flight, Saved for a moment once it lands, Offline (N queued) when your connection drops, and Error — retry if anything fails. Clicking the pill opens a popover listing every outstanding change and recent error with per-item Retry / Dismiss buttons — so you never have to guess whether your last click stuck.
- ✦Rename titles in place — click the title on any world, campaign, session, timeline, plotline, or entity page and it flips straight into an input you can edit. Press Enter or click away to save, Escape to cancel. Keyboard users can Tab to the title and press Enter to start editing. No more opening a separate edit form just to fix a typo in a name.
- ✦Breadcrumbs on deep pages — entity, timeline, and plotline detail pages now show a small trail at the top (e.g. *Faerûn › Locations › The Yawning Portal*) so you always know where you are and can jump back up a level with one click. On narrow screens the middle of the trail collapses into a "…" you can expand.
- ✦Paste from Google Docs, Notion, or Word without the mess — pasting formatted text into the rich editor now keeps what you actually want (headings, bold, italic, links, lists, tables) and quietly drops the source-specific clutter those apps bury in the HTML. Pasting an image from your clipboard uploads it to your world and inserts it inline. Shift+Cmd+V (Shift+Ctrl+V on Windows) still pastes as plain text.
- ✦Empty screens now tell you what goes there — every list, grid, and section that used to show a generic "No items yet" line now explains what the surface is for and gives you a one-click button to create the first one. Land on a fresh world and the entity tab tells you "NPCs are the characters, creatures, and villains that inhabit your world" with a *Create your first NPC* button. The same treatment covers worlds, campaigns, timelines, maps, tags, plotlines, plotline stages, campaign players, and campaign sessions — so a blank section is now an on-ramp instead of a dead-end.
Beta Version v1.2.0
2026-04-19Added
- ✦Vehicles — a new entity type — The GM Deck now ships with a first-class Vehicle category alongside NPCs, Locations, Items, Encounters, Factions, Lore, Roll Tables, Notes, and Other. Twenty-three starter templates cover the full range of D&D transport: water craft (Rowboat, Sailing Ship, Warship, Galleon, Longship, Raft, Submersible), land vehicles (Wagon, Cart, Carriage, Chariot, Caravan, Mount, War Mount, Siege Engine), air vessels (Airship, Flying Mount, Skiff, Dragon-drawn Chariot), magical and planar conveyances (Apparatus, Construct Vehicle, Planar Vessel, Teleportation Carrier), plus a Generic catch-all. Every vehicle shares a common spine — Owner (NPCs or factions), Current Location, Crew, Passenger Capacity, Cargo Capacity, Speed, HP, AC, Cost, and Condition — and adds template-specific extras like rigging, draft animals, lift mechanism, and planes accessible. Vehicles appear everywhere entity types do: the world page filter tabs, the quick-create menu, the create/edit form picker, the templates page, the world export, and the tags drill-down. In-world rich-text mentions of vehicles render as cyan chips.
Improved
- ✦Sign-in screen confirms a fresh account — after entering the six-digit code at the end of signup, the login page now shows a gold-accented "Account confirmed" banner above the sign-in form. No more landing on a plain "Welcome back" screen wondering whether the code actually worked.
- ✦Session runner plan / notes editor fills the column — in the live session view, the Plan, Notes, and Campaign tabs now use a viewport-locked editor that always fills the available height of the left column. Scrolling happens inside the text box itself rather than around it, so the toolbar stays put and you can always see where you're typing — matching the behavior of the campaign master plan page.
- ✦Refreshed email branding — every email The GM Deck sends (sign-up confirmation, password reset, account invite, email-change verification, session reminders, and calendar invites) now carries the real logo and the same palette as the app. The old hand-drawn "GM" wordmark has been replaced with the proper lockup, the dark card matches the site's surface colour exactly, and a three-line footer ("The GM Deck" / "Master your world." / ©) closes every message.
- ✦Dashboard at-a-glance totals — each card on the dashboard (Worlds, Maps, Campaigns, Sessions, Timelines, Tags) now shows a count pill next to its icon, so you can see how much of each resource you own without opening it. Counts load after the cards paint, so the dashboard still appears instantly.
- ✦Group, sort and filter entity lists by template — open a world, pick a single entity type (Locations, NPCs, Items, …) and you'll see a new set of controls for cutting the list by its template. Every card shows a small template chip next to the entity type. A new "Group" button next to the sort dropdown switches the grid into collapsible sections — one per template — so 80 locations break into scannable buckets of Regions, Dungeons, Taverns, and so on. A template filter bar above the search row lets you click chips to narrow to one or more templates, with a count badge on each. A new "Template A → Z" sort option orders the flat grid by template name, then by title within each template. All three choices — sort, group-by, and the selected template chips — persist per user, per world, per entity type, so jumping between NPCs and Locations doesn't clobber your setup on either. The controls hide on the "All" tab, where template names overlap between entity types.
Changed
- ✦Dashboard greeting — the dashboard now greets you with "Welcome, Game Master" instead of "Welcome, Dungeon Master", reflecting that The GM Deck works for any tabletop system, not just D&D.
- ✦Landing page focus — the "View Example World" secondary call-to-action on the hero has been removed, along with the standalone `/demo` preview page behind it. The Shattered Crown demo world still powers the interactive entity web, timeline, and map visuals on the landing page — but there's no pre-built world to install into your account. When you sign up you start with a blank slate, the way we think you should.
Beta Version v1.1.2
2026-04-19Improved
- ✦Resend code cooldown — the "Resend code" link on sign-up and password-reset now shows a 60-second countdown after each send (e.g. "Resend code (47s)"), dimmed and disabled until it elapses. Prevents accidental double-taps from generating a second code while the first is still in flight, and gives the email a beat to actually arrive before another attempt.
Beta Version v1.1.1
2026-04-19Improved
- ✦Redesigned landing page — the front page has been rebuilt around a cinematic, scroll-telling layout. Full-bleed atmospheric artwork, alternating feature sections with real product shots, an embedded live dice roller you can try before signing up, an interactive entity web, a draggable timeline, an FAQ that answers the actual questions people ask us, and a pricing preview — all with context-specific calls to action instead of six "Sign up" buttons. Respects your reduce-motion preference: parallax pauses, the physics dice swap for a static roll surface, and every section still reads end-to-end.
Added
- ✦Example world preview — a new `/demo` page shows the Shattered Crown demo world read-only, so you can see what a filled-out world looks like before creating an account. Linked from the new hero's "View Example World" button.
Fixed
- ✦Landing-page prices now match the pricing page — the landing page's pricing preview was showing hardcoded placeholder numbers (£5 / £9) that didn't match the live Paddle prices shown on the full pricing page. Both surfaces now pull from the same source: live Paddle prices localised to your currency, with a single shared GBP fallback when Paddle is unreachable. No more mismatched numbers.
Beta Version v1.1.0
2026-04-19Improved
- ✦New "Other" entity category — entities built from freeform custom templates now live in a dedicated Other category instead of a generic "Custom" bucket, so they slot naturally next to NPCs, Locations, and the rest of the built-in types.
- ✦Refreshed interface across the app — every page has been rebuilt on a unified visual foundation. Buttons, inputs, cards, modals, and navigation now share a consistent rhythm — subtle shadows, tighter corners, smoother hover states, and quieter dividers. The dark-and-gold D&D feel is intact; it simply breathes more evenly. Existing data, layouts, and keyboard shortcuts are unchanged.
- ✦Respects your "reduce motion" setting — if you've enabled reduced-motion at the OS level (accessibility preferences on macOS, Windows, iOS, or Android), the app now honours it: transitions collapse to instant, and decorative animations stop running. Focus rings and hover states still show — they just don't fade.
Fixed
- ✦Custom template section header shows the template name — the field section on the entity create/edit form was displaying the template's internal ID (e.g. `trap_encounter Fields`) instead of its friendly name. It now uses the name you gave the template.
Beta Version v1.0.0
2026-04-17The 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.
Alpha Version v0.23.0
2026-04-16Added
- ✦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 — a new permanent-premium account tier. Eligible users are recognised automatically on sign-up and greeted with a welcome splash on their 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.
Alpha Version v0.22.0
2026-04-16Added
- ✦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
- ✦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.
Alpha Version v0.21.0
2026-04-16Added
- ✦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.
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.
Alpha Version v0.20.0
2026-04-15Added
- ✦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.
Alpha Version v0.19.0
2026-04-15Added
- ✦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.
Alpha Version v0.18.0
2026-04-15Fixed
- ✦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.
Alpha Version v0.17.0
2026-04-14Added
- ✦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.
Alpha Version v0.16.0
2026-04-14Added
- ✦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.
Alpha Version v0.15.0
2026-04-14Added
- ✦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.
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.
Alpha Version v0.14.0
2026-04-14Added
- ✦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.
Alpha Version v0.13.1
2026-04-13Fixed
- ✦Account verification emails not arriving — After the 0.13.0 release, sign-up verification codes were not being delivered. Verification emails now arrive correctly.
Alpha Version v0.13.0
2026-04-13Improved
- ✦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.
Alpha Version v0.12.0
2026-04-13Added
- ✦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.
Alpha Version v0.11.0
2026-04-12Improved
- ✦Custom domain — The app is now served from `dev.thegmdeck.com` (staging). Production will use `thegmdeck.com`.
Alpha Version v0.10.0
2026-04-12Added
- ✦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.
Alpha Version v0.9.0
2026-04-12Added
- ✦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.
Alpha Version v0.8.0
2026-04-12Added
- ✦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.
Alpha Version v0.7.2
2026-04-12Added
- ✦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).
Alpha Version 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`.
Alpha Version v0.7.0
2026-04-11Added
- ✦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.
Alpha Version v0.6.4
2026-04-11Fixed
- ✦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.
Alpha Version v0.6.3
2026-04-11Added
- ✦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.
Alpha Version v0.6.2
2026-04-11Added
- ✦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.
Alpha Version v0.6.1
2026-04-11Fixed
- ✦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.
Alpha Version v0.6.0
2026-04-11Added
- ✦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.
Alpha Version v0.5.1
2026-04-11Added
- ✦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.
Alpha Version v0.5.0
2026-04-11Added
- ✦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.
Alpha Version v0.4.0
2026-04-10_No public-facing changes._
Alpha Version v0.3.0
2026-04-10_No public-facing changes yet._
Alpha Version v0.2.0
2026-04-10Added
- ✦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.
Alpha Version v0.1.0
2026-04-10Added
- ✦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.