Files
punktfunk/plugin-kit/src/index.ts
T
enricobuehlerandClaude Opus 5 1ee06defa6 feat(library): descriptive metadata on every entry — platform, year, genres, and friends
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>
2026-07-26 19:00:30 +02:00

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";