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
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
adrianbonpin
e1ee2c54f2
test: E2E browser tests for auth form placeholder verification (Task 9)
2026-05-28 00:26:09 +08:00
adrianbonpin
893f6356c6
refactor: remove all rate limiting across the application (Task 11)
2026-05-28 00:24:33 +08:00
adrianbonpin
ea4907cf4b
fix: resolve TypeScript errors in domain-block-api test (Task 8)
2026-05-28 00:21:04 +08:00
adrianbonpin
99d6572a3d
chore: bump version to 2026.2.2, add changelog and update news (Task 7)
2026-05-28 00:18:20 +08:00
adrianbonpin
980e16bb97
feat: change email placeholder from you@example.com to you@deckyvault.xyz (web) (Task 5)
2026-05-28 00:14:26 +08:00
adrianbonpin
542b855555
test: add check-email regression guard for deckyvault.xyz login (Task 4)
2026-05-28 00:13:10 +08:00
adrianbonpin
aa39fda696
feat: add server-side deckyvault.xyz domain block middleware (Task 3)
2026-05-28 00:12:17 +08:00
adrianbonpin
c81f0defb2
feat: add deckyvault.xyz domain block to signupSchema (Task 2)
2026-05-28 00:07:55 +08:00
adrianbonpin
60f25b08f6
feat: add isDeckyVaultEmail domain validation helper (Task 1)
2026-05-28 00:06:16 +08:00
adrianbonpin
05ddb8b4cc
fix: resolve module mock conflicts in metadata and sitemap tests
...
- Add missing drizzle-orm exports (avg, count) to metadata and sitemap test mocks
- Add missing schema exports (steamReviewSentimentEnum) to metadata and sitemap test mocks
- Add missing schema tables (gameVersions, performanceEntries, gameComments, gamePlatformSupport, user, entryScreenshots) to sitemap test mock
- Remove @/lib/steam/sync mock from metadata test to prevent module mock caching conflicts
- Add auth export to @/lib/auth mock
This fixes 7 pre-existing test failures caused by module mock interference
when test files run in the same process.
2026-05-28 00:03:57 +08:00
adrianbonpin
02e82f5b90
fix: use globalThis instead of window to prevent SSR ReferenceError in login form passkey check
2026-05-27 04:19:47 +08:00
adrianbonpin
15ebb64d8f
test: E2E browser tests for password reset + proxy guard (Task 19)
2026-05-27 04:16:40 +08:00
adrianbonpin
86575923b0
test: E2E browser tests for login + signup (Task 18)
2026-05-27 04:15:39 +08:00
adrianbonpin
eb9a185818
test: add rate limiter integration tests (Task 16)
2026-05-27 03:12:47 +08:00
adrianbonpin
559791a790
refactor: remove mobile-callback bridge page (Task 13)
2026-05-27 03:02:33 +08:00
adrianbonpin
8e9b16349c
fix: update API version and restrict set-password to JSON body (Task 7)
2026-05-27 02:52:09 +08:00
adrianbonpin
f059b00f4b
refactor: consolidate check-email into Elysia rate limiter (Task 6)
2026-05-27 02:50:55 +08:00
adrianbonpin
5db12dfe1c
fix: validate session for signup wizard steps (Task 5)
2026-05-27 02:50:00 +08:00
adrianbonpin
079df570c5
test: add auth guard tests (Task 4)
2026-05-27 02:48:46 +08:00
adrianbonpin
34e66de8b3
test: add password strength tests (Task 2)
2026-05-27 02:42:34 +08:00
adrianbonpin
d9be0510cc
test: add validation schema tests (Task 1)
2026-05-27 02:41:17 +08:00
adrianbonpin
7ce607fa9b
fix: add sitemap index route at /sitemap.xml for Next.js 16 generateSitemaps
2026-05-25 21:47:08 +08:00
adrianbonpin
535836b6ba
test: add sitemap integration constraint verification (Task 3)
2026-05-25 21:29:10 +08:00
adrianbonpin
bad8d55cf4
fix: convert game count to number for type-safe comparison (build fix)
2026-05-25 21:26:01 +08:00
adrianbonpin
5083255654
feat: rewrite sitemap with generateSitemaps pattern — 4 isolated child sitemaps (Task 2)
2026-05-25 21:24:11 +08:00
adrianbonpin
1ed90bb222
feat: extract sitemap utilities to lib/sitemap-utils.ts (Task 1)
2026-05-25 21:16:17 +08:00