AO3 News

Post Header

2020-02-10 13:59:20 UTC

In recent releases, our top priority has been to reduce Elasticsearch-related slowness. Along the way, we've fixed an eclectic selection of bugs related to skins, kudos, orphaning, embeds, and internationalization.

A special thank you to our new contributors, bird, Jen Rogers, and Z! Also to derenrich and ticking instant, who spotted two security issues!


  • Coders: Alix R, Ariana, bird, cosette, cyrilcee, derenrich, Elz, Enigel, james_, Jen Rogers, Nerine Luna Cyran, redsummernight, Sarken, Tal Hayon, ticking instant, Z
  • Code reviewers: Ariana, bingeling, cosette, james_, redsummernight, Sarken, ticking instant
  • Testers: C. Ryan Smith, captured_in_lspace, CJ Record, cosette, Frost The Fox, GoldenFalls, Lady Oscar, lydia-theda, MagnusIsMyRock, mumble, Nary, nimadge, james_, Rebecca Sentance, redsummernight, Sarken



  • [AO3-5832] - We added a new error page regarding our Elasticsearch-related slowness. (But our heroic sysadmins did a lot of work to make sure very few people would ever have the opportunity to be on the receiving end of that error!)
  • [AO3-5834] - We've made it so we can adjust the cache expiration in the work and bookmark controllers without a code deploy.
  • [AO3-5823] - To help lighten the load on our servers, we added rate limiting for searches (and pages powered by Elasticsearch, e.g. tag works pages).
  • [AO3-5841] - When we can't figure out the IP address of someone accessing the site, we use the site's internal IP address. Unfortunately, that meant some folks were getting rate limited when they shouldn't have been. We've made sure that won't happen.
  • [AO3-5848] - Rack::Attack -- our rate limiting tool -- does things in a certain order no matter what order the code is in. It's easy to be unaware of that, though, so we reordered our code to convey that to future coders.


  • [AO3-5184] - In certain versions of Safari, it wasn't possible to access the Advanced section of the skins form because the button toggling that section was missing. We've found it and put it back.
  • [AO3-4030] - For tag wranglers using the Reversi skin, some of the information on tag edit pages was unreadable. We've changed the text color to make it readable.
  • [AO3-4241] - In Reversi, it was difficult to read text you entered in the header search box if the box was currently selected. We've made it easier to read by changing the color.
  • [AO3-5796] - We've added two new media query options for skins: (prefers-color-scheme: dark) and (prefers-color-scheme: light). If your device supports it, you can use these options to create skins that are only applied when your device is set to dark or light mode.


  • [AO3-5806] - A long long time ago, we set up the tool our Translation team will be using to translate the Archive into other languages. This configuration no longer worked quite right, so we set it up again.
  • [AO3-5813] - Once we got our translation tool set up, we realized some of our email code needed tweaking to make the emails easier to translate... so we did that tweaking.
  • [AO3-5735] - We now automatically add HTML direction attributes to Arabic and Hebrew news posts, making text correctly flow right to left. Our translators no longer need to set them manually on every single post.


  • [AO3-5046] - If you wanted to orphan all the works by one of your pseuds, but one of those works happened to have more than one of your pseuds on it, one of two un-good things would happen, depending on when you encountered the bug: either you'd get a 500 error, or both of your pseuds would be removed from the work. We've fixed it so it doesn't error and only removes the pseud you specify.
  • [AO3-5854] - Previously, we didn't check that you owned the thing you were orphaning, so if you were clever and bad, you could've conceivably orphaned someone else's works. We check that now, so this should no longer be possible.


  • [AO3-5818] - We previously changed our referrer policy to limit information other sites could get if you followed a link there from a page on the Archive. Unfortunately, this caused some YouTube embeds to stop working, so we had to change the policy to something slightly more permissive. (If you're interested in the specifics, we're now using strict-origin-when-cross-origin instead of the previous same-origin.)
  • [AO3-5853] - It was possible to upload random HTML files to and embed them in works, so we have to specifically whitelist their media player.


  • [AO3-5844] - We added a new column to the kudos table that will allow us to store the user ID (rather than the default pseud ID) of the person who left kudos.
  • [AO3-5850] - We began storing user IDs in the aforementioned column when users leave new kudos.
  • [AO3-4934] - We increased test coverage of the kudos code (it's at 100% now, yay!) and fixed a bug that would occur in the unlikely event you had JavaScript disabled and were trying to leave kudos on a work the creator had deleted.

Buttons and text changes

  • [AO3-4991] - We've made things a bit more consistent by rearranging the buttons on series pages to better match the way buttons are ordered on work pages.
  • [AO3-5624] - Also on the "consistency is good" front, we made the order of the Reply, Delete, and Thread buttons on comments on the homepage match the order of the buttons in the comments section.
  • [AO3-5845] - Sometimes, particularly in Firefox and Chrome, the Twitter share button didn't show up on a work's or bookmark's share modal. We've made it more likely to show up.
  • [AO3-5738] - When you first create an AO3 account, you're taken to a page with some important information. We've updated the text to make that information a bit clearer.
  • [AO3-5113] - The error message you got when entering a different password and password confirmation (e.g. when creating an account) was a bit wrong. We've made it right.


  • [AO3-4194] - On the page for requesting invitations for friends, some of the form fields weren't quite up to accessibility standards. Now they are! (Unfortunately, you'll have to take our word for this: we had to turn off access to this page due to spammers.)
  • [AO3-5773] - If you bookmarked an external work with an ampersand (&) in the title, it would display as &. We've made it appear as a regular old & now.
  • [AO3-5362] - We've tweaked the position of the background image on the left side of the login page so it overlaps a bit less with the text on the right side.
  • [AO3-3847] - If you renamed a series, the old name would stick around on the work header and blurb. Now the new name will show up, as one would reasonably expect it to.
  • [AO3-5233] - When admins searched for users by multiple emails, the number of results would be off if users have emails with different capitalization. We fixed such numbers.

Behind-the-scenes miscellany

  • [AO3-5759] - We've added password protection to our staging site. It's better if search engines cannot see our works in the "Testing" fandom that just repeat the word "test" 500 times.
  • [AO3-5762] - We sped up our tests by only setting up search indexes for tests that use them.
  • [AO3-5817] - Automated tests for emails would fail if the emails included certain characters, e.g. ç. We've fixed it so the tests will pass.
  • [AO3-5838] - We improved automated test coverage of the bookmarks page because our testing volunteers found a bug our tests didn't pick up. (This is why manual testing is important!)
  • [AO3-5839] - We increased test coverage for pseuds.
  • [AO3-5840] - We updated the Rack gem to version 2.0.8.
  • [AO3-5836], [AO3-5847], [AO3-5849] - We shuffled some servers around, so we updated our deploy script to make sure new code goes to the right place.