Releases 0.9.360 – 0.9.368: Change Log

Between February and May, we deployed a host of enhancements, bug fixes, and performance improvements. This included measures to combat spam and abuse, a fix that drastically reduced the size of PDF downloads containing Chinese, Japanese, or Korean characters, and a big Rails upgrade.

Many thanks to first-time contributor Saphron!


  • Coders: Albert Pedersen, alien, Bilka, Brian Austin, Ceithir, Claire C, EchoEkhi, Eliah Hecht, irrationalpie, Ivedonestranger, james_, Potpotkettle, Saphron, Sarken, warlockmel, weeklies
  • Code reviewers: Bilka, Brian Austin, Ceithir, EchoEkhi, printfn, redsummernight, Sarken, ticking instant, weeklies
  • Testers: Anh P, Bilka, Brian Austin, Claire C, Claire P Baker, dazyndara, intyalote, Jenni D., Jennifer D2, Keladry, lydia-theda, Maine, Nrandom, Priscilla, Runt, Sam Johnsson, Sarken, Teyke, therealmorticia



We did a quick deploy with some minor changes on February 10.

  • [AO3-6680] – We updated our automated code style checker.
  • [AO3-6630] – We updated the gem used for our performance and error monitoring system.
  • [AO3-6613] – Our site footer and GitHub README now specify that the Archive’s code is licensed under GPL-2.0-or-later, instead of just saying GPL.


Our February 26 release included improvements to caching on comments, work headers, and the Languages page, as well as smaller file sizes for PDF downloads of works with Chinese, Korean, or Japanese characters, and the ability to use the flexbox layout model in skins.

  • [AO3-3207] – Adding works to a series or changing their order didn’t always update the header of existing works in that series. That was quite confusing, but we fixed the bug so now series behave correctly.
  • [AO3-3463] – The timestamp on comments used to be cached, causing it to display in the timezone of the person who first accessed the comment. We’ve now moved it out of the cache, so logged in users will see the timestamp in the timezone they’ve set in their preferences, and logged out users will see the timestamp in UTC.
  • [AO3-5803] – Challenges allowed setting a minimum of 0 requests or offers for sign-ups. Not only does that not really make sense, it resulted in not numbering things correctly. We now require a minimum of 1 for both (and while we were at it, updated the form to show errors better).
  • [AO3-6042] – To help us work on translating emails, we have a bit of code that controls whether users can select a language they’d like to receive emails in. We discovered that if we turned it on and someone chose a language, they’d continue to receive emails in that language even after we turned it off. That’s not good, because the main reason we’d turn it off would be because something was broken. We’ve fixed it so everyone will receive emails in the Archive’s default language (English) when language selection is off.
  • [AO3-6265] – The text in comments was left-aligned even when the text was in a right-to-left language, so we’ve fixed that.
  • [AO3-6377] – The page title that displays in your browser tab for the Edit Profile page will now say “Edit Profile” instead of “Edit User.”
  • [AO3-6526] – If you tried to add a co-creator who was suspended or banned, the error message would tell you the user was suspended or banned. We think that information should be private, so we removed it from the error message. Now it will just tell you the user can’t be added as a co-creator.
  • [AO3-6575] – We updated the AO3 News sidebar to work better with assistive technology like screen readers.
  • [AO3-6598] – We had a bit of code related to challenge sign-ups that would run unnecessarily in some cases and twice in other cases, slowing down the whole sign-up process. We’ve fixed it so it will only run once, and only when needed.
  • [AO3-6652] – Our shiny new PDF generator had an unfortunate side effect: truly massive PDFs for works containing Chinese, Japanese, or Korean characters. We’ve updated the code to fix that, and our sysadmins have done some server upgrades to let us use that code, which required a newer version of the PDF-generating software.
  • [AO3-6681] – We fixed some intermittent failures in our automated tests for orphaning.
  • [AO3-6678] – Our dependency updater bumped our version of nokogiri from 1.14.3 to 1.16.2.
  • [AO3-5728] – You can now use flexbox in site and work skins!
  • [AO3-6134] – We updated our tests so they no longer use the discontinued Delorean gem.
  • [AO3-6430] – We’ve updated our code to use the term “allowlist” instead of “whitelist.”
  • [AO3-6667] – We added some caching to the Languages page and started rounding some of the larger numbers to make the caching less obvious.
  • [AO3-6679] – A few releases ago, we changed the way we handle session cookies. The change included some code to help us transition from the old way to the new way without logging everyone out. Now that we’re done with the transition, we’ve taken that code out.


We updated our Ruby version on March 14! (Don’t worry, you didn’t miss a release. We just had a little trouble with the version number.)

  • [AO3-6647] – We’ve updated Ruby to 3.1.4.


On March 22, we deployed a few small issues so Systems could change some things on their side.

  • [AO3-6685] – We updated our automated tests to use the update! method in place of plain ol’ update. This will give us more obvious errors if things go wrong.
  • [AO3-6596] – Accessing the help text for users who’ve just logged in for the first time used to give a 500 error if you were logged out. Now it prompts you to log in instead.
  • [AO3-2151] – If you’ve ever tried to remove a related work from the Edit Work page instead of the Related Works page, you’ve probably gotten a 404 error in the process, even though the related work was removed. Now you’ll be redirected to the Edit Work page.
  • [AO3-6695] – Our dependency bot updated our code style checker. Automation is a wonderful thing!
  • [AO3-6696] – We configured our gem manager to install fewer gems when running the GitHub Workflow for our linters. This should speed up the automated process of checking our code for style issues.


On April 1, we deployed some bug fixes and improvements, which included preventing blocked users from giving you unsolicited gifts, and adding a link to landing pages for fandom tags.

  • [AO3-6320] – Trying to create tags that included a ^ would result in error messages missing part of the tag. We’ve fixed that, which should make the error message far more helpful.
  • [AO3-6676] – If you joined a moderated collection from the Collections page, all of the “Join” buttons on the page would update their text to “Leave,” creating the impression you had joined all of the collections (which you hadn’t). We’ve fixed it so only the collection you actually joined will have a “Leave” button.
  • [AO3-6689] – Some screen readers weren’t able to access the the navigation items in the “Hi, username!” dropdown menu, so we took the opportunity to modernize the HTML for the site’s main navigation.
  • [AO3-4696] – If you go to a canonical fandom tag’s landing page (e.g., Les Misérables – Victor Hugo), you’ll find a new link to a page containing all of the relationship tags for that fandom.
  • [AO3-6502] – If you block someone, they can no longer give you a gift work. (However, because blocking doesn’t apply to challenges yet, they can still give you a gift that fulfills one of your challenge requests — but you can refuse that gift at any time.)
  • [AO3-6564] – To reduce the potential for abuse, we’ve prevented images from displaying in comments on news posts, pseud descriptions, sitewide banners like we use for fundraising drives, bookmark notes, and support tickets and abuse reports.
  • [AO3-6623] – The work listings for individual series are now paginated, so if a series contains 100 works, they will be listed across five pages instead of piled onto one.
  • [AO3-6628] – Our font list had a very useful, but kind of ugly, font as the third fallback option. We’ve rearranged the list so it will only be used if there’s no other choice.
  • [AO3-6701] – We fixed some automated tests that were failing one or two times out of every 50 runs, which was just plain annoying.


We did a quick deploy on April 2 to allow our Development & Membership team to update the fundraising banner during the drive.

  • [AO3-6486] – We created a new admin role for our Development & Membership volunteers.
  • [AO3-6691] – We added some custom rules to our code style checker, so now it will do some of our reviewing work for us.


Our April 30 release included seventeen issues, including multiple performance improvements and some changes to help deal with ongoing spam attacks.

  • [AO3-4308] – In our ongoing mission to prepare all of our emails for translation, we’ve now updated the email that existing AO3 users get when Open Doors archivists import works belonging to them.
  • [AO3-5054] – Kudos didn’t always get the message when the kudos-giver updated their username. We’ve fixed that bug, so now they’re with the program.
  • [AO3-5283] – There was a rare bug where admins would get an error when dealing with spam works that were deleted. We’ve updated our code to handle this scenario better.
  • [AO3-6594] – If you had a location in your profile at one point and decided to remove it, the empty “I live in:” section would linger in your profile just the same. We’ve told it to go away.
  • [AO3-6703] – Some tests weren’t running due to a rake task calling exit, which means they weren’t catching problems with the code. We’ve fixed it so they’ll run.
  • [AO3-5865] – We’ve tidied up the Edit Multiple Works form so its fields are arranged in a more familiar way (i.e., the same way they’re arranged on the regular posting and editing form).
  • [AO3-6297] – Our downloads code was using a rather old library to manage different file types. However, the old library had license issues, so we’ve updated to use the library recommended by the Rails team.
  • [AO3-6336] – The bookmark code was set to retrieve bookmarks in descending order by ID. Unfortunately, we couldn’t override this behavior in places where we wanted to list bookmarks in a different order. We’ve updated the code so this is no longer the default ordering and is instead applied only where needed. (In other words, you won’t notice any changes.)
  • [AO3-6592] – We improved the code for counting series in pseud and user sidebars. This should particularly help performance for the orphan_account, since it has so many.
  • [AO3-6608] – If you deleted your pseud’s icon, the text describing it for screen readers would stick around. We fixed that bug, so no more Schrödinger’s pseud icon.
  • [AO3-6634] – We added a new admin role for the Board Assistants Team Committee.
  • [AO3-6669] – To make looking up non-canonical tags in autocomplete faster, we started looking them up from Elasticsearch.
  • [AO3-6705] – We updated our local development scripts to use the more up-to-date version of Docker Compose.
  • [AO3-6716] – Our automatic dependency updater updated our automated code style checker again! This is why we automate these things.
  • [AO3-6719] – The places where we recently began stripping image embeds (in the April 1 deploy) will display the image’s URL instead of removing it entirely. We also made it possible to easily adjust where images stripping is applied if we face another spam attack.
  • [AO3-6491] – As described in our post about spam protection measures, we changed which comment settings are pre-selected when posting a new work. Now it’s set to “Only registered users can comment,” but you can change it at any time.
  • [AO3-6721] – Our automatic dependency updater updated our automated code style checker yet again! Your eyes do not deceive you, this release has 2 (!) code style checker updates.


On May 12, we upgraded to Rails 7.

  • [AO3-6674] – We upgraded our gems and configuration files to Rails 7! (There are still a few more things we need to do to be thoroughly done with this update, though.)
Archive of Our Own
  1. mm commented: