Third Week Site Update
It’s our third week on Idunn, and we’re finally coming off the peak of transition-related activities. Only 75 changes shipped, but still plenty to talk about.
Most of this week’s work was a deliberate sweep through everything reported since the cutover. We fixed 23 issues across two days, nearly all of them from your bug reports. We also found time for a few feature requests: topics can be merged, the user guides are now searchable from everywhere, and announcements stopped disappearing forever.
Merging Topics
Long-requested, and now here. We’ve had the Split feature for some time, and now its analog is available. Use Merge to fold multiple topics back into one.
From a forum’s manage menu, choose Select Topics, tick the ones you want, click Merge, and pick which one is the destination.
-
Posts are re-ordered by date, interleaved across all the merged topics. A merged combat thread reads in the order it was actually played, and dice rolls stay attached to their posts.
-
The destination keeps its own title, access settings and pinned state. Nothing about it changes except that it now has more posts.
-
Old links still work. The merged topics move to the Recycle Bin and their links forward to the destination, so bookmarks, quoted permalinks and notifications don’t break.
-
Followers are combined, and unread counts add up — posts you hadn’t read stay unread.
-
Deadlines on the merged topics are switched off, since the topic they applied to no longer holds the conversation. Set a new one on the destination if you still need it.
There are two limitations worth mentioning. (1) Merging is confined to one game (across different forums of that game is fine). If you need to merge across multiple games, simply move the topics into the same game first. (2) Merging can’t be undone: while the merged topic shell ends up in the game’s Recycle Bin, the posts have already been moved away and their original location isn’t preserved.
Topics that are the designated discussion thread for an announcement, a game ad, an application or a moderation report are skipped rather than blocking the merge. The rest go through and a note names what was left out and why. Such a topic can still be the destination; it survives with its link intact.
User Guides Are Searchable Now
The user guides have been growing steadily and were reachable only by browsing. Now you can get to that information in four ways:
-
The search box in the site header now suggests guide sections as you type, with a breadcrumb telling you which part of which guide you’d land on. Guides open in a new tab so you keep your place.
-
The search page has a Help & Guides section alongside posts, topics, games and ads.
-
The guide pages themselves have a search box. This one works whether or not you’re signed in, which matters most for prospective members who don’t have access to search the site yet.
-
Ishmael’s
/helpcommand in Discord searches the same guides and links straight to the relevant section.
All four run the same scoring code, so the same question typed in any of them gets the same answer.
We’re also recording which searches come back empty, since a question we have no answer for is the most useful thing a search box can tell us. The first day of real use was immediately instructive, and not in the way we expected. Of 21 distinct searches, 13 found nothing, and most of those were game systems and settings: Forgotten Realms, Liminal, Hard City, Year Zero, Tales of the Old West. People are using it to look for games and sheet templates, not documentation. That’s a discovery problem rather than a writing problem, and it’s worth knowing on day one.
The genuine documentation gap in that list was “how to print sheets” — which is a real and currently unanswered question, and one we owe you a proper fix for rather than a guide section.
When a Search Is Too Big to Finish
On the evening of August 12 the database went from nearly idle to working about ten times harder than normal. The cause turned out to be one person searching for the word “Language.”
That term matches roughly 400,000 posts. Tracking down that many results took more than 30 seconds and timed out. Even worse, the timeout resulted in a clean empty results page, indistinguishable from “nothing matched.” So the user reasonably retried with different filters, and three copies of an impossible query ended up running at once.
What changed:
-
A failed search now says it failed. If a section of the results couldn’t be completed, you get a warning naming it and suggesting a narrower term or Search Within, instead of an incorrect zero.
-
The post search gives up after 6 seconds rather than 30. Thirty seconds spent on a query that was never going to return just wastes your time. Searches that were already working are unaffected; they finish well under two seconds.
-
Typing in the Author and Character filters no longer fires a search per keystroke. Typing “Seth” was dispatching four separate searches inside one second.
-
There’s now a per-person rate limit on search, since one user was able to start four full-archive scans by hand.
That having been said, the underlying problem isn’t fixed. We’ve bounded the damage and made the failure visible, and it’s now measuarable for the first time. The real fix is a change to how the post archive is indexed, and it’s designed but not built. Roughly 86% of all posts live in games that are completed or archived, so a search for active content needs only about a seventh of the archive it currently reads.
Announcements Stop Disappearing
Site announcements expire, and until now expiring meant gone. Seventeen of the nineteen community announcements ever posted had already expired, which is a lot of “wait, what did that say?”
-
Every announcement has its own page now, so it can be linked to and read after it expires. Bell notifications point there.
-
Past Announcements lives in the profile menu, just above Mark Site as Read.
-
An announcement can have a linked discussion topic. Previously this was done by hand; both of the recent site-update posts were an announcement plus a manually created thread. Now it’s a checkbox and a forum picker, and the announcement carries a Discuss this link. This works for game announcements, too.
Community staff also get a Reach column showing how many people were notified, saw it, and dismissed it.
Your Images, and Not Uploading Them Twice
Three people asked variations of the same question this month, which turned out to have three separate causes.
-
The Reuse picker can now see your OGMW and Baldr images. When you insert an image, the Reuse tab listed what you’ve used before, but it was only ever showing images uploaded to Idunn. Everything from before the cutover was invisible to it: almost 100,000 images belonging to more than 30,000 users. One reporter had 359 old images and 58 new ones, and had been re-uploading from their PC for months.
This matters for more than convenience: old images don’t count against your storage quota, so reusing one is free where re-uploading the same file costs its full size. There’s no toggle to find — old and new are one list now, because where an image happens to live is our storage history and not something you should have to think about mid-post. (No, you can’t moved images to the old bucket to save quota. No one is even near the quota. Don’t worry about it.)
-
Uploading a file you already have now offers you the existing copy. Measured across the storage bucket, 13% of stored bytes are exact duplicates — 1GB of it belonging to the same person as the original. When you upload something identical to a file you already have, you’re offered Use my existing copy or Keep both; the Storage tab marks duplicates with a badge and has a Duplicates filter that shows whole sets, so you can see what a copy is a copy of. The oldest is treated as the keeper, since it’s likeliest to be the one already embedded in your posts (and, depending on its age, doesn’t count against the quota either).
-
“In use” now tells you where. The Storage tab would say a file was in use and give you nowhere to go. Of 6,959 files marked in use, 1,894 (27%) had no clickable destination at all. Every one of them now gets a plain-language phrase instead of a bare count (“a post attachment” rather than “1 attachment”), issues, issue comments and games became real links, and the rest are named with an honest “no page to link to.” In theory there shouldn’t be any that we don’t know where they belong, but we won’t show dead links anymore.
One case is worth spelling out: a file held only by earlier versions of a post is kept on purpose, so your edit history stays intact. It now says that, rather than linking to a post where the image isn’t visible any more.
Shift+Enter on an iPad
Reported as “Shift+Enter does not produce a line break on an iPad,” and it took a new diagnostics page to see what was happening.
The editor library deliberately treats Enter differently on iOS. Preventing its default behaviour confuses the on-screen keyboard, so it lets the browser handle it and replays the keystroke afterwards. The replay is a plain Enter. Your Shift was being thrown away by design, so the editor only ever saw a request for a new paragraph. Both the on-screen keyboard and a Magic Keyboard were delivering the modifier correctly; it just never survived the round trip.
Now the keystroke is caught before that happens, on iOS and iPadOS only, so everywhere else behaves exactly as it did. (And if it doesn’t… you know where to post it.)
The Calendar
A cluster of related breakage, all fixed:
-
All four calendar subscription feeds were broken. If you’d subscribed a game calendar, a personal calendar or the aggregated feed to Google Calendar, Apple Calendar or anything else, it wasn’t working.
-
The subscription address you’re given is now a full URL, so copying it actually gets you something you can paste.
-
Creating and updating event reminders was broken, and reminders were firing for games that had been archived.
-
Archived games’ events have left your dashboard and the aggregated feeds. A finished game shouldn’t still be telling you about its session times.
Editor Fixes
-
Clone Selection no longer takes the editor down. Cloning a partial selection — half a spoiler, part of a table — produced a crash rather than a clone. It now inserts the clipped fragment as you selected.
-
The color picker doesn’t crash on Android anymore. Thirty occurrences across eight people, every one of them Android, all from applying a text color. Fixed, and cleaned up a related case where an unnecessary color modification was being registered.
-
The emoji picker doesn’t hide behind dialogs. Previously it shared a layer with the modal backdrop, so clicking an emoji from behind an OOC dialog dismissed the dialog. We brought it correctly to the front, so you can drop in those orcs from a nested editor.
-
Fieldset titles now keep their formatting, where they were being incorrectly dropped due to an encoding sequence.
-
Editors inside dialogs got their missing tools. Composing inside a nested editor — an OOC popover, a fieldset title — didn’t offer the character palette, and mentions there didn’t know what game or topic you were in, so the suggestions were wrong.
-
Tables have a Position control. Text-wrapping was a real property of tables that no control could set or clear — so a table that arrived from the old site with text wrapped around it could not be un-wrapped by any supported means. Table ▸ Properties now offers one Position setting with five choices: Left, Center, Right, Wrap left, Wrap right. It replaces the old Alignment control rather than sitting beside it, which avoids two adjacent settings where “Right” meant two different things.
-
Mobile list rows are no longer crushed. A minimum touch-target height was being treated as fixed, squashing rows whose content ran to more than one line.
Games, Applications and Sheets
-
Application topics respect changed ad privacy. If a GM made a recruitment ad private after applications had been filed, the already-filed application threads kept their old, wider access. Fourteen threads were readable beyond the applicant and GM, eight of them on live ads. Repaired, and the access is now re-derived whenever ad visibility changes.
-
The Applications breadcrumb pointed at a hidden forum instead of the game tab, and the Applications list wasn’t showing topic tags the way the forum view does.
-
The game calendar now shows only when it can be seen. Previously, we had a mismatch between being able to read the game vice read the calendar; calendar now follows the same ruleset as other resources.
-
Tab bar entries no longer outlives deleted content. A tab pointing at something since deleted stuck around, and Remove didn’t reliably remove.
-
“Linked to a game” works again on the sheets list. It had been pointing at the retired old-site URL since the cutover — and, because of a separate bug, never rendered for anyone at all, which is why nobody reported it. 21,072 sheets across 7,826 people have that link, and all of them now resolve to a real game page.
-
Twenty-six duplicate field ids in the Dark Eye 5 sheet are resolved. Three distinct causes hiding behind one symptom.
-
Changing someone’s role on a shared sheet now works as expected.
Signing Up and Returning Members
-
Registering with an email or username you’ve already used says so helpfully. It used to answer “Resource already exists,” which is a sentence written for a computer. It now tells you the account exists and offers you sign-in and password reset. Given we just cut over to the new site three weeks ago, this actually happens a lot — 205 attempts in the last nine days.
-
Email verification is now recorded properly, and linking a Discord account requires a verified email. Six accounts had linked to the community Discord without ever verifying an address; they’ve been removed from the Discord server until after they’ve verified with the forums.
All quiet on the spambot front as well. We’re continuing to monitor.
Moderation, and an Audit Trail That Wasn’t There
-
Reporting was impossible on downloads and blog comments. The report button was there; submitting it returned an error, and that particular error was hiding itself from our logs.
-
Post content is no longer written into our error logs. When the editor hit an error it included the post body in the diagnostic record. Redacted at the point of writing rather than case by case, and the existing rows were cleaned up.
-
Bulk moderation actions were never being audited. Bulk post deletion since May 17 and bulk post moves since June 15 wrote no audit rows at all — the record was being written to a list of permitted actions that didn’t include them, and the failure was silent. Fixed.
-
Staff have a game management screen. Games were the last major thing on the site with no staff view — archiving a game or cancelling its recruitment was only reachable if somebody had filed a report, and the alternative was staff walking into the GM’s own interface, which leaves an audit trail indistinguishable from the GM’s. There’s now a proper page for it.
-
Splitting from a restricted-read topic would have dropped it to forum-level access, publishing posts more widely than the original. It never actually happened — all seven splits on the site were from unrestricted topics — but ~65,000 carry a restriction that would have triggered it. Fixed before it could be a problem for you.
An Hour at 100%
On the evening of August 14, one of the two web servers spun up to 100% load and wouldn’t budge. We terminated it and the site recovered as expected. Because of the load sharing between the two nodes, no one saw any actual performance impact, but we’ve put in place some additional logging to track down similar occurrences if they happen later.
Meanwhile, Behind the GM Screen
-
Search is properly measurable now. Every search request was being recorded under a label that lumped it in with everything else, so the section of our monitoring meant to catch exactly the August 12 problem couldn’t see it. Eighteen search timeouts were sitting in logs, seen by nobody. We found the incident from database metrics, not from the alarm designed to catch it.
-
A dashboard that was measuring 5% of what it thought it was. The new member-activity instrumentation shipped quietly two weeks ago; its first readout revealed a scoping bug that meant it was recording only about a twentieth of the people it was meant to cover. Fixed and verified against production before anybody drew a conclusion from it.
-
Unread tracking got lighter. A set of data was being written and maintained on every read and never once queried. Deleted, along with a planned optimisation that turned out to be solving a problem the recent unread-count work had already removed.
Every Site Update So Far
-
Site Updates — Feature Freeze & the Road to Cutover, June 26 to June 30
-
This announcement — August 9 to August 15
What’s Next
-
Try the guide search, and tell us what it can’t answer. Every empty result is a signal, and we’re counting them. Day one already told us people expect to find games and systems there, which is a fair expectation and something to think about.
-
If you’ve been re-uploading images, check the Reuse tab. Your entire pre-cutover image library is in there now, and it costs nothing against your quota. If you have lots of duplicates, reach out to us via the Issue Tracker and we can look at running a consolidation script.
-
Keep filing. Twenty-three of this week’s fixes were somebody’s report. Several of them (the iPad line breaks, the sheets game link, the storage question) were reported precisely enough to fix without any additional investigation. Details matter!
-
Feature requests. Most of the past three weeks have been spent fighting fires and shoring up infrastructure based on actual measurements. We’ll soon be turning to your feature requests, so if you have ideas, make sure to put them in the issue tracker.
Keep on weaving those myths!