Skip to content

Release 0.30.2#1085

Merged
Tim020 merged 11 commits into
mainfrom
dev
May 25, 2026
Merged

Release 0.30.2#1085
Tim020 merged 11 commits into
mainfrom
dev

Conversation

@Tim020
Copy link
Copy Markdown
Contributor

@Tim020 Tim020 commented May 25, 2026

No description provided.

Tim020 and others added 3 commits May 24, 2026 10:51
Add subtle row highlight when hovering the add-cue (+) button in the
cue editor, clarifying which line the new cue will be attached to.
Applied to both Vue 2 and Vue 3 clients for parity.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add comprehensive Playwright E2E test suite for V3 UI

148 serial tests across 14 spec files covering every user-facing
workflow in the Vue 3 frontend: authentication, system config (shows,
users, RBAC, settings, backups), all show-config tabs (acts/scenes,
characters, stage/props, cues, microphone allocations, script editing,
revisions, sessions), and live show operation.

Includes GitHub Actions workflow, global setup/teardown that starts
a clean backend server, Playwright config with chromium/firefox
projects, and targeted fixes for BVN v-show DOM persistence,
modal stacking, and MicAllocations onMounted timing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix CI failures: Prettier formatting, Vitest e2e exclusion, upload-artifact v4

- Run Prettier on 5 e2e spec files that had formatting violations
- Exclude e2e/** from Vitest so Playwright spec files are not picked up
  by the unit test runner (test.describe.configure() is Playwright-only)
- Upgrade actions/upload-artifact from v3 (deprecated) to v4 in the
  Playwright workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix CI: lazy-tab timeouts in spec 03, upgrade deprecated GHA actions

- Add 10s timeouts to three toBeVisible() assertions in spec 03 that
  follow lazy BTabs switches (Users, Settings, Logs tabs in ConfigView)
  — default 5s wasn't enough on Ubuntu CI runners
- Upgrade actions/checkout, setup-python, setup-node from v3/v4 to
  v4/v5/v4 to avoid Node.js 20 deprecation warnings and future breakage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add README documentation for client-v3 and E2E test suite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
The SHOW_CHANGED WS handler calls window.location.reload() after a show
is loaded. On slow CI runners this reload arrives after the test
'creates and loads a show via Save and Load' has already completed,
causing the subsequent 'opens New User modal' test to fail with
'Target page, context or browser has been closed' when the reload fires
mid-click.

Fix by listening for the load event before clicking 'Save and Load' so
the test waits for the reload regardless of when SHOW_CHANGED arrives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 added the release Pull requests for creating a new release label May 25, 2026
@github-actions github-actions Bot added github GitHub actions related issue or pull request client Pull requests changing front end code xlarge-diff git client-v3 labels May 25, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

Client V3 Test Results

23 tests   23 ✅  0s ⏱️
 2 suites   0 💤
 1 files     0 ❌

Results for commit c4a3aaf.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

Client Test Results

128 tests   128 ✅  0s ⏱️
  6 suites    0 💤
  1 files      0 ❌

Results for commit c4a3aaf.

♻️ This comment has been updated with latest results.

Comment thread client-v3/e2e/tests/03-system-config.spec.ts Fixed
Comment thread client-v3/e2e/tests/13-live-show.spec.ts Fixed
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

Python Test Results

  1 files    1 suites   1m 34s ⏱️
603 tests 603 ✅ 0 💤 0 ❌
608 runs  608 ✅ 0 💤 0 ❌

Results for commit c4a3aaf.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

Playwright E2E Results (chromium)

148 tests   148 ✅  1m 20s ⏱️
 14 suites    0 💤
  1 files      0 ❌

Results for commit c4a3aaf.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

Playwright E2E Results (firefox)

148 tests   148 ✅  1m 27s ⏱️
 14 suites    0 💤
  1 files      0 ❌

Results for commit c4a3aaf.

♻️ This comment has been updated with latest results.

…e-login (#1086)

* Fix JWT token uniqueness to prevent revoked token collision

PyJWT tokens created within the same UTC second for the same user
produce identical byte strings (same user_id, token_version, iat, exp).
When a logout revoked token T1 and a subsequent re-login created T2
within the same second, T2 === T1 causing is_token_revoked() to return
true and trigger WS_AUTH_ERROR → logout on the newly authenticated
session.

Fix: add a unique jti (UUID) claim to every created token so tokens are
always distinct regardless of timing.

Also fix revoke_token() which incorrectly read exp from the JWT
*header* (where it doesn't exist → always -1), preventing expired
tokens from ever being purged from the in-memory revocation dict.
Now reads exp from the payload via an unverified decode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix python formatting

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot added the server Pull requests changing back end code label May 25, 2026
Tim020 and others added 4 commits May 25, 2026 22:34
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-version: 2.0.50
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add E2E retry support with SQLite snapshot/restore and bail-on-failure

Enables Playwright retries (3 attempts) for the E2E suite while preserving
the serial, state-dependent nature of the 14 specs. On retry, the backend
server is killed, both the SQLite DB and settings JSON are restored from
the last known-good snapshot, and the server is restarted before the spec
group re-runs. maxFailures: 1 ensures downstream specs are skipped
immediately once a spec exhausts all retries, preventing meaningless
results from running against incomplete state.

- Add e2e/db-snapshot.ts: snapshotState(), snapshotExists(),
  restoreStateAndRestartServer()
- Export SERVER_PORT and waitForServer from global-setup.ts for reuse
- Set retries: 3 and maxFailures: 1 in playwright.config.ts
- Add beforeAll (restore on retry) and afterEach (snapshot on pass)
  hooks to all 14 spec files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix no-empty-pattern lint errors in E2E retry hooks

Replace ({}, testInfo) with (_fixtures, testInfo) in the beforeAll/afterEach
hooks added to all 14 spec files. Empty destructuring patterns are
disallowed by the no-empty-pattern ESLint rule.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Use test.info() instead of testInfo parameter in retry hooks

Playwright requires the first argument of beforeAll/afterEach to use
object destructuring syntax — a plain identifier causes a fixture
parser error. Using test.info() as a static accessor avoids the
parameter entirely, satisfying both Playwright and the no-empty-pattern
ESLint rule.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Refactor retry hooks into registerRetryHooks() to eliminate duplication

Extract the beforeAll/afterEach retry logic from all 14 spec files into
a single registerRetryHooks() function in db-snapshot.ts. Each spec now
calls registerRetryHooks() instead of repeating the 10-line hook block,
reducing ~140 duplicated lines to one call site per spec.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 marked this pull request as ready for review May 25, 2026 22:55
Tim020 and others added 2 commits May 26, 2026 00:10
…ry cascade (#1088)

Two related issues:

1. In "can configure RBAC permissions for testuser", Firefox kept the
   "Revoked role from user" v-toast visible long enough to intercept
   pointer events to the modal's .btn-close, causing a 30s timeout.
   Fix: wait for .v-toast to detach before clicking the close button.

2. The original rolling-checkpoint snapshot strategy had a cascade bug:
   when test N passes (e.g. creates testuser) then test N+1 fails, the
   retry restores to the post-N snapshot and re-runs all tests — but
   test N hits its own prior side effect (duplicate username) and fails.

   Redesign: switch from rolling-checkpoint to spec-start snapshots.
   Each spec captures the DB state at its beginning (beforeAll, retry=0).
   On retry, restore from that spec-start so every test in the spec runs
   against a clean baseline with none of its own previous side effects.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 enabled auto-merge May 25, 2026 23:16
@Tim020 Tim020 disabled auto-merge May 25, 2026 23:17
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
1 Security Hotspot
8.1% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@Tim020 Tim020 merged commit 440385a into main May 25, 2026
39 of 40 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client Pull requests changing front end code client-v3 git github GitHub actions related issue or pull request release Pull requests for creating a new release server Pull requests changing back end code xlarge-diff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant