diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fe70a2c..fbdcd28b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.24.3] — 2026-07-30 + > Worker-generation consolidation sprint: the v1/WorkerBus-v2 duplication [ADR-0014](docs/adr/0014-worker-generation-duplication.md) -> deferred is now closed out. Executed as 4 stacked PRs (#286–288, #290); see -> [ADR-0015](docs/adr/0015-worker-generation-consolidation.md) for the full decision record. +> deferred is now closed out. Executed as 5 stacked PRs (#286–288, #290–291), plus the independent +> #289 (Vercel auto-deploy pause); see +> [ADR-0015](docs/adr/0015-worker-generation-consolidation.md) for the full decision record. This +> release also recovers a merge queue interrupted mid-session by a local editor crash — all five +> PRs required a fresh sync-merge conflict resolution against the accumulated fixes below before +> landing; see `docs/audit/` for the run log. ### Changed @@ -23,6 +29,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The shared `inference` WorkerBus pool's `maxWorkers` capped at 2 (was 4) — each replica independently loads its own transformers.js pipeline with no cross-replica cache sharing, so 4 concurrent workers under a burst could mean 4x the model memory footprint. +- **Vercel auto-deploy paused mid-term** after 2 consecutive preview-deployment failures with only a + generic "Deployment has failed" message and no reproducing local failure — GitHub Pages and + Cloudflare Pages remain live and unaffected while the platform-side cause is investigated. ### Fixed @@ -44,6 +53,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `tsgo` typecheck. Root-caused by reproducing Vercel's *exact* build command (`pnpm run build:edge`, which differs from the plain `pnpm run build` used for an earlier, misleading local repro attempt) and fixed by adding the missing function. +- **A reused `AbortSignal` leaked one `'abort'` listener per call** in `duckdbClient.ts`'s `send()` + — `{once: true}` only self-removes once the signal actually fires, so a caller reusing one signal + across many non-aborted queries (a common hook/thunk pattern) accumulated listeners for the + signal's whole lifetime. Fixed with an explicit `finally`-block `removeEventListener`. +- **`ensureDuckDbPool()`/`ensureInferencePool()` could reject instead of degrading gracefully** — + their pool re-registration helpers awaited a lazy import and called `registerPool()` without a + catch, so a re-registration failure after the bus was already live broke the documented "returns + null only if init failed" contract. Both now log the failure and return the live bus instead of + propagating the rejection. ### Removed diff --git a/README.md b/README.md index 99dfe67f..296866d2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ TypeScript 7 (tsgo) Gemini · OpenAI · OpenRouter · Ollama · WebLLM WebGPU · ONNX · Transformers.js - v1.24.2 + v1.24.3 IndexedDB v8 PWA v3.0 i18n 19 locales — 2849 keys diff --git a/package.json b/package.json index 03f2d366..103f1bc2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "worldscript-studio", "private": true, - "version": "1.24.2", + "version": "1.24.3", "description": "WorldScript Studio — offline-first, AI-powered creative writing application.", "author": "QNBS", "keywords": [ diff --git a/public/sw.js b/public/sw.js index 66260cbd..339ea679 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.24.2'; +const APP_VERSION = '1.24.3'; 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 d718c13d..c448288d 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -6593,7 +6593,7 @@ dependencies = [ [[package]] name = "worldscript-studio" -version = "1.24.1" +version = "1.24.3" dependencies = [ "base64 0.22.1", "candle-core", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5e51dd7d..b2b1a721 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "worldscript-studio" -version = "1.24.2" +version = "1.24.3" 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 c8d438db..a9ee0d9f 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.24.2", + "version": "1.24.3", "identifier": "com.worldscript.studio", "build": { "frontendDist": "../dist",