cjm-transcript-segment-align 0.0.13__tar.gz → 0.0.14__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.14}/PKG-INFO +14 -13
  2. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/README.md +13 -12
  3. cjm_transcript_segment_align-0.0.14/cjm_transcript_segment_align/__init__.py +1 -0
  4. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/step_renderer.py +24 -0
  5. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14/cjm_transcript_segment_align.egg-info}/PKG-INFO +14 -13
  6. cjm_transcript_segment_align-0.0.13/cjm_transcript_segment_align/__init__.py +0 -1
  7. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/LICENSE +0 -0
  8. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/MANIFEST.in +0 -0
  9. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/_modidx.py +0 -0
  10. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/__init__.py +0 -0
  11. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/handlers.py +0 -0
  12. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/helpers.py +0 -0
  13. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/keyboard_config.py +0 -0
  14. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/sync_controls.py +0 -0
  15. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/components/toolbar_state.py +0 -0
  16. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/html_ids.py +0 -0
  17. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/models.py +0 -0
  18. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/routes/__init__.py +0 -0
  19. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/routes/chrome.py +0 -0
  20. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/routes/forced_alignment.py +0 -0
  21. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/routes/init.py +0 -0
  22. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/services/__init__.py +0 -0
  23. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align/services/forced_alignment.py +0 -0
  24. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/cjm_transcript_segment_align.egg-info/SOURCES.txt +0 -0
  25. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/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.14}/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.14}/cjm_transcript_segment_align.egg-info/requires.txt +0 -0
  28. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/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.14}/pyproject.toml +0 -0
  30. {cjm_transcript_segment_align-0.0.13 → cjm_transcript_segment_align-0.0.14}/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.14
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
@@ -72,36 +72,36 @@ graph LR
72
72
  routes_init[routes.init<br/>routes/init]
73
73
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
74
74
 
75
- components_handlers --> components_sync_controls
76
- components_handlers --> routes_forced_alignment
77
- components_handlers --> components_step_renderer
78
75
  components_handlers --> services_forced_alignment
79
76
  components_handlers --> components_keyboard_config
77
+ components_handlers --> components_step_renderer
78
+ components_handlers --> routes_forced_alignment
79
+ components_handlers --> components_sync_controls
80
80
  components_handlers --> html_ids
81
81
  components_keyboard_config --> components_sync_controls
82
82
  components_keyboard_config --> html_ids
83
+ components_step_renderer --> components_keyboard_config
83
84
  components_step_renderer --> components_helpers
85
+ components_step_renderer --> components_sync_controls
84
86
  components_step_renderer --> components_toolbar_state
85
87
  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
90
  routes_chrome --> components_handlers
91
- routes_chrome --> html_ids
92
91
  routes_chrome --> components_step_renderer
92
+ routes_chrome --> html_ids
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
96
+ routes_init --> components_step_renderer
97
+ routes_init --> services_forced_alignment
98
98
  routes_init --> components_handlers
99
+ routes_init --> routes_forced_alignment
100
+ routes_init --> routes_chrome
99
101
  routes_init --> components_keyboard_config
100
- routes_init --> services_forced_alignment
101
- routes_init --> components_step_renderer
102
- routes_init --> html_ids
102
+ routes_init --> models
103
103
  routes_init --> components_sync_controls
104
- routes_init --> routes_chrome
104
+ routes_init --> html_ids
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
@@ -47,36 +47,36 @@ graph LR
47
47
  routes_init[routes.init<br/>routes/init]
48
48
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
49
49
 
50
- components_handlers --> components_sync_controls
51
- components_handlers --> routes_forced_alignment
52
- components_handlers --> components_step_renderer
53
50
  components_handlers --> services_forced_alignment
54
51
  components_handlers --> components_keyboard_config
52
+ components_handlers --> components_step_renderer
53
+ components_handlers --> routes_forced_alignment
54
+ components_handlers --> components_sync_controls
55
55
  components_handlers --> html_ids
56
56
  components_keyboard_config --> components_sync_controls
57
57
  components_keyboard_config --> html_ids
58
+ components_step_renderer --> components_keyboard_config
58
59
  components_step_renderer --> components_helpers
60
+ components_step_renderer --> components_sync_controls
59
61
  components_step_renderer --> components_toolbar_state
60
62
  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
65
  routes_chrome --> components_handlers
66
- routes_chrome --> html_ids
67
66
  routes_chrome --> components_step_renderer
67
+ routes_chrome --> html_ids
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
71
+ routes_init --> components_step_renderer
72
+ routes_init --> services_forced_alignment
73
73
  routes_init --> components_handlers
74
+ routes_init --> routes_forced_alignment
75
+ routes_init --> routes_chrome
74
76
  routes_init --> components_keyboard_config
75
- routes_init --> services_forced_alignment
76
- routes_init --> components_step_renderer
77
- routes_init --> html_ids
77
+ routes_init --> models
78
78
  routes_init --> components_sync_controls
79
- routes_init --> routes_chrome
79
+ routes_init --> html_ids
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.14"
@@ -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.14
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
@@ -72,36 +72,36 @@ graph LR
72
72
  routes_init[routes.init<br/>routes/init]
73
73
  services_forced_alignment[services.forced_alignment<br/>forced_alignment]
74
74
 
75
- components_handlers --> components_sync_controls
76
- components_handlers --> routes_forced_alignment
77
- components_handlers --> components_step_renderer
78
75
  components_handlers --> services_forced_alignment
79
76
  components_handlers --> components_keyboard_config
77
+ components_handlers --> components_step_renderer
78
+ components_handlers --> routes_forced_alignment
79
+ components_handlers --> components_sync_controls
80
80
  components_handlers --> html_ids
81
81
  components_keyboard_config --> components_sync_controls
82
82
  components_keyboard_config --> html_ids
83
+ components_step_renderer --> components_keyboard_config
83
84
  components_step_renderer --> components_helpers
85
+ components_step_renderer --> components_sync_controls
84
86
  components_step_renderer --> components_toolbar_state
85
87
  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
90
  routes_chrome --> components_handlers
91
- routes_chrome --> html_ids
92
91
  routes_chrome --> components_step_renderer
92
+ routes_chrome --> html_ids
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
96
+ routes_init --> components_step_renderer
97
+ routes_init --> services_forced_alignment
98
98
  routes_init --> components_handlers
99
+ routes_init --> routes_forced_alignment
100
+ routes_init --> routes_chrome
99
101
  routes_init --> components_keyboard_config
100
- routes_init --> services_forced_alignment
101
- routes_init --> components_step_renderer
102
- routes_init --> html_ids
102
+ routes_init --> models
103
103
  routes_init --> components_sync_controls
104
- routes_init --> routes_chrome
104
+ routes_init --> html_ids
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"