Skip to content

v3.10.2 #1969

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 38 commits into from
Jun 11, 2025
Merged

v3.10.2 #1969

merged 38 commits into from
Jun 11, 2025

Conversation

gantoine
Copy link
Member

Description
Explain the changes or enhancements you are proposing with this pull request.

Checklist
Please check all that apply.

  • I've tested the changes locally
  • I've updated relevant comments
  • I've assigned reviewers for this PR
  • I've added unit tests that cover the changes

Screenshots

adamantike and others added 30 commits June 6, 2025 21:40
These critical log messages are unnecessary and can clutter the logs,
based on user requests. This is even more notorious when RomM is
integrated to an error tracking system like Sentry.
* Add a link to the game page in the RetroAchievements chip in the title.
* Add links to the achievement pages in the achievement badges.
* Fix the RetroAchievements chip to correctly display the RA logo.
fix: Remove critical log messages for 403 and 404 exceptions
misc: Add RetroAchievements links to game and achievement badges
Include detailed type information for RetroAchievements API responses,
based on the official API documentation.
[ROMM-1943] Consistent use of click handlers
misc: Add typing to RetroAchievements API responses
Add a new service adapter for the RetroAchievements API, to separate
concerns with RomM's handler for metadata. This adapter is agnostic
to the handler and only provides methods to interact with the
API, and correctly return typed responses.

The API authorization was also improved to be handled by a specific
`httpx.Auth` class that sets the `y` parameter for each request.
…adapter

misc: Create RetroAchievements service adapter
This change replaces the `httpx` client with `aiohttp` for the
RetroAchievements API service.

The main reason for this change is that `httpx` has an unavoidable log
line with `INFO` level, which includes the request full URL, containing
the user's API key.

`httpx` has had an
[open discussion](encode/httpx#2765)
regarding this security issue for almost two years.

The change to `aiohttp` is painless, and would allow us to migrate more
of the codebase to it in the future, to avoid leaking sensitive
information in logs.
…iohttp

fix: Use aiohttp for RetroAchievements API calls
The breaking code in `streaming-form-data` has been fixed, and Poetry
also was patched based on @gantoine's proposed fix. This allows us
to use the official releases again instead of a fork.
misc: Move back to upstream streaming-form-data dependency
Iterate through all pages of user completion progress in the
RetroAchievements service, instead of limiting the data retrieval to the
first 500 results.
…pagination

fix: Iterate through user completion progress in RetroAchievements
This change replaces boolean flags for filtering Roms with optional
flags. This allows clients to specify whether they want to include
or exclude certain types of Roms, such as matched, favourite,
duplicate, or playable.

The boolean flags are still supported for backwards compatibility,
but they are marked as deprecated. Clients should transition to
using the new optional flags in future versions.

The main reason for this change is to allow the exclusion of certain
results, without the need to add additional boolean flags, which are
also confusing if both its `True` and `False` values are used within
the same request.
…stead-of-bools

feat: Use optional flags instead of booleans for Rom filtering
Add fallback for homepage when library is empty
Copy link

trunk-io bot commented Jun 10, 2025

Running Code Quality on PRs by uploading data to Trunk will soon be removed. You can still run checks on your PRs using trunk-action - see the migration guide for more information.

Bump `RALibretro` to the latest commit from the upstream repository.
Removes the need to use an older version of Alpine Linux, but requires
some changes to the `RALibretro` source code to compile successfully.

The `nginx` image is still not available for Alpine 3.22, but we can
also upgrade to its latest patch version (`1.27.5`).
Copy link

github-actions bot commented Jun 10, 2025

Test Results

92 tests  ±0   92 ✅ ±0   29s ⏱️ -1s
 1 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 146992d. ± Comparison against base commit fd18d8e.

♻️ This comment has been updated with latest results.

Differentiate between achievements earned in softcore and hardcore
modes, by using the characteristic gold color for hardcore ones.

Also, update the progress bar to show both softcore and hardcore
completion percentages.
@gantoine gantoine requested a review from Copilot June 11, 2025 02:28
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces various refactorings and cleanup updates across the frontend and backend codebases. Key changes include:

  • Removal of redundant function call parentheses in Vue event handlers for consistency.
  • Updates to API service calls and context management in the backend.
  • Refactoring of database filtering methods and exception handling for improved clarity and maintainability.

Reviewed Changes

Copilot reviewed 76 out of 76 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
frontend/src/components/Gallery/AppBar/common/FilterDuplicatesBtn.vue Removed redundant parentheses in the click handler.
frontend/src/components/Gallery/AppBar/common/FilterBtn.vue Updated click handler to remove unnecessary function call wrap.
frontend/src/components/Gallery/AppBar/Search/SearchTextField.vue Removed unused useDisplay import and added pagination reset before fetching roms.
frontend/src/components/Gallery/AppBar/Platform/SettingsBtn.vue Entire file removed; likely consolidated functionality elsewhere.
frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue Minor adjustments in styling and click handler syntax.
frontend/src/components/Gallery/AppBar/Platform/FirmwareBtn.vue Updated click handler syntax for consistency.
frontend/src/components/Gallery/AppBar/Platform/Base.vue Reworked settings button UI into a v-btn with additional icon overlay.
frontend/src/components/Gallery/AppBar/Collection/CollectionInfoDrawer.vue Updated click handler syntax and added margin adjustments.
frontend/src/components/Details/Title.vue Added href attribute and updated v-img prop to disable cover.
frontend/src/components/Details/RetroAchievements.vue Wrapped v-img with an anchor for link redirection.
backend/utils/context.py Changed context initialization to use multiple context managers concurrently.
backend/main.py Updated to set additional app state for the aiohttp session.
backend/handler/metadata/ra_handler.py Migrated API calls to utilize the new RetroAchievementsService methods.
backend/handler/metadata/igdb_handler.py Updated IGDB age rating dictionaries with new mappings.
backend/handler/database/roms_handler.py Refactored filtering methods with new parameter names and boolean logic.
backend/exceptions/endpoint_exceptions.py Removed logging calls prior to raising HTTP exceptions.
backend/endpoints/rom.py Added debugging breakpoint (ipdb) and updated query parameter backwards compatibility.
backend/adapters/services/retroachievements_types.py Added type definitions for RetroAchievements responses.
backend/adapters/services/retroachievements.py Reworked RetroAchievements API service with improved error handling.
backend/adapters/services/rahasher.py Updated mapping values for platform codes.

@gantoine gantoine merged commit 2e9629d into release Jun 11, 2025
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants