chore: bump version to 2026.1.0 and write changelog
This commit is contained in:
@@ -2,6 +2,32 @@
|
|||||||
|
|
||||||
All notable changes to DeckyVault will be documented in this file.
|
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
|
## [2026.0.101] - 2026-05-14
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -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
|
||||||
+2
-2
@@ -73,7 +73,7 @@ export const app = new Elysia({ prefix: "/api" })
|
|||||||
documentation: {
|
documentation: {
|
||||||
info: {
|
info: {
|
||||||
title: "DeckyVault API",
|
title: "DeckyVault API",
|
||||||
version: "2026.0.101",
|
version: "2026.1.0",
|
||||||
description:
|
description:
|
||||||
"API for DeckyVault — Steam Deck game compatibility, performance reports, and community features.",
|
"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"))
|
.use(rateLimit("default"))
|
||||||
.get("/", () => ({
|
.get("/", () => ({
|
||||||
name: "DeckyVault API",
|
name: "DeckyVault API",
|
||||||
version: "2026.0.101",
|
version: "2026.1.0",
|
||||||
}))
|
}))
|
||||||
|
|
||||||
export type App = typeof app
|
export type App = typeof app
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "deckyvault",
|
"name": "deckyvault",
|
||||||
"version": "2026.0.101",
|
"version": "2026.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev --experimental-https --webpack",
|
"dev": "next dev --experimental-https --webpack",
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.1036.0",
|
"@aws-sdk/client-s3": "^3.1036.0",
|
||||||
"@better-auth/drizzle-adapter": "^1.6.9",
|
"@better-auth/drizzle-adapter": "^1.6.9",
|
||||||
|
"@better-auth/expo": "^1.6.11",
|
||||||
"@better-auth/passkey": "^1.6.9",
|
"@better-auth/passkey": "^1.6.9",
|
||||||
"@elysia/cron": "^1.4.2",
|
"@elysia/cron": "^1.4.2",
|
||||||
"@elysia/eden": "^1.4.10",
|
"@elysia/eden": "^1.4.10",
|
||||||
|
|||||||
Reference in New Issue
Block a user