AO3 News

Post Header

2021-07-27 16:15:19 -0400

This large batch of updates includes a rewrite that killed several tag saving bugs, new tools and fixes to prevent abuse and customize your Archive experience, and a generous helping of behind-the-scenes improvements.

Special thanks to agenderdanvers, hocestcorpus, korrien, and lethnie, who all submitted their first fix! (If you'd like to contribute to the Archive codebase as well, please refer to our Contributing Guidelines.)


  • Coders: agenderdanvers, Alix R, cosette, Enigel, hocestcorpus, korrien, lethnie, redsummernight, Sammie Louise, Sarken, ticking instant, tlee911
  • Code reviewers: Ariana, james_, redsummernight, Sarken, ticking instant
  • Testers: Alison Watson, Claire Baker, cosette, GoldenFalls, james_, Jocelin, Lady Oscar, lydia-theda, Nary, QED, Qem, Rebecca Sentance, redsummernight, runt, Sarken, Taylor Clossin, Teyke



Security fixes and visible user/work IDs to make hiding content easier, deployed on March 16th.

  • [AO3-5585] - We fixed a security risk concerning challenge assignments.
  • [AO3-6011] - We also made sure you can't claim a prompt pretending to be another user.
  • [AO3-6137] - When an admin changes a user's roles (e.g., makes them a tag wrangler), that change is supposed to be logged in the account's history. However, for the past ten years, it... hadn't been getting logged. We've fixed that now.
  • [AO3-5525] - We've added an option for our Policy & Abuse team to turn off password reset emails for users who report being harassed in this manner.
  • [AO3-6025] - Two of the emails related to work imports asked users to whitelist emails from the domain. We've updated the wording to "add email addresses from to your list of safe contacts" instead.
  • [AO3-6131] - We've added user and work IDs to work blurbs to allow hiding or highlighting via site skins. (For instructions on doing this, please check out our update on blocking and muting. We'll have a dedicated post once we've expanded this ability to bookmarks and series.)
  • [AO3-6135] - The list of servers we deploy to used to live in the Capistrano deploy scripts, which sounds reasonable -- deploy is in the name! -- but it was terribly inconvenient because it required a code change every time we changed our servers. We've moved that list somewhere else, where it's easier to change.


Search index improvements (part 1), deployed on March 22nd.

  • [AO3-6147] - To shift some data around in Elasticsearch, we had to add a task to update the mapping.


Search index improvements (part 2), deployed on April 1st.


Upgrade to Ruby 2.7.3 plus various bug fixes, deployed on May 9th.

  • [AO3-6155] - The preferences page previously referred to your History as your Viewing History. We never call it that, so we've corrected the phrasing.
  • [AO3-6145] - If you tried to add duplicate tags to a bookmark, e.g. both Angst and angst, it would give a 500 error. Now it saves the bookmark with just one of the tags, much like what happens if you try to add duplicate tags to a work.
  • [AO3-5740] - Editing a work to add a series, previewing your changes, and then cancelling used to result in your work still being added to the series. Now it respects your wishes and doesn't add the work to the series.
  • [AO3-5056] - Designated archivists can import works for others, e.g., when moving a whole collection of works to the AO3. The creators of those works receive an email about the import and can make some choices about having their works imported. Previously, those choices would not be properly saved under some circumstances; now they are.
  • [AO3-4008] - The Comments button on works now properly jumps you to the comments section, not the list of kudos.
  • [AO3-6157] - We've upgraded to Ruby 2.7.3, which also involved changing the gem we use to handle pseud and collection icons.
  • [AO3-6162] - We updated some broken FAQ links in the help pop-ups on the work posting form.
  • [AO3-6151] - Our Gemfile previously installed every AWS gem imaginable even though we only really needed one. We're rectified that.
  • [AO3-5910] - We've updated our repository's database schema and structure files to match the current state of the database on production.


Gem updates, deployed on June 2nd.

  • [AO3-6170] - We updated Rails due to a security vulnerability in actionpack.
  • [AO3-6173] - We updated nokogiri due to a security vulnerability.
  • [AO3-6169] - The Twitter widget would sometimes cause our tests to fail, so we stopped loading the Twitter widget in our tests.


Various bug fixes and infrastructure improvements, deployed on June 18th.

  • [AO3-6177] - Our automated tests for rate limiting sometimes failed even though the rate limiting code works just fine. We made it so the tests stop lying.
  • [AO3-6174] - Headings consisting of long, unbroken strings of characters would cause pages to scroll horizontally. Now we force the text to break so that doesn't happen.
  • [AO3-4936] - Occasionally, works are saved without fandom tags. It used to be that when this happened with multi-chapter works, you'd get a 500 error if you tried to access the work in Chapter by Chapter mode. Now the work will load.
  • [AO3-3498] - If you posted a work from a draft, sometimes the word count would just be blank. That won't happen anymore.
  • [AO3-6178] - Our CI will no longer mark builds as failing just because the process of uploading a coverage report failed.
  • [AO3-6072] - If you set up a new development environment, there wouldn't be any language options available on the pages for submitting support tickets or abuse reports. We've made it so there will always be a language available.
  • [AO3-5408] - We no longer store IP address from Support tickets in the database. Now we just hand them off to our spam checker when someone presses the "Submit" button.
  • [AO3-6180], [AO3-6179], [AO3-5437], [AO3-5431] - We removed some unused code. 🧹


Rewriting some of the code to ensure changes to tags aren't saved until the taggable item (e.g. the work) itself is saved knocked out several bugs at once. Deployed June 22nd.

  • [AO3-6043] - If you tried to edit a work to remove all of its warning tags, it would seem to save, but the tags would still be there. This was sort of good, since works need to have at least one warning, but not great because it didn't tell you there was a problem saving your work. Now it will give an error message.
  • [AO3-5978] - If you tried to edit a bookmark to add a tag that was over 100 characters long (the maximum length for tags), you'd get either a 422 error or a blank white page depending on your browser. Now you'll get redirected to the editing form with a note that your tag is too long.
  • [AO3-4932] - Removing a work's fandom and pressing Cancel on the resulting error page used to save the work without a fandom, which was terrible: all works need at least one fandom tag! We've made it so works without a fandom will definitely not be saved.
  • [AO3-3661] - If you wanted to remove all of the category tags from your work and you tried to preview your change, the tags wouldn't get removed upon saving. Now they will!
  • [AO3-3455] & [AO3-5041] - When editing the tags or language on your work, you wouldn't see the changes during preview. Now you can see your work's new info in all its glory right there on the preview page.