Hey everyone! It’s been a while since my last weekly. The stuff I’ve been working on has been dense, and after long weeks it was hard to sit down and write technical posts reviewing everything. But, I’m working on some exciting things, so it's time to fill you in.
Overall, the new text editor has been a huge hit, and has remedied many issues with the text editing experience. There are still things to improve and bugs to fix. I’ve been shipping small updates, and I expect to be fixing small editor bugs for many months. In my time building this, I’ve learned that a real text editor is never truly finished. 😉
Justin and I have been working on a brand new landing page. The current one is outdated, and we don’t think it has the energy that LegendKeeper deserves. Building worlds is exciting! Wrenching new realities from the thoughtlands! Manifesting microcosms made of pure will! We think it needs more “pop”. We’re nearly done with this, and I’m excited to unveil it—especially as Timeline gets closer to completion.
Speaking of which, I’ve gotten a lot of our new timeline feature done. Special thanks to Wasp from Fantasy Calendar for help with some tricky cyclical math. The hard parts of the timeline reckoning are all done; now my focus is on UI and giving the it a great user experience. I’ll ship the timeline view first, and then calendar view and others will come later.
It’s unlikely we’ll build something as sophisticated as Fantasy Calendar for the calendar pieces; it’s self-evident that calendar-editing is an entire product experience on its own, and I’d like to keep LK lean. Maybe there’s room for a cool integration here for hardcore, custom-calendar-heads. For those that want to work in systems that are similar to the Gregorian calendar, I’m confident the experience will be super smooth. For those that want to get tricky with leap days and intercalary months and interval months and other witchcraft, you’ll have to do some menu diving, but the support will be there, but maybe not in V1.
I'm most excited about clever ways for integrating time elsewhere in the app. Linking to dates, seeing events that occurred before or after a date, etc. I want the timeline to ground you in your world’s context and enable you to write compelling, world-cohesive prose. Having used the timeline feature internally a bit, the impact of the “great calamity” becomes so more real when you can see it on a timeline, relative to your other world events.
I've got other things in the works as well: Tag management, reworking roles and permissions, overhauled secrets system, etc.
Developer Nerd Stuff; here be dragons:
On the crunchier side of things, I’m still in the middle of the “legacy to New LK” conversion. For those unacquainted, LK’s public view runs on a new codebase that’s well organized, because I knew what I was building when I built it. The application at app.LegendKeeper.com that can do all the editing is the messy legacy codebase that I scrapped together over time. It’s an ancient, creaky behemoth that uses old tech and has long build times. The goal is to move all functionality to New LK and retire Old LK ASAP.
That said, I’ve reached a point where I can’t wait 30 minutes every time I want to rebuild the Legacy LK project. It has a bunch of outdated-dependency-death-loops, making it difficult to update to modern standards. For the techy among you, it’s an old ejected Create React App, and even modern CRA is not great. So, what I’ve done instead is copy paste everything into a new Vite project. This worked… surprisingly well, and cut my hot reload times down from 3 minutes (!!!!!) to 1 second, and my build times from 30 minutes (!!!!!!!!!) to 2 minutes. As you can imagine, waiting 3 minutes every time I make a change is a miserable experience. There’s still a few oddities I need to fix before speed-boosted legacy LK is ready to go live, but this re-frameworking will help me limp-sprint legacy LK across the finish line.
While doing this, I’ve also abstracted LK’s most important functions into well-separated libraries that have strict dependency rules. This means keeping LK up-to-date will be a breeze in the future, as it will no longer be one big, self-dependent module, but dozens of concise mini-modules with tight interfaces.
Anyways, enough of that. Long story short: timelines are coming, a new landing page is coming, and a better LK overall is coming!