Commit Graph
666 Commits
Author SHA1 Message Date
adrianbonpin 8cc8db562d Merge branch 'dev' into prod 2026-07-13 07:08:44 +08:00
adrianbonpin a8e189ca84 fix(plugin): add 16px horizontal padding to stats row 2026-07-13 07:07:42 +08:00
adrianbonpin 3b27094973 fix(plugin): inject CSS !important to constrain DialogButtonPrimary width, drop PanelSectionRow wrapper 2026-07-13 07:05:27 +08:00
adrianbonpin 9b38b17eb0 fix(plugin): prevent overflow — shrink stats, constrain button to 110px, hidden overflow 2026-07-13 07:03:28 +08:00
adrianbonpin 2a1943cf35 fix(plugin): constrain View Details button width to 130px 2026-07-13 06:55:44 +08:00
adrianbonpin c02ae28982 fix(plugin): use DialogButtonPrimary for View Details (like HLTB) 2026-07-13 06:54:25 +08:00
adrianbonpin 210046c97e style: extend navbar breakpoints to lg to move to collapsable sidebar (for smaller devices) 2026-07-13 06:52:36 +08:00
adrianbonpin 4f503e373a fix(plugin): use Focusable for compact styled View Details button 2026-07-13 06:47:51 +08:00
adrianbonpin 17d70f175d fix(plugin): use ButtonItem for gamepad-navigable View Details 2026-07-13 06:44:36 +08:00
adrianbonpin a66c13daa0 fix(plugin): single row — stats + View Details inline, space-between 2026-07-13 06:41:15 +08:00
adrianbonpin eedcf9efa6 fix(plugin): show global fallback warning, compact View Details button 2026-07-13 06:39:09 +08:00
adrianbonpin ef96766659 fix(plugin): auto-detect device via DMI, remove selector, fall back to global 2026-07-13 06:37:27 +08:00
adrianbonpin 723885202d fix(plugin): space-between layout, no-shrink dropdown, horizontal padding 2026-07-13 06:33:01 +08:00
adrianbonpin ba218a52b5 Merge branch 'dev' into prod 2026-07-13 06:30:02 +08:00
adrianbonpin c5ac3ba567 fix(api): add tdpAvg to estFps type in buildPluginGameResponse args 2026-07-13 06:30:00 +08:00
adrianbonpin d409e27a95 fix(plugin): game URL by steamAppId, inline dropdown to save vertical space 2026-07-13 06:28:41 +08:00
adrianbonpin c80c1d5775 fix(plugin): centered stats, View Details button with fallback, separate rows 2026-07-13 06:25:55 +08:00
adrianbonpin 7021f4da07 fix(plugin): single row stats + dropdown + button, no filler text 2026-07-13 06:22:13 +08:00
adrianbonpin f2f600f206 Merge branch 'dev' into prod 2026-07-13 06:20:38 +08:00
adrianbonpin c974699024 feat: add TDP to quick stats + open-on-DeckyVault button 2026-07-13 06:20:30 +08:00
adrianbonpin b108f0436b fix(plugin): minimal library panel — single stats row, no header 2026-07-13 06:18:21 +08:00
adrianbonpin 91f6324bf1 Merge branch 'dev' into prod 2026-07-13 06:01:15 +08:00
adrianbonpin ed0ed6b089 fix(plugin): guard non-numeric appId, improve 404 error handling 2026-07-13 06:01:08 +08:00
adrianbonpin 7e016bfa50 chore: bump plugin version to 1.1.0 2026-07-13 05:50:24 +08:00
adrianbonpin bfd36ad632 fix: address final review — 404 error field, aggregate estFps, recent entries, panel props 2026-07-13 05:30:17 +08:00
adrianbonpin d63ec4a42e fix(plugin): handle fetch errors, race conditions, and error states in library panel 2026-07-13 05:21:28 +08:00
adrianbonpin 66d16bc25c feat(plugin): inject DeckyVault section into library app-details page 2026-07-13 05:17:35 +08:00
adrianbonpin ed04b87f16 fix(plugin): don't cache error responses, add SSRF guard to plugin_get 2026-07-13 05:13:01 +08:00
adrianbonpin 4dfc23d35f feat(plugin): plugin_get proxy + typed library-panel fetch/cache 2026-07-13 05:10:04 +08:00
adrianbonpin 5b107bddf7 fix(api): align /devices version scope, add Vary header, add validation + tests 2026-07-13 05:07:51 +08:00
adrianbonpin 0ad133492b feat(api): public plugin game-lookup endpoint for library panel 2026-07-13 05:03:26 +08:00
adrianbonpin 3d2f1384df fix(plugin): extract _collect_screenshots pure function, add fallback test 2026-07-13 04:59:17 +08:00
adrianbonpin 0018673747 fix(plugin): discover Steam Game Mode screenshots + safe preview fallback 2026-07-13 04:54:17 +08:00
adrianbonpin 5759fdbafd fix(plugin): align _find_mangohud_log with scoped clear, reset lastLogPath on error 2026-07-13 04:51:29 +08:00
adrianbonpin 61154dbda3 fix(plugin): safe recording start — no mid-game config rewrite, scoped log clear 2026-07-13 04:45:37 +08:00
adrianbonpin fd47803127 fix(plugin): guard against NaN fpsAvg bypassing upload check 2026-07-13 04:42:03 +08:00
adrianbonpin a975497c16 fix(plugin): block no-FPS uploads and clamp FPS before submit 2026-07-13 04:38:56 +08:00
adrianbonpin bf33f8735d fix(api): raise FPS caps to 1000 and validate FPS before game lookup 2026-07-13 04:35:24 +08:00
adrianbonpin dfd900581a docs: implementation plan for plugin bugs + library injection 2026-07-12 18:49:43 +08:00
adrianbonpin 75507b4984 docs: design spec for plugin bugs + library-injection features 2026-07-12 09:21:27 +08:00
adrianbonpin 1702c13dc1 Merge branch 'dev' into prod 2026-06-29 00:55:08 +08:00
adrianbonpin ab8a213ba6 feat(plugin page): document full install path with screenshots
The plugin isn't on the Decky Loader store yet, so the install section
needs to walk users through the manual path:

- Enable Developer mode in Decky → General settings
- Download the plugin ZIP from GitHub Releases
- Install Plugin from ZIP File in Decky → Developer tab

Adds two new screenshots to the 3-act narrative (now 4 acts):
'Install the plugin' is the new act 1, the existing setup/capture/share
acts are renumbered to 2/3/4. The How it works step list grows from 4
to 6 entries to match the new flow.

The old step 1 still pointed users at the Plugin Browser, which is no
longer accurate — copy now describes Decky Loader as a one-time
prerequisite and points users at the GitHub release for the plugin.
2026-06-29 00:54:51 +08:00
adrianbonpin d367665163 Merge branch 'dev' into prod 2026-06-29 00:49:43 +08:00
adrianbonpin c3215d9766 fix(api): replace raw = ANY() SQL with Drizzle inArray()
The sql template literal '= ANY()' was causing 500 errors during
screenshot deletion in the PATCH edit endpoint. Replaced all 3 occurrences
with Drizzle's native inArray() which safely handles array parameters,
including empty arrays.
2026-06-29 00:49:41 +08:00
adrianbonpin a0cc66e6bc Merge branch 'dev' into prod 2026-06-29 00:46:47 +08:00
adrianbonpin 60266ad9c9 fix(api): filter empty/invalid screenshot IDs before ANY query
The PATCH /api/performance/:id/edit endpoint was passing raw
removedScreenshotIds from the client to an = ANY() SQL clause.
Empty strings or invalid values would crash the query. Added a filter
to ensure only non-empty string IDs are used.
2026-06-29 00:46:45 +08:00
adrianbonpin 88768bffb6 Merge branch 'dev' into prod 2026-06-29 00:40:14 +08:00
adrianbonpin 2303b9eb31 fix(wizard): always show remove button on existing screenshots
The 'showExistingRemove' guard was totalScreenshots >= 2, meaning you
could only delete existing screenshots when at maximum capacity.
Changed to >= 1 so the trash icon appears on every existing screenshot
during edit, regardless of the total count.
2026-06-29 00:40:12 +08:00
adrianbonpin 70438a6fd3 Merge branch 'dev' into prod 2026-06-29 00:37:20 +08:00
adrianbonpin 711e80efe1 fix(wizard): remove settings requirement gate for screenshot upload
The submission wizard required at least one game setting category before
allowing screenshot upload ('Add game settings to enable screenshot upload').
Removed that restriction — screenshots can now be attached to any entry
regardless of whether game settings were configured. The Decky plugin entries
typically don't include structured settings, and they should still support
screenshot attachments.
2026-06-29 00:37:18 +08:00