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