AO3 News

Post Header

2022-11-03 22:33:28 UTC

In our most recent releases, we focused on two things: restricting which admins can access which admin features, and getting in code changes from as many contributors as we could. We'd like to give special thanks to first-time code contributors Bilka, Cesium-Ice, ellieyhc, Nia Neyna, salt, and warlockmel!


  • Coders: Bilka, Brian Austin, Ceithir, Cesium-Ice, EchoEkhi, ellieyhc, Elz, Nia Neyna, potpotkettle, redsummernight, salt, Sarken, Tara Rosenthal, ticking instant, tlee911, warlockmel, weeklies
  • Code reviewers: Brian Austin, Enigel, james_, redsummernight, Sarken, ticking instant
  • Testers: bingeling, Brian Austin, Claire Baker, Dre, james_, Jennifer D2, lydia-theda, Maine, mumble, Natalia Gruber, petricores, Priscilla, Qem, redsummernight, Runt, Sammie Louise, Sarken, Taylor Clossin, Teyke, ticking instant, VSnow



Deployed on August 31. This release contained an eclectic selection of bug fixes and improvements, including some new tools our Policy & Abuse team can use to protect users.

  • [AO3-6335] - Comments are cached, supposedly for a week. But they kept hanging around longer. We made them stick to the schedule.
  • [AO3-6307] - We ended up translating some wrong things in our prep work for localized emails, but it's fixed now.
  • [AO3-5989] - Link rot came to our Site Skin Wizard. We had a link to a list of colors, but that page no longer existed, so we switched to a list on a different site.
  • [AO3-5962] - We improved the performance of the code that sends out invitation emails.
  • [AO3-5635] - To many, our "You have already left kudos here. :)" message is already an unpleasant sight, and in some cases it was made worse by erroneous extra text. We cleaned that up. :)
  • [AO3-4603] - You can now use keyboard shortcuts to copy text from help pop-ups and other modals, as you should have been able to all along.
  • [AO3-6332] - We bumped our Elasticsearch version to 7.17.
  • [AO3-6264] - We gave our invitation emails a much-needed rewrite.
  • [AO3-6144] - Protected users should not be able to have their works cited as related works.
  • [AO3-6127] - For a long time, admins with database access could hide specific comments anywhere on the site, but regular site admins couldn't. We've reworked the code and added a button so site admins can now do it.
  • [AO3-5601] - When you delete one of your works, the HTML copy that is emailed to you will no longer be a barebones version, but rather match the HTML file you'd get by using the work's Download function.
  • [AO3-2197] - We cleaned up code and moved things around in the database to remove the last remnants of a time when one could leave kudos on a chapter.
  • [AO3-6363] - We bumped the rails-html-sanitizer gem from version 1.4.2 to 1.4.3.
  • [AO3-6208] - We removed some Tag Wrangling functionality with performance so bad that nobody was using it anyway. 😅
  • [AO3-6371] - We've given our Policy & Abuse team the ability to prevent certain users from resetting their passwords. They were technically already able to do this, but we separated it from their ability to protect accounts in other ways.
  • [AO3-6374] - Our handy dependency-updating bot updated the TZInfo gem for us.


Deployed on September 11. We added access restrictions to some admin features, cleaned up some old code, and spruced up a few other small things.

  • [AO3-6384] - There was an automated test that sometimes failed, but not always. We fixed it, that was only for us, it changed nothing for you.
  • [AO3-6370] - In some cases, when trying to sign-up with an already registered email address, the user would see an ugly error (500), instead of a nice error ("Email has already been taken."). Now users always get the nice, helpful error.
  • [AO3-6361] - Some user-related actions by admins were not recorded in the user's history (visible to admins). They now show up there.
  • [AO3-6311] - We erroneously sent too many emails, it turned out. If you deleted a comment of yours, you would still receive notifications about edits or deletions for replies to it. Now you get silence, as intended.
  • [AO3-6280] - We cleaned up the text of the New Invitations email because it was causing issues for our Translation team.
  • [AO3-6077] - The phrasing around series was inconsistent across our site, so we gave it a do-over to get them all in line.
  • [AO3-6364] - We restricted which types of admins have access to the invitation queue.
  • [AO3-6349] - We improved the performance of the code that makes works and bookmarks show up in their respective listings.
  • [AO3-6344] - If someone or something accesses too many pages in a short time, we give them a timeout. We now include the duration of the timeout in our response -- not written on the error page, but in a format that's usable for bots and scripts.
  • [AO3-6343] - We limited which admins have the ability to manage and modify skins.
  • [AO3-5122] - We rewrote the code for the Share option on works and bookmarks so it's easier for coders to work with but still behaves the same for site users.
  • [AO3-3357] - You can now clear out the filters on any filterable page with the press of a single button! Well, link. Whatever.
  • [AO3-6369] - Getting rid of some unused code: Pseuds edition
  • [AO3-6360] - Getting rid of some unused code: Miscellaneous edition.
  • [AO3-6389] - Our automated tests related to External Works no longer fail when URLs aren't reachable.


Deployed on September 24. We made further changes to admin access, cleaned up even more code, fixed some unreliable automated tests, and made a few other small changes here and there.

  • [AO3-6160] - We made sure to use grammatically correct pluralizations on the Delete Pseud page.
  • [AO3-5677] - We cleaned up some code that was never noticeable to users, but bothered our error logs.
  • [AO3-2426] - The Language metadata for External Works is now editable by certain site admins.
  • [AO3-6394] - We further restricted which admins have the power to ban emails from leaving and receiving replies to guest comments.
  • [AO3-6380] - We also further restricted which admins can see the activities of other admins.
  • [AO3-6326] - The "Close" button on the reply form in your inbox was actually a "Cancel" button, so we adjusted the label to reflect reality.
  • [AO3-5779] - Large numbers on the Statistics page were hard to parse. We added thousands separators to make them more readable. (When the interface is translated, each language will use an appropriate delimiter.)
  • [AO3-5719] - The links to chapter end notes could pull you out of chapter by chapter mode. They now let you stay where you are, only transporting you to the end notes.
  • [AO3-6013] - We're now recording the last time Tag Wranglers performed certain actions related to their duties.
  • [AO3-6367] - We did a minor update to get Ruby on Rails to version
  • [AO3-6201] - We said good-bye to some unused code related to our autocomplete fields.
  • [AO3-6041] - We also bid farewell to unused code related to user registration.
  • [AO3-6381] - We limited which admins can access the page for reviewing works marked as spam by our spam detection service.
  • [AO3-6397], [AO3-6398], [AO3-6399], [AO3-6400] - We fixed some test failures that would occasionally happen when the test suite ran too quickly.
  • [AO3-6403] - One of our automated tests assumed September 20, 2022 was in the future, which meant it started to fail on September 20. We did a little time travel and fixed that.


Deployed on November 3. We started using ActiveJob to handle asynchronous jobs from tag wrangling.

  • [AO3-6356] - We changed the way we process asynchronous jobs from tag wrangling so we'll hopefully have fewer errors caused by two similar changes happening at once.
  • [AO3-6406] - Yet another fix for a test failure that occurred when our tests ran too quickly! This one was related to co-creators on chapters.
  • [AO3-6411] - We used a handy dependency-updating bot to update some of our GitHub Workflow Actions... and then promptly had to take the bot out of commission due to one of its bugs, but that's a whole other story.
  • [AO3-6412] - One of the servers needed to be kicked by Systems every time we deployed new code to staging. The server's configuration now gets updated, saving Systems the trouble of kicking it.
  • [AO3-6413] - Our dependency-updating bot came through again, this time bumping the nokogiri gem from 1.13.6 to 1.13.9.