Release v1.61.0

This commit is contained in:
mARTin-B78 2026-10-11 04:44:31 +02:00
parent 0551b6651f
commit b5c3beac71
3 changed files with 15 additions and 10 deletions

View File

@ -6,6 +6,10 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
--- ---
## [Unreleased] ## [Unreleased]
---
## [1.61.0] — 2026-10-11
### Added ### Added
- **My Voices list header:** a sort header (select-all/none checkbox with a partial-selection state, then sortable Name / Lang / Gender / Speed / Rating with the active column highlighted) sits directly above the voice list, and the filter row starts with a filter icon. The full table header still takes over in table view. - **My Voices list header:** a sort header (select-all/none checkbox with a partial-selection state, then sortable Name / Lang / Gender / Speed / Rating with the active column highlighted) sits directly above the voice list, and the filter row starts with a filter icon. The full table header still takes over in table view.
- **QA: Python tests in a throwaway container** (`npm run qa -- --only pyunit --container`): runs the unit tests on production's Python 3.11 in a no-network, read-only container built from the app image on a writable throwaway copy of the read-only mounted repo (`docker/Dockerfile.test` adds only `httpx2` and `nodejs`); opt-in, SKIPPED when docker or the image is missing. - **QA: Python tests in a throwaway container** (`npm run qa -- --only pyunit --container`): runs the unit tests on production's Python 3.11 in a no-network, read-only container built from the app image on a writable throwaway copy of the read-only mounted repo (`docker/Dockerfile.test` adds only `httpx2` and `nodejs`); opt-in, SKIPPED when docker or the image is missing.
@ -4784,7 +4788,8 @@ Initial feature-complete release.
--- ---
[Unreleased]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.60.0...HEAD [Unreleased]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.61.0...HEAD
[1.61.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.60.0...v1.61.0
[1.60.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.59.0...v1.60.0 [1.60.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.59.0...v1.60.0
[1.59.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.58.0...v1.59.0 [1.59.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.58.0...v1.59.0
[1.58.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.57.0...v1.58.0 [1.58.0]: https://github.com/mARTin-B78/tts-voice-creator-clone-and-design-2/compare/v1.57.0...v1.58.0

View File

@ -1 +1 @@
1.60.0 1.61.0

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.60.0"> <meta name="app-version" content="1.61.0">
<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.60.0"> <link rel="stylesheet" href="/static/style.css?v=1.61.0">
<link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.60.0"> <link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.61.0">
<link rel="stylesheet" href="/static/css/background-jobs.css?v=1.60.0"> <link rel="stylesheet" href="/static/css/background-jobs.css?v=1.61.0">
<link rel="stylesheet" href="/static/css/voice-design.css?v=1.60.0"> <link rel="stylesheet" href="/static/css/voice-design.css?v=1.61.0">
<link rel="stylesheet" href="/static/css/rehearser.css?v=1.60.0"> <link rel="stylesheet" href="/static/css/rehearser.css?v=1.61.0">
<link rel="stylesheet" href="/static/css/audiobook.css?v=1.60.0"> <link rel="stylesheet" href="/static/css/audiobook.css?v=1.61.0">
<!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── --> <!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── -->
@ -403,7 +403,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.60.0"></script> <script src="/static/loader.js?v=1.61.0"></script>
</body> </body>
</html> </html>