From fdbff77188c59bdadab628cd59a3883cdcd6bc17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 26 Oct 2026 21:01:29 +0300 Subject: [PATCH] =?UTF-8?q?release:=203.40.2=20=E2=80=94=20file-filter=20r?= =?UTF-8?q?eset=20(=E2=9C=95)=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A red ✕ next to the filter selector appears whenever the filter is not "All" and resets it to "All" in one click (pysimFsFilterClear). Bump VERSION/pyproject/PWA header to 3.40.2 and the SW cache to simple-v487. --- CHANGELOG.md | 8 ++++++++ frontend/index.html | 16 ++++++++++++++-- frontend/sw.js | 2 +- frontend/tests/fs_filter.test.js | 32 +++++++++++++++++++++++++++++--- pyproject.toml | 2 +- pysim_simple_server/server.py | 2 +- 6 files changed, 54 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c963f34..e7588eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ every change carries a descriptive commit message. ## [Unreleased] +## [3.40.2] — 2026-10-26 + +### Added + +- **File filter: reset (✕) button.** A red ✕ to the right of the filter + selector appears whenever the filter is not "All" and resets it to "All" + in one click. + ## [3.40.1] — 2026-10-26 ### Changed diff --git a/frontend/index.html b/frontend/index.html index e6df90a..fbe9b03 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1127,6 +1127,7 @@ + @@ -1989,7 +1990,7 @@ // ===== Version ===== // Single source of truth for the PWA version: shown in the header and used // by the server version check in pysimConnect(). -const SIMPLE_VERSION = '3.40.1'; +const SIMPLE_VERSION = '3.40.2'; document.getElementById('app-version').textContent = 'v' + SIMPLE_VERSION; // ===== view history (the browser Back/Forward buttons) ===== @@ -16270,6 +16271,7 @@ function pysimFsFilterRender() { const menu = document.getElementById('pysim-fs-filter-menu'); const btn = document.getElementById('pysim-fs-filter-btn'); if (!menu) return; + const active = pysimFsFilter.size > 0 && !pysimFsFilter.has(FS_FILTER_ALL); const services = fsFilterServiceOptions(); const item = (id, label) => '