diff --git a/.github/resources/social-preview.svg b/.github/resources/social-preview.svg
index f2a1009..b56aab0 100644
--- a/.github/resources/social-preview.svg
+++ b/.github/resources/social-preview.svg
@@ -6,4 +6,4 @@
Beautiful, powerful,
RomM Docs
-
+
\ No newline at end of file
diff --git a/docs/API-and-Development/API-Reference.md b/docs/API-and-Development/API-Reference.md
index 56a66f0..29c8cb9 100644
--- a/docs/API-and-Development/API-Reference.md
+++ b/docs/API-and-Development/API-Reference.md
@@ -10,6 +10,7 @@ RomM automatically generates interactive API documentation using OpenAPI (Swagge
- **ReDoc**: Available at `http://your-instance:3000/api/redoc`
These interactive docs allow you to:
+
- Browse all available endpoints
- View request/response schemas
- Test API calls directly from your browser
@@ -19,6 +20,7 @@ These interactive docs allow you to:
## Base URL
The API base URL is typically:
+
```text
http://your-instance:3000/api
```
@@ -39,6 +41,7 @@ When using OAuth2, you'll need to obtain a token from `/api/token` endpoint and
The API uses OAuth2 scopes to control access to different resources:
**Read Scopes:**
+
- `me.read` - View your profile
- `roms.read` - View ROMs
- `platforms.read` - View platforms
@@ -49,6 +52,7 @@ The API uses OAuth2 scopes to control access to different resources:
- `users.read` - View users
**Write Scopes:**
+
- `me.write` - Modify your profile
- `assets.write` - Modify assets
- `roms.user.write` - Modify user-rom properties
@@ -64,12 +68,14 @@ The API uses OAuth2 scopes to control access to different resources:
The RomM API provides comprehensive endpoints for managing all aspects of your ROM collection:
### Core Resources
+
- **Platforms** - Manage and configure gaming platforms
- **ROMs** - Full CRUD operations for ROM files with extensive filtering, searching, and metadata matching
- **Collections** - Create and manage ROM collections, smart collections, and virtual collections
- **Users** - User management, authentication, invite links, and profiles
### Supporting Features
+
- **Authentication** - OAuth2 token management, OIDC login, password resets
- **Search** - Metadata provider search for ROMs and covers
- **Tasks** - Background task management and execution
@@ -121,22 +127,22 @@ rom = response.json()
### Using JavaScript/Node.js
```javascript
-const axios = require('axios');
+const axios = require("axios");
// Setup authentication
const api = axios.create({
- baseURL: 'http://your-instance:3000/api',
- auth: {
- username: 'username',
- password: 'password'
- }
+ baseURL: "http://your-instance:3000/api",
+ auth: {
+ username: "username",
+ password: "password",
+ },
});
// Get all libraries
-const libraries = await api.get('/libraries');
+const libraries = await api.get("/libraries");
// Get a specific ROM
-const rom = await api.get('/roms/123');
+const rom = await api.get("/roms/123");
```
## OpenAPI Specification
@@ -157,4 +163,3 @@ For API-specific questions or issues:
2. Review the code in the [RomM repository](https://github.com/rommapp/romm)
3. Open an issue on [GitHub](https://github.com/rommapp/romm/issues)
4. Join the [Discord community](https://discord.com/invite/romm)
-
diff --git a/docs/API-and-Development/index.md b/docs/API-and-Development/index.md
index 3f351c5..969ae7e 100644
--- a/docs/API-and-Development/index.md
+++ b/docs/API-and-Development/index.md
@@ -12,4 +12,3 @@ Welcome to the RomM API & Development documentation. This section contains resou
- **[API Reference](API-Reference.md)** - Complete API documentation with endpoints, schemas, and examples
- **[Contributing](Contributing.md)** - Guidelines for contributing code, translations, and documentation
- **[Development Setup](Development-Setup.md)** - How to set up your development environment
-
diff --git a/docs/Getting-Started/Configuration-File.md b/docs/Getting-Started/Configuration-File.md
index 15204ac..492f129 100644
--- a/docs/Getting-Started/Configuration-File.md
+++ b/docs/Getting-Started/Configuration-File.md
@@ -17,7 +17,7 @@ Exclude entire platforms (folders) from being scanned.
```yaml
exclude:
- platforms: ["ps", "ngc", "gba"]
+ platforms: ["ps", "ngc", "gba"]
```
### ROMs
@@ -35,10 +35,10 @@ Applies to ROMs that are single files (not in subfolders).
```yaml
exclude:
- roms:
- single_file:
- extensions: ["xml", "txt"]
- names: ["info.txt", "._*", "*.nfo"]
+ roms:
+ single_file:
+ extensions: ["xml", "txt"]
+ names: ["info.txt", "._*", "*.nfo"]
```
#### Multi-File ROMs
@@ -53,12 +53,12 @@ Applies to ROMs stored as folders (multi-disc, with DLC, etc.).
```yaml
exclude:
- roms:
- multi_file:
- names: ["final fantasy VII", "DLC"]
- parts:
- names: ["data.xml", "._*"]
- extensions: ["xml", "txt"]
+ roms:
+ multi_file:
+ names: ["final fantasy VII", "DLC"]
+ parts:
+ names: ["data.xml", "._*"]
+ extensions: ["xml", "txt"]
```
---
@@ -67,7 +67,7 @@ exclude:
Customize how RomM interprets your folder and platform names.
-### Platforms
+### Custom Folder Names
Map your custom folder names to RomM's recognized platform names.
@@ -75,9 +75,9 @@ Map your custom folder names to RomM's recognized platform names.
```yaml
system:
- platforms:
- gc: "ngc" # Treats 'gc' folder as GameCube
- psx: "ps" # Treats 'psx' folder as PlayStation
+ platforms:
+ gc: "ngc" # Treats 'gc' folder as GameCube
+ psx: "ps" # Treats 'psx' folder as PlayStation
```
### Versions
@@ -88,8 +88,8 @@ Associate a platform with its main version. This also tells RomM to fetch metada
```yaml
system:
- versions:
- naomi: "arcade"
+ versions:
+ naomi: "arcade"
```
---
@@ -104,7 +104,7 @@ If your ROMs folder is named `my_roms` instead of `roms`:
```yaml
filesystem:
- roms_folder: "my_roms"
+ roms_folder: "my_roms"
```
---
@@ -137,11 +137,11 @@ Controls metadata provider priority order.
```yaml
scan:
- priority:
- metadata:
- - "igdb"
- - "ss"
- - "moby"
+ priority:
+ metadata:
+ - "igdb"
+ - "ss"
+ - "moby"
```
#### Artwork
@@ -154,11 +154,11 @@ Controls artwork provider priority order for cover art and screenshots.
```yaml
scan:
- priority:
- artwork:
- - "igdb"
- - "ss"
- - "moby"
+ priority:
+ artwork:
+ - "igdb"
+ - "ss"
+ - "moby"
```
#### Region
@@ -171,11 +171,11 @@ Sets preferred region for cover art and game title (Screenscraper only).
```yaml
scan:
- priority:
- region:
- - "us"
- - "eu"
- - "jp"
+ priority:
+ region:
+ - "us"
+ - "eu"
+ - "jp"
```
#### Language
@@ -188,11 +188,11 @@ Sets preferred language for cover art and game title (Screenscraper only).
```yaml
scan:
- priority:
- language:
- - "en"
- - "es"
- - "fr"
+ priority:
+ language:
+ - "en"
+ - "es"
+ - "fr"
```
### Media
@@ -217,11 +217,11 @@ Configures which media assets to download (Screenscraper and ES-DE gamelist.xml
```yaml
scan:
- media:
- - box2d
- - screenshot
- - manual
- - bezel
+ media:
+ - box2d
+ - screenshot
+ - manual
+ - bezel
```
---
@@ -238,7 +238,7 @@ Enable debug mode to log available options to the browser console.
```yaml
emulatorjs:
- debug: true
+ debug: true
```
### Cache Limit
@@ -249,7 +249,7 @@ Cache limit per ROM in bytes. Set to `null` for unlimited.
```yaml
emulatorjs:
- cache_limit: 52428800 # 50 MB
+ cache_limit: 52428800 # 50 MB
```
### Settings
@@ -260,13 +260,13 @@ Configure core-specific settings. Use `default` to apply settings to all cores.
```yaml
emulatorjs:
- settings:
- parallel_n64: # Use the exact core name
- vsync: disable
- snes9x:
- snes9x_region: ntsc
- default: # These settings apply to all cores
- fps: show
+ settings:
+ parallel_n64: # Use the exact core name
+ vsync: disable
+ snes9x:
+ snes9x_region: ntsc
+ default: # These settings apply to all cores
+ fps: show
```
### Controls
@@ -277,16 +277,16 @@ Map keyboard and controller controls for each player.
```yaml
emulatorjs:
- controls:
- snes9x:
- 0: # Player 1
- 0: # Button mapping
- value: x # Keyboard mapping
- value2: BUTTON_2 # Controller mapping
- 1: # Player 2
- 0:
- value: /
- value2: BUTTON_2
+ controls:
+ snes9x:
+ 0: # Player 1
+ 0: # Button mapping
+ value: x # Keyboard mapping
+ value2: BUTTON_2 # Controller mapping
+ 1: # Player 2
+ 0:
+ value: /
+ value2: BUTTON_2
```
See [EmulatorJS documentation](https://emulatorjs.org/docs4devs/control-mapping/) for control mapping details.
diff --git a/docs/Getting-Started/Environment-Variables.md b/docs/Getting-Started/Environment-Variables.md
index 5195182..9427ede 100644
--- a/docs/Getting-Started/Environment-Variables.md
+++ b/docs/Getting-Started/Environment-Variables.md
@@ -55,7 +55,7 @@ This is a complete list of available environment variables; required variables a
| REDIS_USERNAME | Username for Redis/Valkey instance | | |
| REDIS_PASSWORD | Password for Redis/Valkey instance | | |
| REDIS_DB | Database number for Redis/Valkey instance | | `0` |
-| REDIS_SSL | Enable SSL for Redis/Valkey instance | | `false` |
+| REDIS_SSL | Enable SSL for Redis/Valkey instance | | `false` |
| SENTRY_DSN | DSN for Sentry error tracking | | |
## Metadata providers
@@ -73,8 +73,8 @@ This is a complete list of available environment variables; required variables a
| LAUNCHBOX_API_ENABLED | Enable LaunchBox API integration | | `false` |
| PLAYMATCH_API_ENABLED | Enable PlayMatch API integration | | `false` |
| HASHEOUS_API_ENABLED | Enable Hasheous API integration | | `false` |
-| FLASHPOINT_API_ENABLED | Enable Flashpoint API integration | | `false` |
-| HLTB_API_ENABLED | Enable HowLongToBeat API integration | | `false` |
+| FLASHPOINT_API_ENABLED | Enable Flashpoint API integration | | `false` |
+| HLTB_API_ENABLED | Enable HowLongToBeat API integration | | `false` |
## Authentication
diff --git a/docs/Getting-Started/Metadata-Providers.md b/docs/Getting-Started/Metadata-Providers.md
index 52a8ecd..d8712c0 100644
--- a/docs/Getting-Started/Metadata-Providers.md
+++ b/docs/Getting-Started/Metadata-Providers.md
@@ -22,7 +22,7 @@ Here are some combinations you can use based on your needs:
- Supports 125+ popular systems
- ScreenScraper provides titles, descriptions, cover art, screenshots and manuals
- - With the option for 3D boxes and CD/cartridge covers
+ - With the option for 3D boxes and CD/cartridge covers
- Retroachievements provides achievement progress
- **Use this if you want to avoid Twitch/Amazon products**
@@ -137,17 +137,17 @@ EmulationStation, and it's modern successor ES-DE, use a custom XML format to st
```yaml
library/
- └─ roms/
+└─ roms/
└─ gba/
- ├─ game_1.gba
- ├─ game_2.gba
- ├─ gamelist.xml
- ├─ 3dboxes/
- │ ├─ game_1.png
- │ └─ game_2.png
- ├─ covers/
- ├─ screenshots/
- └─ etc...
+ ├─ game_1.gba
+ ├─ game_2.gba
+ ├─ gamelist.xml
+ ├─ 3dboxes/
+ │ ├─ game_1.png
+ │ └─ game_2.png
+ ├─ covers/
+ ├─ screenshots/
+ └─ etc...
```
## Metadata Tags in Filenames
diff --git a/docs/Getting-Started/OIDC-Setup.md b/docs/Getting-Started/OIDC-Setup.md
index 9b380b7..51786e2 100644
--- a/docs/Getting-Started/OIDC-Setup.md
+++ b/docs/Getting-Started/OIDC-Setup.md
@@ -18,15 +18,19 @@ OIDC is an identity layer built on top of OAuth2. While OAuth2 primarily handles
RomM supports OIDC authentication with the following identity providers:
### [Authelia](../OIDC-Guides/OIDC-Setup-With-Authelia.md)
+
An open-source authentication and authorization server providing two-factor authentication and SSO. Ideal for self-hosters looking for a lightweight solution.
### [Authentik](../OIDC-Guides/OIDC-Setup-With-Authentik.md)
+
An open-source identity provider with support for modern authentication protocols, MFA, and comprehensive user management.
### [PocketID](../OIDC-Guides/OIDC-Setup-With-PocketID.md)
+
A simple OIDC provider that exclusively supports passkey authentication - no passwords required.
### [Zitadel](../OIDC-Guides/OIDC-Setup-With-Zitadel.md)
+
An enterprise-grade, open-source identity and access management platform supporting OAuth2, OIDC, SAML, and passwordless authentication.
## General Setup Requirements
diff --git a/docs/Usage/Administration.md b/docs/Usage/Administration.md
index 37a5cfa..8a565ab 100644
--- a/docs/Usage/Administration.md
+++ b/docs/Usage/Administration.md
@@ -14,6 +14,7 @@ Additionally, you can submit your RetroAchievements username and synchronize you
## User Interface
From here you can:
+
- Change your language
- Adjust the color scheme of RomM
- Control which ribbons are visible on the home screen
@@ -24,6 +25,7 @@ From here you can:
## Library Management
From this screen you can:
+
- Edit platform bindings and versions on the Config tab
- Manage missing games on the Missing Games tab
diff --git a/docs/Usage/LibraryManagement.md b/docs/Usage/LibraryManagement.md
index da5e2d2..5486c6e 100644
--- a/docs/Usage/LibraryManagement.md
+++ b/docs/Usage/LibraryManagement.md
@@ -76,7 +76,7 @@ The `Scan options` dropdown allows you to choose a specific type of scan to perf
- For example, selecting `IGDB` and `ScreenScraper` will update the metadata for games that **are matched** with IGDB **or** ScreenScraper, and will use `igdb_id` and/or `ssfr_id` to refetch the metadata from the respective providers.
- **Recalculate Hashes**: Recalculates hashes for all files in the selected platforms.
- **Total Rescan**: Rescans and rematches all games in the selected platforms (slowest).
- - This will wipe all existing metadata matches, including the external IDs, and attempt to match them again, like on a fresh scan. *Saves, states and notes will be preserved.*
+ - This will wipe all existing metadata matches, including the external IDs, and attempt to match them again, like on a fresh scan. _Saves, states and notes will be preserved._
### Console
diff --git a/docs/resources/metadata_providers/3dboxes.png b/docs/resources/metadata_providers/3dboxes.png
index 341d982..e6d7c1e 100644
Binary files a/docs/resources/metadata_providers/3dboxes.png and b/docs/resources/metadata_providers/3dboxes.png differ