AO3 News

Post Header

Published:
2018-12-28 05:41:41 -0500
Tags:

We've updated the code that powers our login system to use the Rails Devise gem and fixed several unrelated bugs. Special thanks to Riley Avron for his first code contribution!

Credits

  • Coders: Ariana, Elz, james_, Lee, redsummernight, Riley Avron, Sarken, Tal, ticking instant, Wendy Randquist (Littlelines)
  • Code reviewers: james_, redsummernight, Sarken, Scott, ticking instant
  • Testers: Ariana, Enigel, GoldenFalls, Lady Oscar, MagnusIsMyRock, mumble, redsummernight, Sammie Louise, Sarken, ticking instant

Details

Authentication

  • [AO3-2839] - We are now using the Devise gem for all our authentication needs. \o/ You shouldn't notice any differences when creating an account, logging in, or navigating the site as a guest; however, we did change a few small things:
    • You can now log in using either your username or your email address.
    • If you forget your password, we will now email you a link you can use to create a new password, instead of sending you a temporary password.
    • If you change your password, you'll get logged out everywhere, e.g. both your laptop and your phone, and will need to sign in again. This can be helpful if you forgot to sign out of your account on a public computer, since you can make sure you're signed out everywhere by changing your password on whatever device you're on.
  • [AO3-5589] - Due to changes in the way passwords are sanitized, you will need to reset your password if it previously contained the < or > character. (You can continue to use < and > in your password; it just needs to be updated for our new system.)
  • [AO3-5590] - After the initial Devise update, we noticed queries to look up users by email or username became noticeably slower. We changed them to use the appropriate database indices and they are faster now.

Works & Comments

  • [AO3-5541] - We automatically delete drafts that are older than a month; however, there was an issue that led to empty ghost drafts haunting the error logs and creating problems for the tag wranglers. We rewrote the deletion process to make sure old drafts are properly disposed of.
  • [AO3-5529] - Works on the "Works in Collections" page were no longer ordered in chronological order, making one's latest unrevealed or anonymous works harder to find. We've nudged them back into the correct order now.
  • [AO3-5560] - We've ensured that comments on a hidden work can't be accessed or edited anymore, even when the link to the specific comment or comment page is known.
  • [AO3-5561] - While we were at it, we made sure the same is true for works in unrevealed collections.
  • [AO3-2378] - After fixing non-Latin word counts for new works in an earlier deploy, we've now applied the fix to all existing works as well, so word counts on Chinese and Japanese works, for example, should be much more accurate now.
  • [AO3-5571] - To prevent duplicates during an Open Doors mass import, there's a check for existing external bookmarks. However, it crashed when the archivist also had AO3 works bookmarked, so we fixed that.
  • [AO3-5559] - It was previously possible to include the class attribute when using HTML in a bookmarker's note or comment. This was unnecessary, since user-created work skins aren't applied to those areas, but could also be used for mischievous purposes to change the appearance of one's comment using our site CSS. We've now made sure that the class attribute can only be used in the body and notes of a work.
  • [AO3-5238] - We don't allow certain characters in CSS classes used for work skins, but the summary field must have missed the memo. It now checks for permissable class names when HTML is entered.

Misc. Fixes

  • [AO3-5313] - The title of the Session Expired page used to be "Auth Error Error". We changed it to have only one "Error".
  • [AO3-5438] - The email sent when one of your prompts in a Prompt Meme was claimed had a rogue "%>" after the work title; we hunted it down and removed it.

Tests & Infrastructure

  • [AO3-5530] - Before our big database upgrade to allow for 4-byte Unicode characters on the Archive 😍🤩🤭, we added an automated test to account for the possible new content.
  • [AO3-5566] - We added tests for previewing a work while adding it to a collection.
  • [AO3-5570] - We are now running Elasticsearch 6.5.2, up from 6.2.4. \o/
  • [AO3-5563] - We updated the Rack gem to 2.0.6 to keep things secure.
  • [AO3-5562] - We've started using a service that will automatically submit pull requests for gem security updates.
  • [AO3-5554] - We fixed the name and syntax of the Ruby version file in our project.
  • [AO3-5586], [AO3-5588] - We updated our deploy script to reflect the changes to our server set up.

Comment

Post Header

Published:
2018-11-13 10:55:28 -0500
Tags:

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!

Credits

  • 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

Details

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.

Admin

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

Infrastructure

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

Comment

Post Header

Published:
2018-08-28 14:15:58 -0400
Tags:

We've improved the handling of mass imports for Open Doors, made life a little easier for the Support and Policy & Abuse teams, added some more performance tweaks for happy servers, and fixed a handful of assorted bugs!

Credits

  • Coders: Ariana, cosette, cyrilcee, digitalAlchemist, DreamSea, Elz, Hazel Seanor, MaaikeVR, Meepu, redsummernight, Russell Flaum, Sarken, Tal, ticking instant, tuff
  • Code reviewers: Ariana, james_, redsummernight, Sarken
  • Testers: Ariana, Lady Oscar, redsummernight, Runt, Sammie Louise, Sarken

Details

Works

  • [AO3-4896] - We previously removed the "Delete Work" button from works, as it was just a tad too easy to hit it by accident and then dismiss the pop-up warning, causing a lot of sadness. We have now also removed the "Delete Chapter" buttons for the same reason. You can still delete individual chapters from the Edit Chapter form.
  • [AO3-5140] - There was an error in our search-by-date code that meant it wasn't dismissing blank spaces after an "ago" (which would have been smart!), but was extra lenient about anyone typing in "5 days agosssss", which probably didn't happen a lot. It now does the smart thing.
  • [AO3-5369] - Paging through a work chapter by chapter will now take you past the big box of work information at the top, right to the chapter heading and summary. \o/
  • [AO3-5447] - Going to the works page for a username that does not exist would inexplicably show the general "Recent Works" listing instead; going to a non-existent pseud's works page would throw an Error 500. Both cases now produce neat 404 pages, as they should.
  • [AO3-5503] - Since we may be sending out many subscription notices for the same work at the same time, and those emails contain the same pseud/user/tag/series data, we've added caching blocks to our email-building code so it doesn't have to repeat all the database queries for each email.
  • [AO3-5445] - The "Refuse Gift" link would give an Error 500 if you weren't logged in as the recipient of the gift (an unlikely scenario to begin with). The refusal attempt now leads to the proper error message, asking you to log in.
  • [AO3-5019] - In downloads, the title of a parent work overlapped the words "This work was inspired by" in the inspired work. Oops. It looks much tidier now.
  • [AO3-5420] - In a certain browser that shall not be named, if the stats section of a work blurb spanned multiple lines and had links (for comments, collections, kudos, and bookmarks), the underline styling of said links would touch the line below it, like awkward little hats. We've added a bit more space between the lines to avoid this.
  • [AO3-5453] - Work deletion sometimes failed because of an email encoding error. That should now be fixed.
  • [AO3-4625] - We produced a new version of the mass import API used for official Open Doors imports in order to provide importers with better error messages.

Support and Policy & Abuse

  • [AO3-5323] - Sometimes we experience a problem so widespread or noticeable (e.g. glacial site slowness) that our Support team receives literally hundreds of messages in the span of minutes, creating quite a bit of work for them. However, we're usually already aware of the problem and composing a quick tweet over at @AO3_Status at that point. To give Support some reprieve during those times, we've made it possible to temporarily disable the Support form until the issue has been taken care of.
  • [AO3-5190] - Submitting an Abuse report or Support request and running into an error (e.g. due to missing information) would reset the selected language to English. Language selection is now preserved like all other form input.
  • [AO3-5495] - Sometimes, a database admin has to look up comments by IP address for the Policy & Abuse committee. Comments are now indexed on IP address, making this task a bit faster.

Miscellaneous

  • [AO3-4559] - The language lists to select news posts, works, or other items in a particular language had some wonky alphabetization issues. "Suomi" (fi) was sorted between "español" (es) and "Français" (fr), potentially leading to confusion. It should now be more intuitive to browse the list (with "Suomi" cozied up with the other S-languages).
  • [AO3-5185] - Blank tokens were being erroneously stored in our autocomplete system, which sometimes led to incorrect suggestions. That should no longer happen going forward.
  • [AO3-5510] - We've added a configuration option to how we update the tagging counts in the wrangling interface, to see how we can make the database servers happier about these updates.
  • [AO3-5335] - Our static error pages (such as our charming Error 502 notice) had some incorrect menu items in the navigation bar. They're all tidied up now!
  • [AO3-5448] - Trying to access a non-existent (e.g. misspelled) FAQ item would throw an Error 500 and now produces a neat 404 page.
  • [AO3-5509] - Sometimes our automated tests failed because Elasticsearch didn't start up quickly enough. We made it so the tests wouldn't run until Elasticsearch was fully started.
  • [AO3-5496] - We've updated our transaction gems. It seemed neater that way.

Comment

Post Header

Published:
2018-08-09 14:29:06 -0400
Tags:

We've fixed some issues with our new and (now even more) improved search features, addressed some unsatisfactory code that was slowing down the site and making the servers sad, fixed a handful of bugs, and generally tidied up around the place a bit.

Credits

  • Coders: Ariana, cosette, DreamSea, Elz, james_, redsummernight, Sarken, Scott, Tal Hayon, ticking instant
  • Code reviewers: Ariana, Elz, james_, redsummernight, Sarken, Scott, ticking instant
  • Testers: cosette, Danielle Strong, disjointed, hhertzof, james_, Lady Oscar, redsummernight, Runt, Sarken

Details

Searching & Filtering

  • [AO3-5470] - When we were still running both versions of Elasticsearch, indexing would fail for the old version. We fixed that, but it's kind of irrelevant now. But still!
  • [AO3-5329] - The summary above a listing of search results (showing which input led to said results) was leaving out crossover status and completion information. Now they're properly included.
  • [AO3-5444] - Searches with over 100,000 results said "100000 Found" instead of displaying the actual number, which was an unintended consequence of limiting access to 5,000 pages of search results at a time. All searches will now show the correct number.
  • [AO3-5461] - If a tag has two meta tags and a creator uses both that tag and one of its meta tags (or one of its synonymous tags) on a work, it's now not considered a crossover anymore. That was a bit of an unexpected glitch there.
  • [AO3-5465] - We also made sure that incorrectly marked crossovers will be reindexed, so they don't show up in crossover searches anymore. If a work's fandoms share a common meta tag, it's not a crossover!
  • [AO3-5484] - Somewhat relatedly, some tags are missing their inherited meta tags, leading to wrong results in crossover searches. The way we check for crossovers now takes this charming bug into account.
  • [AO3-5462] - The Tag Search used to display 50 results per page, which was reduced to 20 after the search update. Oops. We've reverted it to its previous abundance.
  • [AO3-5463] - The "Works in Collections" page used to include a user's works in anonymous or unrevealed collections, until the search update broke that a bit. They're back now!
  • [AO3-5468] - The "Complete works only"/"Works in progress only" options were hidden under the "Status" heading, which was a bit opaque. We've renamed it to Completion Status.
  • [AO3-5472] - Tapping checkboxes and radio buttons would not always work correctly on iOS with VoiceOver. Now a double tap on a checkbox will select the option, as expected.
  • [AO3-5460] - There were a few tiny errors in the help text for the work filters, which we've corrected.
  • [AO3-5483] - As explained in our Hidden search operators cheatsheet, words entered into the main search inbox should be separated by an AND if you want to search across all work properties. We have amended our help text accordingly.

Backend & Performance

  • [AO3-5466] - Upgraded the nokogiri gem to 1.8.3
  • [AO3-5471] - Updated our deploy script to account for servers newly running Elasticsearch.
  • [AO3-5486] - To comply with the GDPR, we provide each user who contacts us (and can prove they own a certain account) with a list of data that account has submitted to or created on the Archive. This script simplifies that process.
  • [AO3-4470] - Added more caching for site settings so that we can make fewer database requests.
  • [AO3-5167] - Reworked some work/bookmark ownership checks for the same reason.
  • [AO3-5172] - Improved the performance of a method that cleans up tag data when works are deleted or tags are wrangled.
  • [AO3-5177] - Reduced trips to the database when reviewing/approving tag set nominations.
  • [AO3-5500] - Tweaked some code so work and bookmark indexes will render faster.
  • [AO3-5479] - We cache data regarding the number of times each tag is used, so that we can sort them by size/popularity. Recalculating that can put pressure on the database, so we spread out the timing of it to lighten the load.
  • [AO3-5287] - In another place where we cache the number of times tags are used, we made the calls asynchronous so that posting and deleting works should be a little faster.

Tests & Clean-up

  • [AO3-4818] - We extended the automatic tests for prompt memes.
  • [AO3-4928] - We also extended the tests for gifted works.
  • [AO3-5073] - There were intermittent failures in the tests for the history feature. It should be more reliable now.
  • [AO3-5455] - To reduce the runtime for our test suite, we split the tests into groups so each group can be run separately where convenient.
  • [AO3-5459] - Updated the Elasticsearch version on our CI services to match the version we use on the Archive.
  • [AO3-5491] - Sometimes our automated tests failed because Elasticsearch didn't start up quickly enough. We made it so the tests wouldn't run until Elasticsearch was fully started.
  • [AO3-5485] - The rake task we used for providing basic development data wasn't working because we had changed our database structure since the last time anyone ran the task. Now the files it uses are updated and we have automated tests to stop us from breaking things again.
  • [AO3-5456] - Removed old Elasticsearch tests we didn't need anymore. \o/
  • [AO3-5424] - Removed some unused tag-related code.
  • [AO3-5227] - Removed some unused search-related code.
  • [AO3-5228] - Removed some unused wrangling-related code.

Misc. & Assorted

  • [AO3-4842] - Line breaks were getting stripped out of Support and Abuse messages, making them hard to read. We now make sure that carriage returns are preserved on the way to our ticket tracker.
  • [AO3-5467] - Buttons, button-style links in headings, and button-style status indications (e.g. Unread) in the inbox had different fallback fonts than other elements. Now they all have the same!
  • [AO3-4579] - We've added some information to challenges, letting participants know that their email addresses will be visible to mods, and letting mods know that any kind of abuse will lead to account termination.
  • [AO3-4905] - Requesting a temporary password made it impossible to change your email until the password had been reset (which was confusing and annoying if you remembered your password and never went through with the reset). You can now change your email address regardless.
  • [AO3-5474] - We used to have an admin setting to disable work downloads for guests, which recently asserted itself a little more aggressively than it should. It's gone now.

Known Issues

See our Known Issues page for current issues.

Comment

Post Header

Published:
2018-07-03 07:31:32 -0400
Tags:

It's here! This mega release includes a major upgrade of our search engine (with the corresponding backend changes to get the most out of our servers), significant improvements to searching and filtering, and a few small bug fixes we just threw in while we were at it.

We want to thank everyone involved in this deploy, with an extra special shoutout to ticking instant, who went above and beyond as an external code contributor and reviewer. <3 Additionally, heartfelt thanks to everyone who has donated to the OTW, enabling us to contract out some of the more tedious coding work.

Important: We are rolling out these changes in batches, so not everyone will immediately see the new filters! Please keep an eye on the @AO3_Status Twitter account for the latest updates on our progress.

Credits

  • Coders: alexwlchan, Ariana, bingeling, cosette, de3sw2aq1, DreamSea, Elz, james_, redsummernight, Sarken, Scott, ticking instant, Wendy Randquist (Littlelines)
  • Code reviewers: Ariana, cosette, Don Denoncourt (Corgibytes), Elz, james_, redsummernight, Sarken, ticking instant
  • Testers: Ariana, bingeling, briar_pipe, CJ Record, Claire P. Baker, cosette, GoldenFalls, james_, Lady Oscar, Lex, MagnusIsMyRock, Matty, Meepu, mumble, Nrandom, Rebecca Sentance, redsummernight, Relle, Runt, Sarken, ticking instant, Veronica M, VSSAKJ, ZoëRenee

Details

Searching and Filtering

  • [AO3-4815] - We updated Elasticsearch and wildly improved the filtering interface! \o/ This includes all the individual issues that made up this massive overhaul, excluding any bugs we caught and fixed after putting the code on the live Archive and kicking the tires before the full launch.
  • [AO3-5151] - We replaced the old /people index (which was mostly useless) with a redirect to the People Search page, e.g. when trying to reach a non-existing profile URL.
  • [AO3-5269] - Sorting work listings by the creators' usernames wasn't working right for usernames starting with numbers. Now the names should appear in the proper order!
  • [AO3-4187] - After filtering AO3 News posts by tag, the tag selection in the dropdown menu was not preserved when paging through the results. Now it is!
  • [AO3-5361] - We reworded the button link text for accessing all bookmarks to make it less vision-centric and, at the same time, fixed a visual alignment issue on bookmark listings. Neat!
  • [AO3-4138] - We also changed vision-centric and text-centric language on the History and the Marked for Later page.
  • [AO3-5412] - In the Inbox, the filtering sidebar had lost its radio buttons. Oops. We've carefully put them back and will keep closer watch now.
  • [AO3-5341] - The Search and Browse FAQ will be a little outdated while the Docs team and translators update all answers for the new search code. We've added a little box to the top of the page, linking to a news post describing the new search features, to be taken off when the FAQ updates are complete.
  • [AO3-5427] - We did, however, update the relevant help text for the search and filtering forms. \o/
  • [AO3-5232] - To make optimal use of the new Elasticsearch, search results have a built-in limit to keep output manageable. We have set this limit to 5,000 pages, or 100,000 items, and will monitor server performance.
  • [AO3-4093], [AO3-4540], [AO3-5253], [AO3-5353], [AO3-5390] - Bookmarks of series and external works were not showing up in the proper listings after a variety of tag wrangling changes or changes to the work. This all got taken care of in the process of rewriting (and then fixing) the bookmark code for Elasticsearch 6.

Administration

  • [AO3-5311] - While we're juggling two versions of Elasticsearch on the Archive, messages sent to Support will include information about which version the user is on.
  • [AO3-5319] - We fixed an issue where users were able to access other users' invitation pages, so now they can't. As you'd expect.
  • [AO3-5324] - Trying to hide a series as an admin would give Error 500 and the series wasn't actually hidden. That's all fixed now!

Data Protection

  • [AO3-5417] - Due to the General Data Protection Regulation (GDPR) going into effect on May 25, we took a break from working on our search engine overhaul to update our Terms of Service to show that we comply with GDPR's privacy guidelines.
  • [AO3-5416] - Now every time the Archive's Terms of Service are updated, users will be asked to agree to the new version before they can continue using the site, making us the millionth website that did this to you in May. Confetti!
  • [AO3-5418] - We also added GDPR-relevant information to the Invitation Requests page, so users know they have to consider whether they're of age and have read the ToS before we send that invitation.
  • [AO3-5419] - With the addition of a GDPR-appropriate info box to the "Edit My Profile" page, we now make sure you really, fully consent to having the profile information you entered to be displayed on the site, be displayed on the site.

Misc.

  • [AO3-5260] - If you added a co-creator to a work or series, that person would get an email saying they'd been added as a co-creator, but it wouldn't list all the creator names for the work (such as yourself). The email is now more informative in that regard.
  • [AO3-5086] - We updated our whitelist for embeds to account for new Spotify code.
  • [AO3-5203] - The CSS help documentation (e.g. for creating work or archive skins) had inconsistent spacing around section headings. It looks much nicer now.
  • [AO3-5398] - The "Forced Logout" or "Lost Cookie" page (shown to you when running into a cookie problem we are still trying to solve) now includes a troubleshooting tip, namely going to the actual Log In page instead of using the username and password fields in the page header.
  • [AO3-5237] - Some of the little help boxes you can access through the question marks next to links or form labels have been updated with new copy. Thank you, AO3 Docs team!
  • [AO3-5415] - We noticed that loading kudos to display on a work was taking a long time, and found that we weren't making proper use of caching to avoid trips to the database. A tiny little tweak in the code makes kudos load much faster now!
  • [AO3-5321], [AO3-5339], [AO3-5354], [AO3-5366], [AO3-5384], [AO3-5385], [AO3-5439], [AO3-5451] - We updated various gems: paperclip, nokogiri, sinatra (twice!), loofah, sanitize, rails-html-sanitizer, and sprockets.

Known Issues

See our Known Issues page for current issues.

Comment

Post Header

Published:
2017-11-22 12:38:05 -0500
Tags:

In these releases, we implemented several anti-spam measures, fixed some problems with our invitation queue, and added clarifying text to the site when the invitation queue is temporarily suspended.

Credits

  • Coders: Ariana, Elz, Naomi, redsummernight, Sarken, Tal Hayon
  • Code reviewers: Ariana, james_, Sarken, redsummernight, tickinginstant
  • Testers: james_, Elz, Lady Oscar, mumble, Sammie

Details

Invitations

  • [AO3-4222] - When the invitation request queue was suspended it left no clear indication anywhere on the site of how the Archive invitation system works or that it was currently shut off. We have now added explanatory text to the appropriate places and separated the form to add yourself to the queue from the form that lets you check your place in the queue.
  • [AO3-5235] - It was previously possible to add yourself to the invitation request queue by circumventing the user interface. We've now closed that tricksy loophole.
  • [AO3-5205] - We have put in checks to prevent adding variations of the same email address (e.g. the same name with periods in different places) to the invitation request queue.
  • [AO3-5243] - Deleting email addresses from the queue was a slow and annoying process, which we have now made less annoying and less slow for our Abuse personnel.
  • [AO3-5249] - Admins can now search the email addresses in the queue.
  • [AO3-4971] - If an admin tried to delete the same invitation request twice (e.g. with the help of browser tab shenanigans), they would get an unhelpful error 404. It now displays a more helpful message.

Spam

  • [AO3-4331] - We have added improvements to our anti-spam tool, making it possible to train the algorithm and spot more spam works as they're posted (and leave non-spam works alone).
  • [AO3-4200] - We now add the rel="nofollow" attribute to all links inside works and comments to discourage spammers from using the Archive to improve their search result standings.
  • [AO3-5234] - Site admins can now toggle an option that will automatically hide works that our spam detector has classified as spam. Hidden spam works can then be reviewed and, if not spam, be unhidden. \o/
  • [AO3-5251] - If a work gets hidden as spam, the creator will receive a notification in which we assure them that we review our software's decisions and will unhide the work if it turns out to be not actually spam. (If it is, it will be summarily deleted and GOOD RIDDANCE.)
  • [AO3-5247] - Two kinds of notifications that were theoretically supposed to be triggered by declined invitation requests/spam works were not actually being sent (and instead cluttered up our error logs). They will now be sent in the appropriate cases.

Automated Tests

  • [AO3-5240] - Completely unrelated to any spam concerns, one of our automated tests broke when daylight savings ended in the US, and we had to reapply a fix that had previously taken care of the problem. Excitement!
  • [AO3-3848] - We've added a test to check that accounts block access after repeated password failures.
  • [AO3-4855] - Our test coverage for gift exchanges has been improved by some rspec additions!

Known Issues

See our Known Issues page for current issues.

Comment

Post Header

Published:
2017-10-21 17:43:04 -0400
Tags:

We recently fixed MOBI downloads on Kindle, solved some miscellaneous bugs, and cleaned up some code around the site.

Credits

  • Coders: Elz, cosette, james_, redsummernight, Sarken, ticking instant
  • Code reviewers: Ariana, Elz, james_, Sarken
  • Testers: Aline, bingeling, Lady Oscar, redsummernight

Details

Works & Comments

  • [AO3-5202] - MOBI downloads were suddenly failing on Kindle devices, due to a tiny little typo that had slipped into our code unnoticed. Now that we've noticed it, you should be able to download MOBI files again.
  • [AO3-5199] - On October 5, we had to temporarily disable downloads when we mysteriously ran out of disk space. It turned out that was because our clean-up code was broken and we weren't deleting HTML files after generating them. We've fixed that.
  • [AO3-1259] - The option to remove yourself as the co-creator of a chapter was buried on the page for reordering a work's chapters. Now it's also in a much more sensible location: the chapter edit page. (And as a bonus, when you remove yourself as a co-creator, the byline on the chapter will actually update now!)
  • [AO3-5197] - Works with no content at all (near impossible to create, but sometimes databases do weird things) were causing word count errors, since the counter wasn't prepared for having nothing to count. It just counts to 0 now.
  • [AO3-5125] - We've added a Rake task to map imported works to their counterparts on the original archives. Now if we host the original domain, individual work links from the original site will redirect to the copy of the work on AO3, as they should.
  • [AO3-177] - Comments marked as spam were counted toward the total number of comments, even though they were hidden from view. We've made sure that wherever a comment count shows up, it now displays the number without spam.

Skins & Frontend

  • [AO3-4376] - We had CSS-related documentation in a few different places, laying out information for creating your own skins to style the Archive or the content of works. This information is now all in one place.
  • [AO3-4840] - Archive skins created with our Skin Wizard didn't properly style the Reindex Work button (visible to wranglers). Now they do!
  • [AO3-5183] - The admin page for approved site skins was timing out, so we made a small performance tweak and now it's greased lightning.
  • [AO3-4658] - The login page looked wonky on small screens and made it harder to log in on mobile devices. It's all pretty now!

Misc.

  • [AO3-5201] - When accessing the Archive through our HTTP option (relevant when we switch to a secure default protocol for good), it was impossible to submit a page from the insecure.archiveofourown.org domain to Abuse. Now it is!
  • [AO3-4976] - In autocomplete fields, tags with ampersands (e.g. "Abbi & Ilana") would sometimes show up with a semicolon after the &, which looked untidy. We've tidied that up!
  • [AO3-4004] - Trying to use the tab button to navigate from certain autocomplete fields after entering a tag would jump you back to the top of the page in some browsers. You should now be able to reach the correct field.
  • [AO3-5082] - The test for removing oneself as a co-creator of a work or series would fail sometimes (but not always), making the test not very helpful. That's fixed now.
  • [AO3-5173] - There was some unused code lingering from a feature we had previously removed. It lingers no more.

Known Issues

See our Known Issues page for current issues.

Comment

Post Header

Published:
2017-10-12 13:48:34 -0400
Tags:

With our latest deploys, we've ensured that common audio and video players still work after our pending move to HTTPS, added parent links to comment threads, removed a whole bunch of unused code, and took steps to prevent users from adding other people's works to anonymous or unrevealed collections.

Note: We successfully made the switch to HTTPS for a few days; however, the extra strain from encrypting all traffic proved too much for our servers at peak times. Until we have installed additional frontend servers (coming soon!), HTTP will remain the default protocol. (Of course, you can still elect to use a secure connection, e.g. via a browser extension like HTTPS Everywhere.) Please follow @AO3_Status on Twitter for futher updates.

Credits

  • Coders: Ariana, Cesy Avon, cyrilcee, Dense Lancer, Elz, james_, redsummernight, Sammie Louise, Sarken, tuff
  • Code reviewers: Ariana, Elz, james_, redsummernight, Sarken
  • Testers: Alison Watson, Lady Oscar, mumble, natalia gomes, Sarken

Details

Works & Comments

  • [AO3-5192] - Common audio and video players that support HTTPS will still be accessible after our switch to secure browsing! We have adjusted the protocol in current embeds and added a step to our sanitizer that takes care of posts going forward.
  • [AO3-5188] - When trying to download a work as an ePub, users would frequently be served .zip files or a page of gibberish instead. We found the cause for this (caching! it's always caching!) and rewrote part of our download code to address the issue. Downloads should be served more reliably now.
  • [AO3-5159] - Some PDF files were also failing to generate, so we removed a line of code to see if that would help. Fingers crossed!
  • [AO3-3704] - If a work was styled with a work skin, and a co-creator edited that work later, the skin would be stripped off (...gruesome), requiring another edit by the first creator to tack it back on. Now the work skin stays where it should be at all times.
  • [AO3-5016] - It was previously possible to add other users' works to one's own anonymous and/or unrevealed collection, effectively hiding them from their creators (and everyone else) in the worst case scenario. We now prevent this, and display a helpful error message to the collection owner when they try.
  • [AO3-5058] - When importing someone else's work (as an Open Doors archivist), the site would throw an ugly Error 500 if it couldn't detect the work creator's email address on the imported page. It now provides a helpful error message instead.
  • [AO3-5131] - Trying to delete more than one comment from the same user, on the same work, when both had replies, was not possible for some reason. Turns out they would have both turned into identical "deleted comment" placeholders, and our validation code didn't like that. It's more lenient now.
  • [AO3-5144] - In order to make comment navigation easier, comment replies now have a "Parent Thread" link that takes you to the first comment in the thread and allows you to see the whole thing. \o/

Misc. Issues

  • [AO3-5015] - The location of the our backup Support form (used in case of serious site issues) had changed, so we edited the link on our Support form to save the OTW website a redirect.
  • [AO3-5044] - When changing one's username, one first had to read a little warning message about the consequences of a name change. However, that warning was misleadingly worded and didn't provide enough information about the process. We have improved the message now.
  • [AO3-4440] - In our efforts to make the AO3 interface translatable, we prepared the email that goes out to people with works in imported collections for eventual translation.
  • [AO3-5165] - We added some cleanup when certain background tasks failed.
  • [AO3-5189] - After running into an import test failure because an image URL in the relevant Dreamwidth post had changed, we rewrote the test in question to use the DW journal and community we manage ourselves to test imports.
  • [AO3-5195] - Coveralls was giving us wildly erratic scores for our test coverage, so we switched to Codecov, which will hopefully analyze our coverage in a more reliable manner.
  • [AO3-5055] - We have added a license to our code repository on GitHub.
  • [AO3-5187] - When we moved the autocomplete to its own Redis instance in our last deploy, we forgot to change the config files we use for our development environments. They're now updated and our coders can code again!

Code Cleanup

  • [AO3-4796] - When we deployed Rails 4, it broke filtering a little bit, so we had to use a hack-y workaround to fix it. Now that we're on Rails 5, we've removed the hack and filtering still works.
  • [AO3-5012] - We found some old code for automatically generating tag sets for a challenge that was never actually fleshed out, so we just removed it, for neatness.
  • [AO3-5093] - We simplified and tidied up part of our abuse report code.
  • [AO3-5094] - We also removed an ancient hack for fixing an encoding issue with time zones. It had fixed itself over the years, apparently.
  • [AO3-5096] - There was another bit of ancient unused code for bookmarks of external works, so we removed that too.
  • [AO3-5087] - More ancient, unused code for importing works was squashed while we were at it.
  • [AO3-5088] - Same for a security patch that had become irrelevant in the four years since we added it.
  • [AO3-5085] - We also had some lingering code for locales, which is now gone as well.

Known Issues

See our Known Issues page for current issues.

Comment


Pages Navigation