AO3 News

Post Header

2022-04-27 17:07:08 UTC

From mid-February through mid-April, we did a whole bunch of necessary but largely unnoticeable work like updating Rails, reducing the number of unhelpful errors in Resque, and tweaking our automated tests and GitHub workflow. We also included a few bug fixes and one (1) performance improvement, because what's an update without those?


  • Coders: bird, Elz, redsummernight, Sarken, ticking instant, weeklies
  • Code reviewers: Enigel, james_, redsummernight, Sarken, ticking instant
  • Testers: james_, Jennifer Davis, lydia-theda, Maine, Nary, Paula, Priscilla, redsummernight, Qem, Ridicully, Runt, Sammie Louise, Sarken, Taylor Clossin, Teyke



Assorted bug fixes and improvements, February 18.

  • [AO3-5392] - When you posted a backdated work between the hours of midnight and 04:00 UTC, the work would use the actual posting date in the upper right of its blurb (as seen on your works pages, tag listings, etc.) instead of the backdated date. We already fixed this issue for newly-created works (AO3-6190). This time, we made changes so that creators of affected existing works can fix the issue themselves by setting a new backdated date.
  • [AO3-6230] - Admins who can search users can now do so by user ID.
  • [AO3-6271] - We fixed the alignment of the blurb icons and work titles in the "Is it later?" section of the homepage.
  • [AO3-4530] - In the main menu, links would become unclickable when you were already on the page in question. That's usually fine, but we changed it to have links always stay links anyway, to prevent problematic caching behavior.
  • [AO3-3852] - When you filtered a works or bookmarks page, it sometimes caused the Works or Bookmarks link in the main navigation's Browse menu to turn into plain text. We've fixed it so it will always be a link.
  • [AO3-5717] - It was previously possible to make the expected chapter count lower than actual chapter count. We now always check how many posted chapters there actually are when displaying how done an ongoing work is.
  • [AO3-6292] - We renamed the new gift preference to "Allow anyone to gift me works" and updated the related text that appears on challenge sign-up forms.
  • [AO3-6116] - For better performance, we now cache fandom, work, and bookmarked item counts for collections.
  • [AO3-5063] - The works count in a collection sidebar was wrong if a work belonged to two subcollections or to the parent collection and a subcollection. It will now only count the work once, not once for each collection it appears in.
  • [AO3-6293] - When a tag is changed, we start a background process to update the caches for works using that tag. However, this background process sometimes happens so quickly that it cannot find newly created tags in the database yet. It would cause errors cluttering up our logs and wasn't necessary anyway, because new tags have no existing works! So we skipped the background process in that case.
  • [AO3-6295] - While it is possible to reply to a comment left by a deleted account, the system shouldn't then try to send a notification to the nonexistent user, because that will only end in tears/errors. We no longer try to send emails in this case.
  • [AO3-6296] - We had intermittent errors when loading external works in our automated tests, so we switched to faking the responses from the external URLs to make our tests more robust.
  • [AO3-6287] - The code scanning service we used shut down, so we switched to GitHub Actions for running Brakeman.
  • [AO3-4488] - Many of our automated tests use VCR for caching remote websites so we don't need to fetch them afresh every time. However, a few of these were out of date and causing issues, so a refresh was in order.
  • [AO3-6299] - Our error-monitoring service was running in our automated test environment, slowing things down. We've stopped running it and sped things up.
  • [AO3-6228] - Once upon a time, automatically reconnecting to the database and retrying a command after a timeout seemed like a good idea. Unfortunately, it turned out to be a good way to end up with half-completed tasks, so we've stopped doing that.


Rails timezone change to UTC, February 24.

  • [AO3-6300] - We changed the timezone Rails uses from U.S. Eastern to UTC, to match the timezone used by our servers' operating system.


Update to Rails 6, April 3.

  • [AO3-6085], [AO3-6002] - We updated Rails from 5.2 to 6.0.
  • [AO3-6275] - We fixed the plural rules for Serbian.
  • [AO3-5819] - When we review pull requests on GitHub, we use labels to keep track of our progress (is it the coder's or the reviewer's turn to respond?) and whether the changes need special attention (is there a database migration or a one-off task we need to run if we merge this pull request?). We now use GitHub Actions to automatically add or remove some labels.
  • [AO3-5968] - When we created chapters in our automated tests, they were created as drafts unless we specified they should be posted, which was silly because we usually want to test posted chapters, not drafts. We've switched it so our test chapters are posted by default.


Bug fixes for pseud icons, April 12.

  • [AO3-6322] - We deleted some unused JavaScript files from our code repository. 🗑
  • [AO3-6316] - Users with invalid pseud icons (file type not allowed, alt text or comment too long) couldn't request a password reset or be suspended by an admin. This only affected a small group of users, which have received an email about the issue, so they could solve the problem on their end. From our end, the solution was to remove the invalid icon or text after the deadline given in the email.
  • [AO3-3293] - If you deleted the icon for one of your pseuds, or changed it to a different format, your existing comments would show a broken image. We've made it so your new icon (or the placeholder) will show.