AO3 News

Post Header

2018-11-13 15:55:28 UTC

We fixed word counts when posting new works in Chinese, Japanese, and Thai, worked on improvements for our Support and Policy & Abuse teams, and fixed an assortment of niggling bugs. A special thank you to new contributors bjohns, Lee, and Tatayafinwe!


  • Coders: bjohns, Elz, james_, Lee, redsummernight, Sarken, Tatayafinwe, Tal Hayon, ticking instant
  • Code reviewers: Elz, james_, redsummernight, Sarken, ticking instant
  • Testers: CJ Record, Danielle Strong, Elz, GoldenFalls, Ito, james_, KeepCalmAndPlayDumb, Lady Oscar, MagnusIsMyRock, Memé, Natalia Gruber, Paula, redsummernight, Runt, Sammie Louise, Sarken, Sunny


Searching and Filtering

  • [AO3-5482] - Applying too many filters or search terms when looking for works (e.g. by excluding dozens of tags) would cause the search URL to throw up an error 500. It should now be friendlier to even the most discerning users.
  • [AO3-5489] - You can now sort works and bookmarks by "best match" in various places again. (It got intermittently broken after our big search upgrade and displayed things in chronological order instead.)
  • [AO3-5477] - We have removed all the old search-related code that we aren't using anymore! Hooray! \o/
  • [AO3-5388] - We also removed a database column that wasn't needed anymore. Tidiness! \o/
  • [AO3-5490] - When doing a simple search, e.g. by putting a name or phrase into the main search box, the algorithm now shows matches for creator names and work titles first, then all other items that fit the description in some way. (Reminder: Our Hidden Search Operators Cheatsheet helps you put together the perfect search.)

Challenges and Collections

  • [AO3-5382] - We used to have a workaround in place that made sure challenge sign-up summaries would display correctly, despite a fun storage issue, which we have now fixed! So you shouldn't notice much of a difference, but it's neater on our side.
  • [AO3-5145] - Claiming a prompt with no description (but a helpful title) and trying to use the "Fulfill" link to post a work for it would result in a sad error. It now lets you post the work just fine. Happiness for both you and the prompter!
  • [AO3-5551] - It was theoretically possible to access a different user's challenge sign-up, so we tightened up the relevant ownership checks.
  • [AO3-4857] - While we weren't looking, the "comments you post will also be listed anonymously" notice meant for a creator replying to comments on their own anonymous work had just... vanished. We've firmly put it back in place.


  • [AO3-5534] - For a few months, emails sent to our Support and Policy & Abuse teams never reached their respective ticket trackers if the return address included a plus sign. /o\ We have now passed along the handful of tickets that got trapped in our database because of that bug, and made sure this won't happen anymore going forward.
  • [AO3-4366] - The admin page for managing a user now includes links to the user's Add Invitations and Manage Invitations pages.
  • [AO3-5488] - We've made the paths for submitting Support and Policy & Abuse tickets more configurable, to allow for a renamed committee name in their ticket tracker, for example.
  • [AO3-5531] - Abuse reports previously got the sender's IP address attached via the contact form, which made it easier for spammers to include fake ones and flood the tracker with hundreds of messages we couldn't easily block. We fixed that, and also took care of an unrelated JavaScript bug in the form, for bonus points!
  • [AO3-5540] - The Abuse form was very strict on the URLs it expected in the input field, generating errors even for perfectly good links to user profiles. It is now more chill.
  • [AO3-5537] - We've enabled spam checks for Abuse form submissions, in addition to the checks we've already been running on the Support form.

Misc. Fixes

  • [AO3-5330] - We sometimes have to block spammers or scrapers from accessing the Archive, and occasionally these bad actors share an IP address with other rule-abiding users. We've added an error page that will let people know if they've been blocked and who to get in touch with if they believe it was a mistake.
  • [AO3-5527] - It was possible to reuse an invitation after the account that initially used the invitation had been deleted, a little loophole that was mercilessly abused by spammers and which we have now closed.
  • [AO3-2046] - The word counter wasn't working for languages that don't use spaces for word separation, such as Chinese, Japanese, and Thai. For new works, we're now counting each character (but not punctuation marks) as a word, which should be closer to what users of these languages expect. The counts for existing works will be fixed separately in the very near future! (If you only have a few works in these languages and want the correct word count at once, you can edit and save a work again to have the count updated.)
  • [AO3-5558] - We found a way to add a work to a series you were not a creator of, and added checks to make sure this wouldn't be possible going forward.

Automated Tests

  • [AO3-4638] - We updated our continuous integration platform settings to use MySQL 5.7.22, bringing it in line with the version of MySQL we use on production.
  • [AO3-4852] - We updated our specs to make sure they were all using the helper method we created for testing redirects.
  • [AO3-4913] - We brought our test coverage for the challenge sign-ups controller up to 92%.
  • [AO3-5548] - The tests for some code related to admin posts weren't running because they were in the wrong folder, so we moved them to the right folder.
  • [AO3-5555] - The tests for DeviantArt imports were failing because DA had changed their image URLs. We updated our tests accordingly, so they pass again.


  • [AO3-5523] - Thanks to your donations, we were recently able to purchase some new servers! This means we had to update our deploy script to reflect the changes to our server set up.
  • [AO3-5373] - We've added the Dewplayer files (used to embed audio content in works) to our repo, instead of storing them somewhere on our many servers.
  • [AO3-5515] - We have removed the rubyzip gem.
  • [AO3-5553] - We updated the loofah gem, which sanitizes HTML input for us.
  • [AO3-5543] - We also updated the nokogiri gem, which does HTML parsing.