Session Deletion Fix
Deleting a session no longer fails when your campaign has auto-generated timeline entries. Previously, removing a second session could hit a database constraint error and block the delete entirely.
Changelog
Features, improvements, and fixes shipped to Quill.
Deleting a session no longer fails when your campaign has auto-generated timeline entries. Previously, removing a second session could hit a database constraint error and block the delete entirely.
Until now your companion could talk about your campaign — now it can build it. Describe an NPC, a location, a quest, a magic item, a session, a story beat, an encounter table, or a piece of world lore in chat, and the companion writes it straight into your campaign: filed in the right place, checked against what is already there so nothing is duplicated, and ready for you to edit. Tell it what happened at the table and it keeps your world up to date for you.
Opening a new companion chat now tells you what it is for and, more usefully, what it remembers: the conversation is saved per campaign, your material is re-read before every answer, and clearing the chat never touches your campaign. There is a full companion guide behind the guide button in the panel header too.
A menu opened from a row near the bottom of the window used to run off the edge and get cut off. Menus now open upward when there isn’t room below, and a long one scrolls instead of overflowing.
If an imported scene names a parent that doesn’t exist — a typo, or a scene that isn’t in the file — it was quietly created at the top level instead. The results screen now says so, and the review step flags an unresolved parent before you confirm.
The Overview button stayed in the header on pages that have no overview panel, where clicking it did nothing. It now appears only on the campaign workspace, where the panel it opens actually lives.
Who is on watch was shown only by a colour tint. Assigned characters now carry a tick, each shift is numbered so the order is clear however you have named them, and a shift with nobody on it says so in red instead of showing nothing. Downtime rows now say which characters have plans, and both sections show when a change is saving.
Fixing a reference’s label or URL from a scene used to mean unlinking it and adding it again. References now have an edit button right on the row, and since a reference is shared across your campaign the correction follows it everywhere. The open and unlink controls now match each other, and the file-type icon no longer looks like a third button.
Your players’ inventory page showed every item twice — once in All Items, again under the party pool or whoever is carrying it. It is a single list now, with filters for the pool and each character, and tapping any item opens its full details. Previously that only worked in one of the three lists.
Items now have a proper detail view — click an item’s name anywhere in your inventory to see its description, damage, charges, attunement, value and weight without opening the edit form. Players get the same view on the portal by tapping an item, so a magic item can finally explain itself. Each field has an eye beside it: hide value from the party, or notes, or anything else, per item. Your DM notes and the cursed flag never reach the portal at all, and an unidentified item still gives nothing away.
Every item outside the staged list now carries a Visible or Hidden tag, so you can tell at a glance what the party can see on the portal — and see the change land when you toggle it. Tags also moved to their own line beneath the item name, so a heavily-tagged item no longer buries what it is called.
Treasure could only be tied to a scene at the moment you created it there. Now any item can be attached from its menu — on the scene panel or the full inventory page — and a scene can pull in items that already exist through From Campaign Inventory. Attaching only records where something was found: nobody loses what they are carrying.
Editing an item staged for a scene quietly detached it: the item disappeared from that scene’s Treasure list and turned up in the campaign inventory instead. Edits now leave the scene and session an item was found in alone.
An item could carry eleven tags at once, which wrapped into a tall block and buried its name in the narrow scene panel. Tight layouts now show what matters at the table — status, type, rarity, charges, cursed, unidentified, attunement — and keep the bookkeeping tags (community sharing, library link, portal visibility, category, magic bonus) for the full inventory page, where there is room for them.
Items already in the party pool were faded to half opacity, which made their names and tags hard to read and never explained itself — and a sold item looked exactly like an ordinary pool item. Rows are full strength now, both groups carry a heading, and Used, Sold and Archived items wear a badge. A sold item also shows what it brought in.
Marking an item Sold or Used was a one-way trip — nothing in the menu could bring it back, so a misclick meant deleting the item and re-adding it. Those items now offer Return to Pool. Item actions also show a spinner while they save instead of quietly dimming the row.
The Treasure section had four identical-looking buttons competing for attention. Add Treasure is now the single primary action, with Generate Treasure and From Library — other ways to reach the same result — in the menu beside it. Reveal All moved there too, and instead of disappearing when nothing is staged it now tells you how many items it will reveal.
Encounter tables can roll a d4. The dice roller always had one, but tables started at d6 — so a four-result table meant padding it out to six. Existing tables are untouched.
Changing an encounter table’s die or switching it to weighted used to sit silent while it saved, and Save buttons only greyed out — which reads as “not allowed” rather than “working on it”. The table header now shows a spinner while settings save, and Save shows a spinner with “Saving…” when editing a table row, a talking point, or saving a table to your library.
Fixing a typo in a talking point no longer means deleting it and typing it again — every point has an Edit option now. You can also put them in the order you want to raise them: drag by the handle on desktop, or use Move up and Move down from the row menu on mobile. Works the same for a scene’s talking points and an NPC’s.
The prep sections in the scene overview panel now fit the panel. Encounter tables read as three clear zones — dice settings up top, rows in the middle, Add row and Roll together in a footer — with save and delete moved into the row menu instead of crowding the header. Treasure and reference actions sit two across instead of stacking four full-width buttons, and every remove button across DM Notes, Talking Points, Checklist, Watch Schedule and References is now the same size and shape.
After a structured import, the type shortcuts on the results screen did nothing — every one of them dropped you back on the default upload screen. Clicking Quests now lands you on CSV with Quests already selected, and Mixed Notes becomes JSON (all types), since a JSON file already carries every type. The companion path is unchanged.
Cover images and battle maps referenced by URL in an import were silently dropped, with the results screen reporting them as skipped. Every external image fetch was failing before it left the server. Scene covers, maps, and their pins now come through as written.
Export JSON failed with a download error instead of handing you a file — the export looked up your campaign by the wrong column, so it could never find it. Both entry points work now: the whole campaign from the import page, and a single scene with its children from the scene tree.
Pasting notes via the Companion now pulls out checklist items, NPC and monster links, loot, and encounter tables for every scene — the same rich content that Structured JSON import already supports. Re-importing onto an existing scene merges additively, just like Structured: checklist items matched by key, links as a union, loot by name, and encounter tables added if the scene has none.
Found a bug? Have feedback?
Report an Issue