meeting-noter 1.3.0__py3-none-any.whl → 3.0.0__py3-none-any.whl
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.
- meeting_noter/__init__.py +1 -1
- meeting_noter/cli.py +103 -0
- meeting_noter/daemon.py +38 -0
- meeting_noter/gui/__init__.py +51 -0
- meeting_noter/gui/main_window.py +219 -0
- meeting_noter/gui/menubar.py +248 -0
- meeting_noter/gui/screens/__init__.py +17 -0
- meeting_noter/gui/screens/dashboard.py +262 -0
- meeting_noter/gui/screens/logs.py +184 -0
- meeting_noter/gui/screens/recordings.py +279 -0
- meeting_noter/gui/screens/search.py +229 -0
- meeting_noter/gui/screens/settings.py +232 -0
- meeting_noter/gui/screens/viewer.py +140 -0
- meeting_noter/gui/theme/__init__.py +5 -0
- meeting_noter/gui/theme/dark_theme.py +53 -0
- meeting_noter/gui/theme/styles.qss +504 -0
- meeting_noter/gui/utils/__init__.py +15 -0
- meeting_noter/gui/utils/signals.py +82 -0
- meeting_noter/gui/utils/workers.py +258 -0
- meeting_noter/gui/widgets/__init__.py +6 -0
- meeting_noter/gui/widgets/sidebar.py +210 -0
- meeting_noter/gui/widgets/status_indicator.py +108 -0
- meeting_noter/mic_monitor.py +29 -1
- meeting_noter/ui/__init__.py +5 -0
- meeting_noter/ui/app.py +68 -0
- meeting_noter/ui/screens/__init__.py +17 -0
- meeting_noter/ui/screens/logs.py +166 -0
- meeting_noter/ui/screens/main.py +346 -0
- meeting_noter/ui/screens/recordings.py +241 -0
- meeting_noter/ui/screens/search.py +191 -0
- meeting_noter/ui/screens/settings.py +184 -0
- meeting_noter/ui/screens/viewer.py +116 -0
- meeting_noter/ui/styles/app.tcss +257 -0
- meeting_noter/ui/widgets/__init__.py +1 -0
- {meeting_noter-1.3.0.dist-info → meeting_noter-3.0.0.dist-info}/METADATA +4 -1
- meeting_noter-3.0.0.dist-info/RECORD +65 -0
- meeting_noter-1.3.0.dist-info/RECORD +0 -35
- {meeting_noter-1.3.0.dist-info → meeting_noter-3.0.0.dist-info}/WHEEL +0 -0
- {meeting_noter-1.3.0.dist-info → meeting_noter-3.0.0.dist-info}/entry_points.txt +0 -0
- {meeting_noter-1.3.0.dist-info → meeting_noter-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Transcript viewer screen for Meeting Noter."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from datetime import datetime
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from textual.app import ComposeResult
|
|
9
|
+
from textual.containers import Container, Horizontal
|
|
10
|
+
from textual.screen import Screen
|
|
11
|
+
from textual.widgets import Button, Label, Static, TextArea
|
|
12
|
+
|
|
13
|
+
from meeting_noter.config import get_config
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ViewerScreen(Screen):
|
|
17
|
+
"""Transcript viewer screen."""
|
|
18
|
+
|
|
19
|
+
BINDINGS = [
|
|
20
|
+
("f", "toggle_favorite", "Favorite"),
|
|
21
|
+
("escape", "go_back", "Back"),
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
def __init__(self, transcript_path: Path, *args, **kwargs):
|
|
25
|
+
super().__init__(*args, **kwargs)
|
|
26
|
+
self.transcript_path = transcript_path
|
|
27
|
+
|
|
28
|
+
def compose(self) -> ComposeResult:
|
|
29
|
+
"""Compose the viewer screen layout."""
|
|
30
|
+
config = get_config()
|
|
31
|
+
is_favorite = config.is_favorite(self.transcript_path.name)
|
|
32
|
+
star = "★ " if is_favorite else ""
|
|
33
|
+
|
|
34
|
+
yield Container(
|
|
35
|
+
Static(
|
|
36
|
+
f"[bold]{star}{self.transcript_path.name}[/bold]",
|
|
37
|
+
classes="title",
|
|
38
|
+
),
|
|
39
|
+
Label("", id="file-info"),
|
|
40
|
+
Static("", classes="spacer"),
|
|
41
|
+
TextArea(id="transcript-content", read_only=True),
|
|
42
|
+
Static("", classes="spacer"),
|
|
43
|
+
Horizontal(
|
|
44
|
+
Button(
|
|
45
|
+
"★ Favorite" if not is_favorite else "☆ Unfavorite",
|
|
46
|
+
id="favorite-btn",
|
|
47
|
+
variant="warning" if is_favorite else "default",
|
|
48
|
+
),
|
|
49
|
+
Button("Back", id="back-btn"),
|
|
50
|
+
classes="button-row",
|
|
51
|
+
),
|
|
52
|
+
id="viewer-container",
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def on_mount(self) -> None:
|
|
56
|
+
"""Load transcript content on mount."""
|
|
57
|
+
self._load_transcript()
|
|
58
|
+
|
|
59
|
+
def _load_transcript(self) -> None:
|
|
60
|
+
"""Load the transcript content."""
|
|
61
|
+
info_label = self.query_one("#file-info", Label)
|
|
62
|
+
content_area = self.query_one("#transcript-content", TextArea)
|
|
63
|
+
|
|
64
|
+
if not self.transcript_path.exists():
|
|
65
|
+
info_label.update("[red]File not found[/red]")
|
|
66
|
+
content_area.text = "Transcript file does not exist."
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
# Get file info
|
|
70
|
+
stat = self.transcript_path.stat()
|
|
71
|
+
mod_time = datetime.fromtimestamp(stat.st_mtime)
|
|
72
|
+
date_str = mod_time.strftime("%Y-%m-%d %H:%M")
|
|
73
|
+
size_kb = stat.st_size / 1024
|
|
74
|
+
|
|
75
|
+
info_label.update(f"[dim]Modified: {date_str} | Size: {size_kb:.1f} KB[/dim]")
|
|
76
|
+
|
|
77
|
+
# Load content
|
|
78
|
+
try:
|
|
79
|
+
content = self.transcript_path.read_text(encoding="utf-8")
|
|
80
|
+
content_area.text = content
|
|
81
|
+
except Exception as e:
|
|
82
|
+
content_area.text = f"Error loading file: {e}"
|
|
83
|
+
|
|
84
|
+
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
85
|
+
"""Handle button presses."""
|
|
86
|
+
if event.button.id == "favorite-btn":
|
|
87
|
+
self.action_toggle_favorite()
|
|
88
|
+
elif event.button.id == "back-btn":
|
|
89
|
+
self.action_go_back()
|
|
90
|
+
|
|
91
|
+
def action_toggle_favorite(self) -> None:
|
|
92
|
+
"""Toggle favorite status."""
|
|
93
|
+
config = get_config()
|
|
94
|
+
filename = self.transcript_path.name
|
|
95
|
+
|
|
96
|
+
if config.is_favorite(filename):
|
|
97
|
+
config.remove_favorite(filename)
|
|
98
|
+
self.notify(f"Removed from favorites: {filename}")
|
|
99
|
+
else:
|
|
100
|
+
config.add_favorite(filename)
|
|
101
|
+
self.notify(f"Added to favorites: {filename}")
|
|
102
|
+
|
|
103
|
+
# Update the button
|
|
104
|
+
btn = self.query_one("#favorite-btn", Button)
|
|
105
|
+
is_favorite = config.is_favorite(filename)
|
|
106
|
+
btn.label = "★ Favorite" if not is_favorite else "☆ Unfavorite"
|
|
107
|
+
btn.variant = "warning" if is_favorite else "default"
|
|
108
|
+
|
|
109
|
+
# Update title
|
|
110
|
+
title = self.query_one(".title", Static)
|
|
111
|
+
star = "★ " if is_favorite else ""
|
|
112
|
+
title.update(f"[bold]{star}{filename}[/bold]")
|
|
113
|
+
|
|
114
|
+
def action_go_back(self) -> None:
|
|
115
|
+
"""Go back to the previous screen."""
|
|
116
|
+
self.app.pop_screen()
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/* Meeting Noter TUI Styles */
|
|
2
|
+
|
|
3
|
+
/* Base container styles */
|
|
4
|
+
#main-container,
|
|
5
|
+
#recordings-container,
|
|
6
|
+
#search-container,
|
|
7
|
+
#settings-container,
|
|
8
|
+
#viewer-container,
|
|
9
|
+
#logs-container {
|
|
10
|
+
padding: 1 2;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Title styling */
|
|
14
|
+
.title {
|
|
15
|
+
text-align: center;
|
|
16
|
+
text-style: bold;
|
|
17
|
+
padding: 1 0;
|
|
18
|
+
color: $accent;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Section headers */
|
|
22
|
+
.section-header {
|
|
23
|
+
margin-top: 1;
|
|
24
|
+
margin-bottom: 0;
|
|
25
|
+
color: $text-muted;
|
|
26
|
+
text-align: center;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Spacers */
|
|
30
|
+
.spacer {
|
|
31
|
+
height: 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.spacer-large {
|
|
35
|
+
height: 2;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Main content area */
|
|
39
|
+
.main-content {
|
|
40
|
+
align: center middle;
|
|
41
|
+
padding: 2;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Centered input section */
|
|
45
|
+
.input-section {
|
|
46
|
+
width: auto;
|
|
47
|
+
height: auto;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Centered input rows */
|
|
51
|
+
.centered-input-row {
|
|
52
|
+
height: 3;
|
|
53
|
+
width: auto;
|
|
54
|
+
align: center middle;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.centered-switch-row {
|
|
58
|
+
height: 3;
|
|
59
|
+
width: auto;
|
|
60
|
+
align: center middle;
|
|
61
|
+
margin-top: 1;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.input-label {
|
|
65
|
+
width: 18;
|
|
66
|
+
text-align: right;
|
|
67
|
+
padding-right: 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.meeting-input {
|
|
71
|
+
width: 30;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Centered button rows */
|
|
75
|
+
.centered-button-row {
|
|
76
|
+
height: 3;
|
|
77
|
+
width: auto;
|
|
78
|
+
align: center middle;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.centered-button-row Button {
|
|
82
|
+
margin: 0 1;
|
|
83
|
+
min-width: 16;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Old input rows (for backwards compat) */
|
|
87
|
+
.input-row {
|
|
88
|
+
height: 3;
|
|
89
|
+
margin: 1 0;
|
|
90
|
+
align: center middle;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.input-row Label {
|
|
94
|
+
width: 16;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.input-row Input {
|
|
98
|
+
width: 40;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Switch rows */
|
|
102
|
+
.switch-row {
|
|
103
|
+
height: 3;
|
|
104
|
+
margin: 1 0;
|
|
105
|
+
align: center middle;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.switch-row Label {
|
|
109
|
+
width: 18;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Button rows */
|
|
113
|
+
.button-row {
|
|
114
|
+
height: 3;
|
|
115
|
+
margin: 1 0;
|
|
116
|
+
align: center middle;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.button-row Button {
|
|
120
|
+
margin: 0 1;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Navigation row */
|
|
124
|
+
.nav-row {
|
|
125
|
+
height: 3;
|
|
126
|
+
margin: 1 0;
|
|
127
|
+
align: center middle;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.nav-row Button {
|
|
131
|
+
margin: 0 1;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* Search row */
|
|
135
|
+
.search-row {
|
|
136
|
+
height: 3;
|
|
137
|
+
margin: 1 0;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.search-row Input {
|
|
141
|
+
width: 1fr;
|
|
142
|
+
margin-right: 1;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Options row */
|
|
146
|
+
.options-row {
|
|
147
|
+
height: 3;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Settings form */
|
|
151
|
+
.settings-form {
|
|
152
|
+
padding: 1 2;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.setting-row {
|
|
156
|
+
height: 3;
|
|
157
|
+
margin: 0 0 1 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.setting-label {
|
|
161
|
+
width: 22;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.setting-input {
|
|
165
|
+
width: 1fr;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* DataTable */
|
|
169
|
+
DataTable {
|
|
170
|
+
height: 1fr;
|
|
171
|
+
scrollbar-gutter: stable;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
DataTable > .datatable--cursor {
|
|
175
|
+
background: $accent 30%;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* ListView */
|
|
179
|
+
ListView {
|
|
180
|
+
height: 1fr;
|
|
181
|
+
border: solid $primary;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
ListView > ListItem {
|
|
185
|
+
padding: 0 1;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
ListView > ListItem.--highlight {
|
|
189
|
+
background: $accent 30%;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* RichLog */
|
|
193
|
+
RichLog {
|
|
194
|
+
height: 1fr;
|
|
195
|
+
border: solid $primary;
|
|
196
|
+
scrollbar-gutter: stable;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Live transcript display */
|
|
200
|
+
#live-transcript {
|
|
201
|
+
height: 10;
|
|
202
|
+
min-height: 6;
|
|
203
|
+
max-height: 15;
|
|
204
|
+
border: solid $primary;
|
|
205
|
+
margin: 0 2;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
#live-header {
|
|
209
|
+
margin-top: 1;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* TextArea */
|
|
213
|
+
TextArea {
|
|
214
|
+
height: 1fr;
|
|
215
|
+
border: solid $primary;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* Status display */
|
|
219
|
+
#status {
|
|
220
|
+
border: solid $primary;
|
|
221
|
+
padding: 1 2;
|
|
222
|
+
margin: 1 4;
|
|
223
|
+
height: auto;
|
|
224
|
+
min-height: 5;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* Status label */
|
|
228
|
+
#status-label {
|
|
229
|
+
text-align: center;
|
|
230
|
+
margin-top: 1;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* File info label */
|
|
234
|
+
#file-info {
|
|
235
|
+
text-align: center;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Results header/footer */
|
|
239
|
+
#results-header,
|
|
240
|
+
#results-footer {
|
|
241
|
+
text-align: center;
|
|
242
|
+
margin: 1 0;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Select widget */
|
|
246
|
+
Select {
|
|
247
|
+
width: 30;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Button styling - prevent text selection appearance */
|
|
251
|
+
Button {
|
|
252
|
+
text-style: bold;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
Button:focus {
|
|
256
|
+
text-style: bold;
|
|
257
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""UI Widgets for Meeting Noter."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meeting-noter
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0
|
|
4
4
|
Summary: Offline meeting transcription for macOS with automatic meeting detection
|
|
5
5
|
Author: Victor
|
|
6
6
|
License: MIT
|
|
@@ -27,6 +27,7 @@ Requires-Dist: sounddevice>=0.4.6
|
|
|
27
27
|
Requires-Dist: numpy>=1.24
|
|
28
28
|
Requires-Dist: faster-whisper>=1.0.0
|
|
29
29
|
Requires-Dist: imageio-ffmpeg>=0.4.9
|
|
30
|
+
Requires-Dist: textual>=0.47.0
|
|
30
31
|
Requires-Dist: pyobjc-framework-Cocoa>=9.0; sys_platform == "darwin"
|
|
31
32
|
Requires-Dist: pyobjc-framework-Quartz>=9.0; sys_platform == "darwin"
|
|
32
33
|
Requires-Dist: pyobjc-framework-ScreenCaptureKit>=9.0; sys_platform == "darwin"
|
|
@@ -35,6 +36,8 @@ Requires-Dist: pyobjc-framework-CoreMedia>=9.0; sys_platform == "darwin"
|
|
|
35
36
|
Requires-Dist: pyobjc-framework-libdispatch>=9.0; sys_platform == "darwin"
|
|
36
37
|
Provides-Extra: offline
|
|
37
38
|
Requires-Dist: meeting-noter-models>=0.1.0; extra == "offline"
|
|
39
|
+
Provides-Extra: gui
|
|
40
|
+
Requires-Dist: PySide6>=6.5.0; extra == "gui"
|
|
38
41
|
Provides-Extra: dev
|
|
39
42
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
40
43
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meeting_noter/__init__.py,sha256=IUXWaiwZS1L2077809O-HLyrSjQQUYQ30Xjw7j_HDiI,103
|
|
2
|
+
meeting_noter/__main__.py,sha256=6sSOqH1o3jvgvkVzsVKmF6-xVGcUAbNVQkRl2CrygdE,120
|
|
3
|
+
meeting_noter/cli.py,sha256=_nAbOnqO1eZprWO74zvHKrCfKDqn7YoFs1SsdEOY-WQ,38200
|
|
4
|
+
meeting_noter/config.py,sha256=vdnTh6W6-DUPJCj0ekFu1Q1m87O7gx0QD3E5DrRGpXk,7537
|
|
5
|
+
meeting_noter/daemon.py,sha256=i81IXgEnsoAoMewknySO5_ECa1nCGOsVLfXtJXJf0rw,21611
|
|
6
|
+
meeting_noter/meeting_detector.py,sha256=St0qoMkvUERP4BaxnXO1M6fZDJpWqBf9In7z2SgWcWg,10564
|
|
7
|
+
meeting_noter/mic_monitor.py,sha256=SIsgb8X6uhYuA0CgsRhTjYi8aA-oSUm9vL0r_kQki3g,17239
|
|
8
|
+
meeting_noter/update_checker.py,sha256=sMmIiiZJL6K7wqLWE64Aj4hS8uspjUOirr6BG_IlL1I,1701
|
|
9
|
+
meeting_noter/audio/__init__.py,sha256=O7PU8CxHSHxMeHbc9Jdwt9kePLQzsPh81GQU7VHCtBY,44
|
|
10
|
+
meeting_noter/audio/capture.py,sha256=fDrT5oXfva8vdFlht9cv60NviKbksw2QeJ8eOtI19uE,6469
|
|
11
|
+
meeting_noter/audio/encoder.py,sha256=OBsgUmlZPz-YZQZ7Rp8MAlMRaQxTsccjuTgCtvRebmc,6573
|
|
12
|
+
meeting_noter/audio/system_audio.py,sha256=jbHGjNCerI19weXap0a90Ik17lVTCT1hCEgRKYke-p8,13016
|
|
13
|
+
meeting_noter/gui/__init__.py,sha256=XdjSYNGeiLyGb4wRfDk9mnJuYD_PC-a-tw096Zf0DNk,1401
|
|
14
|
+
meeting_noter/gui/main_window.py,sha256=NXl4JgPbF7MvuLrwmId6i6speYUoiwhMwubYX3C1MLA,6902
|
|
15
|
+
meeting_noter/gui/menubar.py,sha256=hyqm74Vp1I0eB57yzvYEvtzk4y-Y5GRCZau-erGYr_I,8261
|
|
16
|
+
meeting_noter/gui/screens/__init__.py,sha256=_ETRs61OD0xm_FkKTvhv286hpSEsmeZ8v15bKUSUs8Y,549
|
|
17
|
+
meeting_noter/gui/screens/dashboard.py,sha256=_5VzZuh4lUDKoW9iGdM9YZZAqliZtK8azYagI6zFimg,9492
|
|
18
|
+
meeting_noter/gui/screens/logs.py,sha256=acqNhx0H2emVDQ4uCrhkVxbExG58Z99mUrMySF321xI,5746
|
|
19
|
+
meeting_noter/gui/screens/recordings.py,sha256=rQ7_hLv2uq-qyFTlmnR1NuH9h0Yp5u7rh0o6Gv1Vfw8,9500
|
|
20
|
+
meeting_noter/gui/screens/search.py,sha256=emdfAGQR3rhtrbj5rfCYjgqPY8i6gzUO4z1wZ6naFsA,7345
|
|
21
|
+
meeting_noter/gui/screens/settings.py,sha256=u-L0l6I6h25Tp2PIBQW8KipKEBc2VYGsxrXwEENLJxU,8016
|
|
22
|
+
meeting_noter/gui/screens/viewer.py,sha256=TEVCO1tcYVO1li1pt846fKx5VxTxk-lWywnoBV2XuUc,4383
|
|
23
|
+
meeting_noter/gui/theme/__init__.py,sha256=UMcYNuIxJSuLH9iFerklxShJd9BGqyFdeEHYwzWYk8E,148
|
|
24
|
+
meeting_noter/gui/theme/dark_theme.py,sha256=UAgrJDjPgzkjBg7ucg1NC0jOUylh1-n0BcQL9mBZNMA,1795
|
|
25
|
+
meeting_noter/gui/theme/styles.qss,sha256=zY0bYZALFE5Mu93oKYix1s0IzhQCk9AQbu1ChWe-NSQ,9299
|
|
26
|
+
meeting_noter/gui/utils/__init__.py,sha256=IG3pknZCt9P3vEM-1NbARiwoeLN8vT0B5gLOL2Aecik,338
|
|
27
|
+
meeting_noter/gui/utils/signals.py,sha256=voOqXteRWGbrgnltrz_Q4_hjwtUK71r9n16ojAhQLAU,2362
|
|
28
|
+
meeting_noter/gui/utils/workers.py,sha256=xYdpdgUHJcYJkThWoluT0QKKyfTXKzscyi_u3a91GuE,8283
|
|
29
|
+
meeting_noter/gui/widgets/__init__.py,sha256=lbcVJ23SYzVro0VLucsXaBn_X9L1vviUtuwS-H_0YPA,214
|
|
30
|
+
meeting_noter/gui/widgets/sidebar.py,sha256=-VDnWMk5gSonjHmpSIv4MgcVDmsrmPAbnafLk5AHHK0,7232
|
|
31
|
+
meeting_noter/gui/widgets/status_indicator.py,sha256=4gHhOrX1gmP_00V3dXRCg5EkR_k8r_MP_BHNll25ido,4347
|
|
32
|
+
meeting_noter/install/__init__.py,sha256=SX5vLFMrV8aBDEGW18jhaqBqJqnRXaeo0Ct7QVGDgvE,38
|
|
33
|
+
meeting_noter/install/macos.py,sha256=dO-86zbNKRtt0l4D8naVn7kFWjzI8TufWLWE3FRLHQ8,3400
|
|
34
|
+
meeting_noter/output/__init__.py,sha256=F7xPlOrqweZcPbZtDrhved1stBI59vnWnLYfGwdu6oY,31
|
|
35
|
+
meeting_noter/output/favorites.py,sha256=kYtEshq5E5xxaqjG36JMY5a-r6C2w98iqmKsGsxpgag,5764
|
|
36
|
+
meeting_noter/output/searcher.py,sha256=ZGbEewodNuqq5mM4XvVtxELv_6UQByjs-LmEwodc-Ug,6448
|
|
37
|
+
meeting_noter/output/writer.py,sha256=zO8y6FAFUAp0EEtALY-M5e2Ja5P-hgV38JjcKW7c-bA,3017
|
|
38
|
+
meeting_noter/resources/__init__.py,sha256=yzHNxgypkuVDFZWv6xZjUygOVB_Equ9NNX_HGRvN7VM,43
|
|
39
|
+
meeting_noter/resources/icon.icns,sha256=zMWqXCq7pI5acS0tbekFgFDvLt66EKUBP5-5IgztwPM,35146
|
|
40
|
+
meeting_noter/resources/icon.png,sha256=nK0hM6CPMor_xXRFYURpm0muA2O7yzotyydUQx-ukyg,2390
|
|
41
|
+
meeting_noter/resources/icon_128.png,sha256=Wg27dIpFfMzv15HG6eQpSqg72jrbGBcqLkGjOfAptO4,1169
|
|
42
|
+
meeting_noter/resources/icon_16.png,sha256=GONIIZCP9FUMb_MWZWMz1_iWxsPCPOwW_XcrPF7W8KY,215
|
|
43
|
+
meeting_noter/resources/icon_256.png,sha256=nK0hM6CPMor_xXRFYURpm0muA2O7yzotyydUQx-ukyg,2390
|
|
44
|
+
meeting_noter/resources/icon_32.png,sha256=Bw6hJXqkd-d1OfDpFv2om7Stex7daedxnpXt32xR8Sg,344
|
|
45
|
+
meeting_noter/resources/icon_512.png,sha256=o7X3ngYcppcIAAk9AcfPx94MUmrsPRp0qBTpb9SzfX8,5369
|
|
46
|
+
meeting_noter/resources/icon_64.png,sha256=TqG7Awx3kK8YdiX1e_z1odZonosZyQI2trlkNZCzUoI,607
|
|
47
|
+
meeting_noter/transcription/__init__.py,sha256=7GY9diP06DzFyoli41wddbrPv5bVDzH35bmnWlIJev4,29
|
|
48
|
+
meeting_noter/transcription/engine.py,sha256=G9NcSS6Q-UhW7PlQ0E85hQXn6BWao64nIvyw4NR2yxI,7208
|
|
49
|
+
meeting_noter/transcription/live_transcription.py,sha256=YfojFWv4h3Lp-pK5tjIauvimCWAmDhj6pj5gUmyBxr4,9539
|
|
50
|
+
meeting_noter/ui/__init__.py,sha256=iK31upnYwlfQ4fB2laAlR2EqXLFTAgCxq0PU6AvfZ38,130
|
|
51
|
+
meeting_noter/ui/app.py,sha256=GSElpPMqYK8aJOgT5R4DX5N5yTzPD9iswnU2m8oOVcw,2272
|
|
52
|
+
meeting_noter/ui/screens/__init__.py,sha256=oiSNVk39W8zzvxleCIwApZWWV1CP1NKcaUhl801trVg,520
|
|
53
|
+
meeting_noter/ui/screens/logs.py,sha256=zO7TDcpzkU8DdKbHhhfvkI5WCc46dsiGcPe9n1Oix4g,5797
|
|
54
|
+
meeting_noter/ui/screens/main.py,sha256=wQO6mke2ox885ybekAun5fb1T5DbC9gET5cDiCqy54E,12501
|
|
55
|
+
meeting_noter/ui/screens/recordings.py,sha256=P-GDcklAEZPNaerrT5aNV73boJ2xwAUirnH-7phUTX0,7677
|
|
56
|
+
meeting_noter/ui/screens/search.py,sha256=seJUSFYzaFjJGiPRMz9FctdgovTjkOMl8KDGBRP-FX0,6590
|
|
57
|
+
meeting_noter/ui/screens/settings.py,sha256=Zb9-1rkPap1oUNcu4SJcOIemI8DmVC_5uqMd_MbLaCM,7247
|
|
58
|
+
meeting_noter/ui/screens/viewer.py,sha256=5LVhghDcpshlisCrygk9H3uwOh48vmonMd8d4NH77hU,3991
|
|
59
|
+
meeting_noter/ui/styles/app.tcss,sha256=-uE-1mE3oqKBZW1-pySmOZhK9oxjEQqcG7LDprwxBg4,3396
|
|
60
|
+
meeting_noter/ui/widgets/__init__.py,sha256=6aVXLDGFXL9PnX5bCnMAqRqOvsv4VuzK_T2UTySQlTg,36
|
|
61
|
+
meeting_noter-3.0.0.dist-info/METADATA,sha256=sROgsYboliy4ehnWYiZ54Jzs-tWePYweba1EoP8Z-90,7036
|
|
62
|
+
meeting_noter-3.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
63
|
+
meeting_noter-3.0.0.dist-info/entry_points.txt,sha256=osZoOmm-UBPCJ4b6DGH6JOAm7mofM2fK06eK6blplmg,83
|
|
64
|
+
meeting_noter-3.0.0.dist-info/top_level.txt,sha256=9Tuq04_0SXM0OXOHVbOHkHkB5tG3fqkrMrfzCMpbLpY,14
|
|
65
|
+
meeting_noter-3.0.0.dist-info/RECORD,,
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
meeting_noter/__init__.py,sha256=6WLmaMLX2bfnCWqF2vzOnwjKo728hFUrDHXgUjykajQ,103
|
|
2
|
-
meeting_noter/__main__.py,sha256=6sSOqH1o3jvgvkVzsVKmF6-xVGcUAbNVQkRl2CrygdE,120
|
|
3
|
-
meeting_noter/cli.py,sha256=XMTDUpXpmfvy8E0KqXAtS3GD382xKJSzHBpZdvPfbwE,34771
|
|
4
|
-
meeting_noter/config.py,sha256=vdnTh6W6-DUPJCj0ekFu1Q1m87O7gx0QD3E5DrRGpXk,7537
|
|
5
|
-
meeting_noter/daemon.py,sha256=u9VrYe94o3lxabuIS9MDVPHSH7MqKqzTqGTuA7TNAIc,19767
|
|
6
|
-
meeting_noter/meeting_detector.py,sha256=St0qoMkvUERP4BaxnXO1M6fZDJpWqBf9In7z2SgWcWg,10564
|
|
7
|
-
meeting_noter/mic_monitor.py,sha256=P8vF4qaZcGrEzzJyVos78Vuf38NXHGNRREDsD-HyBHc,16211
|
|
8
|
-
meeting_noter/update_checker.py,sha256=sMmIiiZJL6K7wqLWE64Aj4hS8uspjUOirr6BG_IlL1I,1701
|
|
9
|
-
meeting_noter/audio/__init__.py,sha256=O7PU8CxHSHxMeHbc9Jdwt9kePLQzsPh81GQU7VHCtBY,44
|
|
10
|
-
meeting_noter/audio/capture.py,sha256=fDrT5oXfva8vdFlht9cv60NviKbksw2QeJ8eOtI19uE,6469
|
|
11
|
-
meeting_noter/audio/encoder.py,sha256=OBsgUmlZPz-YZQZ7Rp8MAlMRaQxTsccjuTgCtvRebmc,6573
|
|
12
|
-
meeting_noter/audio/system_audio.py,sha256=jbHGjNCerI19weXap0a90Ik17lVTCT1hCEgRKYke-p8,13016
|
|
13
|
-
meeting_noter/install/__init__.py,sha256=SX5vLFMrV8aBDEGW18jhaqBqJqnRXaeo0Ct7QVGDgvE,38
|
|
14
|
-
meeting_noter/install/macos.py,sha256=dO-86zbNKRtt0l4D8naVn7kFWjzI8TufWLWE3FRLHQ8,3400
|
|
15
|
-
meeting_noter/output/__init__.py,sha256=F7xPlOrqweZcPbZtDrhved1stBI59vnWnLYfGwdu6oY,31
|
|
16
|
-
meeting_noter/output/favorites.py,sha256=kYtEshq5E5xxaqjG36JMY5a-r6C2w98iqmKsGsxpgag,5764
|
|
17
|
-
meeting_noter/output/searcher.py,sha256=ZGbEewodNuqq5mM4XvVtxELv_6UQByjs-LmEwodc-Ug,6448
|
|
18
|
-
meeting_noter/output/writer.py,sha256=zO8y6FAFUAp0EEtALY-M5e2Ja5P-hgV38JjcKW7c-bA,3017
|
|
19
|
-
meeting_noter/resources/__init__.py,sha256=yzHNxgypkuVDFZWv6xZjUygOVB_Equ9NNX_HGRvN7VM,43
|
|
20
|
-
meeting_noter/resources/icon.icns,sha256=zMWqXCq7pI5acS0tbekFgFDvLt66EKUBP5-5IgztwPM,35146
|
|
21
|
-
meeting_noter/resources/icon.png,sha256=nK0hM6CPMor_xXRFYURpm0muA2O7yzotyydUQx-ukyg,2390
|
|
22
|
-
meeting_noter/resources/icon_128.png,sha256=Wg27dIpFfMzv15HG6eQpSqg72jrbGBcqLkGjOfAptO4,1169
|
|
23
|
-
meeting_noter/resources/icon_16.png,sha256=GONIIZCP9FUMb_MWZWMz1_iWxsPCPOwW_XcrPF7W8KY,215
|
|
24
|
-
meeting_noter/resources/icon_256.png,sha256=nK0hM6CPMor_xXRFYURpm0muA2O7yzotyydUQx-ukyg,2390
|
|
25
|
-
meeting_noter/resources/icon_32.png,sha256=Bw6hJXqkd-d1OfDpFv2om7Stex7daedxnpXt32xR8Sg,344
|
|
26
|
-
meeting_noter/resources/icon_512.png,sha256=o7X3ngYcppcIAAk9AcfPx94MUmrsPRp0qBTpb9SzfX8,5369
|
|
27
|
-
meeting_noter/resources/icon_64.png,sha256=TqG7Awx3kK8YdiX1e_z1odZonosZyQI2trlkNZCzUoI,607
|
|
28
|
-
meeting_noter/transcription/__init__.py,sha256=7GY9diP06DzFyoli41wddbrPv5bVDzH35bmnWlIJev4,29
|
|
29
|
-
meeting_noter/transcription/engine.py,sha256=G9NcSS6Q-UhW7PlQ0E85hQXn6BWao64nIvyw4NR2yxI,7208
|
|
30
|
-
meeting_noter/transcription/live_transcription.py,sha256=YfojFWv4h3Lp-pK5tjIauvimCWAmDhj6pj5gUmyBxr4,9539
|
|
31
|
-
meeting_noter-1.3.0.dist-info/METADATA,sha256=Y8UXDVyKjcA_F4Ck8czm9GlNpsAjUcbFnLJLAAAdEdw,6939
|
|
32
|
-
meeting_noter-1.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
33
|
-
meeting_noter-1.3.0.dist-info/entry_points.txt,sha256=osZoOmm-UBPCJ4b6DGH6JOAm7mofM2fK06eK6blplmg,83
|
|
34
|
-
meeting_noter-1.3.0.dist-info/top_level.txt,sha256=9Tuq04_0SXM0OXOHVbOHkHkB5tG3fqkrMrfzCMpbLpY,14
|
|
35
|
-
meeting_noter-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|