diff --git a/CHANGELOG.md b/CHANGELOG.md index 6591d1f9b..0114ce434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [1.28.5] — 2026-09-09 + ### Added - **Project schema-version classification (Slice A, #553):** `PROJECT_SCHEMA_V1` as a fresh diff --git a/README.md b/README.md index eaa9d7f45..97ddc9775 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ TypeScript 7 (tsgo) Gemini · OpenAI · OpenRouter · Ollama · WebLLM WebGPU · ONNX · Transformers.js - Release v1.28.4 + + Release v1.28.5 IndexedDB v8 PWA v3.0 i18n 19 locales — 2942 keys diff --git a/TODO.md b/TODO.md index 4ee341ef5..9c4a5fbe1 100644 --- a/TODO.md +++ b/TODO.md @@ -8,18 +8,43 @@ Status: 🔄 in progress | ⬜ open | ✅ done --- -## Current Sprint — Release truth reconciliation and R-15 desktop at-rest encryption priority (2026-09-05) +## Current Sprint — v1.28.5 release cut and post-audit remediation continuation (2026-09-09) > **Status: 🔄 in progress.** The authoritative native sequence remains > [`docs/native/ROADMAP-QT-GPUI-DESKTOP.md`](docs/native/ROADMAP-QT-GPUI-DESKTOP.md), with the > next Rust-Core capability choice recorded in [`docs/native/CORE-MIGRATION-LEDGER.md`](docs/native/CORE-MIGRATION-LEDGER.md). -> R-15 (desktop at-rest encryption) design work is complete — S5-A/B1/B2/B3 are all admitted — but -> [`docs/native/DESKTOP-MIGRATION-ROADMAP-REV3.md`](docs/native/DESKTOP-MIGRATION-ROADMAP-REV3.md) -> explicitly forbids pulling Wave 3/4 R-15 **implementation** ahead of unresolved Wave 2 authority -> prerequisites, and the ledger's row 10 records `S5_IMPLEMENTATION_READY=NO`. This sprint's -> desktop-storage work is therefore the still-open Wave 2 prerequisite (ledger row 9: the -> project state-shape compatibility adapter), not R-15 implementation itself. No Qt or GPUI -> implementation work is part of this sprint. +> R-15 implementation stays blocked behind the still-open Wave 2 prerequisite (ledger row 9). No +> Qt, GPUI, or R-15 implementation work is part of this sprint. + +- ✅ `v1.28.4` released (PR #615, tag+release published 2026-09-05); the prior sprint's release + and governance work (attribution-hygiene guard PR #672, security-docs truth fix PR #673) closed + out. +- ✅ PR #674 merged (2026-09-09): the CHANGELOG completeness gate upgraded from accepting any + non-empty `[Unreleased]` section forever to requiring every governed commit to be individually + referenced by PR number or subject slug; backfilled 13 previously-undocumented entries. Four + correction waves addressed branch-local-vs-ancestry classification, negation/refusal polarity, + PR-number token boundaries, and multi-entry reservation gaps. The remaining structural + heuristic-matching limitation (a short token like a version number can still clear the + word-overlap ratio in an otherwise-matching sentence) is intentionally out of this gate's + deterministic, non-NLP scope and is tracked separately as #675. +- 🔄 `v1.28.5` release cut in progress: version/`CHANGELOG.md`/`TODO.md`/`README.md` + reconciliation for everything merged since `v1.28.4` (headlined by PR #674) is in PR #676. Tag, + GitHub Release, release artifacts, and the post-release `AUDIT.md` evidence entry all remain + pending until after that PR merges and post-merge main CI/CodeQL are green. +- ⬜ Ledger row 9 (project state-shape compatibility adapter) remains open: durable + source-generation fencing, writer integration, universal ingress/egress, and authority switch + per `docs/native/CORE-MIGRATION-LEDGER.md` row 9. Wave 3/4 R-15 implementation stays blocked + (`S5_IMPLEMENTATION_READY=NO`, recorded on row 10) until row 9 and `S5_TERMINAL=YES` are both + true — no target release is set for that yet (tracked, not invented). +- ⬜ #614 (narrow concurrent-first-install multi-tab race), #532 (WelcomePortal E2E entry + nondeterminism root cause), and #675 (deterministic contract for the changelog gate's + unnumbered-commit heuristic) remain open, tracked separately — not part of this sprint unless + they directly block release or R-15 work. + +## Archived — Release truth reconciliation and R-15 desktop at-rest encryption priority (2026-09-05) + +> **Status: ✅ Superseded by the current sprint above.** `v1.28.4` shipped 2026-09-05; PR #674 and +> the `v1.28.5` release cut are the current sprint's continuation of this same work. - ✅ `v1.28.2` (2026-08-27) and `v1.28.3` (2026-08-27) released, closing out the prior sprint's accumulated reconstruction-reconciliation and documentation-truth work. @@ -41,18 +66,6 @@ Status: 🔄 in progress | ⬜ open | ✅ done citations in `docs/SECURITY-THREAT-MODEL.md`/`docs/IDB-ENCRYPTION.md` rewritten to anchor on the living ledger state, with a mechanical `check-doc-metrics.mjs` guard against recurrence (first slice of the 2026-09-08 external audit's S1–S10 remediation sequence; further slices in progress). -- 🔄 Ledger row 9 (project state-shape compatibility adapter) — five `feat`/`fix` PRs landed - (#618 Slice A persisted schema-version classification, #619 Slice B IDB-load observation, #621 - raw-integer-grammar hardening, #653 the non-destructive `LEGACY_TO_V1` admission primitive, #658 - filesystem-admission convergence) but **still not complete**: durable source-generation fencing, - writer integration, universal ingress/egress, and authority switch remain open per - `docs/native/CORE-MIGRATION-LEDGER.md` row 9. Wave 3/4 R-15 implementation stays blocked - (`S5_IMPLEMENTATION_READY=NO`, recorded on row 10) until row 9 and `S5_TERMINAL=YES` are both - true — no target release is set for that yet (tracked, not invented; see the S1–S10 remediation - plan's exit-criterion work). -- ⬜ #614 (narrow concurrent-first-install multi-tab race, requires cross-tab coordination) and - #532 (WelcomePortal E2E entry nondeterminism root cause) remain open, tracked separately — - not part of this sprint unless they directly block release or R-15 work. ## Archived sprint history diff --git a/package.json b/package.json index 4b4116b6e..b92f2caee 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "worldscript-studio", "private": true, - "version": "1.28.4", + "version": "1.28.5", "description": "WorldScript Studio — offline-first, AI-powered creative writing application.", "author": "QNBS", "keywords": [ diff --git a/public/sw.js b/public/sw.js index 1c705a57a..6d93fb7a0 100644 --- a/public/sw.js +++ b/public/sw.js @@ -6,7 +6,7 @@ // ============================================================ // QNBS-v3 (CodeRabbit): version bump auto-synced from package.json by scripts/sync-sw-version.mjs — every CACHE_STATIC/CACHE_DYNAMIC name changes too, so this alone invalidates all prior caches on next activate. -const APP_VERSION = '1.28.4'; +const APP_VERSION = '1.28.5'; const CACHE_STATIC = `worldscript-static-v${APP_VERSION}`; const CACHE_DYNAMIC = `worldscript-dynamic-v${APP_VERSION}`; const CACHE_IMAGES = `worldscript-images-v${APP_VERSION}`; diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index f4248639d..9eca8e690 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "worldscript-studio" -version = "1.28.4" +version = "1.28.5" dependencies = [ "base64 0.23.1", "candle-core", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 646b0e1a3..824549380 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "worldscript-studio" -version = "1.28.4" +version = "1.28.5" description = "AI-powered creative writing and world-building application" authors = ["QNBS"] license = "MIT" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8c0274e06..0decc129e 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "WorldScript Studio", - "version": "1.28.4", + "version": "1.28.5", "identifier": "com.worldscript.studio", "build": { "frontendDist": "../dist",