@@ -26,19 +26,73 @@ Tag-suffix → release-channel mapping (see `release-manifests/`):
2626
2727### Fixed
2828
29- - ** Tray "Open on web" no longer opens the API subdomain.** The
30- tray's profile-link button was falling back to ` remote_sync.api_url `
31- when ` web_origin ` was unset, which on the public install opens
32- ` https://api.starstats.app/u/<handle> ` (JSON 404) instead of the
33- apex site. Resolution moved Rust-side via
34- ` Config::effective_web_origin() ` — strips a leading ` api. ` from the
35- API host. Self-hosted users on a non-` api. ` host can still set
36- ` web_origin ` explicitly to override.
29+ - (nothing yet)
3730
3831### Security
3932
4033- (nothing yet)
4134
35+ ## [ 1.0.0] - 2026-05-18
36+
37+ First stable release. Drops the pre-1.0 zero-major.
38+
39+ ### Added
40+
41+ - ** EventMetadata envelope on every event.** ` primary_entity ` (kind + id +
42+ display_name), ` source ` (Observed / Inferred / Synthesized), ` confidence ` ,
43+ ` group_key ` , ` field_provenance ` , ` inference_inputs ` , ` rule_id ` . Stamped
44+ server-side on every parsed event so the wire format carries a canonical
45+ "impacted entity" facet and per-field provenance.
46+ - ** Entity-first tray timeline.** New By-Entity default view with a
47+ Chronological toggle. Adjacent same-` group_key ` events collapse into a
48+ single ` <title> ×N ` row with inline drill-in. Raw events stay in
49+ storage — collapse is a render decision only.
50+ - ** Declarative inference engine.** Pure post-classify pass over a sliding
51+ event window. Ships with three built-in rules: implicit death after
52+ vehicle destruction, implicit location change, implicit shop-request
53+ timeout. Remote inference rules hot-reload via the parser-definitions
54+ manifest. Off by default behind ` parser.enable_v2_metadata ` .
55+ - ** Unknown-line capture + review pane.** Tray-side shape normalisation,
56+ interest scoring, PII detection, per-token redaction toggle, and a
57+ review UI that submits curated samples to ` POST /v1/parser-submissions `
58+ (UPSERT on ` (shape_hash, client_anon_id) ` ).
59+ - ** System auto-start on Windows / Linux / macOS** via
60+ ` tauri-plugin-autostart ` . Default ON; settings pane exposes the toggle.
61+ - ** Stable per-install ` client_anon_id ` ** generated server-side in a Tauri
62+ command so parser submissions and inference telemetry can deduplicate
63+ without leaking identity.
64+ - ** ` IngestBatch ` schema_version bumped to 2.** Additive: v1 clients still
65+ accepted; server synthesises ` EventMetadata ` for legacy payloads so
66+ rollout is forward-compatible.
67+
68+ ### Changed
69+
70+ - ** ` GameEventSchema ` is now a discriminated union in ` api-client-ts ` .**
71+ No more opaque ` Record<string, never> ` casts at consumers.
72+ - ** Validator enforces ` EventMetadata ` invariants.** Confidence range,
73+ Observed/Inferred consistency, presence of ` inference_inputs ` for
74+ inferred events.
75+ - ** Zone-enrichment populates ` metadata.field_provenance.zone ` ** correctly
76+ on ` PlayerDeath ` and friends when the zone was inferred rather than
77+ observed in the raw line.
78+ - ** Tray "Open on web" no longer opens the API subdomain.** Resolution
79+ moved Rust-side via ` Config::effective_web_origin() ` — strips a leading
80+ ` api. ` from the API host. Self-hosted users on a non-` api. ` host can
81+ set ` web_origin ` explicitly to override.
82+
83+ ### Internal
84+
85+ - Inference engine sliding-window default is 200 events; tunable in
86+ ` parser ` config.
87+ - New ` POST /v1/parser-submissions ` endpoint with idempotent UPSERT on
88+ ` (shape_hash, client_anon_id) ` .
89+
90+ ### Notes for release pipeline
91+
92+ - Release-manifest platform URLs and minisign signatures are NOT touched
93+ by this version bump. The release workflow overwrites those on the
94+ next ` vX.Y.Z ` tag push when artifacts upload.
95+
4296## [ 0.0.7-beta]
4397
4498### Added
0 commit comments