Conversation
Add `from __future__ import annotations` to settings.py and base_controller.py to enable proper deferred evaluation of type annotations. This is required when using TYPE_CHECKING imports to avoid runtime NameError when the imported types are used in function signatures. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Adds functionality for the server to check whether it is running the latest version of DigiScript, displayed in System Config -> System tab. Backend: - New VersionChecker service that queries GitHub Releases API - Checks on startup and periodically (every hour) - Caches results for fast API responses - New /api/v1/version/status and /api/v1/version/check endpoints Frontend: - Version row in System Config showing current version with status badge - Green "Up to date", yellow "Update Available", red "Unable to check" - "Check Now" button for manual refresh - Link to release notes when update is available Also fixes circular import issues by adding `from __future__ import annotations` to settings.py and base_controller.py. Closes #878 Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…annotations (#882) Add PEP 563 deferred annotation evaluation to all files that use TYPE_CHECKING or string-quoted forward references, then remove the now-unnecessary string quotes from Mapped[] type annotations and function parameter/return type annotations. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Client Test Results99 tests 99 ✅ 0s ⏱️ Results for commit 59368b5. ♻️ This comment has been updated with latest results. |
Python Test Results 1 files 1 suites 1m 9s ⏱️ Results for commit 59368b5. ♻️ This comment has been updated with latest results. |
server/alembic_config/versions/625ac1e96e88_add_unique_constraints_to_allocation_.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/625ac1e96e88_add_unique_constraints_to_allocation_.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/625ac1e96e88_add_unique_constraints_to_allocation_.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/625ac1e96e88_add_unique_constraints_to_allocation_.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/9849eb6d381a_add_prop_and_scenery_types.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/9849eb6d381a_add_prop_and_scenery_types.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/9849eb6d381a_add_prop_and_scenery_types.py
Dismissed
Show dismissed
Hide dismissed
server/alembic_config/versions/9849eb6d381a_add_prop_and_scenery_types.py
Dismissed
Show dismissed
Hide dismissed
Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.18.1 to 1.18.2. - [Release notes](https://github.com/sqlalchemy/alembic/releases) - [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES) - [Commits](https://github.com/sqlalchemy/alembic/commits) --- updated-dependencies: - dependency-name: alembic dependency-version: 1.18.2 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>
…ching (#890) Converts sequential await chains to parallel Promise.all calls in 10 Vue components, significantly improving page load times by running independent API calls concurrently. High priority refactors (largest impact): - ScriptEditor.vue: 14 sequential awaits → parallel groups - CueEditor.vue: 13 sequential awaits → parallel groups - ConfigMics.vue: 6 sequential awaits → single Promise.all Medium priority refactors: - ConfigSystem.vue: 4 parallel fetches - ConfigCharacters.vue: 2 parallel fetches - CharacterGroups.vue: 2 parallel fetches - PropsList.vue: 2 parallel fetches - SceneryList.vue: 2 parallel fetches Additional optimizations: - App.vue: Parallelize RBAC roles with WebSocket state check; parallelize user RBAC and settings after user fetch - ShowLiveView.vue: Parallelize session data and act list fetches Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Fix duplicate HTML IDs across Vue modal components Resolves SonarQube reliability issues by ensuring unique HTML IDs in components with both 'add' and 'edit' modals. Each form element now uses context-specific prefixes (new-/edit-) to prevent accessibility issues and JavaScript selector conflicts. Also adds explanatory comment to intentionally empty catch block in ServerSelector.vue URL validator. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix duplicate HTML IDs in SceneryList.vue Add unique prefixes to form element IDs in the new-scenery-type, edit-scenery-type, new-scenery, and edit-scenery modals. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Reduce code duplication to pass SonarQube quality gate Centralize duplicated error messages and form validation code to reduce duplication from 4.87% to below the 3% threshold. Backend changes: - Add controllers/api/constants.py with 40+ standardized error messages - Update 17 controller files to use shared constants - Update 2 test files with improved error message format Frontend changes: - Add mixins/formValidationMixin.js with reusable validation methods - Update 9 Vue components to use the shared mixin Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix Python formatting in tags.py Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Reduce duplication in stage direction style validation Extract common validation logic into validate_style_fields() helper function to reduce code duplication between post() and patch() methods. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Reduce code duplication in stage and override controllers Extract common patterns to reduce SonarQube duplication metrics: - Create helpers.py with shared allocation CRUD logic for props/scenery - Extract handle_override_patch/delete helpers in overrides.py - Update props.py and scenery.py to use shared helpers Net reduction of ~247 lines while preserving all functionality. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Extract type controller CRUD helpers to reduce duplication Add handle_type_post, handle_type_patch, handle_type_delete helpers and update PropsTypesController and SceneryTypesController to use them. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Simplify form validation mixin API Remove validateNewState and validateEditState convenience wrappers. Components now call getValidationState directly with the form state key. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.18.2 to 1.18.3. - [Release notes](https://github.com/sqlalchemy/alembic/releases) - [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES) - [Commits](https://github.com/sqlalchemy/alembic/commits) --- updated-dependencies: - dependency-name: alembic dependency-version: 1.18.3 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>
* Add plans directory to ignore file * Add scene change plan modal * Add stage timeline tab * Fix SonarQube quality gate issues in StageTimeline - Consolidate generateBarsForProp and generateBarsForScenery into single generateBarsForItem method to reduce code duplication (5.2% -> under 3%) - Add formatSceneRange helper to fix "unexpected negated condition" issues - Reduces bundle size slightly due to code consolidation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Reduce code duplication by extracting shared timeline styles Extract ~110 lines of duplicate CSS from MicTimeline.vue and StageTimeline.vue into a shared timeline.scss stylesheet. Both components now import this shared stylesheet using @use, eliminating the duplication flagged by SonarQube. Changes: - Create client/src/assets/styles/timeline.scss with shared styles - Update MicTimeline.vue to use shared .timeline-container and .timeline-svg classes instead of component-specific names - Update StageTimeline.vue similarly - Reduce duplicated lines from 51 (5.35%) to well below the 3% threshold Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Refactor applyExportStyles to eliminate code duplication Replace repetitive querySelectorAll/forEach/setAttribute blocks with a data-driven approach using a styles configuration object. This reduces the duplicated lines flagged by SonarQube in the mixin. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
3 tasks
This adds comprehensive user documentation for the new stage management features including crew, props, scenery, allocations, timeline, and the live Stage Manager pane. New documentation: - docs/pages/show_config/stage_management.md - Full guide for Staging tab - Updated show_config.md to link to stage management docs - Updated live_show.md with Stage Manager Pane section Screenshots added: - Crew tab (empty and with data) - Scenery tab (empty and with data) - Props tab (empty and with data) - Stage Manager allocations view - Stage Timeline view - Live Stage Manager pane Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [pyjwt[crypto]](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.11.0. - [Release notes](https://github.com/jpadilla/pyjwt/releases) - [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst) - [Commits](jpadilla/pyjwt@2.10.1...2.11.0) --- updated-dependencies: - dependency-name: pyjwt[crypto] dependency-version: 2.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.18.3 to 1.18.4. - [Release notes](https://github.com/sqlalchemy/alembic/releases) - [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES) - [Commits](https://github.com/sqlalchemy/alembic/commits) --- updated-dependencies: - dependency-name: alembic dependency-version: 1.18.4 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>
* Bump ruff from 0.14.14 to 0.15.0 in /server Bumps [ruff](https://github.com/astral-sh/ruff) from 0.14.14 to 0.15.0. - [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.14.14...0.15.0) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Fix ruff 0.15.0 lint and formatting violations Address newly stabilized rules and 2026 formatter style: - PLW0108: Add noqa for Marshmallow forward-reference lambda in schemas.py - PLC0207: Add maxsplit=1 to str.split() in version_checker.py - Parenthesize multi-line ternary in lambda for 2026 format style Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tim Bradgate <timbradgate@hotmail.co.uk> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1. Allow users to select log level from settings UI dropdown 2. Fix DB logging config to remove handler when turned off
…#925) - Upgrade checkout@v3 and setup-node@v3 to v4 in nodelint.yml - Regenerate electron/package-lock.json on Linux to add missing optional dependency entries (encoding@0.1.13, iconv-lite@0.6.3) required by minipass-fetch but omitted when generated on macOS Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: Implement client-side logging with a new server endpoint, configurable settings, and dedicated tests. * Lint and format * Fix client_log_level missing regen_logging callback + add help_text to file settings - `client_log_level` was defined without a callback_fn, so changing the level at runtime via the settings UI would update the frontend (which reads SETTINGS dynamically on each log call) but leave the Python client_logger frozen at its startup level, silently dropping messages. Added `self._application.regen_logging` as the 5th positional arg to match the pattern used by `log_level` and the other client_log_* settings. - Added `help_text` to `client_log_path`, `client_max_log_mb`, and `client_log_backups` to match the style used by `client_log_enabled` and `client_log_level`. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix client log level name mismatch and add per-user console log level setting - Fix client_log_level setting to use loglevel npm names (TRACE/DEBUG/INFO/WARN/ERROR) instead of Python logging names, and update help text/display name for clarity - Add CLIENT_LEVEL_MAP and map_client_level() to translate loglevel npm names to Python logging integers, fixing WARN→WARNING and TRACE→5 mappings - Use map_client_level() in process_logs() replacing getattr() which silently fell back to INFO for unrecognised names like TRACE - Add console_log_level to UserSettings model (non-nullable, default WARN) with a CHECK constraint restricting values to valid loglevel names - Add Alembic migration for the new column with server_default and check constraint - Add store.watch() in initRemoteLogging() to reactively apply the user's console_log_level preference to loglevel without persisting to localStorage - Add console log level selector to user settings UI with tooltip help text - Add 9 unit tests for map_client_level() covering all named levels, case-insensitivity, and unknown level fallback Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: Add in-browser log viewer with SSE live streaming Adds a "Logs" tab to the admin config page providing a terminal-style log console backed by an in-memory circular buffer (LogBufferHandler). Key components: - LogBufferHandler: deque-backed handler with pub/sub for live delivery - GET /api/v1/logs/view: paginated snapshot with level/search/username filters - GET /api/v1/logs/stream: SSE endpoint with backfill + real-time push - ConfigLogs.vue: dark console UI; uses fetch()+ReadableStream for SSE so http-interceptor.js handles auth automatically; sliding window keeps at most "Max lines" entries in memory during live streaming - 42 backend tests covering buffer behaviour, auth, filters, and SSE backfill Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.1 to 0.15.2. - [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.1...0.15.2) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.15.2 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>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.2 to 0.15.4. - [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.2...0.15.4) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.15.4 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> Co-authored-by: Tim Bradgate <timbradgate@hotmail.co.uk>
…de PRs The update-types ignore condition only applies to version updates, not security updates. Dependabot was raising PRs to upgrade Vue 2→3 via grouped security update PRs (which bypass update-types filters and always target the default branch). Add explicit versions conditions for vue, vue-router, and vuex to block these upgrades from both update types. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



No description provided.