feat: Implemented link game importing

feat: Implemented download page for downloading roms from various sources using plugins. Added support for internet archive external plugin.
feat: Added tasks page to track running tasks/downloads
feat: Added tanstack caching
feat: Added quick play action Fixes #6
feat: Added quick emulator launch action
fix: Made task queue only support 1 task per group and task ID should now be unique
This commit is contained in:
Simeon Radivoev 2026-05-15 13:50:55 +03:00
parent 9a3e605625
commit 9141fb35d4
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
70 changed files with 1922 additions and 560 deletions

View file

@ -250,6 +250,7 @@ export interface EmulatorSourceEntryType
binPath: string;
rootPath?: string;
type: EmulatorSourceType;
/** Does the emulator exist in the file system */
exists: boolean;
}
@ -489,6 +490,15 @@ export interface GameInstallProgress
export type JobStatus = 'completed' | 'error' | 'running' | 'queued' | 'aborted';
export type GameInstallProgressEvent = 'refresh';
export interface FrontEndJob
{
id: string;
data: any;
progress: number;
state?: string;
status: string;
}
export interface FrontendPlugin
{
name: string;
@ -622,10 +632,79 @@ export interface GameLookup
}[];
}
export interface DownloadLookupEntry
{
source: string;
id: string;
cover_url: string | null | undefined;
name: string;
summary: string | null | undefined;
size: number | null | undefined;
date: Date | null | undefined;
rating: number | null | undefined;
view_count: number | null | undefined;
download_count: number | null | undefined;
comment_count: number | null | undefined;
}
export interface DownloadLookupDetailsFile
{
id: string;
format: string | null | undefined;
mtime: Date | null | undefined;
size: number | null | undefined;
download_url: string;
}
export interface DownloadLookupDetails
{
source: string;
id: string;
cover_url: string | null | undefined;
name: string;
summary: string | null | undefined;
date: Date | null | undefined;
files: DownloadLookupDetailsFile[];
}
export interface AutoSaveChange
{
subPath: string;
cwd: string;
}
export interface AppInfoContext
{
activeTaskProgress: number | null;
}
export type SaveSlots = Record<string, { cwd: string; }>;
/** Jobs that are downloading stuff can implement this data interface to show up in the downloads screen */
export interface DownloadJobData extends Partial<Omit<ProgressStats, 'progress'>>
{
preview_url?: string | null;
name?: string;
}
export interface ProgressStats
{
progress: number;
speed: number;
total: number;
downloaded: number;
}
export interface DownloadsLookupFilter
{
source?: string,
orderBy?: string,
search?: string;
sortDirection?: "desc" | "asc";
}
export interface DownloadsLookupFilterValues
{
orderBy: string[],
source: string[];
}