adrianbonpin
d575ca968e
Merge branch 'dev' into prod
2026-06-28 22:22:49 +08:00
adrianbonpin
3ed0ee3128
fix: API key test now actually verifies the key against a real auth endpoint
...
The old test hit /api/games/lookup which is a public endpoint with no auth,
so it never checked the key — any key (or a deleted one) reported as valid.
- Add GET /api/plugin/verify-key endpoint that uses authenticateWithApiKey
to properly verify the x-api-key header via Better Auth
- Plugin test_api_key now calls /api/plugin/verify-key instead of games-lookup
- Returns the linked user's name + avatar on success for richer feedback
2026-06-28 22:22:47 +08:00
adrianbonpin
7a02d2f40e
Merge branch 'dev' into prod
2026-06-28 22:19:53 +08:00
adrianbonpin
763114df6f
fix: correct 'Manage API Keys' link from /pair success screen
...
- Profile page now reads ?tab= query param to open Settings tab directly
- Settings container reads ?subtab= query param to open API Keys directly
- /pair success link updated to /profile?tab=settings&subtab=api-keys (was /profile/settings?tab=api-keys which 404'd)
2026-06-28 22:19:51 +08:00
adrianbonpin
d486ca3021
Merge branch 'dev' into prod
2026-06-28 22:13:03 +08:00
adrianbonpin
02553445b1
refactor: redesign plugin panel layout
...
Consolidate 7 flat sections into 5 logical groups with clear hierarchy:
1. Recording (primary action)
2. Account (QR pairing + manual key + test, with readiness indicator)
3. MangoHud Setup (merge config write/verify + launch option + numbered guide)
4. System (MangoHud check + game/app info)
5. Advanced (server, paths, hardware, config backup)
Add reusable helpers (SectionHint, StatusRow, InfoRow, CodeBlock, BtnContent)
for consistent styling. Improve recording timer with radial glow, error/success
states with colored backgrounds, and recent recordings as cards.
2026-06-28 22:12:57 +08:00
adrianbonpin
f7ebd8fcad
Merge branch 'dev' into prod
2026-06-28 22:09:44 +08:00
adrianbonpin
1de08ed4ec
feat: QR code phone pairing for Decky plugin + MangoHud guide revision + SteamOS version fix
...
- Add plugin_pairings table + migration (0028) for short-lived pairing sessions
- Add pairing API: POST /api/plugin/pair/initiate, GET /status/:token, POST /confirm
- Add /pair web page: user scans QR on phone, confirms, API key auto-created
- Plugin: 'Pair with Phone' button renders QR code (qrcode.react), polls for status, saves API key
- Plugin: new initiate_pair + check_pair_status Python RPCs
- Revise MangoHud Setup Guide into clean numbered steps
- Fix SteamOS version detection: read VERSION_ID + BUILD_ID (was just 'SteamOS')
2026-06-28 22:09:39 +08:00
adrianbonpin
4395467ac6
Merge branch 'dev' into prod
2026-06-28 21:56:18 +08:00
adrianbonpin
b637b55011
fix: remove settingsJson IS NOT NULL filter from game page and API queries
2026-06-28 21:56:08 +08:00
adrianbonpin
62049fe00a
Merge branch 'dev' into prod
2026-06-28 21:38:24 +08:00
adrianbonpin
2a90a2d6f0
docs: add v1.0.0 changelog for DeckyVault plugin release
2026-06-28 21:38:19 +08:00
adrianbonpin
4c531beb11
chore(plugin): bump version to 1.0.0
2026-06-28 21:37:07 +08:00
adrianbonpin
c67d99ad63
fix(plugin): use currentColor instead of white for icon so it doesn't disappear on hover
2026-06-28 21:36:23 +08:00
adrianbonpin
799f53d7c1
Merge branch 'dev' into prod
2026-06-28 21:35:03 +08:00
adrianbonpin
dedc756dde
fix(api): remove settingsJson IS NOT NULL filter so entries without in-game settings show up
2026-06-28 21:34:14 +08:00
adrianbonpin
f7c7ed7bbe
feat(plugin): show game name and app ID in status section
2026-06-28 21:30:58 +08:00
adrianbonpin
234877cef2
fix(plugin): detect Steam App ID from compatdata, read proper game name from appmanifest
2026-06-28 21:28:56 +08:00
adrianbonpin
9b6b37f8a4
fix(plugin): poll-based game detection via Python backend, remove broken SteamClient events
2026-06-28 21:25:57 +08:00
adrianbonpin
0c44b39e9e
fix(plugin): use correct SteamClient.GameSessions.RegisterForAppLifetimeNotifications API for game detection
2026-06-28 21:21:29 +08:00
adrianbonpin
83ab7fa1e6
fix(plugin): browser-like UA for Cloudflare, detect current game, fix proton version, single-line notes
2026-06-28 21:15:17 +08:00
adrianbonpin
7ebb2669a1
fix(plugin): sum cpu_power + gpu_power for TDP, remove in-game settings, single-line notes
2026-06-28 21:03:00 +08:00
adrianbonpin
ec1d4a0746
fix(plugin): remove in-game settings, single-line notes, record-while-in-game flow
2026-06-28 21:01:53 +08:00
adrianbonpin
e3c3ed54c6
fix(plugin): update copy button to use wrapper script path
2026-06-28 20:56:40 +08:00
adrianbonpin
b98528fbaf
fix(plugin): add wrapper script to force MangoHud config file
2026-06-28 20:54:01 +08:00
adrianbonpin
7a653198e7
fix(plugin): update verify config check, add debug list tmp
2026-06-28 20:51:47 +08:00
adrianbonpin
2b53b30be6
fix(plugin): read mangohud version from script file instead of running it
2026-06-28 20:48:27 +08:00
adrianbonpin
6a486ed257
fix(plugin): add debug logging to check_mangohud
2026-06-28 20:47:43 +08:00
adrianbonpin
55bc86874a
fix(plugin): use os.popen instead of subprocess for mangohud version
2026-06-28 20:46:42 +08:00
adrianbonpin
6b2dada082
fix(plugin): use full path for mangohud, return empty string instead of unknown
2026-06-28 20:45:28 +08:00
adrianbonpin
912b783593
fix(plugin): fallback version check with full binary path
2026-06-28 20:43:37 +08:00
adrianbonpin
e1269b2de1
fix(plugin): clean up MangoHud version display
2026-06-28 20:40:32 +08:00
adrianbonpin
928ec8ec9a
fix(plugin): retry mangohudctl start logging until game launches
2026-06-28 20:38:18 +08:00
adrianbonpin
37cc24ff60
fix(plugin): add control socket, autostart_log=1, timeout-safe mangohudctl
2026-06-28 20:33:12 +08:00
adrianbonpin
aa52e0feb6
fix(plugin): use autostart_log instead of mangohudctl, improve log search
2026-06-28 20:29:38 +08:00
adrianbonpin
f61227e7fc
fix(plugin): move Recording to top, clean up setup guide layout
2026-06-28 20:25:23 +08:00
adrianbonpin
ea3b01b28b
fix(plugin): add User-Agent header to API requests for Cloudflare compat
2026-06-28 20:23:58 +08:00
adrianbonpin
6e1957524b
feat(plugin): restructure layout like LSFG-VK, use mangohudctl for logging
2026-06-28 20:21:33 +08:00
adrianbonpin
c230367d14
fix(plugin): search for any MangoHud log in /tmp/ instead of fixed filename
2026-06-28 19:04:35 +08:00
adrianbonpin
545d1c5cfa
fix(plugin): add missing useState import
2026-06-28 18:59:20 +08:00
adrianbonpin
65e56702b0
fix(plugin): add manual game name input, autostart MangoHud logging
2026-06-28 18:57:51 +08:00
adrianbonpin
7ab7af468a
fix(plugin): autostart MangoHud logging on record, write config on start
2026-06-28 18:56:43 +08:00
adrianbonpin
677adc5ad0
fix(plugin): revert to RegisterForGameStarted/Stopped for runtime compat
2026-06-28 18:54:46 +08:00
adrianbonpin
a49aca93c7
fix(plugin): add missing Field import for textareas
2026-06-28 18:54:05 +08:00
adrianbonpin
80caa167cc
fix(plugin): use correct SteamClient API, alwaysRender true, wrap stop in try-catch
2026-06-28 18:51:53 +08:00
adrianbonpin
479c1afd1a
Merge branch 'dev' into prod
2026-06-28 18:51:14 +08:00
adrianbonpin
df66e0405d
fix(plugin): set icon to 16x16
2026-06-28 18:43:56 +08:00
adrianbonpin
297fbc0320
fix(plugin): remove explicit icon size, let container handle scaling
2026-06-28 18:40:09 +08:00
adrianbonpin
1ea079917f
fix(plugin): add second gear path layer for proper icon rendering
2026-06-28 18:36:24 +08:00
adrianbonpin
88f6c3dadf
fix(plugin): use full DeckyVault SVG icon with all paths and transforms
2026-06-28 18:31:53 +08:00
adrianbonpin
7b2f031c3b
fix(plugin): fix SVG viewBox for proper icon scaling
2026-06-28 18:28:28 +08:00
adrianbonpin
f97bc0b8b7
feat(plugin): use DeckyVault brand SVG icon
2026-06-28 18:06:13 +08:00
adrianbonpin
f7d36e82ef
feat(plugin): add verify config and copy launch option buttons
2026-06-28 17:59:05 +08:00
adrianbonpin
bd14fdaf82
feat(web): add Download Plugin Config button to API key creation
2026-06-28 17:45:32 +08:00
adrianbonpin
3196812c0d
fix(plugin): dropdown data prop, always show guide, add config export/import
2026-06-28 17:43:36 +08:00
adrianbonpin
aa4a6a3da2
Merge branch 'dev' into prod
2026-06-28 17:38:59 +08:00
adrianbonpin
4b7efd3c5c
fix: accept steamAppId=0 in games lookup, treat 400 as valid key in plugin test
2026-06-28 17:36:32 +08:00
adrianbonpin
046e483861
fix(plugin): hybrid SSL context - verify when possible, fall back gracefully
2026-06-28 17:33:55 +08:00
adrianbonpin
961c81e97f
fix(plugin): use unverified SSL context for DeckyVault API calls
2026-06-28 17:32:14 +08:00
adrianbonpin
2168d31052
fix(plugin): merge tabs into single panel, use TextField for controller input
2026-06-28 17:29:22 +08:00
adrianbonpin
5a6211ebea
fix(plugin): replace raw buttons with ButtonItem for controller navigation
2026-06-28 17:26:20 +08:00
adrianbonpin
b7f9df8439
docs: update README with monorepo structure and Decky Loader plugin docs
2026-06-28 17:07:54 +08:00
adrianbonpin
7d016a7b8c
chore(plugin): build plugin and verify dist output
2026-06-28 08:00:56 +08:00
adrianbonpin
793d7bb9f4
feat(plugin): wire together entry point with definePlugin and SteamClient events
2026-06-28 07:59:39 +08:00
adrianbonpin
82fbd86fb0
feat(plugin): add settings panel (API key, export path, MangoHud setup)
2026-06-28 07:58:34 +08:00
adrianbonpin
092071e410
feat(plugin): add session form component (manual inputs + export/upload)
2026-06-28 07:58:04 +08:00
adrianbonpin
87eeb3fb39
feat(plugin): add main panel component (record/stop + recent sessions)
2026-06-28 07:57:34 +08:00
adrianbonpin
ad816d1ae5
feat(plugin): add frontend state management (settings + session hooks)
2026-06-28 07:57:11 +08:00
adrianbonpin
026bd299ca
feat(plugin): add typed RPC wrappers for Python backend
2026-06-28 07:56:26 +08:00
adrianbonpin
ab6a91e13f
feat(plugin): update SteamClient type declarations
2026-06-28 07:56:08 +08:00
adrianbonpin
6c5ac9814d
feat(plugin): add upload and API key test methods in backend
2026-06-28 07:55:56 +08:00
adrianbonpin
890fab3da5
feat(plugin): add export-to-file method in backend
2026-06-28 07:55:32 +08:00
adrianbonpin
6b7dfdd53c
feat(plugin): add system info reader (hardware, OS, Proton, launch options)
2026-06-28 07:55:00 +08:00
adrianbonpin
e48efe86b1
feat(plugin): add MangoHud log parser with unit tests
2026-06-28 07:54:32 +08:00
adrianbonpin
dc1281411d
feat(plugin): add MangoHud status check and config writing to backend
2026-06-28 07:53:02 +08:00
adrianbonpin
67e9e2cf63
feat(plugin): add Python backend skeleton with settings management
2026-06-28 07:52:33 +08:00
adrianbonpin
5598e0db59
feat(plugin): update tsconfig for Decky frontend build
2026-06-28 07:51:38 +08:00
adrianbonpin
c1eba0c047
feat(plugin): update plugin.json with correct Decky metadata fields
2026-06-28 07:51:26 +08:00
adrianbonpin
bcd208c7c8
feat(plugin): use @decky/rollup for build config
2026-06-28 07:51:05 +08:00
adrianbonpin
004da4afff
feat(plugin): update package.json with @decky SDK dependencies
2026-06-28 07:50:29 +08:00
adrianbonpin
57e5cf2dc6
docs: add DeckyVault plugin implementation plan
2026-06-28 07:48:25 +08:00
adrianbonpin
927bbe13a3
docs: add DeckyVault plugin design spec
2026-06-28 07:38:41 +08:00
adrianbonpin
eaa7c85e09
fix: prevent passkey conditional ui unhandled rejection blocking login
2026-06-28 05:55:00 +08:00
adrianbonpin
4cf8a42742
fix: add zod as direct dependency for bun workspace resolution
2026-06-28 05:44:46 +08:00
adrianbonpin
a63cc52108
fix: upgrade better-auth to v1.6.22 for api-key plugin compatibility
2026-06-28 05:41:45 +08:00
adrianbonpin
835fab2600
chore: add .worktrees/ to gitignore
2026-06-28 05:33:13 +08:00
adrianbonpin
86f4f308e7
release: monorepo conversion + API key plugin
2026-06-28 05:31:47 +08:00
adrianbonpin
6cb407acaa
merge: convert to bun workspaces monorepo
2026-06-28 05:31:30 +08:00
adrianbonpin
f7eda2bfc0
feat: add better-auth api-key plugin, import endpoint, and API key UI
2026-06-28 05:30:48 +08:00
adrianbonpin
cd72b7a948
refactor: convert to bun workspaces monorepo
...
- Move web app into apps/web/
- Create packages/shared/ with shared types
- Create plugins/decky-vault/ scaffold
- Root package.json manages workspaces only
2026-06-28 05:20:28 +08:00
adrianbonpin
c4bede20d4
fix: remove duplicate sitemap route
...
- app/sitemap.ts already generates the sitemap index via generateSitemaps()
- app/sitemap.xml/route.ts was a duplicate manual version at the same path
2026-06-26 22:12:37 +08:00
adrianbonpin
9ee927ce77
fix: prevent scroll capture on card rows with pointer-events
...
- Wrap card containers in overflow-x-auto with pointer-events: none
- Inner flex div gets pointer-events: auto so cards remain interactive
- Main page scrolling works normally when cursor is over card rows
2026-06-26 22:03:44 +08:00
adrianbonpin
26fc600266
fix: replace horizontal scroll with flex-wrap on card rows
...
- Remove overflow-x-auto so cards don't capture scroll events
- Cards now wrap naturally into rows with flex-wrap
- Main page scrolling works normally even when cursor is over cards
2026-06-26 22:00:58 +08:00
adrianbonpin
945d0dc96d
fix: prevent vertical overflow on card scroll containers
...
- Add overflow-y-hidden to all three card containers (skeleton, GameSection, SaleSection)
- Keeps horizontal scrolling but prevents any vertical scroll
2026-06-26 21:59:59 +08:00
adrianbonpin
b91068ac64
fix: prevent vertical overscroll on card scroll containers
2026-06-26 21:58:20 +08:00
adrianbonpin
38c58cdbd2
style: add rounded corners to card images and hide scrollbars
...
- Add rounded-xl to card images so corners match the card border radius
- Replace scrollbar-thin with scrollbar-none on horizontal scroll containers
2026-06-26 21:57:13 +08:00
adrianbonpin
236f293879
refactor: redesign landing page card hover behavior
...
- Remove card-level scale-up animation (whileHover/whileTap)
- Image now scales down slightly on hover instead of scaling up
- Keeps border/background color transitions for hover feedback
2026-06-26 21:54:53 +08:00
adrianbonpin
ec5ee7fb18
feat: add Cloudflare Turnstile captcha to auth flow
...
- Add captcha plugin to Better Auth config (cloudflare-turnstile provider)
- Create reusable TurnstileWidget component with script injection
- Integrate Turnstile into login, signup, and forgot-password forms
- Pass x-captcha-response header on protected endpoints
- Add TURNSTILE_SECRET_KEY and NEXT_PUBLIC_TURNSTILE_SITE_KEY to env
2026-06-26 21:50:45 +08:00
adrianbonpin
7d78f1834d
chore: update Rybbit analytics URL from analytics.ranlabs.space to stat.ranio.xyz
2026-05-31 05:13:52 +08:00
adrianbonpin
accbfe48c9
test: E2E browser tests for domain block enforcement (Task 10)
2026-05-28 00:27:30 +08:00