Skip to content

Conversation

@Tim020
Copy link
Contributor

@Tim020 Tim020 commented Dec 27, 2025

No description provided.

Tim020 and others added 14 commits December 18, 2025 00:57
* Add script revision branch graph visualization with bug fixes

This commit adds a visual revision graph to the script configuration page,
allowing users to see the branching structure of script revisions and
interact with them through a dedicated detail modal.

Features:
- Interactive D3-based tree graph showing revision hierarchy
- Click nodes to view detailed revision information in modal
- Create new branches from any revision
- Load any revision as current
- Pan/zoom controls for graph navigation
- Collapsible graph card to save screen space
- Responsive SVG sizing to fill container width

Components:
- RevisionGraph.vue: D3-based visualization component
- RevisionDetailModal.vue: Revision detail and action modal
- Updated ConfigScript.vue with graph integration and branch creation

Bug fixes:
- Fixed card padding visible when collapsed
- Fixed node vibration on hover (removed transform, used filter effects)
- Fixed current revision color staying green on hover
- Fixed modal only opening once (switched to programmatic $bvModal API)
- Fixed Create Branch button using non-existent msgBoxPrompt
- Fixed parent_revision_id not being sent in branch creation payload
- Fixed pan/zoom controls not working (added lazy initialization)
- Fixed graph width too narrow (made SVG responsive to container)

Database:
- Added migration to fix orphaned revisions (links to initial revision)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* Fix formatting and upate pylint github workflow

* Add user documentation for revision branch graph feature

Updated script_config.md with comprehensive documentation covering:
- Visual representation of revision hierarchy
- Node color coding (blue/green for regular/current revisions)
- Interactive features (clicking nodes, pan/zoom controls)
- Creating branches from any revision point
- Modal interactions for revision details and branch creation

Added screenshots:
- script_revision_graph_branched.png - Graph showing branching structure
- script_revision_detail_modal.png - Revision detail modal
- script_create_branch_modal.png - Branch creation interface
- script_revision_graph_single.png - Single revision view

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.14.9 to 0.14.10.
- [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.9...0.14.10)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.14.10
  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>
1. Default to the first mic in the dropdown in edit mode, if there are any
2. Hide mic dropdown & save button in view mode
This commit implements the foundation for microphone conflict detection
and visualization:

Created /client/src/js/micConflictUtils.js:
- buildSceneGraph(): Traverses linked list structure to create scene graph
  with adjacency information for both same-act and cross-act boundaries
- getAdjacentScenes(): Returns adjacent scenes with same/cross-act distinction
- areScenesInSameAct(): Checks if two scenes are in the same act
- isSameCastMember(): Cast-aware conflict checking (same actor playing
  different characters = no conflict)
- getConflictSeverity(): Classifies conflicts as WARNING (same act) or
  INFO (cross-act)
- detectMicConflicts(): Main detection algorithm that finds all conflicts
  in allocation data

Modified /client/src/store/modules/show.js:
- Added import for micConflictUtils functions
- Added 7 new Vuex getters:
  - ORDERED_SCENES: Scenes in performance order via linked list traversal
  - SCENE_ADJACENCY_MAP: Scene graph with adjacency metadata
  - MIC_CONFLICTS: Detected conflicts with severity classification
  - CONFLICTS_BY_SCENE: Conflicts indexed by scene ID
  - CONFLICTS_BY_MIC: Conflicts indexed by microphone ID
  - MIC_TIMELINE_DATA: Formatted data for D3 timeline visualization
  - SCENE_DENSITY_DATA: Microphone count per scene for heatmap

Testing Infrastructure:
Created /client/src/js/micConflictUtils.test.js:
- 34 comprehensive unit tests covering all pure functions
- Tests edge cases: empty data, single/multiple acts, cross-act boundaries
- Tests cast-aware conflict detection with various scenarios
- Tests conflict severity classification and indexing

Added /client/vitest.config.js:
- Vitest configuration with jsdom environment
- JUnit XML reporter for CI/CD integration
- Path alias support (@/ -> ./src)

Modified /client/package.json:
- Added Vitest, @vitest/ui, jsdom, @vue/test-utils dependencies
- Added test scripts: test, test:ui, test:run

Created /.github/workflows/client-test.yml:
- GitHub Actions workflow for running client unit tests on PRs
- Publishes test results using EnricoMi/publish-unit-test-result-action
- Generates visual test report in PR checks

Modified /client/.gitignore:
- Added junit/ directory to ignore test output files

Implementation notes:
- Pure utility functions with no Vue/Vuex dependencies for testability
- Cast-aware: same actor playing multiple characters = no conflict
- Conservative fallback: no cast assignment = different cast members
- Adjacent scenes include both within-act and cross-act boundaries
- Conflict severity: WARNING (tight quick-change within act), INFO
  (interval provides changeover time between acts)
- All 34 tests passing with comprehensive coverage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This phase implements visual conflict highlighting in the microphone allocation
matrix to help identify potential quick-change issues.

Features:
- Visual conflict highlighting on destination scenes (where quick-change occurs)
- Tooltips showing conflict details and severity
- Color-coded severity indicators (danger/warning)
- Detection of same-cast-member assignments to prevent false positives

Implementation details:
- Enhanced MicAllocations.vue with conflict detection and cell styling
- Updated micConflictUtils.js to use nested cast_member.id relationship
- Conflict messages indicate source scene for quick-changes
- Integrated with Phase 5.1 conflict detection utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements a simplified SVG-based timeline visualization showing
microphone allocations across scenes with three view modes:
- By Microphone: Shows which characters use each mic
- By Character: Shows which mics each character uses
- By Cast: Shows which mics each cast member uses

Features:
- Simple scrollable SVG (zoom removed for simplicity)
- Golden ratio-based color generation for distinct entity colors
- Export to PNG functionality
- Responsive bar layout with scene/act labels
- Dynamic color assignment ensures unique colors per entity

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Previously, both Python and Client test workflows used the same
default check name "Test Results", causing the last-finished job
to overwrite the other's results. This resulted in PRs only showing
34 client tests instead of the full 161 tests (127 server + 34 client).

Changes:
- Add check_name: 'Python Test Results' to python-test.yml
- Add check_name: 'Client Test Results' to client-test.yml

This ensures both test suites report their results separately on PRs,
providing complete visibility into all 161 tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements a bar chart visualization showing microphone density per
scene, helping sound crews identify technically complex scenes that
require extra attention during rehearsal and performance.

Features:
- Color-coded bars from blue (low) to red (high) density
- Act-grouped layout for easy navigation
- Summary statistics: avg mics/scene, peak usage, total active mics
- Interactive bars with tooltips and click events
- Responsive legend showing density scale
- Integrated as "Density" tab in Mics configuration

The heatmap calculates the number of unique microphones allocated in
each scene and visualizes this using HSL color scaling for optimal
visual distinction across the full range of densities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements a comprehensive dashboard showing microphone allocation
status across all scenes, helping sound crews with resource planning
and inventory management.

Features:
- Summary statistics: total mics, peak usage, conflicts, utilization
- Scene-by-scene breakdown with status badges
- Color-coded mic status grid per scene:
  - Green: Available microphones
  - Blue: In use (shows character name)
  - Red: Conflicting allocations (with pulse animation)
- Interactive mic cards with click events and tooltips
- Responsive grid layout adapts to screen size
- Integrated as "Availability" tab in Mics configuration

The dashboard calculates resource utilization by analyzing all mic
allocations across scenes and cross-references with the conflict
detection system to highlight problematic assignments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Document conflict detection with orange/blue highlighting
- Add comprehensive Timeline view documentation (3 view modes)
- Document Scene Density Heatmap features and interpretation
- Add Resource Availability Dashboard documentation
- Include 4 new screenshots showing all features

Fix: Correct conflict detection in ResourceAvailability component
- Use correct property names (micId, sceneId, adjacentSceneId)
- Filter conflicts by scene ID instead of nested scenes array

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements issue #796 to support assigning multiple microphones to a single character in a scene. This enables primary/backup microphone configurations for lead characters who aren't offstage long enough to swap mic packs.

Changes:
- Remove validation preventing multiple mics per character in MicAllocations.vue
- Update view mode to display comma-separated mic names
- Enhance conflict tooltips to show per-mic conflict details
- Update Timeline 'By Character' and 'By Cast' modes to display stacked bars
- Add documentation for multi-mic feature and use cases

Maintains constraint that one mic can only be assigned to one character per scene. Conflict detection tracks conflicts individually per microphone.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
@Tim020 Tim020 added the release Pull requests for creating a new release label Dec 27, 2025
@github-actions github-actions bot added documentation Improvements or additions to documentation github GitHub actions related issue or pull request client Pull requests changing front end code server Pull requests changing back end code xlarge-diff idea git labels Dec 27, 2025
@github-actions
Copy link

github-actions bot commented Dec 27, 2025

Python Test Results

  1 files    1 suites   14s ⏱️
127 tests 127 ✅ 0 💤 0 ❌
132 runs  132 ✅ 0 💤 0 ❌

Results for commit d9f8e7b.

♻️ This comment has been updated with latest results.

@github-actions
Copy link

Client Test Results

34 tests   34 ✅  0s ⏱️
 1 suites   0 💤
 1 files     0 ❌

Results for commit d9f8e7b.

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 documentation Improvements or additions to documentation git github GitHub actions related issue or pull request idea 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.

2 participants