forked from unom/punktfunk
Emulation-and-beyond libraries need more than a title and a poster. Every library shape (GameEntry, CustomEntry, CustomInput, ProviderEntryInput) now carries a shared, flattened GameMeta: platform, description, developer, publisher, release_year, genres, tags, region, players. All fields are optional and flat on the wire, so existing library.json files, provider plugins, and clients keep working unchanged. - Installed-store scanners (Steam, Lutris, Heroic, Epic, GOG, Xbox) stamp platform=PC; custom/provider entries carry whatever was authored. - GET /library grows a ?platform= filter (case-insensitive) beside ?provider=. - Console: the add/edit form gets a Details section (round-tripping every field, since update replaces the entry), the poster tile a platform badge (non-PC only — the store badge already implies PC) and the year. - plugin-kit: ProviderEntry accepts the same fields (new GameMeta schema, spread flat); SDK + OpenAPI spec regenerated. - pf-client-core decodes platform for future client badges. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
// @punktfunk/plugin-kit — Effect-based framework for punktfunk plugins.
|
|
export * from "./errors.js";
|
|
export {
|
|
atomicWriteFile,
|
|
ensureStateDir,
|
|
pluginIngestDir,
|
|
pluginStateDir,
|
|
statePath,
|
|
} from "./paths.js";
|
|
export {
|
|
HostClient,
|
|
hostClientFromFacade,
|
|
type HostClientService,
|
|
PluginInfo,
|
|
pluginInfoLayer,
|
|
type PluginInfoService,
|
|
} from "./host-client.js";
|
|
export { loggingLayer } from "./logging.js";
|
|
export { type ConfigService, makeConfigService } from "./config.js";
|
|
export { type CacheStore, makeCacheStore } from "./cache-store.js";
|
|
export {
|
|
Artwork,
|
|
DetectHint,
|
|
GameMeta,
|
|
LaunchSpec,
|
|
PrepStep,
|
|
ProviderClient,
|
|
type ProviderClientService,
|
|
ProviderEntry,
|
|
} from "./reconcile.js";
|
|
export {
|
|
definePluginKit,
|
|
type PluginKitDef,
|
|
runPluginKitDirect,
|
|
} from "./runtime.js";
|
|
export {
|
|
type LastSync,
|
|
makeSyncEngine,
|
|
type SyncEngine,
|
|
type SyncEngineOptions,
|
|
type SyncOutcome,
|
|
type SyncReason,
|
|
type SyncSettings,
|
|
type SyncStatus,
|
|
} from "./sync-engine.js";
|
|
export { httpApiEnv, serveUi, type ServeUiOptions } from "./ui-server.js";
|
|
export { sseRoute, type SseRouteOptions } from "./sse.js";
|
|
export { type CliCommand, runPluginCli } from "./cli.js";
|