Hiyoo! Let's give this another shot, yeah?
LegendKeeper's largest update ever, Hydra, aims to make LegendKeeper the world's most creator-friendly worldbuilding app. I'm excited to present it to you!
LegendKeeper will automatically download the new update, and then prompt you to refresh in order to apply it. After that, you will see an update dialog when you open your project:
(This is a huge update, you may need to log out and log back in, or even clear your cache for app.legendkeeper.com. It should work fine without this, though.)
EDIT: There's been one case of the migrator skipping a couple wiki pages. It doesn't seem to be widespread but I'm keeping an eye on it. If this has happened to you, let me know and I can help you restore them. :)
Offline support
Many of LK's systems now work offline:
- The wiki works completely offline, allowing you to edit offline and sync up your changes later. Conflicting edits are gracefully merged together. The data is stored in your browser cache, so if you make offline changes, be sure to go back online before clearing your cache! Offline will not work in incognito mode.
- Search now works completely offline! This one was tough!
- Export works completely offline. Full data ownership for you! Never be a hostage to internet and server outages!
- The Atlas tab mostly works offline. You can pin and edit from the atlas just fine, though map tiles will need to be viewed once before they are store for offline use. I'll be improving this in the future.
- The Assets tab works best while online. While offline, you can view assets you've already viewed, but you can't create new assets. I'll be improving this in the future.
- You can't create a brand new project or invite users offline, so keep that in mind.
Enhanced real-time collaboration and syncing
This update should put the days of LK sync issues behind us. LK's infrastructure has been re-written from the ground up, optimized for speed and robust data synchronization. Your data edits are first written to your local database, and then synced after, which means no dropped updates.
Better templates workflow
Templates have been moved from the Assets page to the Wiki. You create a template by simply putting a page in the "Page Templates" folder. The template selector in the creation dialog has also been reverted back to its old, simpler filter-and-search model. "Templates as assets" was an interesting experiment, but it was ultimately too clunky. As a feedback point, would you like a way to hide or disable templates entirely?
Secret secrets
Secrets no longer appear for members with Edit Rights to a page. This works fairly well. If someone tries to delete a text range that contains a secret they can't see, the delete won't go through. I'll be adding a minor update soon that allows you to selectively reveal secrets to individual users.
Nested templates
Creating a page using a template now manifests sub-templates. For example, you can create a town template, with Tavern, Inn, and Shop sub-templates. When you create an article with the town templates, the Tavern, Inn, and Shop will be automatically created for you.
Wiki Auto-reveal
When you navigate to a page, the wiki sidebar now attempts to find that page in the sidebar, open any subfolders in its path, and scroll it into view.
Main tab
You can now rename the main tab. Tab reordering coming soon.
Enhanced Presence
You can now see when other users are viewing the same page as you, in realtime.
And, the realtime cursors have been dramatically improved.
Version Control
The versions menu now does full version tracking. You can save multiple versions of a document, and compare changes over time. This is barebones right now; in the future I'll be adding auto-versioning, "restore to this version", and other stuff you might expect.
Page Locking
You can now use the page menu in the top right to lock a page, preventing its text from being edited until you unlock it.
New UI
The creation dialog and settings screen got new designs, bringing them more inline with the visual quality of the rest of the app.
Some relaxed defaults for permissions
The last remaining global permission, "Can create articles", has been removed. Users can create pages regardless of their role. I was looking around and pretty much all wikis allow any collaborators to create new content. If one of your members is making a bunch of pages you don't like... just kick them out. :D
Tons of performance tweaks
I used this opportunity to examine and profile LK's performance. I did tons of optimizations, looking for hotspots and bits of jank here and there. Overall, LK should feel a lot more responsive.
Unfortunately for such a big update, there's not a lot to really show off! It's very much an iceberg scenario, where 90% of the work is actually invisible from the outside. For the curious, here's a brief list of what's underneath the tip of the iceberg: A new, high speed binary protocol for all data transfer. An overhauled, offline-ready client with multi-threading in browsers that support it. A brand new backend written from the ground up. A fully agnostic data transport layer, allowing me to create real-time, offline capable features easier. Tons and tons of unit and integration tests. A few critical UI automation tests. Removed Google analytics because boo google.
For me, the most exciting thing about this update is it makes all future features way easier to build.
Changes to LK's security model
With Hydra comes some important changes to LK's security model that you should know about. To make offline support possible, the client now stores a lot more data locally than it did before. I want to fully disclose to you that a very tech-savvy member of your project could datamine their local database, and extract secrets and hidden pages. They'd really have to go out of their way to do this, but it's possible.
So going forward, make sure you trust the people you are inviting to your projects; think of it as sharing a notebook with locked pages. Your friend could bash open the locks, but... they wouldn't be a very good friend. I did my best to obfuscate as much as I could, but obfuscation is not true security. This was a tradeoff that I thought was worth it for a great offline experience. All that said, someone has to be explicitly invited to your project to access its data; project membership, access, and invites are still cryptographically secure and managed by the server.
The public sharing features coming in the next major update do not require offline support, and therefore won't have the same caveats; public pages, when they come, will be served as static HTML pages, and thus can't be datamined. So if you want to invite shady internet strangers to your project, wait for public sharing. And like any application, it's smart to regularly back up your projects. I'll be making backup and restore easier in the near future.
What's next?
* A quicker update cycle. The Hydra update cycle was abnormally long. From now on, we'll be returning to our more regular update cadence, aiming for 1-2 smaller updates a week.
* Desktop apps. Hydra makes desktop a reality! Once it's stable and I've squashed any major bugs, I will release desktop apps for Windows, Mac, and Linux. Hopefully within the week.
* Polish and QoL. Tons of little QoL requests have piled up over the past few months, blocked by the juggernaut Hydra update. I'll be polishing up a lot of stuff that's long overdue for cleaning, such as the text editor.
* Enhanced sharing. Public sharing links, public projects, etc.
* Community Content Hub. A place where content creators can easily share their work.
* Relations, timeline, calendar, etc.
* Some secret things. Some parternships, some collabs, some cool new stuff.
This has been a wild ride! I'm excited to move on to the next chapter of LK's development. :D Let me know your thoughts, and come report bugs in the Discord!