AO3 News

Post Header

Published:
2020-04-14 15:39:56 -0400
Tags:

In recent releases, we wrapped up changes to the kudos table and began caching works for logged out users. We've also made improvements to subscriptions, spam-checking, the Statistics page, and addressed issues with the Terms of Service prompt.

A special thank you to our first-time contributor teyla!

Credits

  • Coders: bird, james_, redsummernight, Sarken, Tal Hayon, teyla, ticking instant, Z
  • Code reviewers: james_, redsummernight, Sarken, ticking instant
  • Testers: bingeling, coaldustcanary, GoldenFalls, Irina, james_, Lady Oscar, lydia-theda, MagnusIsMyRock, nimadge, Paula, Ranowa, Rebecca Sentance, redsummernight, Sammie Louise, Sarken, teyla

Details

Performance

  • [AO3-5162] - The site used to remember the name and email address that guests entered on the comment form, making it so they didn't have to reenter the information every time they left a comment. Unfortunately, we had to remove this code so we could begin caching work pages.
  • [AO3-5906] - As a side effect of our new caching measures, logged out users were being shown the adult content warning on every work rated Mature, Explicit, or Not Rated -- and when navigating between chapters of those works to boot. We've changed how we're setting the cookie that remembers you've already pressed the "Proceed" button on the warning and made a few tweaks to nginx, and now visitors should only see the adult content warning once per browser session.

Subscriptions

  • [AO3-5040] - You'll now get subscription emails for any anonymous works you've subscribed to. (But you won't get an email if a creator you've subscribed to posts an anonymous work -- that would ruin their anonymity.)
  • [AO3-5708] - A long time ago, we added some code to cancel the delivery of emails in certain situations, e.g. if you were subscribed to a creator who added their brand new work to an anonymous collection after posting, but before the subscription email went out. Rails 5 lets us handle situations like that without extra code, so we've gotten rid of it.

GDPR

  • [AO3-5497] - To comply with the GDPR, we present visitors with a prompt asking them to agree to the Terms of Service before using the site. When they agree to them, we set a cookie in their browser that is supposed to keep the prompt from reappearing for them. This wasn't working for some visitors, though, so we've decided to see if it works better if we switch to JavaScript's local storage feature.
  • [AO3-5915] - Our new approach to remembering whether visitors agreed to the Terms of Service didn't work in private mode in a few older browsers. So now we're checking if a visitor's browser supports local storage properly, and if not, using a cookie to remember whether we should show them the Terms of Service prompt.
  • [AO3-5917] - Some browsers didn't like our new approach to writing cookies or local storage items, particularly if you were in private mode, so we found yet another way to hide the TOS prompt once you've agreed to it.

Kudos

  • [AO3-5859] - Kudos used to belong to pseuds, but we're updating them so they belong to users instead. As part of this process, we've updated the kudos list on works to always list kudos-givers by their usernames, instead of sometimes displaying "pseud (username)".
  • [AO3-5887] - We've gotten rid of the column that stored pseud IDs in the kudos table and removed any code or tests related to it. We are so glad to be done with this migration!

Miscellany

  • [AO3-5193] - Wranglers used to be able to turn a canonical tag into a synonym in one fell swoop just by entering the new canonical tag in the "Synonym of" field on the tag edit page. Because it was too easy to do this accidentally, we've made it so only admins have access to that field on canonical tags' edit pages.
  • [AO3-5821] - We've made a couple tweaks to the graph on users' Statistics pages: the vertical axis will never start at a number other than zero, and now the bars on the graph are a slightly faded Archive red rather than bright Google blue.
  • [AO3-5908] - Visiting a multi-chapter work on the insecure site would redirect you to the secure site, which was terribly inconvenient if you were using the insecure site because you can't access the secure site. (It's the only reason you should use it.) We've made it so you'll stay on the insecure site.
  • [AO3-4539] - Our spam blocker occasionally prevents legitimate support tickets and abuse reports from being submitted. Because reports and tickets from logged in users are generally not created by spam bots, we've stopped running the spam check for them.

Behind-the-scenes miscellany

  • [AO3-5895] - Our friendly gem-updating bot updated our JSON gem to version 2.3.0.
  • [AO3-5898] - There was a possible security issue with the way Rails handles some JavaScript code, which would normally be something we could resolve with a quick gem update. However, we're on Rails 5.1, and fixing it with a gem update was only an option for sites on Rails 5.2 or 6. Instead, we've added a monkey patch to hold us over until we update Rails. 🐒
  • [AO3-5893] - Every time our automated tests run, the tool we use to create PDF downloads gets downloaded and installed on our testing environment, allowing us to test downloads. The source for the tool moved to a new location, so we updated the test setup to reflect that.
  • [AO3-5896] - Because we run our tests a lot, we would occasionally get rate limited by GitHub and be unable to download our PDF generation software. We've moved it to our own servers so we won't have that problem.
  • [AO3-5892] - The randomly-generated text in our email tests sometimes includes characters that are not in the US-ASCII character set, such as ç. Whenever that happened, our email tests would fail because they were looking at the encoded email text. We've told the tests to check the decoded text from now on so they'll pass no matter what characters they contain.
  • [AO3-5911] - We've updated our automated tests to use version 6.8.8 of Elasticsearch so we can make sure everything works with it before we actually update the version running on our servers.
  • [AO3-5904] - Some of our automated tests related to orphaning would occasionally fail because that's a fun thing tests do sometimes if they're run too quickly. We added slight delays to them so they'll stop doing that.
  • [AO3-5900] - Our automated tests were actually submitting things to our spam checker, and since we do this repeatedly and frequently, the spam checker thought they were spam. This caused our tests to fail. We've started stubbing the results of the spam check so that doesn't happen.
  • [AO3-5899], [AO3-5902], [AO3-5914], [AO3-5916] - We've kept our deploy script up-to-date: removing two servers we've converted into firewalls, then three decommissioned servers, and adding a second front end server to our staging environment so our caching set up there more closely resembles our set up on production.