AO3 News

Post Header

2020-12-08 15:06:47 UTC

The last two deploys included a Rails upgrade and a variety of bug fixes and code cleanup. (Life has been turbulent enough, so we're keeping it very boring for us and our users. You're all welcome!)

A special thank you to our first-time contributors, ahiijny and translatorzepp!


  • Coders: ahiijny, Alix R, Cesy, cosette, Elz, Enigel, james_, redsummernight, Sarken, Stephen Burrows, ticking instant, tlee911, Tom Milligan, translatorzepp
  • Code reviewers: james_, redsummernight, Sarken, ticking instant, tlee911
  • Testers: Aline, bingeling, Claire, cosette, GoldenFalls, Harlow, james_, Jennifer D, lydia-theda, Matty, mumble, Nary, Nat, Paula, QED, Qem, redsummernight, Runt, Sammie Louise, Sarken, Taylor Clossin, tlee911



Upgrade to Rails 5.2, deployed on October 1st.

  • [AO3-5765] - In order to stay current with Rails, we had to upgrade from Rails 5.1 to 5.2. A lot of the work involved upgrades to associated gems and fixes for deprecated features that will be removed in Rails 6. A million thanks to everyone who helped out with testing almost every aspect of every single Archive feature (and there are a lot) to make sure everything was still working correctly! An extra special shoutout to Sarken, Nary, and lydia-theda, who went above and beyond to become the top 3 testers in our sprawling spreadsheet. <3!
  • [AO3-3908] - Trying to simultaneously reject and remove a work from a collection would give an Error 500. It's now possible to do both at the same time, as it should be.
  • [AO3-4829] - Changing the default skin (i.e. look of the Archive) would lead to a loss of all styling (i.e. a naked looking Archive) for all users. Now it's possible for admins to designate another skin as the AO3 default.
  • [AO3-4551] - Changes to parent skins would not update the child skin. This has been fixed!
  • [AO3-6033] - We upgraded our code coverage gem from version 0.1.14 to 0.2.0. (As you can see on our GitHub page, 90% of our codebase is currently covered by automated tests that are run whenever someone commits a fix or enhancement!)
  • [AO3-6049] - A few of our tests would sometimes fail for no reason. We fixed them so they should now reliably pass if there are no actual issues.
  • [AO3-6014] - We are now able to specify different robots.txt rules for different Archive installs depending on the full domain name associated with each, so nothing gets erroneously overwritten anymore.


Bug fixes and behind-the-scenes work, deployed on December 8th.

  • [AO3-6083] - We've started using HTML5 data-* attributes for our autocomplete code instead of some old invalid custom attributes.
  • [AO3-5833] - On iOS devices, the autocomplete didn't generally offer suggestions -- it usually just told you it was looking for some. We've tweaked it to make it more likely to provide help.
  • [AO3-5357] - If Creator A listed an anonymous work by Creator B as the inspiration for one of their works, when someone went to Creator B's Related Works page, they would see the anonymous work there... even though the point of anonymous works is to prevent folks from knowing who created them. To preserve anonymity, only Creator B will be able to see their anonymous works on their Related Works page.
  • [AO3-5861] - The "Works in Collections" button on any user's dashboard takes you, rather fittingly, to all of that user's works in collections (save for the anonymous ones, obviously). It's also a way to find all your own works in collections (including the anonymous ones). When accidentally trying to access this page for a nonexistent user, you are now greeted by a 404 page instead of an Error 500.
  • [AO3-6079] - By manipulating the HTML of the bookmark form, it was theoretically possible to change a work's tags. We've changed it so that's no longer possible.
  • [AO3-5168] - If you neglected to fill in a required field when bookmarking a new external work, the rating and category tags you selected would be cleared out and you'd have to reenter it. We've made sure it will be preserved.
  • [AO3-5924] - The Donate or Volunteer page had the browser page title "Donate Home", which didn't make a lot of sense. Now it is "Donate or Volunteer".
  • [AO3-6000] - We renamed the fields on the guest comment form to reduce the chances your browser will helpfully autofill the form with your non-fannish name.
  • [AO3-5925] - The guest comment form didn't mention that you can use HTML in comments, so we added some information about that to the form.
  • [AO3-6007] - Unlike a pseud's works and bookmarks pages, its series page didn't indicate which pseud it belonged to or how many series it contained. Now the header on the page will say "(#) Series by pseud (username)" instead of just "Series by username".
  • [AO3-6006] - Dashboards had a similar problem, in that they'd display only the pseud at the top of the page, but not the associated username. Now the Dashboard also follows the "pseud (username)" convention.
  • [AO3-5820] - When updating the status of items in your inbox, you have to tick a checkbox for the items you want to select. This checkbox was very small and could be hard to select, so we added a label to it to increase the area you can click or tap to tick the box.
  • [AO3-5952] - The text in table headers in right-to-left languages (e.g. Arabic) was left-aligned. We've made it right-aligned instead.
  • [AO3-5987] - The "Share" button on bookmark pages was set up so that all of the sharing options are rendered and embedded in the page, which meant that our servers were performing extra work and referrer information was being sent to Twitter and Tumblr each time a bookmark page was loaded. We've improved performance by not rendering share options until the "Share" button gets pressed, and we've improved privacy by using different buttons that don't track the user or load third party JavaScript.
  • [AO3-5950] - We tweaked the settings on the homepage Twitter widget to disable Twitter's tracking and to return it to its original size.
  • [AO3-6056] - The confirmation pop-up for prompt memes claims' "Drop Claim" option used wording that wasn't consistent with other confirmation pop-ups. We've adjusted it.
  • [AO3-6016] - Now that the option to disable comments has gone live, we removed an unnecessary database column and related code.
  • [AO3-6020] - Removed some other unused code.
  • [AO3-6021] - Removed even more unused code! 🧹
  • [AO3-6082] - One of the services we used for running automated tests began charging, and it would've cost a small fortune for us to keep using it. We've switched to GitHub's built-in option, which doesn't charge us anything (at least for now).