Warning
This release has a bug that can cause the UI to lag and crash, which has been fixed in 4.2.0-alpha.2
.
New Features
Console Mode
Look ma', I'm on TV! The new console interface is designed for big screens and easy navigation with a controller or remote. It features a grid layout, large icons, and a simplified menu structure to enhance your gaming experience from the comfort of your couch. Launch it from the navigation bar or navigate directly to /console
.
Home |
---|
![]() |
Gallery | Details |
---|---|
![]() | ![]() |
Global EmulatorJS Config
The config.yml
file now accepts a new emulatorjs
section that allows you to set custom, per-core options and controls. Setting debug: true
will print a list of available options for the current emulator core to the browser console, which you can then set in the settings
block. The control
block allows you to set a custom control mapping for each core. Both settings
and control
accept a default
"core", who's value will be applied to all cores.
Note
Custom settings and controls are fully optional, and if not set, the emulator will use its own defaults.
# EmulatorJS per-core options
emulatorjs:
debug: true # Available options will be logged to the browser console when the emulator is started
settings:
parallel_n64: # Use the exact core name
vsync: disable
snes9x:
snes9x_region: ntsc
default: # These settings apply to all cores
fps: show
controls: # https://emulatorjs.org/docs4devs/control-mapping/
snes9x:
0: # Player 1
0: # IF USED, A MAPPING FOR EACH BUTTON MUST BE SET!
value: x # Mapping for keyboard
value2: BUTTON_2 # Mapping for connected controller
1:
value: y
value2: BUTTON_4
1: # Player 2
2: # Player 3
3: # Player 4
Incremental RetroAchievements Sync
A new scheduled task has been added to sync RetroAchievements progress for all users on a recurring basis. Enable the task by setting ENABLE_SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNC=true
in your environment variables. By default the task runs nightly, but you can customize that using the SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNC_CRON
variable.
Note
Achievements will only sync for users who have enabled RetroAchievements in their profile settings
WebP Image Task
Another scheduled task has been added to convert all uploaded images to the modern .webp
format. WebP images are 5-10x smaller then JPG/PNG images with no loss of quality, leading to faster load times for cover art in galleries. Enable the task by setting ENABLE_SCHEDULED_CONVERT_IMAGES_TO_WEBP=true
in your environment variables. By default the task runs nightly, but you can customize that using the SCHEDULED_CONVERT_IMAGES_TO_WEBP_CRON
variable.
Minor Changes
- Jump to previous/next game by @gantoine in #2330
- Add scheduled task to sync RetroAchievements progress by @adamantike in #2352
- Add
COEP
andCOOP
headers for EmulatorJS within nginx config by @adamantike in #2356 - Use dropzone and add button in upload modal by @gantoine in #2366
- Add options to gunicorn call by @gantoine in #2322
WEB_SERVER_CONCURRENCY=2
:WEB_SERVER_TIMEOUT=300
:WEB_SERVER_KEEPALIVE=2
:WEB_SERVER_MAX_REQUESTS=1000
:WEB_SERVER_MAX_REQUESTS_JITTER=100
:WEB_SERVER_WORKER_CONNECTIONS=1000
:
Bug Fixes
- Invalidate fixture cache on file change by @adamantike in #2350
- Replace the default exit emulation button with a custom one by @mazkolain in #2353
- Fix single roms display on postgres by @gantoine in #2369
Other
- Create IGDB service adapter by @adamantike in #2345
- Add PlayBtn component to unify button logic by @adamantike in #2357
- Run vite dev server with HTTPS enabled by @gantoine in #2235
- Fix devcontainer launch by @MauGx3 in #2340
- Avoid loading external plugins for mdeditor by @gantoine in #2359
- Add prettier plugin to sort imports by @adamantike in #2358
- Replace usage of localStorage with vuewuse useLocalStorage by @gantoine in #2362
- Replace activeElement with type exact useActiveElement by @gantoine in #2365
- Set import order in prettierrc by @gantoine in #2361
- Replace window scroll listeners with reactive useWindowScroll by @gantoine in #2367
- Use modern useTemplateRef hook by @gantoine in #2368
New Contributors
- @kodaxx made their first contribution in #2314
- @MauGx3 made their first contribution in #2340
- @mazkolain made their first contribution in #2353
Full Changelog: 4.1.6...4.2.0-alpha.1