From 088c2252024f6f59b934c2c94f06bb66f4243424 Mon Sep 17 00:00:00 2001
From: th
Date: Sun, 12 Apr 2026 11:04:23 +0200
Subject: [PATCH] =?UTF-8?q?runner:=20bump=20RUNNER=5FV=20=3Fv=3D3=20?=
=?UTF-8?q?=E2=86=92=20=3Fv=3D4=20so=20test-shield=20removal=20loads?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The test-shield (#test-shield) was added in loader.js (always fresh
via plugin manager ?v=time()) but the removal lives in runner.js
hideProgress(). runner.js was still cached at ?v=3 in the browser,
so the shield stayed after the run. Bumping to ?v=4 in loader.js +
all 42 test files forces a fresh runner.js load.
chore: bump version to 0.9.15
Co-Authored-By: Claude Opus 4.6 (1M context)
---
config.php | 2 +-
public/plugins/tests/api-edge.test.js | 2 +-
public/plugins/tests/api.test.js | 2 +-
public/plugins/tests/board.test.js | 2 +-
public/plugins/tests/bucket-context.test.js | 2 +-
public/plugins/tests/buckets.test.js | 2 +-
public/plugins/tests/calendar-popup.test.js | 2 +-
public/plugins/tests/calendar.test.js | 2 +-
public/plugins/tests/canvas.test.js | 2 +-
public/plugins/tests/card-interactions.test.js | 2 +-
public/plugins/tests/card-join.test.js | 2 +-
public/plugins/tests/context-menu.test.js | 2 +-
public/plugins/tests/datepicker.test.js | 2 +-
public/plugins/tests/detail-interactions.test.js | 2 +-
public/plugins/tests/detail.test.js | 2 +-
public/plugins/tests/editor-features.test.js | 2 +-
public/plugins/tests/editor-save.test.js | 2 +-
public/plugins/tests/editor-toolbar.test.js | 2 +-
public/plugins/tests/editor.test.js | 2 +-
public/plugins/tests/export.test.js | 2 +-
public/plugins/tests/favorites.test.js | 2 +-
public/plugins/tests/filtering.test.js | 2 +-
public/plugins/tests/gallery.test.js | 2 +-
public/plugins/tests/help.test.js | 2 +-
public/plugins/tests/image-fullscreen.test.js | 2 +-
public/plugins/tests/line-numbers.test.js | 2 +-
public/plugins/tests/loader.js | 2 +-
public/plugins/tests/markdown-edge.test.js | 2 +-
public/plugins/tests/markdown.test.js | 2 +-
public/plugins/tests/multiselect.test.js | 2 +-
public/plugins/tests/notifications.test.js | 2 +-
public/plugins/tests/quick-capture.test.js | 2 +-
public/plugins/tests/relay.test.js | 2 +-
public/plugins/tests/rrule.test.js | 2 +-
public/plugins/tests/search-logic.test.js | 2 +-
public/plugins/tests/search.test.js | 2 +-
public/plugins/tests/settings.test.js | 2 +-
public/plugins/tests/shell.test.js | 2 +-
public/plugins/tests/snippets.test.js | 2 +-
public/plugins/tests/sorting.test.js | 2 +-
public/plugins/tests/state-functions.test.js | 2 +-
public/plugins/tests/super-buckets.test.js | 2 +-
public/plugins/tests/theme.test.js | 2 +-
public/plugins/tests/toolbar.test.js | 2 +-
public/plugins/tests/undo.test.js | 2 +-
45 files changed, 45 insertions(+), 45 deletions(-)
diff --git a/config.php b/config.php
index 1c3849d..5065451 100644
--- a/config.php
+++ b/config.php
@@ -1,7 +1,7 @@
{
it('create card with special characters in title', async () => {
diff --git a/public/plugins/tests/api.test.js b/public/plugins/tests/api.test.js
index 00814cd..10bd02e 100644
--- a/public/plugins/tests/api.test.js
+++ b/public/plugins/tests/api.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, csrf } from './runner.js?v=3';
+import { describe, it, expect, csrf } from './runner.js?v=4';
describe('API: Cards CRUD', () => {
it('GET /api/cards returns array', async () => {
diff --git a/public/plugins/tests/board.test.js b/public/plugins/tests/board.test.js
index 112c4e3..22df825 100644
--- a/public/plugins/tests/board.test.js
+++ b/public/plugins/tests/board.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Board Rendering', () => {
it('renders card elements', () => {
diff --git a/public/plugins/tests/bucket-context.test.js b/public/plugins/tests/bucket-context.test.js
index aa3033c..cd120a9 100644
--- a/public/plugins/tests/bucket-context.test.js
+++ b/public/plugins/tests/bucket-context.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Bucket Context Menu', () => {
afterEach(async () => {
diff --git a/public/plugins/tests/buckets.test.js b/public/plugins/tests/buckets.test.js
index a613619..6c84706 100644
--- a/public/plugins/tests/buckets.test.js
+++ b/public/plugins/tests/buckets.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
describe('Bucket Bar', () => {
diff --git a/public/plugins/tests/calendar-popup.test.js b/public/plugins/tests/calendar-popup.test.js
index 5b0163c..db834d1 100644
--- a/public/plugins/tests/calendar-popup.test.js
+++ b/public/plugins/tests/calendar-popup.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll } from './runner.js?v=4';
describe('Calendar: Day Click', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/calendar.test.js b/public/plugins/tests/calendar.test.js
index 7a83731..d918a26 100644
--- a/public/plugins/tests/calendar.test.js
+++ b/public/plugins/tests/calendar.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
describe('Calendar', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/canvas.test.js b/public/plugins/tests/canvas.test.js
index 3c8d441..1430394 100644
--- a/public/plugins/tests/canvas.test.js
+++ b/public/plugins/tests/canvas.test.js
@@ -1,4 +1,4 @@
-import { describe, it, beforeEach, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, beforeEach, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
// ── Helpers ──
diff --git a/public/plugins/tests/card-interactions.test.js b/public/plugins/tests/card-interactions.test.js
index 917db40..52db7b4 100644
--- a/public/plugins/tests/card-interactions.test.js
+++ b/public/plugins/tests/card-interactions.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
describe('Card: Tag Operations', () => {
diff --git a/public/plugins/tests/card-join.test.js b/public/plugins/tests/card-join.test.js
index 7f0fc45..1a52c88 100644
--- a/public/plugins/tests/card-join.test.js
+++ b/public/plugins/tests/card-join.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
async function makeCard(title, body = '') {
diff --git a/public/plugins/tests/context-menu.test.js b/public/plugins/tests/context-menu.test.js
index 9047a68..e2e3178 100644
--- a/public/plugins/tests/context-menu.test.js
+++ b/public/plugins/tests/context-menu.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, rightClick, sleep, csrf } from './runner.js?v=4';
describe('Context Menu', () => {
afterEach(async () => {
diff --git a/public/plugins/tests/datepicker.test.js b/public/plugins/tests/datepicker.test.js
index 950dbc5..6f5427c 100644
--- a/public/plugins/tests/datepicker.test.js
+++ b/public/plugins/tests/datepicker.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll } from './runner.js?v=4';
import { showDialog } from '../../js/modules/dialog.js';
describe('Datepicker: Rendering', () => {
diff --git a/public/plugins/tests/detail-interactions.test.js b/public/plugins/tests/detail-interactions.test.js
index adc537d..3faa880 100644
--- a/public/plugins/tests/detail-interactions.test.js
+++ b/public/plugins/tests/detail-interactions.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Detail: Done Toggle', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/detail.test.js b/public/plugins/tests/detail.test.js
index f706d6e..fef62ec 100644
--- a/public/plugins/tests/detail.test.js
+++ b/public/plugins/tests/detail.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll } from './runner.js?v=4';
describe('Detail View', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/editor-features.test.js b/public/plugins/tests/editor-features.test.js
index 3142e35..4b09329 100644
--- a/public/plugins/tests/editor-features.test.js
+++ b/public/plugins/tests/editor-features.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, type, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, type, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Editor: Color Picker', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/editor-save.test.js b/public/plugins/tests/editor-save.test.js
index 6442551..1eb6720 100644
--- a/public/plugins/tests/editor-save.test.js
+++ b/public/plugins/tests/editor-save.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, type, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, type, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Editor: Empty Title Prevention', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/editor-toolbar.test.js b/public/plugins/tests/editor-toolbar.test.js
index 2dd2d67..773d25d 100644
--- a/public/plugins/tests/editor-toolbar.test.js
+++ b/public/plugins/tests/editor-toolbar.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
// Helper: set selection range in textarea
function selectRange(textarea, start, end) {
diff --git a/public/plugins/tests/editor.test.js b/public/plugins/tests/editor.test.js
index 852f2a8..078d060 100644
--- a/public/plugins/tests/editor.test.js
+++ b/public/plugins/tests/editor.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Editor: Structure', () => {
it('has all elements', () => {
diff --git a/public/plugins/tests/export.test.js b/public/plugins/tests/export.test.js
index 235f3ee..bed7476 100644
--- a/public/plugins/tests/export.test.js
+++ b/public/plugins/tests/export.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, csrf } from './runner.js?v=3';
+import { describe, it, expect, csrf } from './runner.js?v=4';
describe('Export: JSON ZIP', () => {
it('export endpoint returns ZIP', async () => {
diff --git a/public/plugins/tests/favorites.test.js b/public/plugins/tests/favorites.test.js
index 0db0a21..a8af2ef 100644
--- a/public/plugins/tests/favorites.test.js
+++ b/public/plugins/tests/favorites.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
describe('Favorites Bucket', () => {
diff --git a/public/plugins/tests/filtering.test.js b/public/plugins/tests/filtering.test.js
index 95416a1..803c911 100644
--- a/public/plugins/tests/filtering.test.js
+++ b/public/plugins/tests/filtering.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
import { state, parseTags, sortedCards } from '../../js/modules/state.js';
describe('Filtering: Tag AND Logic', () => {
diff --git a/public/plugins/tests/gallery.test.js b/public/plugins/tests/gallery.test.js
index c256782..c2e9a92 100644
--- a/public/plugins/tests/gallery.test.js
+++ b/public/plugins/tests/gallery.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
describe('Gallery', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/help.test.js b/public/plugins/tests/help.test.js
index f55a990..a2dd134 100644
--- a/public/plugins/tests/help.test.js
+++ b/public/plugins/tests/help.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, pressKey, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, pressKey, sleep, closeAll } from './runner.js?v=4';
describe('Help', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/image-fullscreen.test.js b/public/plugins/tests/image-fullscreen.test.js
index 87fa08d..5298e08 100644
--- a/public/plugins/tests/image-fullscreen.test.js
+++ b/public/plugins/tests/image-fullscreen.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Image Fullscreen Viewer', () => {
afterEach(async () => {
diff --git a/public/plugins/tests/line-numbers.test.js b/public/plugins/tests/line-numbers.test.js
index 73e147d..519e8a4 100644
--- a/public/plugins/tests/line-numbers.test.js
+++ b/public/plugins/tests/line-numbers.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
function enableLines() {
const gutter = $('#editor-gutter');
diff --git a/public/plugins/tests/loader.js b/public/plugins/tests/loader.js
index 97b5e7e..270b099 100644
--- a/public/plugins/tests/loader.js
+++ b/public/plugins/tests/loader.js
@@ -39,7 +39,7 @@ document.addEventListener('keydown', e => {
// Must match the `?v=…` suffix used in test files' `from './runner.js?v=…'`
// imports — bump both in lock-step to invalidate the runner.js cache.
-const RUNNER_V = '?v=3';
+const RUNNER_V = '?v=4';
function ensureProgressBar() {
if (document.getElementById('test-progress')) return;
diff --git a/public/plugins/tests/markdown-edge.test.js b/public/plugins/tests/markdown-edge.test.js
index 6fefd74..d0bab4a 100644
--- a/public/plugins/tests/markdown-edge.test.js
+++ b/public/plugins/tests/markdown-edge.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect } from './runner.js?v=3';
+import { describe, it, expect } from './runner.js?v=4';
import { renderMd } from '../../js/modules/markdown.js';
describe('Markdown: Blank Lines', () => {
diff --git a/public/plugins/tests/markdown.test.js b/public/plugins/tests/markdown.test.js
index e3fc8a8..ae4a61a 100644
--- a/public/plugins/tests/markdown.test.js
+++ b/public/plugins/tests/markdown.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect } from './runner.js?v=3';
+import { describe, it, expect } from './runner.js?v=4';
import { renderMd, formatTodoItems, stripMd } from '../../js/modules/markdown.js';
import { state } from '../../js/modules/state.js';
diff --git a/public/plugins/tests/multiselect.test.js b/public/plugins/tests/multiselect.test.js
index da9fd81..bd7aa01 100644
--- a/public/plugins/tests/multiselect.test.js
+++ b/public/plugins/tests/multiselect.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, sleep, closeAll } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
describe('Multi-Select', () => {
diff --git a/public/plugins/tests/notifications.test.js b/public/plugins/tests/notifications.test.js
index 060681d..2b829c8 100644
--- a/public/plugins/tests/notifications.test.js
+++ b/public/plugins/tests/notifications.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, $ } from './runner.js?v=3';
+import { describe, it, expect, $ } from './runner.js?v=4';
describe('Notification Banner', () => {
it('banner element exists', () => {
diff --git a/public/plugins/tests/quick-capture.test.js b/public/plugins/tests/quick-capture.test.js
index 4a1177f..0ee37c7 100644
--- a/public/plugins/tests/quick-capture.test.js
+++ b/public/plugins/tests/quick-capture.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, type, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, type, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Quick Capture: Open/Close', () => {
afterEach(async () => {
diff --git a/public/plugins/tests/relay.test.js b/public/plugins/tests/relay.test.js
index 6a963e0..aaf4eb4 100644
--- a/public/plugins/tests/relay.test.js
+++ b/public/plugins/tests/relay.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, csrf } from './runner.js?v=3';
+import { describe, it, expect, csrf } from './runner.js?v=4';
describe('Relay: Push API', () => {
it('push without config returns error', async () => {
diff --git a/public/plugins/tests/rrule.test.js b/public/plugins/tests/rrule.test.js
index 33c4cd0..55424d0 100644
--- a/public/plugins/tests/rrule.test.js
+++ b/public/plugins/tests/rrule.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect } from './runner.js?v=3';
+import { describe, it, expect } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
// RRULE is set by CalDAV sync, not via PATCH. Test the data model and existing cards.
diff --git a/public/plugins/tests/search-logic.test.js b/public/plugins/tests/search-logic.test.js
index d5db558..2c22073 100644
--- a/public/plugins/tests/search-logic.test.js
+++ b/public/plugins/tests/search-logic.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, type, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, type, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
describe('Search: Tag + Text Combined', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/search.test.js b/public/plugins/tests/search.test.js
index 3e2fca3..6c4c211 100644
--- a/public/plugins/tests/search.test.js
+++ b/public/plugins/tests/search.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, type, pressKey, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, type, pressKey, sleep, closeAll } from './runner.js?v=4';
describe('Search', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/settings.test.js b/public/plugins/tests/settings.test.js
index 7552eba..dfcd6a0 100644
--- a/public/plugins/tests/settings.test.js
+++ b/public/plugins/tests/settings.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, closeAll, sleep } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, closeAll, sleep } from './runner.js?v=4';
describe('Settings: Open/Close', () => {
afterEach(() => closeAll());
diff --git a/public/plugins/tests/shell.test.js b/public/plugins/tests/shell.test.js
index c36f68d..42dc7e4 100644
--- a/public/plugins/tests/shell.test.js
+++ b/public/plugins/tests/shell.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, $ } from './runner.js?v=3';
+import { describe, it, expect, $ } from './runner.js?v=4';
describe('App Shell', () => {
it('header with logo', () => {
diff --git a/public/plugins/tests/snippets.test.js b/public/plugins/tests/snippets.test.js
index 9f36940..fed3902 100644
--- a/public/plugins/tests/snippets.test.js
+++ b/public/plugins/tests/snippets.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
// Helper: simulate typing a snippet trigger in the editor body
function typeSnippet(bodyEl, trigger) {
diff --git a/public/plugins/tests/sorting.test.js b/public/plugins/tests/sorting.test.js
index 5259c6d..19c3176 100644
--- a/public/plugins/tests/sorting.test.js
+++ b/public/plugins/tests/sorting.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect, csrf } from './runner.js?v=3';
+import { describe, it, expect, csrf } from './runner.js?v=4';
import { state, sortedCards } from '../../js/modules/state.js';
describe('Sorting: All Modes', () => {
diff --git a/public/plugins/tests/state-functions.test.js b/public/plugins/tests/state-functions.test.js
index 94ee449..aea972b 100644
--- a/public/plugins/tests/state-functions.test.js
+++ b/public/plugins/tests/state-functions.test.js
@@ -1,4 +1,4 @@
-import { describe, it, expect } from './runner.js?v=3';
+import { describe, it, expect } from './runner.js?v=4';
import { state, parseTags, sortedCards, getChildren, getGroupCards, getRecent, markRecent, getFavorites, toggleFavorite, isFavorite } from '../../js/modules/state.js';
describe('State: parseTags', () => {
diff --git a/public/plugins/tests/super-buckets.test.js b/public/plugins/tests/super-buckets.test.js
index bf3961a..0563c25 100644
--- a/public/plugins/tests/super-buckets.test.js
+++ b/public/plugins/tests/super-buckets.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
// Helper: create a bucket with the given name and return its row.
diff --git a/public/plugins/tests/theme.test.js b/public/plugins/tests/theme.test.js
index c85ccf6..03f5755 100644
--- a/public/plugins/tests/theme.test.js
+++ b/public/plugins/tests/theme.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, closeAll, sleep } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, closeAll, sleep } from './runner.js?v=4';
describe('Theme', () => {
it('CSS custom properties set', () => {
diff --git a/public/plugins/tests/toolbar.test.js b/public/plugins/tests/toolbar.test.js
index f6bd1f6..836d805 100644
--- a/public/plugins/tests/toolbar.test.js
+++ b/public/plugins/tests/toolbar.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
describe('Toolbar: Filter Toggles', () => {
diff --git a/public/plugins/tests/undo.test.js b/public/plugins/tests/undo.test.js
index 402fd32..e833acf 100644
--- a/public/plugins/tests/undo.test.js
+++ b/public/plugins/tests/undo.test.js
@@ -1,4 +1,4 @@
-import { describe, it, afterEach, expect, $, $$, click, type, rightClick, pressKey, sleep, closeAll, csrf } from './runner.js?v=3';
+import { describe, it, afterEach, expect, $, $$, click, type, rightClick, pressKey, sleep, closeAll, csrf } from './runner.js?v=4';
import { state } from '../../js/modules/state.js';
function ctrlZ() {
|