diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f1c0c6..8f14593 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,32 @@ All notable changes to DeckyVault will be documented in this file. +## [2026.1.0] - 2026-05-16 + +### Added +- **Moderator role** with content moderation permissions (verify entries, handle reports, review suggestions, manage comments) — sits between contributor and admin +- **Moderation analytics tab** with ECharts time-series: benchmark submissions, user registrations, device distribution, and genre popularity over 90 days +- **Ban reason and expiry UI** in user management — modal with optional reason and duration, plus active/banned filter tabs +- **Steam Sale section** on landing page showing discounted games with ≥3 benchmarks, sorted by performance — includes discount badges, pricing, and review scores +- Database performance indexes: `perf_removed_created_idx`, `perf_upvotes_idx`, `reports_status_idx`, `suggestions_status_idx`, `games_sync_status_idx`, `perf_game_lookup_idx` +- In-memory 5-minute cache for manage dashboard stats endpoint +- Auto-pin unit tests covering threshold edge cases + +### Changed +- **Performance tags (Raw Performer/Poor Performance/best FPS) now scoped to handheld devices** (Steam Deck OLED/LCD) by default — console (Steam Machine) data no longer influences the badges shown on game cards, listings, and search results +- **Public dashboard** now uses full-width layout matching game details page styling (no `max-w` constraint) +- Moderator role added between contributor and admin; manage sidebar adapts to show role-appropriate navigation (hides Users, Storage for moderators) +- Manage panel now requires moderator or admin role for access (previously contributor+) +- Content moderation endpoints (reports, suggestions, comments, benchmark removal) gated to moderator+ + +### Fixed +- **Submit wizard drag-and-drop** no longer triggers text selection or touch-scroll interference on settings and screenshot reorder handles +- **Editing entries with screenshots** now shows existing screenshots in the Review step with remove capability; supports hybrid existing + new screenshot management + +### Security +- Manage panel access restricted to moderator+ (up from contributor+) +- Destructive benchmark operations (remove, hard-delete, restore) now require moderator+ (up from admin-only — wider moderation capability with proper role separation) + ## [2026.0.101] - 2026-05-14 ### Added diff --git a/content/updates/2026-05-16-v2026.1.0.md b/content/updates/2026-05-16-v2026.1.0.md new file mode 100644 index 0000000..9250c17 --- /dev/null +++ b/content/updates/2026-05-16-v2026.1.0.md @@ -0,0 +1,28 @@ +--- +title: "Moderator Role, Performance Tag Fix, and Steam Sale Section" +date: "2026-05-16" +version: "2026.1.0" +summary: "New moderator role for community management, handheld-scoped performance tags for more accurate badges, Steam sale discovery on the landing page, and submit wizard fixes." +--- + +### New Moderator Role + +A new **moderator** role sits between contributor and admin, giving trusted community members the ability to: +- Verify benchmarks, handle reports, and review community suggestions +- Moderate comments and remove problematic entries +- Access the manage panel with role-appropriate navigation + +Admins retain full control over user management, storage, and hardware creation. Existing contributors keep their permissions unchanged. + +### Handheld-Scoped Performance Tags + +Performance badges (Raw Performer, Poor Performance, best FPS) are now calculated using **Steam Deck data only** — console performance no longer masks handheld reality. A game running at 90 FPS on Steam Machine but 25 FPS on Steam Deck will correctly show as "Poor Performance" rather than displaying both badges confusingly. + +### Steam Sale Discovery + +The landing page now features an **On Sale & Performing Well** section showing discounted Steam games from the DeckyVault database. Each card displays the discount percentage, sale price, performance badges, and Steam review score — helping you spot great deals on games that actually run well. + +### Submit Wizard Improvements + +- **Drag-and-drop** in the settings editor and screenshot uploader no longer triggers accidental text selection +- **Editing entries with screenshots** now shows your existing screenshots in the Review step — remove individual ones or add new ones before re-submitting diff --git a/lib/api/app.ts b/lib/api/app.ts index fb6b2fa..39c65d3 100644 --- a/lib/api/app.ts +++ b/lib/api/app.ts @@ -73,7 +73,7 @@ export const app = new Elysia({ prefix: "/api" }) documentation: { info: { title: "DeckyVault API", - version: "2026.0.101", + version: "2026.1.0", description: "API for DeckyVault — Steam Deck game compatibility, performance reports, and community features.", }, @@ -214,7 +214,7 @@ export const app = new Elysia({ prefix: "/api" }) .use(rateLimit("default")) .get("/", () => ({ name: "DeckyVault API", - version: "2026.0.101", + version: "2026.1.0", })) export type App = typeof app diff --git a/package.json b/package.json index 09e2afd..714a6b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "deckyvault", - "version": "2026.0.101", + "version": "2026.1.0", "private": true, "scripts": { "dev": "next dev --experimental-https --webpack", @@ -18,6 +18,7 @@ "dependencies": { "@aws-sdk/client-s3": "^3.1036.0", "@better-auth/drizzle-adapter": "^1.6.9", + "@better-auth/expo": "^1.6.11", "@better-auth/passkey": "^1.6.9", "@elysia/cron": "^1.4.2", "@elysia/eden": "^1.4.10",