We’re back with another quality of life update! This time we are focusing on improving the experience around attributes and abilities.
Attributes
Managing attributes on entities is a big part of many people’s experience with Kanka, yet the UI and especially UX for them was stuck in designs from 2017.
Let’s have a look at the new interface for managing attributes on an entity.

Let’s focus from top to bottom. At the top, it is now possible to filter attributes based on their name or value, as well as filter to show hidden attributes (a feature for character sheets)

Next up, it is possible to bulk delete and toggle private/public attributes.

Loading from a template no longer requires a page refresh, attributes are directly loaded into the current form to be tinkered with.

Random attributes from templates are automatically assigned a value when they are loaded in.
At the bottom, the buttons to add attributes of different types are now always visible once the big “plus” button is clicked. Random attributes are now also available on all entities, not just templates, and will save a value when saved.

Range attributes automatically become lists to select from.

Lastly, if you accidentally deleted an attribute, hitting ctrl z on your keyboard will recover it.
Rendering
The default rendering has also been improved, with sections clearly visible, and section-less attributes all gathered into a collapsible uncategorised section.

The previously janky ‘live edit’ on mouse hover feature has been replaced by a pencil icon that is always visible to the right.
Abilities
Entity abilities also get a new UI. Abilities are stilled grouped by their parent abilities, but these no longer filters at the top of the page, hiding important information.
Instead, each parent ability is shown with a way to quickly toggle them open or closed.

Abilities now also display their tags.
Abilities with no parent ability are grouped at the end, clearly explaining that is going on for newcommers to Kanka.
Posts
Premium campaigns can now recover deleted posts in the usual place (settings > recovery). Posts also get a new “history” feature like for entities, that tracks the changes done to them over time.


General improvements
inventory sections can now be deleted with the click of a button.

Character races can now be set as private, for example to mark a character as a vampire without revealing it to your players. When viewing a character, the races section in the sidebar gets an pencil icon to control its races.

Clicking the pencil icon opens up a new popup, which allows you to re-order the character races, and toggle which ones are public or private by clicking on the lock icon.

Users get notified when their ideas get implemented. Subscribers will automatically upvote their ideas on approval by our team.
Webhooks can now be set so that private entities don’t trigger them.
When clicking on an entity link, and clicking on don't ask me again, kanka now saves the domain name and not just the url.
Lastly, our Brazilian users get a new pricing in their local currency to avoid high conversion fees.
Removed features
On entities, the ‘private attributes’ feature has been removed. Entities that have it enabled can disable it, but it can no longer be enabled, as attributes now have a bulk-private feature.
API changes
The characters endpoint now has races and private_races to split the two. Races include all races to not break existing tools, while private_races only list races marked as private on the character. It is not yet possible to set a character race as private through the API.
Under the hood
Several massive changes happen with this update that aren’t directly visible to our users.
Firstly, all of Kanka’s forms had to be re-written, as the underlying library to render forms was deprecated and removed from Kanka. This means over 1900 files were modified, meaning we might have missed some issues while testing.
While re-writing every form, we also added proper checks on most to see if Kanka is currently down or in maintenance. Users will now be alerted when trying to submit a form, and hopefully won’t lose their data. We’ve also made most forms validate dynamically, which also leads to less lost data.
That was the easy part. The second big re-write has to do with Kanka’s javascript. We have removed 99% of all calls to jQuery from our own code, only needing it still for the text editor and dynamic select fields.
We are working on a replacement for both of those and hope to be jQuery free by the end of the year.
Lastly, with us introducing BRL pricing, we’ve also rebuilt our whole subscription system to allow more currencies in the future.
Bug fixes
Fixed a bug where deleting a campaign wouldn’t always delete its associated images from our storage.
Images from Discord using the image url field can be used again.
Fixed an issue where copying an entity would copy over private attributes from the source.
Calendar birthdays now properly get re-calculated each day for auto-advancing calendars.
The entityData object is now properly available to character sheet creators.
Fixed multiple bugs where moving an entity from one campaign to another would keep old data related to the original campaign.
That’s it for the overview of this 2.5 release. You can follow along what we’re working on next on our roadmap.
As always, thanks to our amazing subscribers for making this huge updates possible! Come join us on our Discord to get early sneak peaks of future updates.

