更新日志
2026-09-26: Documentation site
The repository now publishes its documentation as a website: <https://a86582751.github.io/dsh-nexttavern/>. Every page is rendered in CI from this repository's own Markdown, so the site and the Markdown can never drift apart — a section the site expects but the files no longer contain fails the build. It adds a landing page, a grouped sidebar, an in-page table of contents, dark/light themes, offline search over every published page, a screenshot lightbox and copy buttons for code blocks, and it ships no external fonts, scripts or third-party requests. Screenshots are compressed to WebP during the build, so the whole site is about 2 MB. The site is documentation only: the package, installers, downloads and production deployment are unchanged, and no secrets are involved.
Same day, the landing page started speaking with the project's own voice instead of borrowed copy: the greeting types out the lines the amber skin itself types, and the hero rotates through nine whale-girl illustrations generated for that skin. The header carries that skin's own brand art — an app-icon style portrait of the keeper, followed by the "Next Tavern" sign from the same batch — and the tab icon is the same portrait, because an "NT" monogram read as a word nobody wants. The caption under the rotating art is a single fixed line, "Welcome to the Next Generation Tavern", since the skin package deliberately keeps only a few of the generated pictures and per-picture labels would have claimed something that was not true. The typed greeting also reserves two lines, so a short sentence and a long one no longer move the lead paragraph and the buttons underneath it.
0.3 development — 2026-09-22
Superseded the alpha.6 execution plan after reviewing official Harness
0.1.7-alpha.1. The new plan covers Session V4 sources/tool messages, declarative presets, profile-based settings, porting our existing UI extensions and the official pi-ai streaming fix before complete product assembly and clean-install acceptance. The five Tavern UI slots were added by our earlier patches and are absent from both clean upstream versions; they were not removed by alpha.7. Dependencies and runtime code have not yet moved to alpha.7; the entries below retain their original alpha.6 evidence limits. Downloads and production are unchanged.Integrated an owned preset-composition adapter with the Loader entry, reusing one official roster and preserving configured defaults and roots. Unknown roleplay presets are rejected; package-addressed composition survives the official copy operation and user copies survive uninstall. Native Agent setup exposed and fixed inherited provider-policy evaluation and writable-root alias protection. Seven preset cases and ten entry regressions are 17 unique successes across two runs (the latest run covered two new and two affected prior cases); a wrapper index strict rebuild and one new path case also passed. Full business composition, skill discovery, DOCX/office alpha.6 compatibility, dependency delivery and active-Agent switching remain unverified.
Owned JSONL and Session Controller now wait for message-edit interpretation before activation. Product startup rejects pending dependencies, including nested addons, and restores native providers instead of reporting success. Native composition checks cover edited-history recovery, pending-input persistence, disable/re-enable and failure cleanup. The affected scopes have 42 unique passing checks; full product installation, roleplay workflows and paid Harness acceptance remain pending.
Added a real Loader subtree entry for product-owned providers, preserving browser module identities, original configuration and disabled choices. Failed activation drains owned resources before native restoration; stale profile generations and dependency resolution outside the product are rejected. Ten focused cases and the strict four-module closure passed. The complete provider catalog, package protection, manager/market controls and full Harness acceptance remain unconnected; the subsequent preset stage is recorded above.
Added immutable profile-generation planning for product assembly using the official alpha.6 readers. Removing the product's bundle layer preserves user disable choices, ancestor scope, configuration overlays and expressions. Two modules compile strictly and five native configuration cases pass; the subsequent Loader entry stage above uses this reader, while full manager integration remains pending.
Migrated live business history to public observations plus an incremental event ledger, with awaited readiness, cancellation, instance isolation and shared-mount disposal. Fork ownership uses
inheritedEventCount; cold telemetry observes restored histories without recharging inherited calls. Seven native cases, one affected Controller case and thirteen business suites passed within their recorded limits. Full roleplay Agent, browser, unified installation and lifecycle acceptance remain pending.Migrated owned surface replacement producers and readers to the alpha.6
startSeq/endSeqcontract, covering compaction, context windows, card research and task retirement. Host-derived types replace duplicated loose field declarations. Four native cases verify successful/rejected/cancelled writes, JSONL replay and pricing; affected business regressions and strict compilation passed. These loaded-view tests do not prove full Agent or product compatibility; the subsequent live-history stage is recorded above.Rebased the owned Session Controller and browser client on alpha.6. Prepared forks reserve ownership before publication and inherit late edit metadata; ordinary forks retain native boundaries and model selection has one owner. The strict 31-module closure, browser bundle and 16 affected cases passed, including owned JSONL/meter integration and client reconnect/disposal. Full business/UI flows, formal fork sync and unified product assembly remain incomplete.
Rebased the owned token meter on alpha.6. Required edits now reprice current context and its breakdown without changing original usage or request anchors. Seven focused cases cover JSONL replay, inherited histories, versioned caches, compaction, attachments, retries and disposal; the strict 14-module closure passed. Removed obsolete replacement accounting. Full UI/product integration remains pending; the later Controller stage above adds prepared-fork integration evidence.
Migrated assistant/player edit writes to required edit events with native durability barriers and versioned effect receipts. Original message anchors and usage stay unchanged; shared branches converge after partial failure, cold activation and restart. Nine native Agent/JSONL cases plus existing business smoke and fork-completion regressions passed. Retired alpha.3 replacement-repair code; UI, metering, real storage-domain crash recovery and full installation remain pending.
Routed story windows, recall, note provenance and cold retrieval through native edited-message projections. Novel snapshots now follow edits; stale exports and summaries cannot commit old prose. Seven native reader cases and five affected regression suites passed. UI/meter integration and full product lifecycle remain unfinished; server edit writes are covered above.
Implemented a versioned required message-edit format and an owned alpha.6 JSONL provider. Six focused checks cover plain/compressed storage, verification workers, cold observation, native Agent resume and rejection before invalid writes; original message identities and usage remain unchanged. Product routing, metering/UI integration, safe disable/uninstall and formal fork synchronization remain pending. Removed residual file-upload assembly and sidebar injection from the actual public build inputs.
The migration now targets Harness 0.1.6-alpha.2 and intentionally drops old session-data compatibility. Export character cards or novels in the old environment before migration. Downloads and production remain on 0.2.5; current main is unfinished development source.
Retired community file-upload/read_document and better-sidebar from the next-generation plan. Official upload, attachments and sidebar replace them. The owned anydoc fork now reads through native filesystem capabilities, supports explicit document windows and full-file conversion, and has bounded version-aware caching. Full native upload integration remains pending.
Replaced the owned session-projection candidate with the validated official implementation. Removed the abandoned private market candidate; an existing upstream market is reused, and a missing market will be installed only for skins.
Rebased the minimal pi-ai fork on the host's pinned 0.85.1, retaining four terminal-protocol changes. The alpha.6 adapter owns cancellation, consumer-stop and idle-timeout cleanup. Gemini relay addresses and Bearer headers use configuration. SDK protocol cases and the four-protocol host cleanup matrix passed locally; complete product installation is not yet validated.
Native multi-provider tests expose an HMR removal limitation: reported success need not mean every original provider recovered. Product controls refuse that hot path before saving changes; cold changes require a restart. The final management workflow, remaining core/UI migrations and clean-install/full Harness acceptance are unfinished.
Native edit checks found another migration boundary: alpha.6 rejects the previous assistant-message replacement protocol. Public message projections can preserve original model records while editing derived text, but metering and cold-reader integration are still required. Four focused checks characterize these limits; edited-story support is not yet accepted.
Earlier dated entries describe their historical snapshots and are superseded by this migration direction. No new tag, Release, npm package or production deployment accompanies this source update.
0.3 development — 2026-09-21
Added
development/llm-pi-ai/, an unpublished adapter candidate for the existing0.1.2-alpha.3host. Ordinary, roleplay and headless requests use one maintained pi-ai SDK, while request snapshots, credentials, settings-conflict recovery and native DeepSeek routes retain their boundaries. The candidate removes the previous session-mode transport split. It is not yet connected to the product; dependency assembly, formal-fork synchronization and complete lifecycle acceptance remain open.Added the unpublished owned projection candidate under
development/session-projection/. It preserves inherited-prefix metadata and avoids historical scans on caught-up reads with either public history API. Package-only strict checks cover current and newer host declarations; ten focused maintenance telemetry cases are covered. The newer-host investigation is reference only: no host upgrade is planned or required by the current task. Implementation remains on0.1.2-alpha.3. This candidate is not wired into the product.Added fixed-package preparation and a bundled-runtime bootstrap candidate. Independently named private dependencies are verified before loading, share host peers and prepare versioned file references without running pnpm inside the loading host. Ten preparation cases, the existing transaction regression and a real npm/pnpm bootstrap lifecycle case passed locally. The latter covers later skin installation, root upgrade, relinking and retained inactive libraries on root removal. Alpha.3 CLI lacks the cooperative profile lock, so automatic startup wiring and complete target-host acceptance remain pending; this is not a complete one-command product installer.
Added an explicit offline npm/pnpm packaging test with three synthetic-package cases: tarball-relative
file:fails as a portable dependency; bundled children survive unrelated installs, forced relinking and explicit downgrade; existing external fixed-package references retain their hashes, shared peer and lock resolution. These are packaging mechanism checks, not full DSH installation or failed-upgrade rollback acceptance. The test requires existing npm/pnpm JavaScript CLI paths and does not install Harness.Added the independently named, unpublished dsh-nexttavern-anydoc candidate in
development/anydoc/, with original attribution and maintained TypeScript instead of replaying edits onto installed files. Two focused maintenance checks cover real CSV conversion, normalized output, exclusive file-write scheduling, a single roleplay tool schema and cleanup preserving a simulated user tool. It is not yet connected to the product entry or preset. File-upload and pi-ai fork identity work remains open. The market now has a smaller role: reuse an existing upstream installation, or install it only when absent, to open skins. A custom market fork is no longer planned as a required dependency; product controls belong to NextTavern itself. Compatibility package protection must also survive later unrelated skin installations and plugin upgrades.Public repository updates resume alongside maintenance development. Repository commits are development snapshots; the latest downloadable release remains 0.2.5. No 0.3 tag, release assets or npm publication accompanies this code sync.
The source-layout, module-cohesion and scoped validation work below is ready for contributor review. The next milestone is one complete NextTavern plugin entry with reliable install, enable/disable, upgrade and uninstall behavior.
Controller, usage/projection and pi-ai compatibility implementations have focused maintenance tests, but are not yet wired into this public package. UI migration, roleplay-only third-party ownership, remaining fork synchronization, dependency protection and full fresh-install/migration testing remain open. The single-command installation goal is not yet a supported 0.3 installation path.
Six pi-ai protocol source files are now committed in the attributed compatibility fork, preserving upstream history and MIT attribution. Their committed bytes match the locally tested candidate; the fork records exact source hashes. This source update does not publish a package or change the 0.2.5 downloads. Historical byte patches must not be reapplied to builds from these updated fork sources.
Published DSH
0.1.6-alpha.2profile APIs are being assessed for unified plugin lifecycle support. Five library checks cover configuration layers and reloads; two manager checks show that rejected activation can leave its selection on disk. The market compatibility fork connects product controls and now builds with an owned package/browser identity. Complete host/client types, package preflight and two artifact/HTTP checks passed, including refusal to uninstall a preexisting upstream market as itself. The locally packed candidate is unpublished. This custom-market experiment is now historical and is not a required product dependency; immutable release assembly, host-page acceptance, install/upgrade/uninstall and full-host compatibility remain open. Supported versions, runtime locks and the 0.2.5 downloads are unchanged.provenance.jsondescribes the last built package snapshot; later repository commits may update source or documentation. Release provenance and installation assets will be regenerated together for the completed release.
0.3.0-rc.1 - unpublished layout candidate
Separate maintained TS/MTS in
src/from generated JS/MJS inlib/, including the Auth and skin packages. Ship the complete strict-build source closure and a generatedtools/build-map.json; see Contributing.Keep the package name, root and
./clientexports, host injection, and the threetools/install.mjs,tools/patch-harness.mjs,tools/public-access.mjscommands. These commands forward to one implementation inlib/operations; retirement requires a separately announced breaking CLI version.Internal deep paths change:
src/**/*.jsmoves to the correspondinglib/tree; preset core and memory modules move topreset/lib/coreandpreset/lib/memory; Authindex.jsmoves tolib/index.js; the embedding dependency template moves fromsrc/memory/embedding-runtimetomemory/embedding-runtime. Consumers that bypass package exports must update their paths. Controlled Cordis paths are updated without changing plugin IDs or configuration semantics.Preserve persistent schemas, append-only provenance and failure recovery. Upgrades remove obsolete receipt-owned files, reject edited managed files and preserve user-owned material. Cohesion and readability improvements separate record, presentation and lifecycle responsibilities without changing those behavior contracts.
This candidate's source is shared for development; its installation archives are not released. Existing installer links still describe the published 0.2.5 assets; candidate installers are bound to their own payload digest. Building Windows ARM64 and Linux artifacts does not establish real-device installation coverage.
0.2.5 Preview - 2026-09-16
Rebuild long-form memory around four pillars: a frozen settings prefix that is never compacted and is always injected; a hard-cut context window that keeps the most recent complete prose and preserves the tail when it advances; background director notes written by a separate background task, each carrying a source hash and a same-worldline anchor so provenance stays machine-checkable; and on-demand history recall in keyword (default), semantic and hybrid modes over player input plus valid story text, including archived and evicted prose. Status, tool output, CSS, decision cards and reasoning stay out of the corpus.
Evict old director notes and state snapshots from the request instead of carrying them, and replace them only after a valid new anchor has been prepared; unchanged references keep exact backing, rollback re-serves the full text and raw events stay append-only. A ten-turn test found and fixed two real defects: a compacted maintenance suffix that made old tasks uncollectable, and unbounded accumulation of old director notes and state snapshots.
Recycle a long research tool result into its matching checkpoint, but only when owner, source hash, generation and packetIds all match; partial saves, wrong sources, failed writes and post-confirmation re-reads are never recycled.
Add an Embedding management page between Models and Usage. Online: DashScope, OpenAI-compatible and OpenAI official, with model refresh, manual model IDs, server-side-only key storage and a connect test. Local: verified BGE small zh, Qwen3-Embedding 0.6B, Jina Nano, Jina Small INT8 and Nomic q8 on ONNX Runtime 1.29.0 in a separate encoding process, with real byte progress, speed, ETA, pause/cancel/resume and a queued → downloading → verifying → preparing-runtime → self-testing → installed state machine. Local serving needs no API key and no network.
Fingerprint vector recipes on model, revision, dimensions, task role, pooling, quantization and runtime; a mismatch marks the index stale and stops it serving until rebuilt. Vectors stay filtered to the current worldline at query time, so switching worldlines does not force a rebuild. Chunking is configurable with a 480-character default (192/480/960, 128-2048 range, 80 overlap) and a 512-token local budget; clear, rebuild and fill stay scoped to the current visible conversation and all its worldlines and keep prose, provenance and the ledger.
Add a Presets page before Resources with create, edit, save-as-copy, select and delete; built-ins are read-only and 200 custom slots are available. Scope covers current conversation, designated conversation or global, all worldlines in one conversation share the override, and storage is versioned with a single lock and whole-config revision CAS.
Ship 16 built-in styles — the default, a blank preset and 14 new ones including 日式轻小说, 乙女风格, 三体文风, 日式游戏, 电影感文风, 春秋文风, 极简文风, 细腻文风, 奇幻网文风, 恐怖文风, 鲁迅文风, 抒情文风, 日常搞笑风 and 古文文风 — each with a complete seven-section guide and original examples. Three explicit style modes (foreground system aesthetic, blend with card style, card style only) resolve conflicts by a stated rule, and card import, edit, export and persistence keep all three card style fields intact.
Add 长文本转角色卡 as a new management tab with two reading modes chosen before research: intensive segmented full reading with source-checked notes, or coarse multi-round relation-frontier retrieval followed by longitudinal protagonist tracking. Coarse mode requires a usable novel model and a complete current index, otherwise a dialog guides configuration and the round ends without a silent downgrade.
Freeze workspace TXT originals up to 64 MB with strict UTF-8 → GB18030 → BOM-aware UTF-16 decoding, recording raw-byte hash, decoded-text hash and size without mutating the upload; segment deterministically and bound batches below the native clipper. Gate research notes on a batch that was actually read and a quote that actually appears in it, and keep an independent semantic index for the novel, separate from story memory.
Add per-character model overrides to the character agent cluster; the override belongs to the current visible conversation and is shared across its worldlines while inputs and results stay isolated per actual worldline. Fix background subagents listed as selectable conversations, save-time draft loss, stale resource and export replies and duplicate job actions.
Move action suggestions into the standalone decision card only, so they are no longer duplicated into the status bar or prose tail, and hide legacy action areas without touching the original card. The decision card gains an independent collapse/restore toggle, a separate 稍后处理 close action, drag-to-move with double-click/Home reset and a clamped visible height. Validate and preserve authored status HTML/CSS across import, generation and legacy restore.
Replace four third-party full-page reskins with the first self-owned skin, dsh-nexttavern-amber: a whole-interface redraw from the same design tokens with day and night themes, different sidebar art per theme, a headline typewriter that only takes over the title span and a tavern reader mode on aged parchment that leaves the author's ink colours untouched. The skin now ships as a real profile bundle — a
file:link into the payload'sskins/directory whose loader entry carriesdisabled: true, so it is installed and visible but off by default — and the bundled third-party market dshmarket 1.39.0 (MIT) provides the hot enable/disable toggle under 设置 → 插件市场 → 已安装, writing to the profile'scordis.patch.ymlin about a second without a restart and keeping the choice across restarts. The same pass deleted an 82.6 MB single-bundle theme, removed the skin centre and reduced 18 packages to 4 kept-but-disabled; a third-party balance widget was disabled.Complete the TypeScript migration: TypeScript is now the only maintained source, with hand-written .ts/.mts modules and .js/.mjs build products generated by TypeScript 5.9.3 from a shared build manifest. At this release: 637 artifacts, 24 schemas and 158 TypeScript modules, covering core, UI, memory, auth, card reading, tasks, telemetry, branch and worldline routes and the release and install toolchain.
Stop deep-copying the native conversation list when projecting it: 341 sessions / 9.35 MB at 48-88 ms per copy became shared read-only nested values that replace summaries only when aggregated fields differ. Regression measurement: 8,208 deep copies / 991 ms reduced to 0 copies / 9 ms.
Cut idle request volume: 649 requests in 263 s over a slow link was the real cause of slow conversation opening, so activity polling went from 3 s to 30 s when idle, rebuild confirmations from 2 s to 30 s, the memory panel from 2 s to 20 s, and catalog reads are coalesced to one per 10 s with a trailing read. The single largest requester, a third-party balance widget, was disabled. Cadence is selected by state and never gated inside a timer callback.
Add one-click installers. Windows ships NextTavern-Setup.exe (x64) and NextTavern-Setup-arm64.exe as a self-contained Go GUI with a native window, portable PowerShell 7.6.6 and Node.js 24.16.0, automatically provisioned Microsoft Visual C++ runtime, mirror-first sources with SHA-256 verification and per-file caching, shortcuts, start/stop menu entries and, new in this release, in-place upgrade from an older installation. Linux is new in 0.2.5: NextTavern-Setup.sh is a single self-contained shell script with no starting dependency beyond a POSIX shell, curl or wget, tar and a SHA-256 tool; it downloads and verifies a portable Node.js runtime itself, supports x86_64 and aarch64 (glibc) and needs no root and no system packages. Both listeners bind 127.0.0.1 only and auto-select a port in 3510-3599.
Ship CLI 1.4.0 with native API/RPC, workspace directory upload verified against a real novel with checksums, settings, model, edit, log, resource and character-cluster operations, plus doctor.
Strengthen interactive authoring with questions-driven creation, a twelve-item completeness check, two reference cards and status-asset preservation across import, generation and legacy restore.
Sandbox author card JavaScript: author beauty.js runs against restricted document and window faces, registrations land on the reader root and are unconditionally reaped.
Migrate the public-access plugin to @isund/dsh-auth-webserver 0.1.0-alpha.3.2 under strict TypeScript; the Cloudflare Access public-access guide is unchanged.
Relicense project-owned code from MIT to GPL-3.0-only, using the verbatim official text (the SPDX identifier is not upgradeable to a later version). Bundled third-party material keeps its own terms — DeepSeek and pi MIT, the upload and anydoc forks MIT, office Apache-2.0 and the upstream-derived ask-user file MIT — and copies already distributed under MIT keep those terms. Self-owned package manifests, installer npm metadata, the public contract, README, NOTICE and the rights register were updated in the same pass.
Tested target: Harness 0.1.2-alpha.3 and pi-ai 0.84.4. The window, notes, provenance and eviction mechanics add no runtime model request of their own: the program assembles settings, window and notes deterministically, and the main agent queries history and worldbooks on demand instead of being forced through a recall step before every turn.
No new production deployment, paid story generation, supplier latency or cache benchmark was performed for this release. The Windows installers are not code-signed and were not validated on a clean Win11 VM or a real ARM64 device; the Linux installer is new in this release and the listed distributions and architectures are the tested envelope. Synthetic embedding evaluation is not a human-labelled or long-term quality guarantee, and coarse-mode novel coverage does not guarantee understanding of every detail.
The v0.2.5 release was rebuilt twice after its first cut. That first build shipped the skin as package files only, with no profile dependency and no loader entry, so players could neither see nor enable it; the second cut fixed the packaging and the third relicensed the code. Only this final cut is published, and the two earlier builds have been taken down.
The same version was recut once more on 2026-09-26. The packaged presets had shipped the maintainer's own first section and a default aesthetic whose text aimed at producing explicit content; published packages now ship that section with an empty body, and that aesthetic reads as intimacy literature — the same section order, pacing, sensory saturation and tension, without the sentences that taught the former. Both rewrites are applied at delivery time from the maintainer's sources, so the maintainer's own repository and deployment keep the original wording.
Deleting one of your own messages no longer takes the decision card with it. 「删除这条玩家消息以及后续全部内容」 forks a branch whose seed ends at the previous turn, and that branch replays no player input — so it never published a card of its own. The status bar showed the truncation point exactly as designed while the card was missing for good: the sidebar fallback button could only flip a local flag and a reload re-read the same empty answer. A branch parked at that boundary now carries it: the card the deleted message had consumed is revived unanswered with the options the player originally saw, or rebuilt from the boundary status panel's options, and the boundary status bar is copied or rehomed to the child. The repair is program-only — no extra model request and no write to the source branch — and it records its outcome on the branch as boundaryState; regenerate and edited-message branches still publish their own card after their own turn. Source-only update: no new tag, Release, npm package or public-site deployment accompanies it.
0.1.2 Preview - 2026-09-12
Ship the optional
@isund/dsh-auth-webserversource, installable archive, license, contract tests and sanitized environment template for Cloudflare Access public access.Add explicit, fingerprint-checked and reversible compatibility for remote settings, continuous reconnect and JWT-authenticated uploads. Default local installation does not enable public access.
Add the beginner-oriented phone/computer public-access guide, including AI-assisted deployment, obtaining scoped Cloudflare tokens and SSH keys, historical connection tuning, verification and rollback.
Add a community-support section thanking @ljs1997sh for dsh-nexttavern-qq-mobile.
This release is based on public 0.1.1. Concurrent internal debugging and TypeScript migration are outside this release.
0.1.1 Preview - 2026-09-12
Protect author status templates at the native prompt boundary while preserving the original card source.
Accept filled dynamic status values without losing the author's HTML/CSS/JS structure.
Surface structured task-validation failures, failed timestamps and actionable retry diagnostics.
Synchronize the verified official UI chat/workspace fixes included in the maintenance release.
2026-09-11: Documentation Updates
Add four-step onboarding, illustrated feature descriptions and a public architecture guide with source references.
Document existing SillyTavern / TauriTavern PNG (
chara/ccv3Base64tEXt) and JSON v1/v2/v3 imports, embedded worldbooks and extension boundaries.Add repository topics
dsh,character-cardandtavern, alongsidedsh-plugin,deepseek-harnessandroleplay.These updates affect repository documentation; the original v0.1.0 tag and downloadable assets retain their published hashes.
0.1.0 Preview - 2026-09-11
Public packaging of the existing roleplay workspace: cards, worldbooks, narrative/style rules, worldlines, isolated memory, status, decisions, usage, pricing, exports and optional character agents.
Existing SillyTavern / TauriTavern PNG and JSON character-card import, original-source preservation and embedded character books.
Portable preset installer and audit-first six-unit compatibility patcher with transaction backups, rollback, update and uninstall.
Browser source and prebuilt UI, locked builder, authorized complete reference cards, authoring/diagnosis skills, included and standalone dsh-debug CLI.
Attributed compatibility forks for file upload/read_document, anydoc and pi-ai; optional DOCX/PDF integrations retained.
Tested target: Harness 0.1.2-alpha.3 and pi-ai 0.84.4.
No new production deployment, paid story generation, supplier latency or cache benchmark was performed for this release. Offline native fixtures suppress model dispatch and do not prove every provider workflow.

