docs: complete frontend namespace migration

This commit is contained in:
mARTin-B78 2026-09-04 13:43:36 +02:00
parent 18e586d06f
commit 8181c491c0
5 changed files with 17 additions and 13 deletions

View File

@ -8,6 +8,8 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
## [Unreleased] ## [Unreleased]
### Changed ### Changed
- **Frontend namespace migration completed.** The remaining utility, library, cast-compatibility, i18n, and settings/log
surfaces now keep implementation state private while preserving explicit legacy compatibility exports.
- **Conversation/log namespace migration.** Settings log state and About rendering helpers now use a private scope with - **Conversation/log namespace migration.** Settings log state and About rendering helpers now use a private scope with
compatibility exports and a `window.TTVC.conversation` API. compatibility exports and a `window.TTVC.conversation` API.
- **i18n namespace migration.** Language dictionaries and mutable language state now use a private scope with compatibility - **i18n namespace migration.** Language dictionaries and mutable language state now use a private scope with compatibility

View File

@ -124,11 +124,11 @@ architecture change: the larger Audiobook/Rehearser/style split.
voice design, I/O, library, stage, and recording blocks plus Audiobook casting, preview, export, and feature styles voice design, I/O, library, stage, and recording blocks plus Audiobook casting, preview, export, and feature styles
are isolated. Core Reader state and compatibility event wiring remain ordered in the legacy entry points. are isolated. Core Reader state and compatibility event wiring remain ordered in the legacy entry points.
- [x] Extract Rehearser stage display and cast-sidebar controls into `rehearser-stage.js`. - [x] Extract Rehearser stage display and cast-sidebar controls into `rehearser-stage.js`.
- [ ] Replace broad globals with namespaces such as `window.TTVC.audiobook`; pure leaves, Audiobook/Reader/Rehearser - [x] Replace broad globals with namespaces such as `window.TTVC.audiobook`; pure leaves, Audiobook/Reader/Rehearser
feature modules, Studio, and character-library persistence now use private scopes with explicit compatibility exports. feature modules, Studio, and character-library persistence now use private scopes with explicit compatibility exports.
Voice-library loading, rendering, benchmarking, import workflows, character-sheet extraction, and character-library Voice-library loading, rendering, benchmarking, import workflows, character-sheet extraction, character-library
rendering/actions, voice-inspector selection, and shared utility helpers are now scoped; remaining legacy library UI rendering/actions, voice-inspector selection, shared utility helpers, cast compatibility, i18n, and settings/log UI
modules still require the same responsibility-by-responsibility migration. are also scoped; legacy entry points remain only as explicit compatibility exports.
- [x] Generate the feature-module list for `loader.js` and `scripts/minify.mjs` from one shared manifest; - [x] Generate the feature-module list for `loader.js` and `scripts/minify.mjs` from one shared manifest;
larger responsibility splits remain. larger responsibility splits remain.
- [x] Add a dependency-free frontend syntax and top-level declaration collision gate (`npm run check:frontend`); - [x] Add a dependency-free frontend syntax and top-level declaration collision gate (`npm run check:frontend`);

View File

@ -1 +1 @@
1.24.97 1.24.98

View File

@ -85,6 +85,8 @@ Done incrementally as global-scope ordered files (no ES-module change needed)
- ✅ SillyTavern character-card import/export helpers use a private scope with a namespace API. - ✅ SillyTavern character-card import/export helpers use a private scope with a namespace API.
- ✅ i18n dictionaries and language state use a private scope with compatibility exports and a namespace API. - ✅ i18n dictionaries and language state use a private scope with compatibility exports and a namespace API.
- ✅ Conversation settings/log state and About helpers use a private scope with compatibility exports and a namespace API. - ✅ Conversation settings/log state and About helpers use a private scope with compatibility exports and a namespace API.
- ✅ All remaining application frontend modules are either privately scoped or intentionally stateless bootstrap/cache IIFEs;
legacy globals are explicit compatibility exports and new integrations use `window.TTVC` namespaces.
- ✅ `static/css/resource-diagnostics.css` — isolated Performance/resource diagnostic panel styles. - ✅ `static/css/resource-diagnostics.css` — isolated Performance/resource diagnostic panel styles.
- ✅ `static/css/background-jobs.css` — isolated background-job history and retry-panel styles. - ✅ `static/css/background-jobs.css` — isolated background-job history and retry-panel styles.
- ✅ `static/css/voice-design.css` — isolated Voice Design form, samples, and preview-match styles. - ✅ `static/css/voice-design.css` — isolated Voice Design form, samples, and preview-match styles.

View File

@ -10,7 +10,7 @@
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="color-scheme" content="light dark"> <meta name="color-scheme" content="light dark">
<meta name="theme-color" content="#2563EB"> <meta name="theme-color" content="#2563EB">
<meta name="app-version" content="1.24.97"> <meta name="app-version" content="1.24.98">
<link rel="manifest" href="/manifest.webmanifest"> <link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/static/icon.svg" type="image/svg+xml"> <link rel="icon" href="/static/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/static/icon.svg"> <link rel="apple-touch-icon" href="/static/icon.svg">
@ -27,12 +27,12 @@
<!-- ── Core styles (local — no CDN dependency for first paint) ────────── --> <!-- ── Core styles (local — no CDN dependency for first paint) ────────── -->
<link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css"> <link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css">
<link rel="stylesheet" href="/static/style.css?v=1.24.97"> <link rel="stylesheet" href="/static/style.css?v=1.24.98">
<link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.24.97"> <link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.24.98">
<link rel="stylesheet" href="/static/css/background-jobs.css?v=1.24.97"> <link rel="stylesheet" href="/static/css/background-jobs.css?v=1.24.98">
<link rel="stylesheet" href="/static/css/voice-design.css?v=1.24.97"> <link rel="stylesheet" href="/static/css/voice-design.css?v=1.24.98">
<link rel="stylesheet" href="/static/css/rehearser.css?v=1.24.97"> <link rel="stylesheet" href="/static/css/rehearser.css?v=1.24.98">
<link rel="stylesheet" href="/static/css/audiobook.css?v=1.24.97"> <link rel="stylesheet" href="/static/css/audiobook.css?v=1.24.98">
<!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── --> <!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── -->
@ -397,7 +397,7 @@ window.toggleNavTree = function(treeId, chevronId) {
</script> </script>
<!-- loader.js: fetches sections → loads JS modules → removes skeleton --> <!-- loader.js: fetches sections → loads JS modules → removes skeleton -->
<script src="/static/loader.js?v=1.24.97"></script> <script src="/static/loader.js?v=1.24.98"></script>
</body> </body>
</html> </html>