Hide your unused NPCs and abandonned plot hooks, we’re back with an important update!
Search improvements
We’ve redesigned and merged our quick lookup and full-text search into a single unified interface, rather than hiding full-text search behind a page.
Clicking on the search button now brings up a Search interface. Hitting ⌘F toggled full-text search with previews of where the text comes up.

A handy-dandy recap shows which categories and how many entries come up when in full-text search.
Security improvements
We’ve invalidated every single session, forcing everyone to log in again. We don’t do this lightly, but we’ve made several important security changes that warrant this change.
We’ve tightened our session rules, changing the session idle timeout from 30 days to 120 hours. We originally upped it when introducing two-factor authentication to avoid having people type in their OTP every two hours. We’ve also refactored how OTP works for the code to be valid for 30 days. Basically we made our sessions less secure by having such a long timeout when we introduced OTP, and we’re fixing this.
But more importantly, we’re adding a new settings/security page in your account to see all your active sessions and devices, and we’ve added the option to log out other devices.

Improvements
When bulk-editing map markers, it is now possible to toggle the tooltip option of markers.
We’ve also made a bunch more performance improvements, sliming down the Campaign model which gets loaded on every page.
Users using screen readers and other accessibility devices should now have an easier time navigating their worlds, as we’ve added a bunch of markup to elements to better assist them.
API changes
Statuses get their new endpoint campaign/id/category_statuses. Each entity now also comes back with status_id to indicate to which status they belong.
Bug fixes
Fixed multiple bugs with markdown exports (single entries and whole campaigns).
Some interfaces were still referencing our old terminology.
Fixed filtering by parent_id and by empty parent id not working.
Creating a tag on the fly no longer results in an invalid tag error.
Fixed multiple issues with the experimental text editor where mentions would break when editing, and added support for style and class properties on more elements.
Fixed/refactored the code that checks if a user is an admin of the current campaign. It was a mess that was keeping me up at night since 2017. I have purged it and any mentions of the old code from these lands. We shall only ever mention user()->isAdmin() again to children who are naughty and to remind them that evil is always near, and that we must be always vigilant, for the night is dark and full of terrors.
That’s it for this little update. We’ll be back soon with the last items from our quarterly bets, and then start focusing on roadmap requested features.
As always, a huge thank you to our amazing subscribers for making these frequent updates possible. Come say hi on our Discord we share early previews of what’s coming next.

Leave a comment