docs: document downloaded games page and filter

This commit is contained in:
Darkraise
2026-08-11 18:50:58 +07:00
parent a1b2bafcb4
commit bbb0c169f3
3 changed files with 61 additions and 22 deletions
+6 -2
View File
@@ -8,8 +8,9 @@ Search, browse, and retrieve game information.
Query params: `search` (title/developer/publisher), `platform`, `series`,
`developers`, `publishers`, `playModes`, `languages`, `library`
(arcade|theatre), `tags`, `yearFrom`, `yearTo`, `dateAddedSince` (ISO datetime),
`dateModifiedSince` (ISO datetime), `sortBy`
(arcade|theatre), `downloaded` (boolean, optional - restrict to games whose
data is present on disk), `tags`, `yearFrom`, `yearTo`, `dateAddedSince` (ISO
datetime), `dateModifiedSince` (ISO datetime), `sortBy`
(title|releaseDate|dateAdded|dateModified|developer, default: title),
`sortOrder` (asc|desc, default: asc), `page` (default: 1), `limit` (default: 50,
max: 100), `showBroken` (default: false), `showExtreme` (default: false)
@@ -25,6 +26,9 @@ in results and platform counts.
`GET /api/games/filter-options` - No auth required
Query param: `downloaded` (boolean, optional - restrict to games whose data is
present on disk)
Returns platforms, developers, publishers, series, playModes, languages arrays
with name/code and count.
+23 -20
View File
@@ -105,26 +105,29 @@ Clears permission cache entries.
## Settings Categories
| Category | Setting | Type | Default | Validation |
| -------- | ----------------------- | ------- | -------------- | -------------------------------------- |
| auth | guestAccessEnabled | boolean | true | - |
| auth | userRegistrationEnabled | boolean | true | - |
| auth | maxLoginAttempts | number | 5 | 1-20 |
| auth | lockoutDurationMinutes | number | 15 | 1-1440 |
| app | siteName | string | Flashpoint Web | maxLength: 100 |
| app | maintenanceMode | boolean | false | - |
| app | defaultTheme | string | dark | light\|dark\|system |
| app | defaultPrimaryColor | string | blue | blue\|green\|red\|purple\|orange\|pink |
| metadata | autoSyncEnabled | boolean | false | - |
| metadata | syncIntervalMinutes | number | 60 | 0-1440 |
| features | enablePlaylists | boolean | true | - |
| features | enableFavorites | boolean | true | - |
| features | enableStatistics | boolean | true | - |
| features | enableActivityLog | boolean | true | - |
| features | enableRatings | boolean | true | - |
| features | enableLuckyButton | boolean | true | - |
| game | defaultScaleMode | string | showall | showall\|exactfit\|noborder\|noscale |
| game | defaultVolume | number | 0.7 | 0-1 |
| Category | Setting | Type | Default | Validation |
| -------- | ----------------------------- | ------- | -------------- | -------------------------------------- |
| auth | guestAccessEnabled | boolean | true | - |
| auth | userRegistrationEnabled | boolean | true | - |
| auth | maxLoginAttempts | number | 5 | 1-20 |
| auth | lockoutDurationMinutes | number | 15 | 1-1440 |
| app | siteName | string | Flashpoint Web | maxLength: 100 |
| app | maintenanceMode | boolean | false | - |
| app | defaultTheme | string | dark | light\|dark\|system |
| app | defaultPrimaryColor | string | blue | blue\|green\|red\|purple\|orange\|pink |
| metadata | autoSyncEnabled | boolean | false | - |
| metadata | syncIntervalMinutes | number | 60 | 0-1440 |
| features | enablePlaylists | boolean | true | - |
| features | enableFavorites | boolean | true | - |
| features | enableStatistics | boolean | true | - |
| features | enableActivityLog | boolean | true | - |
| features | enableRatings | boolean | true | - |
| features | enableLuckyButton | boolean | true | - |
| features | enableDownloadedPage | boolean | true | - |
| features | enableDownloadedPageForGuests | boolean | false | - |
| features | enableDownloadedFilterDefault | boolean | false | - |
| game | defaultScaleMode | string | showall | showall\|exactfit\|noborder\|noscale |
| game | defaultVolume | number | 0.7 | 0-1 |
## Implementation Notes
@@ -38,6 +38,7 @@ grid and list view options.
- Play Mode, Language, Tags
- Year Range (1970-2100)
- Library (arcade/theatre)
- Downloaded only
- Show/hide broken games and extreme content
**Sorting:**
@@ -57,6 +58,37 @@ grid and list view options.
- List view (compact table format)
- Adjustable card size
## Downloaded Games
A game counts as downloaded when it has at least one `game_data` row with
`presentOnDisk = 1`.
**Filter:** Browse pages carry a "Downloaded only" switch and a removable
chip. Its state lives in the compressed URL under the single-character key
`w`: `w.1` means the user turned it on, `w.0` means they explicitly turned it
off, and an absent key means "use the admin default".
**Downloaded page:** `/downloaded` lists downloaded games across both
libraries. The filter is pinned on and its switch is hidden.
**Admin settings** (Settings > Features, see
[Settings API](../06-api-reference/settings-api.md)): `enableDownloadedPage`
(default true) shows or hides the `/downloaded` page and nav entry;
`enableDownloadedPageForGuests` (default false, only shown while the page
setting is on) allows guest access to it; `enableDownloadedFilterDefault`
(default false) sets whether the "Downloaded only" filter starts on for users
who haven't set it explicitly.
**Limitations:**
- Games with no `game_data` rows at all - legacy titles served from htdocs -
can never appear as downloaded.
- The `DownloadedReconciler`, which rebuilds the flag by scanning ZIP
filenames in the games directory at startup and after each database sync,
only ever sets the flag and never clears it. The Flashpoint Launcher may
store game data outside that directory, so a missing ZIP is not proof of
absence.
## API Endpoints
#### GET /api/games