Version 3.13 – Form improvements and kinder regressions

Posted by

on

in

We’ve devoted a lot of thinking on Kanka’s entry forms with this update, and changing our philosophy of what happens when a campaign no longer has its premium features enabled.

Form improvements

We spent far too much time pondering on forms this month. We had a lot of crazy ideas that were tested internally, but we decided to instead scale down our own ambition and focus on incremental improvements that don’t require users re-learning how to use Kanka.

When creating or editing an entry, the image is now right next to the name – it’s the first real field of any entry! We’ve also replaced the 3 awkward buttons with a singular preview and dropdown.

entry form image

To make it really modern, it’s now possible to change the selected image without having to first remove the current one. One less click? More like unbridled progress!

entry form image dropdown

We’ve also changed the Name field to show the current module’s name for slightly better clarity. The “Add an alias” button is now also more prominent, we know a few of you missed it being to the right of the label.

The gallery image selection interface has been tweaked somewhat to be faster to parse. Folders clearly appear as folders with how many images are inside. The “small/big” layout toggle now saves the current state in the browser so you don’t have to re-click it all the time.

entry form gallery selector

It’s also now clearer if there is no image found for the search term instead of showing a blank dialog box.

entry form gallery search

We’ve also moved the privacy checkbox into a button and dropdown to more briefly explain what each option does. This makes it easier to see if what you’re working on is private or not without having to go and load the Permissions tab. This re-uses the same UI concept that was recently added to articles.

entry form privacy

Kinder regression

Up until today, campaigns that no longer have their premium features enabled would hide the information instead of deleting it. For most users, this however is the same thing. This is especially egregious when a campaign ends. You might move on to greener newer campaigns, but you still want to go and look at all the fantastic worldbuilding (or terrible npc names and accents you previously committed to), only to have part of your worldbuilding hidden from you.

We thought about two ways of handling this situation. We could offer an “archived premium campaign”, where campaigns become frozen in time but keep all the premium features. That would involve complicating our pricing even more, trying to figure out the economics, do a lot of changes to the code, break lots of things, and just spend a lot of time and effort when a simpler, more obvious solution is right in front of us.

Let AI manage your worldbuilding absolutely not.

Instead of disabling premium features, we’re just disabling adding more content to premium features. We already introduced this with custom categories – you can no longer add entries to them, but the existing ones still exist.

So without further ado, here are the changes.

  • Plugins -> stay active, you can still toggle them on/off, update them, but you can’t install new ones.
  • Custom CSS -> stays active, but you can no longer add or edit it.
  • Entry header image: stay active instead of being disabled. Can’t edit/add/remove them from existing entries.
  • Custom dashboards: stay active, can’t add new ones or add widgets to them.
  • Articles with custom layout: stay active and render. Can’t add a new post with a custom layout.
  • Custom sidebar: stays active. Can reset it to Kanka’s default, but can no longer edit it.
  • Custom category names and icons: stay active, but can no longer edit them.
  • Category placeholders: stay visible, but can no longer add new ones.

We believe these changes to be fair. Other features (webhooks, limits, ads) stay unchanged.

Improvements

Behind the scene, the framework used to build Kanka has been updated to the latest version (Laravel 13).

We’ve also improved the campaign cache to be a lot lighter. On campaigns with lots of custom dashboards, it saved the whole model of each to the cache instead of just a simplified representation. This saves multiple megabytes of data on complex campaigns that no longer needs to be loaded on every page.

We recently changed the colour of links in the base theme of Kanka, which lead to them being less readable. This has been changed again to be closer to the old colour, and we went ahead and underlined them when in the description of an entry or article for even more clarity.

The “recent colours used” in the colour picker have been refactored to use your browser’s local storage instead of a cookie. What this means is that these values are no longer sent to Kanka’s servers on each request, making it ever so slightly faster to load. We are on the lookout for more such optimisations where data is better stored in local storage vs a traditional cookie.

The organisation’s members table can now be bulk edited and bulk deleted.

org members bulk actions

Subscription / PayPal changes

Up until now, only yearly subscriptions could be paid using PayPal. They also didn’t auto-renew, and the upgrade process from one tier to another didn’t always work. In our last release, I made it so that they could be renewed in advance to avoid members losing their benefits.

Behind the scenes, we basically had two payment systems. One for credit cards using Stripe, and one giant custom mess for PayPal. Every view, flow and code had to have multiple if-else statements to split normal members from Paypal members. It was a mess.

Today, all the custom code for PayPal is basically stripped out of Kanka, leaving only behind enough to keep our existing PayPal subscribers. From now one, PayPal subscribers will use the Stripe workflow (Stripe added PayPal as a payment method a few years ago).

This means that people who prefer to use PayPal can now also pay for monthly subscriptions, and that the upgrade path is built in, and that people can switch between paying with a credit card or PayPal at any point.

I’ve also removed all the code to handle payment methods in Kanka, with users being able to handle those directly in Stripe (a link is present from your payment methods page). This means you can also save multiple payment methods and simply set a preferred default, and it never transits on our servers.

What does this all mean for existing PayPal subscriber? You keep your subscription as is, with all your bonuses, for up to a year. After that, you can resubscribe using the new workflow, and stop worrying about it. What it does mean is that you can no longer upgrade while paying with the old system, and you will have up to a few hours of free-campaign status when transitioning to the new system when your current subscription ends. As a reminder, your bonuses will simply be frozen for those few hours, no data or settings will be lost.

Oh, and as an added bonus, you can now subscribe using an Amex and Discovery card. We’re also looking at supporting other payment methods in the new feature (Klarna, Przelewy24, Pix to name a few).

Bug fixes

Monthly owlbear subscribers can once again switch to the yearly owlbear tier. Also fixed the math that calculated how much you’re going to get pay when upgrading (it would get progressively worse as time went by).

Fixed the max file size helper text for Elementals.

Multiple references to the max file size for various subscription levels were inconsistent depending on where they were communicated.

Fixed a bug where changing a map’s image distorted the selected image.

The search field in the command center now auto-focuses when it’s opened.

Fixed a bug where the upcoming yearly subscription email would sometimes calculate the wrong upcoming billing date.

When exporting an entry to markdown, it’s parent is now also included.

Lastly, searchable select fields in dialogs/modals are now rendered “above” the dialog so that they don’t get squished in.


That’s it for this update, which closes our quarterly bets. We’ll now focus on roadmap requested features for the next update.

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.