Skip to content

Release 0.30.6#1143

Merged
Tim020 merged 13 commits into
mainfrom
dev
Jun 5, 2026
Merged

Release 0.30.6#1143
Tim020 merged 13 commits into
mainfrom
dev

Conversation

@Tim020

@Tim020 Tim020 commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Tim020 and others added 7 commits June 3, 2026 00:34
Vue 2 does not make properties reactive when added to an already-observed
object via direct assignment. editSettings was declared as {} in data(),
so properties set in resetEditSettings() were invisible to the dependency
tracker — hasChanges never re-evaluated and buttons stayed disabled.

Fix: replace the object wholesale in resetEditSettings() so Vue observes
all properties on the new object, and use this.$set() in resetForm() for
the same reason.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
The Vue 3 SessionList.vue was sending an empty POST body to
/api/v1/show/sessions/start, causing a JSONDecodeError on the server.
The endpoint requires {"session_id": "<uuid>"} to identify the
initiating client, matching the pattern already used by the navbar.

Also removes the unreachable Stop Session button from both the Vue 2
and Vue 3 SessionList components — the START_SHOW WebSocket message
pushes all clients to /live the moment a session starts, making the
button inaccessible. Stop Session remains available via the navbar.

Adds E2E coverage in spec 12 for the sessions tab Start button,
including cleanup via the navbar to leave clean state for spec 13.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add server hostname, IP address, and port rows to System Config page

Adds a new authenticated GET /api/v1/system/info endpoint that returns
the server's FQDN, primary outbound IP, and listening port. Both the
Vue 2 and Vue 3 System Config pages display these as three new table
rows, fetched once on mount. Includes backend tests and E2E coverage.

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

* Restrict system/info endpoint to admin users

The hostname, IP address, and port are sensitive network information
that should only be accessible to administrators, not all authenticated
users.

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

* Fix Prettier formatting in Vue 2 ConfigSystem.vue

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

* Fix SonarCloud findings: extract auth helpers and named IP constant

- Move _create_and_login_admin/_create_and_login_user to DigiScriptTestCase
  base class, removing duplication between test_system_info and test_db_backups
- Extract hardcoded 8.8.8.8 to named _PROBE_HOST/_PROBE_PORT constants with
  a comment clarifying no data is sent

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add merge characters feature

Adds a merge operation to the Characters tab of show config. Clicking
"Merge" on any character opens a modal with a searchable dropdown to
select a destination character. On confirm, the backend reassigns all
ScriptLinePart rows to the destination, updates CharacterGroup
memberships (with deduplication), and deletes the source character
(cascading its mic allocations).

- POST /api/v1/show/character/merge endpoint with full validation
- 11 new backend tests covering all error cases and merge side-effects
- Merge button + modal in both client/ (Vue 2) and client-v3/ (Vue 3)
- 5 new Playwright E2E tests in 06-show-config-characters.spec.ts

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

* Fix linting and formatting issues

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

* Fix missing cancelModal import in E2E spec; revert accidental modal change

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 added the release Pull requests for creating a new release label Jun 5, 2026
@github-actions github-actions Bot added documentation Improvements or additions to documentation client Pull requests changing front end code large-diff server Pull requests changing back end code client-v3 labels Jun 5, 2026
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Client V3 Test Results

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

Results for commit 322c61f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Client Test Results

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

Results for commit 322c61f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Python Test Results

  1 files    1 suites   1m 41s ⏱️
631 tests 631 ✅ 0 💤 0 ❌
636 runs  636 ✅ 0 💤 0 ❌

Results for commit 322c61f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Playwright E2E Results (firefox)

160 tests   160 ✅  1m 38s ⏱️
 14 suites    0 💤
  1 files      0 ❌

Results for commit 322c61f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Playwright E2E Results (chromium)

160 tests   160 ✅  1m 36s ⏱️
 14 suites    0 💤
  1 files      0 ❌

Results for commit 322c61f.

♻️ This comment has been updated with latest results.

The goToLivePage handler was gating on `await v$.value.$validate()`
using a non-standard Vuelidate setup (flat rules + direct ref state).
This caused the async validation to silently fail or hang, hitting the
early return before `sendObj` was ever called.

Replace with the same pattern used by ScriptEditor.vue: a plain ref
with `v-model.number`, a synchronous bounds check, and `@ok.prevent`
to match the established async OK handler pattern in this codebase.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 marked this pull request as ready for review June 5, 2026 20:37
Tim020 and others added 3 commits June 5, 2026 21:47
Convert dynamic import() calls for stores and the router to static
imports at the file top, keeping useXStore()/router access inside
function bodies where Pinia is already active. Eliminates all three
Rollup INEFFECTIVE_DYNAMIC_IMPORT warnings without any bundle size
change (the modules were already in the main chunk via other static
importers).

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.15 to 0.15.16.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.15...0.15.16)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@Tim020 Tim020 enabled auto-merge June 5, 2026 21:06
@sonarqubecloud

sonarqubecloud Bot commented Jun 5, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
3.8% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@Tim020 Tim020 merged commit e52f0a7 into main Jun 5, 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 documentation Improvements or additions to documentation 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