Commit Graph

7148 Commits

Author SHA1 Message Date
Georges-Antoine Assi
e42acbfafc add debug and controls 2025-09-02 08:38:11 -04:00
Georges-Antoine Assi
147a94c406 Load core options from config.yml 2025-09-01 21:16:37 -04:00
Georges-Antoine Assi
aca8ffc4f5 Merge pull request #2359 from rommapp/noload-plugins-mdeditor
Avoid loading external plugins for mdeditor
2025-09-01 18:34:38 -05:00
Georges-Antoine Assi
8706e33ed6 Avoid loading external plugins for mdeditor 2025-09-01 19:23:43 -04:00
Georges-Antoine Assi
aac7352688 Merge pull request #2353 from mazkolain/emulatorjs-custom-exit-emulation
Replace the default exit emulation button with a custom one
2025-09-01 16:52:38 -05:00
Georges-Antoine Assi
33108a6cf4 run trunk 2025-09-01 17:16:38 -04:00
Georges-Antoine Assi
4d962ea02a Merge pull request #2330 from rommapp/jump-prev-next-game
Jump to previous/next game
2025-09-01 16:15:22 -05:00
Georges-Antoine Assi
8f1e3f638c remove the global listener 2025-09-01 16:58:23 -04:00
Georges-Antoine Assi
6bdfaa7784 Merge branch 'master' into jump-prev-next-game 2025-09-01 16:42:39 -04:00
Michael Manganiello
cd5b19b5bf Merge pull request #2356 from rommapp/feat/emulatorjs-nginx-headers
feat: Add COEP and COOP headers for EmulatorJS within Nginx config
2025-09-01 00:28:11 -03:00
Michael Manganiello
8c52b7828b feat: Add COEP and COOP headers for EmulatorJS within Nginx config
The COEP (Cross-Origin Embedder Policy) and COOP (Cross-Origin Opener
Policy) headers are needed by EmulatorJS to use the `SharedArrayBuffer`
feature, and enable multi-threaded cores.

These headers are only being set by Nginx for responses to requests
made to the EmulatorJS player path. This is because cross-origin
isolation breaks other features in the application (such as YouTube
embeds), so we only want to enable it for the EmulatorJS player.

It's important to mention that this change does not work when `DEV_MODE`
is set, as we would need Vite server to also set these headers in that
case. This could be implemented separately, if needed.

These changes are not enough to enable multi-threaded cores in the
frontend. Because our application is a SPA, we also need to ensure
that navigation to the EmulatorJS player path results in a full page
reload, so that the cross-origin isolation can be applied. This will be
handled in a separate PR.
2025-08-31 21:43:32 -03:00
Michael Manganiello
568a989980 Merge pull request #2352 from rommapp/feat/task-sync-retroachievements-progress
feat: Add scheduled task to sync RetroAchievements progress
2025-08-31 16:21:46 -03:00
Michael Manganiello
a31a8504c2 feat: Add scheduled task to sync RetroAchievements progress
Add a new scheduled task that syncs RetroAchievements progress for all
users with a RetroAchievements username.

Environment variables:
- `ENABLE_SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNC`: Enable or disable
  the task (default: `false`)
- `SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNC_CRON`: Cron string to
  schedule the task (default: "0 4 * * *" - daily at 4 AM)
2025-08-31 01:57:26 -03:00
Michael Manganiello
c92bd48d23 Merge pull request #2350 from rommapp/fix/invalidate-cache-for-fixtures
fix: Invalidate fixture cache on file change
2025-08-30 21:26:28 -03:00
Georges-Antoine Assi
201b1a5ad3 Merge pull request #2340 from MauGx3/master
fix devcontainer launch
2025-08-30 19:15:08 -05:00
Michael Manganiello
88e5f8aceb Merge pull request #2345 from rommapp/misc/igdb-service-adapter
misc: Create IGDB service adapter
2025-08-30 21:13:10 -03:00
Georges-Antoine Assi
d3a22d4749 Merge pull request #2334 from rommapp/images-to-webp-task
Convert images to webp task
2025-08-30 19:05:05 -05:00
Michael Manganiello
2a0b273955 fix: Invalidate fixture cache on file change
The cache for fixture files was being set without a TTL, which meant
that updates to the fixture files were not reflected in the cache.

This change saves the MD5 hash of the fixture file in a different key,
and compares it to the current hash of the file before deciding whether
to update the cache.

Fixes #2347
2025-08-30 20:38:32 -03:00
Michael Manganiello
b2ea84b5bb misc: Create IGDB service adapter
Add a new service adapter for the IGDB 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 not rely on decorating each
method that makes requests, but instead using an `aiohttp` middleware
to automatically add the required headers to each request.

Utils `mark_expanded` and `mark_list_expanded` where added to help
narrow the types of IGDB's expandable fields when we know they are
expanded, for `mypy` type checking.
2025-08-30 20:21:15 -03:00
Georges-Antoine Assi
aad97c88f3 Merge pull request #2314 from kodaxx/console-mode
Console Mode
2025-08-30 13:20:08 -05:00
Georges-Antoine Assi
f8d5feba24 changes from review 2025-08-30 14:19:29 -04:00
Georges-Antoine Assi
5b85c6c8e9 run trunk fmt 2025-08-30 14:07:34 -04:00
Maurício Gioachini
8ab2d125a9 removed comment 2025-08-29 18:00:10 -03:00
Georges-Antoine Assi
2bf87e7425 Merge branch 'master' into console-mode 2025-08-29 13:07:05 -05:00
Maurício Gioachini
55797827c5 created default dev.env for development 2025-08-29 13:38:56 -03:00
Maurício Gioachini
6717efa397 Change env_file from env.template to .env
fixed the error in changing the docker_compose.yml file for the commit
2025-08-29 12:50:44 -03:00
Spencer Kuzara
a5002cf8bd created css variables for theming and exposed them to the theme.css file. Also, initialize theme on Layout to avoid breaking themes when refrehsing routes other than home 2025-08-29 22:57:24 +09:00
Mikel Azkolain
06be9210b7 replace the exitEmulation button with a custom one 2025-08-29 11:50:26 +02:00
Maurício Gioachini
28fd6fbd52 fix devcontainer launch
issue: devcontainer doesn't launch properly as is

problematic code: filepath for docker-compose.yml and not using the existing env.template file

fix: change filepath to refer to root and use env.template in the devcontainer for faster usage
2025-08-28 18:13:32 -03:00
Georges-Antoine Assi
dd0f87a4d0 changes from code review 2025-08-28 12:54:20 -04:00
Georges-Antoine Assi
be94437e31 fix typecheck 2025-08-28 12:19:42 -04:00
Georges-Antoine Assi
45edc8fcc0 use stores for loading global data 2025-08-28 09:48:52 -04:00
Spencer Kuzara
6a43b882db new neon theme 2025-08-28 19:06:54 +09:00
Spencer Kuzara
f0135eefcb basic theme switcher, asset resolver, and test theme. also updated new platform images for default theme 2025-08-28 12:52:10 +09:00
Georges-Antoine Assi
bf42faf578 fix loading and converting images 2025-08-27 23:31:29 -04:00
Georges-Antoine Assi
b7d59d74c4 init task 2025-08-27 22:25:45 -04:00
Georges-Antoine Assi
586ce0ef30 Craete image to webp task 2025-08-27 22:12:12 -04:00
Georges-Antoine Assi
b1936b287a cleanup 2025-08-27 19:31:57 -04:00
Georges-Antoine Assi
94ff330a4b unmount un delete 2025-08-27 19:28:42 -04:00
Georges-Antoine Assi
b5f3ad6b0f move buttons in header 2025-08-27 19:26:10 -04:00
Georges-Antoine Assi
8346a79ac4 Merge branch 'master' into jump-prev-next-game 2025-08-27 18:47:09 -04:00
Georges-Antoine Assi
8f7efc0bb4 Merge pull request #2235 from rommapp/https-dev-mode
Run vite dev server with HTTPS enabled
2025-08-27 17:44:47 -05:00
Georges-Antoine Assi
ee2bd57475 fixes from review 2025-08-27 18:19:35 -04:00
Georges-Antoine Assi
f8e70fcd44 wrap https in checl 2025-08-27 18:04:27 -04:00
Michael Manganiello
739aa61918 Merge pull request #2325 from rommapp/feat/retroachievements-incremental-sync
feat: Add incremental sync for RetroAchievements progression
2025-08-27 11:19:29 -03:00
Michael Manganiello
9cede7680f feat: Add incremental sync for RetroAchievements progression
This change makes the RetroAchievements progression sync endpoint to
optionally perform an incremental sync (when `incremental` is true),
by only fetching new achievements since the last sync.

This reduces the amount of data fetched and speeds up the sync
process for users who frequently sync their progression. It unblocks the
implementation of automatic periodic syncs in the future.

Frontend behavior:
- When the `Apply` button is clicked in the RetroAchievements settings,
  a full sync is performed (same as before). This is because a change to
  the RA username may have occurred.
- When the `Sync` button is clicked, an incremental sync is performed.
2025-08-27 10:41:51 -03:00
Georges-Antoine Assi
e75fb13f57 add log statements on scan 2025-08-27 09:38:31 -04:00
Georges-Antoine Assi
f917aa0f8b Merge pull request #2322 from rommapp/gunicorn-init-options
Add options to gunicorn call
2025-08-27 07:59:55 -05:00
Spencer Kuzara
347cd3ce4d fix home view scrolling issues 2025-08-27 17:38:26 +09:00
Georges-Antoine Assi
798ffa31b3 switch names to WEB_SERVER_ 2025-08-26 23:53:55 -04:00