Releases: Wolfsblvt/shelfbound-steam
Release list
Shelfbound libraries 0.8.1 (snapshot schema 0.6.0)
Shelfbound 0.8.1 is a patch release of Shelfbound.Core, Shelfbound.Query, and Shelfbound.Steam. The snapshot schema remains 0.6.0.
Changes
- Preserve the newest known
LastPlayedevent when local and Steam Web observations are merged. Missing Web recency can no longer clear a known local timestamp; equal instants preserve the local offset representation while Web playtime keeps its existing precedence. - Harden API-compatibility validation for patch releases. A patch must compare cleanly with its immediate published baseline and cannot reuse historical compatibility suppressions; intentional pre-1.0 API breaks still require a minor version bump and reviewed suppressions.
Verification
- Exact source:
05dae2ed390f143f7aa191b44306add20d5b4261 - Package set:
Shelfbound.Core,Shelfbound.Query,Shelfbound.Steam - Package/schema mapping:
0.8.1/0.6.0 - Release preflight verified package identity, SourceLink/source commit, symbols, API compatibility, and exact downstream restore/contract behavior.
Shelfbound libraries 0.8.0 (snapshot schema 0.6.0)
The open-core library set — Shelfbound.Core, Shelfbound.Query, and Shelfbound.Steam — at immutable version
0.8.0, producing snapshot schema 0.6.0. AGPL-3.0-or-later.
Why this release
0.8.0 makes partial Steam observations honest instead of treating visibility-gated Web API output as a complete owned
library. It also introduces QueryPlan v1: one deterministic, portable search-intent contract that hosted and local
consumers can adopt without inventing incompatible grammars.
What's in it
- Schema 0.6.0 observation semantics — adds
observedSubsetbesideinstalledOnlyand explicitly contracted
fullLibrary. Absence from either partial scope proves nothing about ownership or access; published enum identities
remain compatible and comparisons go throughLibraryScopeSemantics. - Structured Steam Web outcomes —
ISteamWebApiClientnow returns usable, missing-list, empty-list, or malformed
evidence with an observation timestamp. Empty or unavailable visibility-gated responses no longer masquerade as a
successful complete library. - QueryPlan v1 — adds the versioned plan, C# text parser/canonical serializer, structured diagnostics, capability
validation, defensive bounds, and the executable G1–G25 conformance corpus. This is a contract/parser seam; the existing
LibraryFilterengine and local MCP behavior are unchanged. - Local-source hardening — tightens bounded Steam/VDF/manifest/collection parsing and authenticated client input
handling, improves modern collection decoding, and adds Windows registry-based Steam installation discovery. - Release integrity — package/schema/source identity, API compatibility, symbols/Source Link, duplicate-version
rejection, and the exact producer→package→cloud-consumer contract remain fail-closed.
Compatibility
Snapshot 0.6.0 is additive on the wire. The ISteamWebApiClient raw-list→structured-result API change is the intentional
pre-1.0 package break recorded and checked for 0.8.0. QueryPlan v1 is additive; current query execution remains on
LibraryFilter until a later migration.
Consumers
The hosted API packs this exact producer commit into an isolated local feed and tests old/current/unsupported-next
snapshot negotiation plus byte-identical QueryPlan corpus parity before release. Packages: Shelfbound.Core,
Shelfbound.Query, and Shelfbound.Steam 0.8.0 on nuget.org.
Shelfbound libraries 0.7.0 (snapshot schema 0.5.0)
The open-core library set — Shelfbound.Core, Shelfbound.Query, Shelfbound.Steam — at an immutable 0.7.0, producing snapshot schema 0.5.0. AGPL-3.0-or-later.
Why this release
0.7.0 re-establishes a clean, immutable version ↔ schema ↔ commit identity after the published 0.6.0 had drifted from source (published 0.6.0 shipped schema 0.4.0; source 0.6.0 had already moved to 0.5.0 under the same string). 0.7.0 is the first correctly-published version carrying the 0.5.0 schema.
What's in it
- Schema 0.5.0 — adds optional
libraries[].storage(kind + free/total), additive over 0.4.0;RecordFirstSeentakes the library scope. - Immutable package contract — SourceLink + embedded schema/commit in every package; a public-API compatibility baseline; the publish now fails on a duplicate version instead of silently no-op'ing.
- Release gates — CI rejects a reused version, a schema change without a package bump, a breaking public-API change without a version-policy bump, and a stale downstream consumer pin.
Shelfbound.Storagestays local (non-packable); the portableSnapshotStorageDTO lives in Core.
Consumers
The hosted API negotiates supported snapshot versions (0.4.x / 0.5.x) at /ingest and rejects newer/unknown versions with a typed error. A cross-repo pack→restore→consume contract test (T-16) with golden old/current/next fixtures gates the boundary.
Packages: Shelfbound.Core, Shelfbound.Query, Shelfbound.Steam 0.7.0 on nuget.org.
v0.5.0 — device specs + recommendations
Device intelligence groundwork in the open core.
- Device hardware specs on the snapshot (
DeviceSpecs): CPU, cores, RAM, GPU, OS, architecture (best-effort, cross-platform; GPU viaHardware.Info). - RecommendationEngine (
Shelfbound.Query): deterministic "what to play / uninstall next?" cards — device-aware (only frames "play on your Deck" when the device is a Deck). Exposed via the local MCPget_recommendationstool. - Tray shows the captured specs in a transparency card.
Packages (AGPL-3.0-or-later): Shelfbound.Core, Shelfbound.Query, Shelfbound.Steam at 0.5.0.
v0.4.0 — first published libraries
First NuGet release of the reusable Shelfbound libraries, consumed by the hosted product.
Packages (AGPL-3.0-or-later): Shelfbound.Core, Shelfbound.Query, Shelfbound.Steam.
- Snapshot contract + serializer, merged library view, query/filter engine
- User-data model (ratings, statuses, completion, memories, category meanings)
- Steam Web API enrichment + recency (relative-time phrases, first-seen inference)
Published via Trusted Publishing (OIDC) on the nuget environment.