cjm-transcript-segment-align 0.0.13__tar.gz → 0.0.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. {cjm_transcript_segment_align-0.0.13/cjm_transcript_segment_align.egg-info → cjm_transcript_segment_align-0.0.15}/PKG-INFO +13 -12
  2. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/README.md +12 -11
  3. cjm_transcript_segment_align-0.0.15/cjm_transcript_segment_align/__init__.py +1 -0
  4. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/helpers.py +1 -0
  5. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/step_renderer.py +24 -0
  6. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15/cjm_transcript_segment_align.egg-info}/PKG-INFO +13 -12
  7. cjm_transcript_segment_align-0.0.13/cjm_transcript_segment_align/__init__.py +0 -1
  8. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/LICENSE +0 -0
  9. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/MANIFEST.in +0 -0
  10. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/_modidx.py +0 -0
  11. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/__init__.py +0 -0
  12. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/handlers.py +0 -0
  13. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/keyboard_config.py +0 -0
  14. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/sync_controls.py +0 -0
  15. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/components/toolbar_state.py +0 -0
  16. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/html_ids.py +0 -0
  17. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/models.py +0 -0
  18. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/routes/__init__.py +0 -0
  19. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/routes/chrome.py +0 -0
  20. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/routes/forced_alignment.py +0 -0
  21. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/routes/init.py +0 -0
  22. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/services/__init__.py +0 -0
  23. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align/services/forced_alignment.py +0 -0
  24. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align.egg-info/SOURCES.txt +0 -0
  25. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align.egg-info/dependency_links.txt +0 -0
  26. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align.egg-info/entry_points.txt +0 -0
  27. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align.egg-info/requires.txt +0 -0
  28. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/cjm_transcript_segment_align.egg-info/top_level.txt +0 -0
  29. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/pyproject.toml +0 -0
  30. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.15}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cjm-transcript-segment-align
3
- Version: 0.0.13
3
+ Version: 0.0.15
4
4
  Summary: FastHTML dual-column text segmentation & VAD alignment UI for transcript decomposition workflows with forced alignment-based text splitting for aligning text segments with VAD chunks.
5
5
  Author-email: "Christian J. Mills" <9126128+cj-mills@users.noreply.github.com>
6
6
  License: Apache-2.0
@@ -73,35 +73,35 @@ graph LR
73
73
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
74
74
 
75
75
  components_handlers --> components_sync_controls
76
- components_handlers --> routes_forced_alignment
76
+ components_handlers --> components_keyboard_config
77
77
  components_handlers --> components_step_renderer
78
78
  components_handlers --> services_forced_alignment
79
- components_handlers --> components_keyboard_config
79
+ components_handlers --> routes_forced_alignment
80
80
  components_handlers --> html_ids
81
- components_keyboard_config --> components_sync_controls
82
81
  components_keyboard_config --> html_ids
82
+ components_keyboard_config --> components_sync_controls
83
+ components_step_renderer --> components_sync_controls
84
+ components_step_renderer --> components_keyboard_config
85
+ components_step_renderer --> html_ids
83
86
  components_step_renderer --> components_helpers
84
87
  components_step_renderer --> components_toolbar_state
85
- components_step_renderer --> html_ids
86
- components_step_renderer --> components_keyboard_config
87
- components_step_renderer --> components_sync_controls
88
88
  components_toolbar_state --> components_sync_controls
89
89
  routes_chrome --> components_sync_controls
90
+ routes_chrome --> components_step_renderer
90
91
  routes_chrome --> components_handlers
91
92
  routes_chrome --> html_ids
92
- routes_chrome --> components_step_renderer
93
93
  routes_forced_alignment --> components_sync_controls
94
94
  routes_forced_alignment --> components_step_renderer
95
95
  routes_forced_alignment --> html_ids
96
- routes_init --> routes_forced_alignment
97
- routes_init --> models
98
96
  routes_init --> components_handlers
99
97
  routes_init --> components_keyboard_config
98
+ routes_init --> models
99
+ routes_init --> routes_forced_alignment
100
100
  routes_init --> services_forced_alignment
101
- routes_init --> components_step_renderer
102
- routes_init --> html_ids
103
101
  routes_init --> components_sync_controls
102
+ routes_init --> html_ids
104
103
  routes_init --> routes_chrome
104
+ routes_init --> components_step_renderer
105
105
  ```
106
106
 
107
107
  *30 cross-module dependencies detected*
@@ -891,6 +891,7 @@ def render_combined_step(
891
891
  #### Variables
892
892
 
893
893
  ``` python
894
+ _ALIGN_SYNC_CONFIG
894
895
  DEBUG_COMBINED_RENDER = True
895
896
  _FOOTER_INNER_CLS
896
897
  _SEG_COLUMN_CLS
@@ -48,35 +48,35 @@ graph LR
48
48
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
49
49
 
50
50
  components_handlers --> components_sync_controls
51
- components_handlers --> routes_forced_alignment
51
+ components_handlers --> components_keyboard_config
52
52
  components_handlers --> components_step_renderer
53
53
  components_handlers --> services_forced_alignment
54
- components_handlers --> components_keyboard_config
54
+ components_handlers --> routes_forced_alignment
55
55
  components_handlers --> html_ids
56
- components_keyboard_config --> components_sync_controls
57
56
  components_keyboard_config --> html_ids
57
+ components_keyboard_config --> components_sync_controls
58
+ components_step_renderer --> components_sync_controls
59
+ components_step_renderer --> components_keyboard_config
60
+ components_step_renderer --> html_ids
58
61
  components_step_renderer --> components_helpers
59
62
  components_step_renderer --> components_toolbar_state
60
- components_step_renderer --> html_ids
61
- components_step_renderer --> components_keyboard_config
62
- components_step_renderer --> components_sync_controls
63
63
  components_toolbar_state --> components_sync_controls
64
64
  routes_chrome --> components_sync_controls
65
+ routes_chrome --> components_step_renderer
65
66
  routes_chrome --> components_handlers
66
67
  routes_chrome --> html_ids
67
- routes_chrome --> components_step_renderer
68
68
  routes_forced_alignment --> components_sync_controls
69
69
  routes_forced_alignment --> components_step_renderer
70
70
  routes_forced_alignment --> html_ids
71
- routes_init --> routes_forced_alignment
72
- routes_init --> models
73
71
  routes_init --> components_handlers
74
72
  routes_init --> components_keyboard_config
73
+ routes_init --> models
74
+ routes_init --> routes_forced_alignment
75
75
  routes_init --> services_forced_alignment
76
- routes_init --> components_step_renderer
77
- routes_init --> html_ids
78
76
  routes_init --> components_sync_controls
77
+ routes_init --> html_ids
79
78
  routes_init --> routes_chrome
79
+ routes_init --> components_step_renderer
80
80
  ```
81
81
 
82
82
  *30 cross-module dependencies detected*
@@ -866,6 +866,7 @@ def render_combined_step(
866
866
  #### Variables
867
867
 
868
868
  ``` python
869
+ _ALIGN_SYNC_CONFIG
869
870
  DEBUG_COMBINED_RENDER = True
870
871
  _FOOTER_INNER_CLS
871
872
  _SEG_COLUMN_CLS
@@ -0,0 +1 @@
1
+ __version__ = "0.0.15"
@@ -66,6 +66,7 @@ def extract_alignment_state(
66
66
  "media_paths": state.get("media_paths", []),
67
67
  "audio_duration": state.get("audio_duration"),
68
68
  "is_auto_mode": state.get("is_auto_mode", False),
69
+ "playback_speed": state.get("playback_speed", 1.0),
69
70
  }
70
71
 
71
72
  # %% ../../nbs/components/helpers.ipynb #a3b4c5d6
@@ -39,6 +39,11 @@ from cjm_fasthtml_card_stack.components.states import render_loading_state
39
39
  from cjm_fasthtml_card_stack.components.settings_modal import render_card_stack_settings_modal
40
40
  from cjm_fasthtml_card_stack.core.constants import DEFAULT_VISIBLE_COUNT, DEFAULT_CARD_WIDTH
41
41
 
42
+ # Web Audio library — for page-level initial speed sync (fires even before user
43
+ # switches to the align toolbar, since the align toolbar isn't initially in the DOM)
44
+ from cjm_fasthtml_web_audio.models import WebAudioConfig
45
+ from cjm_fasthtml_web_audio.components import render_initial_speed_sync
46
+
42
47
  # Local imports
43
48
  # HTML IDs (page-specific)
44
49
  from ..html_ids import CombinedHtmlIds
@@ -85,6 +90,16 @@ from cjm_transcript_segment_align.components.sync_controls import (
85
90
  )
86
91
  from .toolbar_state import generate_toolbar_restore_js
87
92
 
93
+ # Config for render_initial_speed_sync — only `namespace` and `enable_speed` are read.
94
+ # The align speed selector lives in the chrome toolbar, which isn't rendered when the
95
+ # seg column is the initial active column. This page-level sync ensures the align JS
96
+ # state reflects persisted speed even before the user switches toolbars.
97
+ _ALIGN_SYNC_CONFIG = WebAudioConfig(
98
+ namespace="align",
99
+ indicator_selector="",
100
+ enable_speed=True,
101
+ )
102
+
88
103
  # Debug flag for combined step rendering tracing (set False in production)
89
104
  DEBUG_COMBINED_RENDER = True
90
105
 
@@ -508,6 +523,14 @@ def render_combined_step(
508
523
  should_play_script = Script(generate_should_play_js())
509
524
  toolbar_restore_script = generate_toolbar_restore_js()
510
525
 
526
+ # Page-level initial-speed sync for the align column. Fires even when the align
527
+ # toolbar isn't the initial active toolbar, so persisted speed applies on first
528
+ # chunk playback without the user needing to switch chrome first. No-op at 1.0x.
529
+ align_initial_speed_sync = render_initial_speed_sync(
530
+ _ALIGN_SYNC_CONFIG,
531
+ align_state.get("playback_speed", 1.0),
532
+ ) if is_align_init else Script("")
533
+
511
534
  if is_seg_init:
512
535
  segments = seg_state["segments"]
513
536
  focused_index = seg_state["focused_index"]
@@ -647,6 +670,7 @@ def render_combined_step(
647
670
  sync_script,
648
671
  should_play_script,
649
672
  toolbar_restore_script,
673
+ align_initial_speed_sync, # Sync JS playbackSpeed to persisted align state on step load
650
674
  chrome_switch_btn,
651
675
  active_column_input,
652
676
  settings_modals_container, # Both settings modals persist in DOM
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cjm-transcript-segment-align
3
- Version: 0.0.13
3
+ Version: 0.0.15
4
4
  Summary: FastHTML dual-column text segmentation & VAD alignment UI for transcript decomposition workflows with forced alignment-based text splitting for aligning text segments with VAD chunks.
5
5
  Author-email: "Christian J. Mills" <9126128+cj-mills@users.noreply.github.com>
6
6
  License: Apache-2.0
@@ -73,35 +73,35 @@ graph LR
73
73
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
74
74
 
75
75
  components_handlers --> components_sync_controls
76
- components_handlers --> routes_forced_alignment
76
+ components_handlers --> components_keyboard_config
77
77
  components_handlers --> components_step_renderer
78
78
  components_handlers --> services_forced_alignment
79
- components_handlers --> components_keyboard_config
79
+ components_handlers --> routes_forced_alignment
80
80
  components_handlers --> html_ids
81
- components_keyboard_config --> components_sync_controls
82
81
  components_keyboard_config --> html_ids
82
+ components_keyboard_config --> components_sync_controls
83
+ components_step_renderer --> components_sync_controls
84
+ components_step_renderer --> components_keyboard_config
85
+ components_step_renderer --> html_ids
83
86
  components_step_renderer --> components_helpers
84
87
  components_step_renderer --> components_toolbar_state
85
- components_step_renderer --> html_ids
86
- components_step_renderer --> components_keyboard_config
87
- components_step_renderer --> components_sync_controls
88
88
  components_toolbar_state --> components_sync_controls
89
89
  routes_chrome --> components_sync_controls
90
+ routes_chrome --> components_step_renderer
90
91
  routes_chrome --> components_handlers
91
92
  routes_chrome --> html_ids
92
- routes_chrome --> components_step_renderer
93
93
  routes_forced_alignment --> components_sync_controls
94
94
  routes_forced_alignment --> components_step_renderer
95
95
  routes_forced_alignment --> html_ids
96
- routes_init --> routes_forced_alignment
97
- routes_init --> models
98
96
  routes_init --> components_handlers
99
97
  routes_init --> components_keyboard_config
98
+ routes_init --> models
99
+ routes_init --> routes_forced_alignment
100
100
  routes_init --> services_forced_alignment
101
- routes_init --> components_step_renderer
102
- routes_init --> html_ids
103
101
  routes_init --> components_sync_controls
102
+ routes_init --> html_ids
104
103
  routes_init --> routes_chrome
104
+ routes_init --> components_step_renderer
105
105
  ```
106
106
 
107
107
  *30 cross-module dependencies detected*
@@ -891,6 +891,7 @@ def render_combined_step(
891
891
  #### Variables
892
892
 
893
893
  ``` python
894
+ _ALIGN_SYNC_CONFIG
894
895
  DEBUG_COMBINED_RENDER = True
895
896
  _FOOTER_INNER_CLS
896
897
  _SEG_COLUMN_CLS
@@ -1 +0,0 @@
1
- __version__ = "0.0.13"