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.

Comment

Post Header

Published:
2020-03-18 19:16:03 -0400
Tags:

Our latest releases include improvements for new users, site admins, creators of anonymous or unrevealed works, and the kudos database table.

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

Credits

  • Coders: cosette, james_, Morrgani, redsummernight, Sarken, Tal Hayon, ticking instant
  • Code reviewers: Ariana, james_, redsummernight, Sarken, ticking instant
  • Testers: Arcadion, C. Ryan Smith, Capi, Danielle Strong, GoldenFalls, hel, james_, lydia-theda, MagnusIsMyRock, Matty, Paula, redsummernight, Sammie Louise, Sarken

Details

User Accounts

  • [AO3-5723] - We've tweaked the text of the email you receive when you create a new account. It will now be more consistent with our usual way of wording things.
  • [AO3-5316] - When you first activate a new AO3 account, you're supposed to get a success message. That message wasn't working, which led users to follow the activation a second time, which also didn't display a message it was supposed to display. Both of those messages should turn up now, hopefully leading to less confusion and fewer Support tickets.

Admin

  • [AO3-5676] - The script that we use to handle GDPR data requests from users used to write to a file, which was slightly annoying to get to. We've made it write to standard output, a.k.a. the screen that the admin running the script is looking at.
  • [AO3-5863] - We also updated the GDPR data requests script to handle some changes we made when we moved the logging in process to Devise.
  • [AO3-3547] - Our Policy & Abuse team has always been able to add notes to user accounts when giving warnings or suspensions, but sometimes they wanted to make a note without doing either of those things. We've given them that ability.
  • [AO3-4205] - To help with spam and abuse, we let admins see the IP address of the user who posted a work. However, we forgot to record that information on works imported using the "Post without previewing" option, so there was nothing for admins to see. We've now corrected that oversight.

Kudos

  • [AO3-5851] - In a previous release, we added a column to the kudos table to store the user (rather than the pseud) that left kudos. Now we've gone back and filled in this information for existing kudos.
  • [AO3-5869] - We have around 640 million kudos on the Archive, so the database table we keep them in was getting rather full. We moved them to a larger table that will be able to hold 9,223,372,036,854,775,807 kudos (yes, really!). The new table also has a uniqueness constraint that was missing from the old one, so now any duplicate kudos that sneak past our code will also be rejected by the database.
  • [AO3-5868] - When a logged in user leaves kudos on a work, we used to check to make sure the user's default pseud hadn't previously left kudos on the work. Now we check that the user hasn't left kudos on that work before.
  • [AO3-5873] - When we moved all the kudos to their new table, some works experienced a change in their kudos counts due to duplicate kudos being removed. We've made sure the kudos counts for those works are updated in our search engine.

Testing

  • [AO3-5874] - A few months ago, the hardware for our staging environment went belly up, so we began temporarily using a cloud service. While we were using this temporary setup, our heroic sysadmin james_ went and got the broken hardware from its facility, repaired it, drove it back to the facility, and plugged it back in. Shortly afterwards, we updated our configuration to put the newly repaired hardware back into service.
  • [AO3-5875] - In January, we started using a gem to password protect our staging site. We've switched to a different form of password protection and removed that gem.
  • [AO3-5872] - We've reorganized our automated tests to match the structure RSpec automatically assumes we're using. This will help make sure all of our tests are actually being run.

Miscellaneous

  • [AO3-5857] - We restored the default Dutch translations that got lost when we updated our translation tool.
  • [AO3-4139] - In Reversi, we've changed the color of the little footnotes on required fields to make them more readable. Goodbye, dark grey text on a slightly less dark grey background!
  • [AO3-4836] - In the unlikely scenario you were trying to approve all the moderated comments on a work you didn't own, you'd get a 500 error. Now you'll get redirected to the homepage with an error message.
  • [AO3-5028] - If you add your work to a collection and the moderators later make the work anonymous or unrevealed, you'll now receive an email letting you know about that change and reminding you how to remove your work from the collection if you're not okay with the change. (Please note that you'll get this email even if you have your preferences set to disallow emails from collections.)
  • [AO3-5879] - We -- or more accurately, the friendly bot who lets us know about security issues with gems -- upgraded the version of the nokogiri gem we're using.
  • [AO3-5807] - There was a column in the support ticket database table that we weren't using and thus wanted to get rid of. This worked out quite well because it let us test a method of modifying database tables that we wanted to use for our work on the kudos table.
  • [AO3-5888] - We got the new Elasticsearch servers we've been waiting for! 🎉 This allowed us to repurpose some old servers, which required us to update our deploy script.

Comment

Post Header

Published:
2020-02-10 08:59:20 -0500
Tags:

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!

Credits

  • 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

Details

Performance

  • [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.

Skins

  • [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.

Internationalization

  • [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.

Orphaning

  • [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.

Embeds

  • [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 archive.org and embed them in works, so we have to specifically whitelist their media player.

Kudos

  • [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.

Miscellany

  • [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.

Comment

Post Header

Published:
2019-12-21 07:16:00 -0500
Tags:

The last several code deploys introduced some exciting changes to work posting: a big update to our rich text editor, support for the HTML5 audio and video tags, a little tweak in how we handle language selection, and some less confusingly labeled buttons! In addition, a whole lot of challenge improvements and behind-the-scenes infrastructure upgrades.

Credits

  • Coders: Alix R, cosette, Elz, Enigel, james_, redsummernight, Sarken, Tal, tickinginstant
  • Code reviewers: Ariana, bingeling, Enigel, james_, redsummernight, Sarken, Scott, tickinginstant
  • Testers: bingeling, Briar, CJ Record, GoldenFalls, Izzy, james_, Lady Oscar, lydia-theda, MagnusIsMyRock, McBangle, Nary, nimadge, Paula, Rebecca Sentance, redsummernight, Relle, Sarken

Details

Rich Text Editor

  • [AO3-5191] - We upgraded the version of TinyMCE that we use for our Rich Text Editor.
  • [AO3-5809], [AO3-5811] - The new version of TinyMCE overrides the browser's default context menu, which prevents desktop users from right-clicking to copy, paste, spell check, etc. We disabled this behavior.
  • [AO3-5812] - The same new version of TinyMCE defaults to a reduced interface for users on mobile devices. We disabled this behavior too.

Collections and Challenges

  • [AO3-4353] - Some inconvenient caching was affecting the display of tag set content (e.g. Character or Relationship tags) on challenge sign-up pages. Now the correct tags are shown.
  • [AO3-5786] - Trying to access the list of allowed tags from a challenge sign-up would throw an error 500, which is now fixed as well!
  • [AO3-5785] - Owners of collections were previously able to add works in other, anonymous collections to their own, which enabled them to see the work's creator. We've now made it impossible to add anonymous works to your collection.
  • [AO3-5101] - Trying to save a challenge with sign-ups open and a closing date set, but no opening date, would throw an error 500. Now the challenge profile correctly states that you can sign-up and until what date.
  • [AO3-5102] - If you closed sign-ups for a challenge before the set closing date, the challenge profile would show that sign-ups were closed, but ~in the future~~~ (i.e. the set closing date). Now the date just isn't displayed anymore, to avoid any confusion.
  • [AO3-5593] - When fetching a list of all collections a work had been approved to be in, we used an unnecessary query, which was not good for database performance. Much better now!
  • [AO3-4571] - You have two open assignments, and they both happen to be for the same recipient. You post a work fulfilling one of the assignments. However, the other assignment's ticky box is also checked in the posting form. If you don't notice this, you post the work and suddenly your other assignment is fulfilled as well. But it's really not! (Aww.) We now make sure only the correct ticky is ticked and you still have to write a second work for the other assignment. *\o/*

Language

  • [AO3-5702] - We previously had English set as the default language when posting a new work. This led to a lot of miscategorized works, since creators often wouldn't notice the language selection when posting non-English works. We now require all users to manually set the language their work is in.
  • [AO3-4605] - The form used for work imports now sports a mandatory "Choose a language" field as well.
  • [AO3-5790] - We accidentally broke filtering for works in português brasileiro or português europeu, so we intentionally fixed it.
  • [AO3-5616] - In our lists of FAQ categories available in Arabic or Hebrew, the first category name was misaligned. We've put it back in line.

Misc.

  • [AO3-5693] - Posting audio or video fanworks? Now you can use the HTML5 audio and video tags!
  • [AO3-4080] - We had a very peculiar bug where our devs weren't able to use multiple CSS box shadows on their development environments despite it being possible on the Archive itself. Turns out we had a broken regular expression in our code, but the fact that we had box-shadow in the wrong part of the production configuration file was hiding the issue. The bug has been fixed and the production config file updated, so now box-shadow works the same for everyone.
  • [AO3-4560] - We renamed the buttons for posting works: "Post Without Preview" becomes "Post", and "Save Without Posting" becomes "Save As Draft".
  • [AO3-5632] - When you follow a link from the Archive to another site or go to a page with the Twitter widget (e.g. a work), some information is automatically sent to the site (or Twitter). We have now limited referrer information and won't tell the site you clicked on (or Twitter) which page you were on.
  • [AO3-5761] - We have added the Rack::Attack gem, which enables us to control how many requests to the database an IP address can send before we firmly tell it to not (and serve an error page instead).
  • [AO3-5639] - Trying to visit an unrevealed work (and getting a helpful message instead) or accessing a hidden work (as an admin) would increase that work's hit count, potentially giving the creator of said work quite the scare. We have removed that particular source of panic now.
  • [AO3-3617] - Tags that begin with a capital letter with an accent or other diacritical mark (e.g. Éomer) wouldn't show up in the autocomplete if no fandom was entered in the posting form. Now they should!
  • [AO3-5825] - Dashboard sidebars retrieve work and bookmark counts from Elasticsearch, which ties up Elasticsearch in long queries, making everyone sad. We are now caching those counts, creating a little less work for the search engine every time a page with the sidebar is loaded. \o/ (Note: This means the count will no longer go up immediately when you add or delete a work or bookmark. The delay should currently be about half an hour, but we may adjust it in the future.)

Infrastructure

  • [AO3-5789] - Updated Database Cleaner and other test-only gems.
  • [AO3-5795] - Updated MySQL2 to 0.5.2 to support libmariadb and Debian 10.
  • [AO3-5798] - Updated Loofah from 2.2.3 to 2.3.1.
  • [AO3-5749] - Updated Elasticsearch to 6.8.5 and its gem to 6.8.0.
  • [AO3-5826] - Updated Nokogiri to 1.10.5.
  • [AO3-5797], [AO3-5800] - Updated the staging server names in our deploy script.
  • [AO3-5194] - Updated schema and structure files.
  • [AO3-5787] - We've put the code for the public site skins Reversi, Snow Blue, and Low Vision Default in our code repository for safe keeping and better tracking of changes.

Tests

  • [AO3-5788] - We had previously been using Ubuntu Xenial for tests on our CI service, but now we've switched to Bionic, which is closer to our production environment.
  • [AO3-5814] - Sometimes we make changes that we don't need our automated tests to check. We've made it so we can include a note in the commit message that will tell one of our CI services to skip running the tests and deploy the changes straight to our staging environment.
  • [AO3-5815] - The automated tests for our emails had a lot of redundancy, so we reduced that.
  • [AO3-5758] - We changed some settings on our automated code style checker to make its formatting suggestions more useful.
  • [AO3-5772] - We've stopped running automated code style checks on JavaScript files for third-party plugins, since we didn't write them and aren't going to address style violations found in them. We've also stopped checking minified JavaScript files because, seriously, we know it's one giant long line without spaces or indentation -- that's the whole point.

Comment

Post Header

Published:
2019-10-21 14:14:04 -0400
Tags:

In our latest series of deploys, we made several improvements to searching and filtering, cleaned up a whole bunch of broken links, and made some finicky, but necessary changes under the hood to upgrade Ruby to the latest version.

An extra special thank you to our first-time contributor dlhardin!

Credits

  • Coders: Ariana, dlhardin, Elz, Enigel, james_, lethnie, Matt Sears (Littlelines), MaxwellsDaemon, redsummernight, Sarken, Tal Hayon, ticking instant
  • Code reviewers: Ariana, Elz, Enigel, james_, redsummernight, Sarken, ticking instant
  • Testers: Alison Watson, Ariana, Briar, briar_pipe, Claire P. Baker, cosette, GoldenFalls, Izzy, james_, Katherine, Matty, Memé, mumble, Naomi, Rebecca Sentance, redsummernight, Relle, Sammie Louise, Sarken, Taylor Clossin

Details

Searching & Filtering

  • [AO3-5492] - Searches using tags with numbers in them (e.g. "Episode S01E03") would completely ignore the numbers (and return all works with Episode tags, for example). It now respects your choices.
  • [AO3-5707] - When we renamed the class for Archive warnings (more details about that in the Infrastructure section), we realised this could break searches made with the old code (such as bookmarked searches, or searches in your browser history) by allowing them to include unwanted results. We ensured that those searches will keep working as intended.
  • [AO3-5649] - Sorting works by creator names would sometimes lead to confusing results for co-created works, since a work "by Alec, Ellie" could show up under E. It now follows the actual alphabet and sorts by the first creator listed.
  • [AO3-5652] - You can now search for works by the title of the series a work is part of. \o/
  • [AO3-5703] - Works and bookmarks are now searchable by their language codes, i.e. two- or three-letter abbreviations that are easier to look up than the IDs our database assigns to each language. You can read more about this in our hidden search operators cheatsheet.

Broken linkage

  • [AO3-5583] - When accessing the comment section on a work or news post via a direct link, the pagination links would jump you to the top of the page, away from the comments. We've now made sure the anchor stays firmly in place.
  • [AO3-5179] - We used to have an older page with information about orphaning, to be read before orphaning a work. We now point to the Orphaning FAQ instead, which is more neatly maintained.
  • [AO3-5688] - However, when deleting an account, the "What do you want to do with your works?" page did not link to any information on orphaning, leaving users to wonder what that option would do. Now it links to the Orphaning FAQ as well.
  • [AO3-5076] - The Terms of Service FAQ was using old URLs to link to specific Archive FAQ items, leading to errors. Those links have now been fixed.
  • [AO3-5077] - Also in the Terms of Service FAQ, some links to subsections of the Terms of Service were broken. We fixed those, too.

Misc. Fixes

  • [AO3-5673] - The fandom, user, and work counts on the Archive homepage used to be hard to parse, so we added commas as thousands separators. Much neater now!
  • [AO3-5730] - On the posting form, the labels for chapter number and title weren't properly associated with the respective form fields. Now clicking on those labels will select the field so you can enter the information.
  • [AO3-5733] - The assignments page used to show an extraneous email link when a user had multiple assignments in the same exchange. We have fixed that.
  • [AO3-5024] - Trying to log in as an admin with incorrect information would just quietly fail, leaving the admin puzzled why nothing was happening. It now displays a helpful error message.

Infrastructure

  • [AO3-5613] - Previously, our code used a class named Warning for Archive warning tags. Newer versions of Ruby, however, wanted that class name for themselves, so we had to rename ours to ArchiveWarning before we could upgrade the version of Ruby we're using. (We used warning tags in more places than we ever imagined...)
  • [AO3-5756] - We updated the Devise gem to version 4.7.1.
  • [AO3-5655] - One of our test files ended up in the wrong folder where it was never run. We moved it to the right place.
  • [AO3-5750] - We updated a library used by the testing suite -- the gem formerly known as factory_girl is now factory_bot.
  • [AO3-5391] - We removed unused code related to tags.
  • [AO3-5784] - We've upgraded the version of Ruby that the Archive runs on to 2.6.5 (the latest stable version at the time of coding).

Comment

Post Header

Published:
2019-09-07 03:30:43 -0400
Tags:

The new creator invitation system and related preference are the main changes in this release, but because they required a significant overhaul of the creator code, we also fixed a number of related bugs in the process!

Credits

  • Coders: james_, Nerine Luna Cyran, Sarken, ticking instant
  • Code reviewers: redsummernight, Sarken, ticking instant
  • Testers: Ania, Ariana, bingeling, doughtier, james_, memorizingthedigitsofpi, Matty, mumble, Nary, redsummernight, Sammie Louise, Sarken, Stephanie Godden, ticking instant

Details

Adding creators and co-creators

  • [AO3-5658] - We overhauled the way co-creating functions by adding an invitation system and requiring users to opt-in before they can be invited. For more details, please check out our post, "Important changes to adding work, chapter, and series co-creators."
  • [AO3-4998] - If two or more users had the pseud Mary Sue, it wasn't possible to add either of them as a chapter co-creator unless you just happened to write their name in a very specific format. We've made it so it'll work without knowing that format. Specifically, if you enter a pseud that belongs to multiple users, you will get an error asking you to choose the proper user from a dropdown menu.
  • [AO3-5606] - We fixed the same issue with series, too!
  • [AO3-5662] - If you were trying to add both a co-creator and a series to a work at the same time, but there was an error adding the co-creator due to that whole "two Mary Sues" scenario we described above, the series would vanish and not get added to the work once you clarified the co-creator situation. We did a little work to make sure the series gets added now, too.
  • [AO3-5061] - If you pressed "Preview" when making changes to your work's or chapter's creators, the proper creators weren't listed on the preview page. Now they are! (This does not apply to creators who are only invited -- they won't show up on the preview.)
  • [AO3-5620] - It used to be that adding a co-creator to a chapter wouldn't add that co-creator to any series the work was in. Now it does!
  • [AO3-5663] - Previously, if you had a series and added a co-created work to that series, the other user(s) on the work would not get listed as co-creators of the series. Now they will.
  • [AO3-5261] - When someone added you as a co-creator, the email used to only say, "You've been added as a co-creator." Now we tell you exactly who added (or invited) you, which can be helpful if there's more than one other person on the work or series.
  • [AO3-3915] - Using the form for editing multiple works to add a co-creator to multi-chapter works didn't add the person to all of the works' chapters. Now it does!

Removing creators

  • [AO3-5334] - The option to remove yourself as a work or series co-creator previous said "Remove Me As Author," which makes certain assumptions about what you're editing. We've changed it to say "Co-Creator" instead. (We also tweaked the resultant error or success message to refer to creators rather than authors.)
  • [AO3-5083] - While using the newly renamed "Remove Me As Co-Creator" button on a series correctly removed you as one of the series' creators, preventing you from making future edits, it incorrectly left your name on the series. Now your name will vanish along with your editing privileges.
  • [AO3-5692] - On the form for editing multiple works, there was an option for removing co-creators. This option didn't work and wasn't actually something we wanted to provide, so we removed it.

Miscellaneous

  • [AO3-5475] - The mass edit form used to give a rather unhelpful 500 error if one of your changes was invalid (e.g. you were trying to add a tag containing a banned character like * or ^). Now it will take you back to the form with an error message that tells you what the problem is and provides you with an opportunity to fix said problem.
  • [AO3-5625] - Thanks to a bug we believe was generally caused by changing a work's creators using the mass edit form, it was occasionally impossible to edit a work you'd created. (Basically, while transferring the work, the bit in the database responsible for saying, "This user owns this chapter of this work," would go missing.) We've made it so the bug shouldn't happen anymore and so any works already affected by the bug should be editable now.
  • [AO3-5659] - Once upon a time, we planned to make a /browse page for every user, and we had some code relating to it in place. This was so long ago that we'd kind of forgotten why we'd ever wanted that page, though, so we deleted the code.
  • [AO3-5751] - Admins were previously only able to see draft works if they were one chapter and if they were given a direct link, which made it difficult to provide support for draft-related issues. Now admins can see drafts with multiple chapters and draft chapters on posted works. They can also access a user's Drafts page in case the user doesn't provide a direct link.
  • [AO3-5753] - The character limit for comments was previously set to 4,300 characters -- a nod to the limit on LiveJournal, where many AO3 coders and users came from in the early days. But that was a long time ago, and some people like to leave much longer comments, so we've increased the limit to 10,000 characters.

Infrastructure

  • [AO3-5729] - We upgraded to a more recent version of the nokogiri gem.

Comment

Post Header

Published:
2019-08-16 16:31:29 -0400
Tags:

Our latest releases bring improvements for tag wranglers and site admins, along with a handful of user-facing bug fixes.

Credits

  • Coders: Ariana, cosette, Elz, Enigel, james_, redsummernight, Sarken, Tal Hayon, ticking instant
  • Code reviewers: Ariana, james_, Naomi, redsummernight, Sarken, ticking instant
  • Testers: Alison Watson, antonomasia09, bingeling, cosette, doughtier, Dre, Hvalrann, james_, Lady Oscar, Matty, Paula, redsummernight, Sammie Louise, Sarken, Scott, ticking instant, and the entire Support and Policy & Abuse Committees!

Details

Site Administration

  • [AO3-5126] - When an admin searched for a user, the results would be accurate, but the tally would be too high. Turns out the code was counting the total number of pseuds for every user whose email address matched the search query! We made it count the users now.
  • [AO3-5097] - Speaking of admins searching for users, some of the code for it was very long and messy and in places it had no business being -- in short, an abomination. (Direct quote from the issue description.) It is now much cleaner, properly located, and less abominable!
  • [AO3-5099] - We've made it easier for admins to search for users by letting them specify whether to search by username or email address and by giving them an option to only get results that are exact matches.
  • [AO3-4159] - Our Policy & Abuse team used to need to ask our database admins to check when and from what IP address a user had last logged in. This was terribly inefficient for everyone, so we've put that information in the admin interface now.
  • [AO3-5549] - We send spam reports to our Policy & Abuse team, but sometimes these emails failed due to a spam user deleting their account. Now the emails should go out even if that happens.

Tag Wrangling

  • [AO3-2452] - It used to be possible for wranglers to add the wrong sort of parents to a tag, e.g. making the fandom Big Hero 6 a parent of the media tag Movies. Worse still, when this happened, the incorrect parent couldn't be removed. We made a bunch of changes to the tag code to prevent this and cleaned up all of the existing incorrect parents.
  • [AO3-5697] - Our code checks to make sure no tags acquire duplicate meta tags, but code isn't a foolproof way to ensure something is unique, so now we've added a check at the database level as well.
  • [AO3-4682] - We were missing a success message that would let wranglers know they had successfully unassigned a wrangler from a fandom. We've added one!

Collections

  • [AO3-3953] - When browsing works in a collection, following one of the tags in the work blurb would take you to other works in the collection that had that tag. This was all well and good in theory, but sometimes those collection-scoped links would escape, and you'd be browsing works outside a collection only to end up trapped in a random collection. We've changed it so tag links will always take you to the full work listing for that tag, even if you're in a collection.
  • [AO3-4592] - Back in 2016, it was possible for collection maintainers to invite works to anonymous or unrevealed collections, and those works would immediately be marked anonymous and/or unrevealed without their creators' knowledge. We fixed the bug when it was discovered, but the fix didn't apply retroactively, so we wrote a little clean-up task to fix all the works that were still affected by this bug. Turns out there weren't any!
  • [AO3-5720] - Under certain circumstances, it was possible for a collection maintainer to add someone's work to their collection without that someone's approval. We've made that un-possible now.

Miscellaneous Fixes

  • [AO3-5699] - When Open Doors uses the mass importing tool, it's supposed to send an email to everyone whose work was imported. That was broken for a bit, but now it's working again!
  • [AO3-5694] - The orphan_account's dashboard had mysteriously stopped loading. We made an educated guess that the code for tallying the fandoms on dashboard pages was to blame, and we were right! The page loads now, but it will be sans fandom list until we can speed up the code. (Other accounts, and even any pseuds for orphan_account, will still have fandoms listed on their dashboard.)
  • [AO3-5039] - If you were up to some sneaky HTML manipulation, it was possible to add a tag that wasn't canonical as a Favorite Tag. We've put the kibosh to that now.
  • [AO3-5691] - When a user tried to change a work's publication date to the future, the error message would say "translation missing," followed by a bunch of nonsense. Now it correctly says something more like, "Hey, you can't do that with the publication date."

Infrastructure and Security

  • [AO3-5695] - We updated the gem for our error monitoring service.
  • [AO3-5678], [AO3-5682], and [AO3-5689] - We use a nifty tool called Brakeman to warn us about potential vulnerabilities in our code. Sometimes, though, it misses some context and worries about things that aren't actually problems. We did some refactoring to make it realize three such issues were all in its head.
  • [AO3-5480] - The company our Support and Policy & Abuse teams use made some changes to their code, which required us to make some changes to our code if we wanted the Support and Abuse Report forms to keep working. We decided that was kinda important, so we made the changes.

Comment

Post Header

Published:
2019-08-08 16:13:24 -0400
Tags:

We fixed some issues that were making things harder for our Open Doors team, updated a whole bunch of invisible bits and bobs, and took care of several unrelated bugs for extra neatness. An extra special thank you to our first-time contributors Alix and lethnie!

Credits

  • Coders: Alix, Angela, Ariana, cosette, Elz, james_, lethnie, Nerine Luna Cyran, redsummernight, Sarken, Tal, ticking instant
  • Code reviewers: Ariana, james_, redsummernight, Sarken
  • Testers: Adi M., CJ Record, GoldenFalls, Lady Oscar, Morgan Drake, Natalia Gruber, Nerine Luna Cyran, Paula, redsummernight, Rebecca Sentance, Sarken, Veronica M

Details

Imports

  • [AO3-5143] - Trying to sign up for an account and claim a work imported by our Open Doors team wasn't working correctly when the second of two identical buttons on the Claiming Your Imported Works page was used, because sometimes bugs are just really weird. We have now fixed that second button.
  • [AO3-5648] - When importing a work from another site, anchor links such as #notes were being turned into absolute links back to the original site. They are now kept as relative links.
  • [AO3-5650] - We added the option to set a language for imported works when the Open Doors team does a mass import of an at-risk or defunct archive.
  • [AO3-5245] - The task to bulk update redirects for Open Doors imports used to rely on string matching to find the works to update, but now uses the work id.
  • [AO3-5572] - One of the fields in the JSON response for the mass import code could be either a string or an array, which made life awkward for the client side application Open Doors use for imports. It is now consistently an array.
  • [AO3-5664] - We removed the old, unused version of the code Open Doors uses for mass imports.

Site Administration

  • [AO3-5310] - To combat abuse by spammers who request invitations to post MORE SPAM (e.g. advertisements for streaming sites), we now display the IP address associated with an invitation request to admins who review the automated queue.
  • [AO3-4681] - Deleting one of the publicly posted Wrangling Guidelines wouldn't lead to a friendly success message (despite success), so we added the friendly message.
  • [AO3-5473] - Way back in 2012, we added an admin setting that would allow us to disable filtering in the event the move to Elasticsearch made the site blow up. Seven years and several upgrades later, it's probably safe to say that Elasticsearch is doing okay, so we removed the setting.
  • [AO3-4110] - We restored the site admins' ability to see the number of private bookmarks (albeit not the bookmarks themselves) when looking at a user's dashboard.

Misc. Fixes

  • [AO3-5315] - The autocomplete keyboard controls (e.g. for entering tags in the work form) were previously assuming that all users are using QWERTY keyboards, which some obviously aren't. It now correctly detects when the comma key is used and processes input accordingly.
  • [AO3-5135] - When using the Edit Multiple Works page, checking the name of a collection (where it says "Check to remove") would not actually remove the work from said collection. Now it does!
  • [AO3-5204] - In the Chrome browser, the "Comments" link at top of a work wouldn't scroll you down to the comments section, nor would the "Next" link take you to the top of the next page of comments. Now both those links work!
  • [AO3-5526] - We had previously fixed cramped work stats by introducing a few pixels of space between wrapped lines; it turned out to be a smidge too much space, so we pushed the lines ever so slightly closer again. 🤷
  • [AO3-5637] - Occasionally, going to the work listing for a tag (e.g. Alternate Universe) would show a filtered version of that page (e.g. Alternate Universe works rated Teen And Up Audiences). We've fixed the caching bug that caused this to happen.
  • [AO3-2808] - The parser checking the user-created CSS in site or work skins didn't know that .jpeg was a valid file extension and wouldn't accept those files as background images. We have told the parser it's fine.
  • [AO3-4996] - On our About page, the link to get in touch with the Communications team was broken, so we unbroke it.
  • [AO3-5267] - We previously didn't allow fullscreen mode for embedded videos using the iframe option, but now we do!
  • [AO3-5672] - Our charming homepage blurb (explaining the purpose of the Archive to logged out users in a few words) was using unconventional spelling for "nonprofit" and "noncommercial." We have removed the offending hyphens now.
  • [AO3-5180] - Words in headings would sometimes break in odd places on small screens, so we made sure that shorter words are kept intact while very long words are still broken to avoid horizontal scrolling or other messiness.
  • [AO3-5656] - Trying to download a work with a summary set to nil for some reason (as opposed to works with no summary) would lead to an error 500. Now those works can be downloaded as well.

Infrastructure

  • [AO3-5123] - Refactored some code which controls the display of labels for different kinds of tags, making it invisibly but reassuringly neater.
  • [AO3-5647] - We removed some unused bookmark code.
  • [AO3-5598] - Due to race conditions, we'd have a few errors whenever the cache on the Archive's admin settings expired. We've added a race_condition_ttl to stop the errors.
  • [AO3-5653] - We fixed an automated test that was failing intermittently, which is always rather annoying.
  • [AO3-5651] - The Archive is currently running Elasticsearch 6.7, so we made sure the CI services that runs our automated tests use the same version.
  • [AO3-5654] - We made a few tweaks to various configuration files used by our version control system and CI services.
  • [AO3-5674] - We upgraded to a more recent version of the nokogiri gem.

Comment


Pages Navigation