Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

| Version | Supported |
| --- | --- |
| `main` (v1.25.0) | ✅ Full support |
| `1.3.x – 1.24.3` | ⚠️ Best effort (upgrade strongly recommended) |
| `main` (v1.25.1) | ✅ Full support |
| `1.3.x – 1.25.0` | ⚠️ Best effort (upgrade strongly recommended) |
| `< 1.3.0` | ❌ Not supported |

Maintainer-facing documentation (CI, contributing, architecture) is indexed in [`README.md`](README.md#-documentation-hub) and enumerated in [`AUDIT.md`](AUDIT.md).
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
- **Primary deploy target:** Static SPA on GitHub Pages (`/WorldScript-Studio/` base path)
- **Secondary targets:** Vercel (root base) and Cloudflare Pages via edge builds (`pnpm run build:edge`)
- **Desktop:** Tauri 2 bundles for Linux (AppImage), macOS (DMG), and Windows (MSI); auto-updater enabled via `latest.json`
- **Version:** `1.25.0`
- **Version:** `1.25.1`
Comment thread
qnbs marked this conversation as resolved.
Resolved
Comment thread
qnbs marked this conversation as resolved.
Resolved
- **License:** MIT

The app supports a multi-provider AI stack (Gemini, OpenAI, Claude, Grok, OpenRouter, Ollama, WebLLM, ONNX Runtime Web, Transformers.js), four AI execution modes (Hybrid / Cloud / Local / Eco), real-time collaboration with E2E encryption, a Plot Board v2 with swimlane/canvas/timeline modes, character/world management, manuscript export, voice dictation, and a 19-locale i18n layer.
Expand Down
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.25.1] — 2026-08-01
Comment thread
qnbs marked this conversation as resolved.
Resolved

### Added

- **Opt-in native desktop notifications** now report completed encrypted-library and manuscript
exports, updater readiness, and ProForge stage completion through the Tauri notification plugin.
Permission is requested only after the user enables the setting, web builds remain a no-op, and
the settings migration defaults existing installations to disabled. (#306)

### Changed

- **Local-inference worker capacity now follows the detected memory tier**: low-memory devices use
one inference worker, the default remains two, and high-memory devices may use three. Detection
failures safely retain the two-worker default. (#305)
- **`WorkerBus` is now an authoritative, event-driven priority scheduler.** Tasks dispatch only
after leaving the bounded queue; worker availability events replace animation-frame polling;
retries re-enter the scheduler without duplicating logical handles; and an eight-task critical
reserve bounds total queue growth while retaining emergency capacity. (#307)

### Fixed

- **Worker tasks can no longer remain pending indefinitely after queue saturation or inactivity.**
The progress-rearmed inactivity watchdog now starts at enqueue, covers both queue wait and active
execution, retries recoverable timeouts, and replaces presumed-wedged workers without returning
them to the idle pool. Worker-construction, replacement, cancellation, retry-backpressure,
shutdown, and pool-termination failures all settle through one cleanup path. (#305, #307)
- **Completed tasks are removed from live scheduler state**, so more than 32 lifetime submissions
no longer trigger false `BACKPRESSURE`; priority order and FIFO-within-tier are preserved under
saturation, and completed progress iterators terminate instead of hanging. (#307)
Comment on lines +37 to +38

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Qualify the scheduler ordering guarantee

When same-priority tasks target different pools and the older task's pool has no available worker, WorkerBus.dequeueRunnableTask() calls PriorityTaskQueue.dequeueFirst(), whose findIndex(predicate) skips that older entry and dispatches a newer runnable entry; an unavailable critical task can similarly be bypassed by a runnable lower-priority task. Therefore the unqualified claim that priority order and FIFO-within-tier are preserved under saturation is false for the multi-pool scheduler; describe these guarantees as applying among runnable tasks rather than documenting strict global ordering.

AGENTS.md reference: AGENTS.md:L459-L464

Useful? React with 👍 / 👎.

- **The E2E API-key setup helper uses an exact configured-status match**, avoiding strict-locator
ambiguity between the status badge and its descriptive label. (#307)

### Tests

- Added direct regressions for queue drain and reuse, priority ordering, critical reserve bounds,
queued and active timeouts, fresh retry tokens, cancellation, shutdown, pool termination,
constructor/replacement failures, listener/timer cleanup, and progress-iterator completion.

## [1.25.0] — 2026-07-31

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<img src="https://img.shields.io/badge/TypeScript-7.x_(tsgo)-3178C6?logo=typescript&logoColor=white" alt="TypeScript 7 (tsgo)">
<img src="https://img.shields.io/badge/AI-Gemini_%7C_OpenAI_%7C_OpenRouter_%7C_Ollama_%7C_WebLLM-4285F4?logo=google" alt="Gemini · OpenAI · OpenRouter · Ollama · WebLLM">
<img src="https://img.shields.io/badge/Local_AI-WebGPU_%7C_ONNX_%7C_Transformers.js-8B5CF6" alt="WebGPU · ONNX · Transformers.js">
<img src="https://img.shields.io/badge/Version-v1.25.0-6366F1" alt="v1.25.0">
<img src="https://img.shields.io/badge/Version-v1.25.1-6366F1" alt="v1.25.1">
<img src="https://img.shields.io/badge/Storage-IndexedDB_v8-F59E0B" alt="IndexedDB v8">
<img src="https://img.shields.io/badge/PWA-v3.0-5BB974?logo=pwa" alt="PWA v3.0">
<img src="https://img.shields.io/badge/i18n-19_locales-2869_keys-0EA5E9" alt="i18n 19 locales — 2869 keys">
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "worldscript-studio",
"private": true,
"version": "1.25.0",
"version": "1.25.1",
"description": "WorldScript Studio — offline-first, AI-powered creative writing application.",
"author": "QNBS",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion public/sw.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.25.0';
const APP_VERSION = '1.25.1';
const CACHE_STATIC = `worldscript-static-v${APP_VERSION}`;
const CACHE_DYNAMIC = `worldscript-dynamic-v${APP_VERSION}`;
const CACHE_IMAGES = `worldscript-images-v${APP_VERSION}`;
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "worldscript-studio"
version = "1.25.0"
version = "1.25.1"
description = "AI-powered creative writing and world-building application"
authors = ["QNBS"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "WorldScript Studio",
"version": "1.25.0",
"version": "1.25.1",
"identifier": "com.worldscript.studio",
"build": {
"frontendDist": "../dist",
Expand Down
Loading