Files
deckyvault/packages/shared/src/index.ts
T
adrianbonpin 868faafb4d fix(plugin): screenshot limit, version/build fields, delete button, workspace scripts
- list_screenshots: bump limit 12 → 50 so users can scroll further back
- Add versionString + buildId to DeckyVaultImportV1, SessionData, and
  buildImportPayload. Import endpoint now saves them on new game versions.
- Screenshot delete button in preset detail modal: owner/admin sees a
  trash icon on hover that calls DELETE /api/performance/:id/screenshots/:sid
- Root workspace scripts for plugin workflow:
  bun run plugin:build  | plugin:zip | plugin:release | plugin:deploy
- Add deploy.sh (SSH scripts to push plugin to Deck)
2026-06-29 00:33:20 +08:00

92 lines
2.6 KiB
TypeScript

// ── DeckyVault Import Format (v1) ──────────────────────────────
// This is the format produced by the Decky Loader plugin
// and consumed by POST /api/performance/import
export const VALID_UPSCALER_TYPES = [
"none", "fsr", "dlss", "xess", "lsfg", "other",
] as const
export const VALID_FRAME_GEN_METHODS = [
"none", "fsr_fg", "dlss_fg", "lsfg", "other",
] as const
export const VALID_ANTICHEAT_STATUSES = [
"none", "supported", "unsupported", "unknown",
] as const
export type UpscalerType = (typeof VALID_UPSCALER_TYPES)[number]
export type FrameGenMethod = (typeof VALID_FRAME_GEN_METHODS)[number]
export type AntiCheatStatus = (typeof VALID_ANTICHEAT_STATUSES)[number]
export interface DeckyVaultImportV1 {
version: 1
steamAppId: number
hardwareSlug: string
fpsAvg: number
fpsLow?: number | null
fpsOnePercentLow?: number | null
fpsHigh?: number | null
protonVersion?: string | null
osVersion?: string | null
upscalerType?: string
upscalerVersion?: string | null
frameGenMethod?: string
tdpWatts?: number | null
loadTimeSsd?: number | null
loadTimeSd?: number | null
launchOptions?: string | null
settingsJson?: unknown[] | null
userNotes?: string | null
customSystem?: boolean
versionString?: string | null
buildId?: string | null
antiCheatRelevant?: boolean
antiCheatName?: string | null
antiCheatStatus?: string
}
// ── Known hardware slugs ───────────────────────────────────────
export const KNOWN_HARDWARE_SLUGS = [
"steamdeck-lcd",
"steamdeck-oled",
"steamdeck-lcd-64gb",
"steamdeck-lcd-256gb",
"steamdeck-lcd-512gb",
"steamdeck-oled-512gb",
"steamdeck-oled-1tb",
"rog-ally",
"rog-ally-x",
"legion-go",
"msi-claw",
] as const
export type HardwareSlug = (typeof KNOWN_HARDWARE_SLUGS)[number]
// ── API Response Types ──────────────────────────────────────────
export interface GameLookupResponse {
game: {
id: string
steamAppId: number | null
title: string
slug: string | null
headerImage: string | null
capsuleImage: string | null
developer: string | null
publisher: string | null
}
version: {
id: string
versionString: string | null
buildId: string | null
isLatest: boolean
createdAt: string
} | null
}
export interface ImportResponse {
id: string
gameId: string
versionId: string
createdAt: string
authMethod: "session" | "api-key"
}