All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Require Wikidata IDs for genres, platforms, series, engines, and companies. (#3734)
- Disallow editing and creation of series, engines, and companies for normal users. This should primarily be done by editing Wikidata itself, rather than vglist. (#3734)
- Upgrade to Rails 7.1. (#3697)
- Migrate MobyGames IDs from the old slug format to the new numeric identifiers. (#3286)
- Fix GraphiQL failing to load.
- Disallow normal users from creating and editing game records. (#3251)
- Upgrade Ruby on Rails to Rails 7.0. (#2837)
- Upgrade GraphiQL IDE (for writing queries for the vglist GraphQL API) to 2.0. (#2840)
- Finally fixed a long-standing issue with the Doorkeeper gem that's used for OAuth applications, which prevented us from upgrading the Doorkeeper gem. This should unblock a lot of work on the new frontend. (#2834)
- Add a query and mutation for UnmatchedGames to the GraphQL API. (#2716)
- Add GraphQL mutations for connecting and disconnecting a Steam account. (#2698)
- Add GraphQL mutations for importing a user's Steam library, deleting a user, and resetting a user's library. (#2692, #2693)
- Add a User setting that allows users to hide the "Days Played" value on their user profile. (#2687)
- Add UnmatchedGames for tracking Steam imports that fail to match a game in the database. (#2633)
- Upgrade to Ruby 3.0. (#2420)
- Add
ratingCount
field to the Game type in the GraphQL API. (#2171)
- Add create, update, and delete mutations for Companies, Engines, Genres, Platforms, Series, and Stores to GraphQL API. (#1972, #1973, #1974)
- Add
deleteGame
mutation to GraphQL API. (#1976)
- Add
isFollowed
field on User type to GraphQL API. (#1959) - Add sorting to
users
query in GraphQL API. (#1960) - Add mutations for manipulating Steam and Wikidata blocklist records to GraphQL API. (#1961)
- Add
globalSearch
query to GraphQL API, for use with the search bar in the site header. (#1953)
- Add ability for moderators and admins to ban and unban users in GraphQL API. (#1929)
- Add ability for moderators and admins to remove game covers in GraphQL API. (#1930)
- Add
steamBlocklist
query to GraphQL API. (#1933) - Add
wikidataBlocklist
query to GraphQL API. (#1935) - Add
isFavorited
andisInLibrary
fields on Game type to GraphQL API. (#1937)
- Upgrade Node.js from v10 to v14. (#1927)
- Add
deleteEvent
mutation to GraphQL API. (#1895)
- Add Internet Game Database IDs. (#1817)
- Add audit logs via the paper_trail gem for tracking changes to companies, games, genres, engines, platforms, and series records. Now every change to a record is tracked including the contents of the change and the user that changed it. (#1806)
- Change the user lists on game pages to a grid of avatar images. (#1771)
- Update the copyright year, Happy New Year! :)
- Limit the sizes of the cover and avatar images in the GraphQL API, and use the fully-qualified URL rather than just the path. This is a breaking change for API users. (#1747)
- Prevent ActiveStorage from attempting to create different sizes of WebP images, since ImageMagick can't handle those right now. (#1746)
- Update Ruby version for vglist from 2.6.6 to 2.7.2. (#1712)
- Add Cloudflare Web Analytics so we can track some basic analytics data. (#1696)
- Fix a bug causing library table dropdowns to not work. (#1684)
- Upgrade Ruby on Rails to Rails 6.1. (#1678)
- Add
currentUser
query for GraphQL API. (#1668)
- Fix issue with CORS that was preventing the OAuth authentication flow from working via a webpage. (#1667)
- Add the ability to update 'Hours Played' for existing games in your library via the Steam importer. (#1649)
- Update Sentry configuration to use Releases and to split the frontend and backend error tracking projects, so errors are easier to discover and fix. (#1568)
- Add a dark mode. This is controlled by the
prefers-color-scheme
media query, which means it's determined by browsers. Some browsers let you specify whether you want a dark or light mode for websites, and some just use the theme value from the operating system. (#1501)
- Fix the "Sign out" button which broke after a refactor a few weeks ago. (#1488)
- Add the ability for admins to merge game entries together. This can be used to fix duplicate games and will update related game purchases and favorites so the data isn't lost. If a user has added both the original and duplicate games to their library, one of the entries will be deleted. (#1403)
- Add Steam Blocklist, for preventing the creation of games for specific Steam IDs. This is mostly useful for soundtracks, test servers, software, and other non-game stuff on Steam. (#1394)
- Change the user statistics calculations to ignore N/A games and count 'Dropped' as completed. (#1392)
- Add a "More..." button to game results in the search bar, it can be used to show more games if your search doesn't return the game you're looking for on the first page. (#1378)
- Fix the GraphiQL Docs Explorer sidebar by providing a static schema file. (#1331)
- Replace existing API token authentication system with an encrypted API token field. (#1329)
- NOTE: This will require recreating your API tokens if you were using the API before this change.
- Upgrade GraphiQL and enable it in production. It's available at
/graphiql
. (#1262)
- Add User search. (#1249)
- Add sorting by most followers and most games to the users page. (#1218)
- Add a user count to the "Followers" and "Following" tabs on the User Profile. (#1202)
- Change the 'highest average rating' filter in the games list to only include games with at least 5 owners. (#1212, #1213)
- Add replay counts for games in user libraries, for tracking the number of times a user has replayed a given game (Thanks @AnthonySuper!). (#1185, #1198)
- Fix game covers extending outside of their intended boundary and covering other elements. (#1197)
- Add a game count to user cards. (#1182)
- Rebuilt the Steam importer as a service to move code out of the controller and to make it run faster (Thanks @AnthonySuper!). (#1174)
- Made it so only moderators and admins can remove game covers. (#1181)
- Add database indices to enforce uniqueness.
- Made it so only moderators and admins can delete games.
- Include the game cover and other metadata in game search results. (#1123)
- Add a dropdown to game cards, currently just used for favoriting games. (#1044)
- Add sorting by average rating to Games. (#1021)
- Add GOG.com IDs to Games. (#1014)
- Add Epic Games Store IDs to Games. (#996)
- Add the ability for moderators and admins to ban and unban users. (#971)
- Fix a CORS issue that prevented sending API requests from other websites. (#960)
- Add Stores to the Library Edit Bar. (#917)
- Improve the design of the user registration and login pages. (#918)
- Improve Rake tasks for importing data from Wikidata, can now update existing games with new information more easily. (#897)
- Add support for long-lasting API tokens. (#884)
- Update graphql-ruby to fix pagination in the API. (#861)
- Add Export Library page in Settings. This allows users to export their entire vglist game library as a JSON file. (#852)
- Add Stores for keeping track of the places where you own games. (#842)
- Add Giant Bomb IDs along with an importer for them from Wikidata. (#811)
- Remove descriptions from games, genres, platforms, and companies. They were essentially unused and just invited spam/trolling. (#803)
- Allow more than one Steam App ID for a given game, and add Steam App IDs to the GraphQL API. This should improve the accuracy of the Steam library importer. (#778)
- Add 'list' queries to the GraphQL API, for example listing all existing genres on the site. (#761)
- Add pagination to the GraphQL API. (#760)
- Add GraphQL mutations for follow/unfollowUser, add/removeGameFromLibrary, and favorite/unfavoriteGame. (#757, #758, #759)
- Add OAuth for API authentication. (#711)
- Add a favicon and logo! (#712)
- Add support for the
/.well-known/change-password
route.
- Add a GraphQL API (currently disabled until the OAuth system is finished and the API is documented). (#697)
- Add filtering by release year to games. (#681)
- Add some functionality to block Wikidata IDs from being added to the database. The purpose of this functionality is to prevent bad data (e.g. Wikidata has entries for sets of Pokemon games as one entry, like 'Pokemon Sun & Moon') from being introduced into the site. (#678)
- Add an event for when one user follows another. (#670)
- Have every user follow User with ID 1 by default. (#667)
- Add a 'Following' Activity view for viewing only activity from users you follow. (#665)
- Add a basic system for following users. (#656)
- Improve error handling when adding games to your library. (#652)
- Fix multiselect dropdowns not working. (#654)
- Add User Activity Feeds. (#632)
- Add events for favoriting games and users creating their accounts. (#630)
- Add Private Accounts. (#628)
- Increase character limit to 2000 for comments on games in the game library.
- Add a global Activity Feed where events like games being added to a user's library or a user completing a game are logged. (#617)
- Fix some bugs with vue-good-table, CSP, and dropdowns. (#614)
- Update Sorbet and add some Sorbet signatures. (#598)
- Add mass editing for game libraries. (#584)
- Fix dropdowns not closing properly.
- Add Sorbet typechecking to CI. (#577)
- Update Faker to 2.0.0. (#575)
- Fix Wikidata import task by adding a user agent to every request. (#572)
- Add Sorbet typechecking! (#561)
- Fix deploy task failing to
bundle install
sometimes.
- Convert all JavaScript in the project to TypeScript. (#506)
- Improve design of library comparison page. (#495)
- Add a page for comparing libraries between users. (#474)
- Improve the design of the avatar uploader. (#473)
- Add a cover importer for importing covers from MobyGames. Added around 7000 new covers with this. (#438)
- Fix an issue with user statistics for users that have capital letters in their usernames.
- Add library statistics to the user page. (#411)
- Limit deletion of series' and engines.
- The 'Add to library' button on game pages now uses a modal dialog so game details can be filled in from that page. It also allows editing when a game is already in your library. (#401)
- Add a 'Paused' status to the Completion Statuses. This is for when you've stopped playing a game, but intend to pick it up again in the future. (#397)
- Fix the game form so the series value can actually be removed. (#398)
- Fix Account Settings redirecting to an unstyled page when the form submit failed. (#399)
- Fix Vue components 'blinking' and reverting to their initial state when changing pages. (#400)
- Add platform filter on games index. (#391)
- Add Sentry for JavaScript error reporting. (#386)
- Add dropdown to toggle column visibility in game library table. (#387)
- Add sorting option for games with the most owners. (#373)
- Most buttons are now full-width on mobile, so they're easier to press and don't go off the screen. (#374)
- Fix a variety of issues related to improper handling of record deletion. (#370)
- Add sorting options to the games index. (#362)
- Let moderators and admins remove other users' avatars. (#355)
- Add OpenGraph meta tags so game covers, user avatars, the site name, etc. show up in embeds (e.g. on Discord or Facebook). (#342)
- Add a link to this Changelog in the header dropdown. (#343)
- Fix user avatar aspect ratios, now they're always squares no matter what's uploaded. (#338)
- Replace chromedriver-helper with webdrivers gem. (#340)
- Add Sentry for error tracking. (#333)
- Update Steam importer. Now just takes the user's Steam username, no login. Also displays the games that weren't imported because they couldn't be matched to a game in the site database. (#318)
- Clean up the
README.md
instructions and the development database config (thanks @PanisSupraOmnia!). (#304)
- Upgrade the game library to use vue-good-table, which provides a better design as well as sorting and other features. (#315)
- Render users as cards on the users index. (#317)
- Add Prettier for JavaScript, SCSS, and Vue file formatting. (#312)
- Add a button to the settings that allows a user to reset their game library. (#309)
- Add Steam account login and the ability to import games from a user's Steam library. (#297)
- Debounce search results so there are fewer requests sent to the backend. (#295)
- Fix adding a game to your own library and add a feature test to make sure it can't break again. (#291, #292)
- Add a Rake task for deploying the site in production.
- Add a proper description of the site to the About page.
- First proper deployment to the live website! Involved setting up a server on DigitalOcean, a database, configuring SSL certs, setting up email, and getting the Rails app to behave properly in production.
- Allow the games import script to import games incrementally. (#285)
- Add platforms to game purchases. (#271)
- Fix a bug that prevented more than one person from favoriting the same game. (#272)
- Improve test coverage for cases where the tests didn't check for associations (e.g. a game with a platform). (#268)
- Rename the project to VideoGameList aka VGList. (#269)
- Improve the design of the settings page. (#258)
- Enable trigram search to make the search more flexible. (#265)
- Split
seeds.rb
into multiple files and Rake tasks. (#267)
- Add Steam Application IDs to games. (#239)
- Add a
rake import:full
task for running all the import tasks sequentially. (#239) - Add Wikidata IDs to various forms. (#241)
- Allow the search bar to use the arrow keys for navigating between results. (#238)
- Add hours played to game purchases. (#227)
- Add favoriting games. (#226)
- Add start and completion dates to game purchases. (#223)
- Add global search to the navbar. Can be used to search for games, companies, genres, engines, series', and platforms. (#210)
- Add proper game library management to the user page, including adding, editing, and removing games. (#213)
- Add completion statuses to game purchases. Statuses include Unplayed, In Progress, Dropped, Completed, 100% Completed, and N/A. (#219)
- Add request and policy tests for game purchases. (#207)
- Add a Rake task to import game covers from PCGamingWiki. (#206)
- Add a Rake task to import games from Wikidata. (#200)
- Add PCGamingWiki IDs to games and import them with the Wikidata Importer. (#202)
- Add Rake tasks to import companies, engines, genres, platforms, and series' from Wikidata. (#198)
- Add Wikidata IDs for companies, engines, games, genres, platforms, and series. (#199)
- Add scores to game purchases. (#186)
- Add Game Series. (#182)
- Add the ability to remove covers from games. (#168)
- Add the ability to remove avatars from users. (#169)
- Switch CI from Travis to GitLab CI. (#163)
- Create a generic multi-select Vue component and replace the existing selector components with it. (#157)
- Add the
friendly_id
gem and have user URLs use the actual username (e.g. a user named 'spiderman' will have the URL/users/spiderman
). (#158)
- Remove releases and simplify the site so Games are used for everything. (#153)
- Add game cards with a much better design for the
games#index
. (#148) - Display developers and publishers from releases on game pages. (#148)
- Add avatars and covers to
seeds.rb
. (#150)
- Add Covers for Games. (#145)
- Change the
Dockerfile
base image Debian to Alpine Linux. (#144)
- Add a
Dockerfile
for running the application in production mode. This is a super important step toward actually deploying the thing to production. (#138)
- Add Game Engines. (#135)
- Improve design and add dropdowns. (#100)
- Add ActiveStorage, user avatars, and user avatar uploading. (#104)
- Ensure that users can't have more than one copy of the same release in their library. (#101)
- Ensure that releases can't have more than one of the same genre. (#102)
- Add action for adding a release to your library. (#93)
- Add action for removing a release from your library. (#98)
- Add some tests for functionality that was previously untested. (#99)
- Add Settings pages and a form for updating your user bio. (#90)
- Add create/update/destroy for releases, meaning you can now modify everything about releases from the web interface. (#82)
- Add simple search for games, platforms, and developers/publishers. Currently only used in the release form. (#82)
- Add
update_role
method that can be used to promote users to moderator or admin status. Also able to demote. Only admins can do this. (#85)
- Upgrade to Webpacker 4. (#77)
- Add create/update/destroy for platforms. Only moderators and admins can modify platforms. (#81)
- Add feature specs. (#72)
- Add
vue-select
component. (#52) - Add
pg_search
for searching genres in the games form. (#60) - Add pundit policies for genres. (#61)
- Move from Bootstrap to Bulma for our CSS framework. (#48)
- Add developers and publishers. (#27)
- Add Vue.js. (#26)
- Move to Webpack. (#26)
- Add genres to games. (#24)
- Move to Rspec for testing. (#19)
- Add create/update/delete for Games. (#11)