@dualityinstitute/blink 0.0.2 → 0.0.4
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.
- package/README.md +16 -11
- package/dist/cli.js +18 -81
- package/dist/electron/main.js +865 -529
- package/dist/electron/preload.cjs +31 -0
- package/dist/electron/renderer/popup.css +125 -15
- package/dist/electron/renderer/popup.html +17 -3
- package/dist/electron/renderer/popup.js +121 -42
- package/dist/electron/renderer/settings.css +439 -0
- package/dist/electron/renderer/settings.html +93 -0
- package/dist/electron/renderer/settings.js +4067 -0
- package/package.json +2 -2
- package/vendor/Blink.app/Contents/Helpers/BlinkAudio +0 -0
- package/vendor/Blink.app/Contents/MacOS/Blink +0 -0
- package/vendor/Blink.app/Contents/_CodeSignature/CodeResources +2 -2
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--fg: #0d0d0d;
|
|
3
|
+
--fg-muted: #6e6e80;
|
|
4
|
+
--fg-faint: #a3a3b2;
|
|
5
|
+
--bg: #ffffff;
|
|
6
|
+
--bg-soft: #f7f7f8;
|
|
7
|
+
--line: rgba(13, 13, 13, 0.1);
|
|
8
|
+
--line-strong: rgba(13, 13, 13, 0.18);
|
|
9
|
+
--radius: 12px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
* {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
html,
|
|
17
|
+
body {
|
|
18
|
+
height: 100%;
|
|
19
|
+
margin: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
body {
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
background: var(--bg);
|
|
26
|
+
color: var(--fg);
|
|
27
|
+
font: 14px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
28
|
+
-webkit-font-smoothing: antialiased;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.titlebar {
|
|
32
|
+
flex: none;
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
padding: 8px 16px 12px;
|
|
36
|
+
padding-top: 34px;
|
|
37
|
+
border-bottom: 1px solid var(--line);
|
|
38
|
+
-webkit-app-region: drag;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.tabs {
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
gap: 4px;
|
|
44
|
+
padding: 4px;
|
|
45
|
+
border-radius: 999px;
|
|
46
|
+
background: var(--bg-soft);
|
|
47
|
+
-webkit-app-region: no-drag;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.tabs button {
|
|
51
|
+
padding: 7px 18px;
|
|
52
|
+
border: 0;
|
|
53
|
+
border-radius: 999px;
|
|
54
|
+
background: transparent;
|
|
55
|
+
color: var(--fg-muted);
|
|
56
|
+
font: inherit;
|
|
57
|
+
font-weight: 500;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.tabs button[aria-selected="true"] {
|
|
62
|
+
background: var(--bg);
|
|
63
|
+
color: var(--fg);
|
|
64
|
+
box-shadow: 0 1px 2px rgba(13, 13, 13, 0.1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
main {
|
|
68
|
+
flex: 1;
|
|
69
|
+
min-height: 0;
|
|
70
|
+
overflow-y: auto;
|
|
71
|
+
padding: 22px 26px 26px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
section {
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
gap: 18px;
|
|
78
|
+
height: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
section[hidden],
|
|
82
|
+
[hidden] {
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.lede {
|
|
87
|
+
margin: 0;
|
|
88
|
+
color: var(--fg-muted);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.field {
|
|
92
|
+
display: grid;
|
|
93
|
+
gap: 4px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.field-head {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: flex-start;
|
|
99
|
+
justify-content: space-between;
|
|
100
|
+
gap: 16px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.mode {
|
|
104
|
+
flex: none;
|
|
105
|
+
display: inline-flex;
|
|
106
|
+
gap: 2px;
|
|
107
|
+
padding: 3px;
|
|
108
|
+
border-radius: 999px;
|
|
109
|
+
background: var(--bg-soft);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.mode button {
|
|
113
|
+
padding: 5px 12px;
|
|
114
|
+
border: 0;
|
|
115
|
+
border-radius: 999px;
|
|
116
|
+
background: transparent;
|
|
117
|
+
color: var(--fg-muted);
|
|
118
|
+
font: inherit;
|
|
119
|
+
font-size: 0.82rem;
|
|
120
|
+
font-weight: 500;
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.mode button.is-active {
|
|
125
|
+
background: var(--bg);
|
|
126
|
+
color: var(--fg);
|
|
127
|
+
box-shadow: 0 1px 2px rgba(13, 13, 13, 0.1);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.label {
|
|
131
|
+
font-weight: 600;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.hint {
|
|
135
|
+
color: var(--fg-muted);
|
|
136
|
+
font-size: 0.86rem;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
textarea {
|
|
140
|
+
margin-top: 6px;
|
|
141
|
+
padding: 12px 14px;
|
|
142
|
+
border: 1px solid var(--line-strong);
|
|
143
|
+
border-radius: var(--radius);
|
|
144
|
+
background: var(--bg);
|
|
145
|
+
color: var(--fg);
|
|
146
|
+
font: inherit;
|
|
147
|
+
line-height: 1.5;
|
|
148
|
+
resize: vertical;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
textarea:focus-visible,
|
|
152
|
+
input:focus-visible,
|
|
153
|
+
select:focus-visible {
|
|
154
|
+
outline: 2px solid var(--fg);
|
|
155
|
+
outline-offset: 1px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
textarea::placeholder {
|
|
159
|
+
color: var(--fg-faint);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
textarea.is-readonly {
|
|
163
|
+
background: var(--bg-soft);
|
|
164
|
+
color: var(--fg-muted);
|
|
165
|
+
cursor: default;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.actions {
|
|
169
|
+
display: flex;
|
|
170
|
+
align-items: center;
|
|
171
|
+
gap: 12px;
|
|
172
|
+
margin-top: auto;
|
|
173
|
+
padding-top: 4px;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.actions .primary {
|
|
177
|
+
margin-left: auto;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
button.primary {
|
|
181
|
+
padding: 9px 20px;
|
|
182
|
+
border: 0;
|
|
183
|
+
border-radius: 999px;
|
|
184
|
+
background: var(--fg);
|
|
185
|
+
color: var(--bg);
|
|
186
|
+
font: inherit;
|
|
187
|
+
font-weight: 500;
|
|
188
|
+
cursor: pointer;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
button.ghost {
|
|
192
|
+
padding: 9px 16px;
|
|
193
|
+
border: 1px solid var(--line-strong);
|
|
194
|
+
border-radius: 999px;
|
|
195
|
+
background: transparent;
|
|
196
|
+
color: var(--fg);
|
|
197
|
+
font: inherit;
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
button.primary:disabled {
|
|
202
|
+
opacity: 0.45;
|
|
203
|
+
cursor: default;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.saved {
|
|
207
|
+
color: var(--fg-muted);
|
|
208
|
+
font-size: 0.88rem;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.toolbar {
|
|
212
|
+
display: grid;
|
|
213
|
+
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
214
|
+
gap: 10px;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
#panel-transcripts .toolbar {
|
|
218
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* Fixed height so each pane scrolls on its own instead of growing <main>. */
|
|
222
|
+
.tx-split {
|
|
223
|
+
display: flex;
|
|
224
|
+
gap: 16px;
|
|
225
|
+
height: calc(100vh - 232px);
|
|
226
|
+
min-height: 240px;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.tx-list {
|
|
230
|
+
display: flex;
|
|
231
|
+
flex-direction: column;
|
|
232
|
+
gap: 4px;
|
|
233
|
+
flex: 0 0 210px;
|
|
234
|
+
margin: 0;
|
|
235
|
+
padding: 4px;
|
|
236
|
+
overflow-y: auto;
|
|
237
|
+
border: 1px solid var(--line);
|
|
238
|
+
border-radius: var(--radius);
|
|
239
|
+
background: var(--bg-soft);
|
|
240
|
+
list-style: none;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.tx-item {
|
|
244
|
+
display: flex;
|
|
245
|
+
flex-direction: column;
|
|
246
|
+
gap: 2px;
|
|
247
|
+
padding: 9px 11px;
|
|
248
|
+
border-radius: 9px;
|
|
249
|
+
cursor: default;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.tx-item:hover {
|
|
253
|
+
background: var(--bg);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.tx-item.is-active {
|
|
257
|
+
background: var(--bg);
|
|
258
|
+
box-shadow: inset 0 0 0 1px var(--line-strong);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.tx-item-title {
|
|
262
|
+
font-size: 0.88rem;
|
|
263
|
+
font-weight: 550;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.tx-item-meta {
|
|
267
|
+
color: var(--fg-muted);
|
|
268
|
+
font-size: 0.76rem;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.tx-view {
|
|
272
|
+
flex: 1 1 auto;
|
|
273
|
+
min-width: 0;
|
|
274
|
+
overflow-y: auto;
|
|
275
|
+
padding: 16px 18px;
|
|
276
|
+
border: 1px solid var(--line);
|
|
277
|
+
border-radius: var(--radius);
|
|
278
|
+
background: var(--bg);
|
|
279
|
+
user-select: text;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.tx-view:empty::before {
|
|
283
|
+
content: "Select a session to read its transcript.";
|
|
284
|
+
color: var(--fg-muted);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
input[type="search"],
|
|
288
|
+
select {
|
|
289
|
+
padding: 9px 13px;
|
|
290
|
+
border: 1px solid var(--line-strong);
|
|
291
|
+
border-radius: 10px;
|
|
292
|
+
background: var(--bg);
|
|
293
|
+
color: var(--fg);
|
|
294
|
+
font: inherit;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.count {
|
|
298
|
+
margin: 0;
|
|
299
|
+
color: var(--fg-muted);
|
|
300
|
+
font-size: 0.86rem;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.answers {
|
|
304
|
+
display: grid;
|
|
305
|
+
gap: 10px;
|
|
306
|
+
margin: 0;
|
|
307
|
+
padding: 0;
|
|
308
|
+
list-style: none;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.answers > li {
|
|
312
|
+
padding: 14px 16px;
|
|
313
|
+
border: 1px solid var(--line);
|
|
314
|
+
border-radius: var(--radius);
|
|
315
|
+
background: var(--bg);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.meta {
|
|
319
|
+
display: flex;
|
|
320
|
+
align-items: center;
|
|
321
|
+
gap: 10px;
|
|
322
|
+
margin-bottom: 6px;
|
|
323
|
+
color: var(--fg-muted);
|
|
324
|
+
font-size: 0.8rem;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.badge {
|
|
328
|
+
padding: 2px 8px;
|
|
329
|
+
border-radius: 999px;
|
|
330
|
+
background: var(--bg-soft);
|
|
331
|
+
color: var(--fg);
|
|
332
|
+
font-weight: 600;
|
|
333
|
+
letter-spacing: 0.02em;
|
|
334
|
+
text-transform: uppercase;
|
|
335
|
+
font-size: 0.68rem;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.answer-body {
|
|
339
|
+
overflow-wrap: anywhere;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.answer-body > :first-child {
|
|
343
|
+
margin-top: 0;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.answer-body > :last-child {
|
|
347
|
+
margin-bottom: 0;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.answer-body p,
|
|
351
|
+
.answer-body ul,
|
|
352
|
+
.answer-body ol,
|
|
353
|
+
.answer-body pre {
|
|
354
|
+
margin: 0 0 8px;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.answer-body ul,
|
|
358
|
+
.answer-body ol {
|
|
359
|
+
padding-left: 20px;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.answer-body li {
|
|
363
|
+
margin: 2px 0;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.answer-body code {
|
|
367
|
+
padding: 1px 5px;
|
|
368
|
+
border-radius: 5px;
|
|
369
|
+
background: var(--bg-soft);
|
|
370
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
371
|
+
font-size: 0.88em;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.answer-body pre {
|
|
375
|
+
padding: 10px 12px;
|
|
376
|
+
border-radius: 8px;
|
|
377
|
+
background: var(--bg-soft);
|
|
378
|
+
overflow-x: auto;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.answer-body pre code {
|
|
382
|
+
padding: 0;
|
|
383
|
+
background: none;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.answer-body h1,
|
|
387
|
+
.answer-body h2,
|
|
388
|
+
.answer-body h3 {
|
|
389
|
+
margin: 10px 0 6px;
|
|
390
|
+
font-size: 1rem;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.answer-body blockquote {
|
|
394
|
+
margin: 0 0 8px;
|
|
395
|
+
padding-left: 12px;
|
|
396
|
+
border-left: 2px solid var(--line-strong);
|
|
397
|
+
color: var(--fg-muted);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.answer-body table {
|
|
401
|
+
border-collapse: collapse;
|
|
402
|
+
margin-bottom: 8px;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.answer-body th,
|
|
406
|
+
.answer-body td {
|
|
407
|
+
padding: 4px 10px;
|
|
408
|
+
border: 1px solid var(--line);
|
|
409
|
+
text-align: left;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.answer-body mark {
|
|
413
|
+
padding: 0 1px;
|
|
414
|
+
border-radius: 3px;
|
|
415
|
+
background: #ffe8a3;
|
|
416
|
+
color: inherit;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.empty {
|
|
420
|
+
margin: 0;
|
|
421
|
+
color: var(--fg-muted);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
@media (prefers-color-scheme: dark) {
|
|
425
|
+
:root {
|
|
426
|
+
--fg: #f5f5f7;
|
|
427
|
+
--fg-muted: #a1a1aa;
|
|
428
|
+
--fg-faint: #6e6e80;
|
|
429
|
+
--bg: #1c1c1e;
|
|
430
|
+
--bg-soft: #2a2a2d;
|
|
431
|
+
--line: rgba(255, 255, 255, 0.12);
|
|
432
|
+
--line-strong: rgba(255, 255, 255, 0.22);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.answer-body mark {
|
|
436
|
+
background: #7a5c00;
|
|
437
|
+
color: #fff;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'self'; script-src 'self'" />
|
|
6
|
+
<title>Blink</title>
|
|
7
|
+
<link rel="stylesheet" href="settings.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<header class="titlebar">
|
|
11
|
+
<nav class="tabs" role="tablist">
|
|
12
|
+
<button id="tab-prompts" role="tab" aria-selected="true" aria-controls="panel-prompts">Custom Prompts</button>
|
|
13
|
+
<button id="tab-answers" role="tab" aria-selected="false" aria-controls="panel-answers">Answer Log</button>
|
|
14
|
+
<button id="tab-transcripts" role="tab" aria-selected="false" aria-controls="panel-transcripts">Meeting Transcripts</button>
|
|
15
|
+
</nav>
|
|
16
|
+
</header>
|
|
17
|
+
|
|
18
|
+
<main>
|
|
19
|
+
<section id="panel-prompts" role="tabpanel" aria-labelledby="tab-prompts">
|
|
20
|
+
<p class="lede">
|
|
21
|
+
Switch a prompt to Custom to replace Blink's built-in instruction.
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<div class="field">
|
|
25
|
+
<div class="field-head">
|
|
26
|
+
<div>
|
|
27
|
+
<span class="label">Screenshot answers</span>
|
|
28
|
+
<span class="hint">Used for every Monitor capture.</span>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="mode" role="radiogroup" aria-label="Screenshot prompt mode">
|
|
31
|
+
<button id="monitor-default" type="button" role="radio" aria-checked="true" class="is-active">Default</button>
|
|
32
|
+
<button id="monitor-custom" type="button" role="radio" aria-checked="false">Custom</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<textarea id="monitor-prompt" rows="5" spellcheck="false" aria-label="Screenshot prompt"></textarea>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="field">
|
|
39
|
+
<div class="field-head">
|
|
40
|
+
<div>
|
|
41
|
+
<span class="label">Meeting answers</span>
|
|
42
|
+
<span class="hint">Used when you Ask during a meeting. The transcript is appended automatically.</span>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="mode" role="radiogroup" aria-label="Meeting prompt mode">
|
|
45
|
+
<button id="meeting-default" type="button" role="radio" aria-checked="true" class="is-active">Default</button>
|
|
46
|
+
<button id="meeting-custom" type="button" role="radio" aria-checked="false">Custom</button>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<textarea id="meeting-prompt" rows="5" spellcheck="false" aria-label="Meeting prompt"></textarea>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div class="actions">
|
|
53
|
+
<span id="saved" class="saved" hidden>Saved</span>
|
|
54
|
+
<button id="save" class="primary" type="button">Save</button>
|
|
55
|
+
</div>
|
|
56
|
+
</section>
|
|
57
|
+
|
|
58
|
+
<section id="panel-answers" role="tabpanel" aria-labelledby="tab-answers" hidden>
|
|
59
|
+
<div class="toolbar">
|
|
60
|
+
<input id="search" type="search" placeholder="Search answers…" autocomplete="off" spellcheck="false" />
|
|
61
|
+
<select id="day" aria-label="Filter by date">
|
|
62
|
+
<option value="recent">Latest 20</option>
|
|
63
|
+
</select>
|
|
64
|
+
<select id="source" aria-label="Filter by source">
|
|
65
|
+
<option value="all">All sources</option>
|
|
66
|
+
<option value="monitor">Monitor</option>
|
|
67
|
+
<option value="meeting">Meeting</option>
|
|
68
|
+
</select>
|
|
69
|
+
</div>
|
|
70
|
+
<p id="count" class="count"></p>
|
|
71
|
+
<ul id="answers" class="answers"></ul>
|
|
72
|
+
<p id="empty" class="empty" hidden>No answers yet.</p>
|
|
73
|
+
</section>
|
|
74
|
+
|
|
75
|
+
<section id="panel-transcripts" role="tabpanel" aria-labelledby="tab-transcripts" hidden>
|
|
76
|
+
<div class="toolbar">
|
|
77
|
+
<input id="tx-search" type="search" placeholder="Search every transcript…" autocomplete="off" spellcheck="false" />
|
|
78
|
+
<select id="tx-day" aria-label="Filter by date">
|
|
79
|
+
<option value="all">All dates</option>
|
|
80
|
+
</select>
|
|
81
|
+
</div>
|
|
82
|
+
<p id="tx-count" class="count"></p>
|
|
83
|
+
<div class="tx-split">
|
|
84
|
+
<ul id="tx-list" class="tx-list" role="listbox" aria-label="Meeting sessions"></ul>
|
|
85
|
+
<article id="tx-view" class="tx-view markdown" aria-live="polite"></article>
|
|
86
|
+
</div>
|
|
87
|
+
<p id="tx-empty" class="empty" hidden>No meeting transcripts yet.</p>
|
|
88
|
+
</section>
|
|
89
|
+
</main>
|
|
90
|
+
|
|
91
|
+
<script type="module" src="settings.js"></script>
|
|
92
|
+
</body>
|
|
93
|
+
</html>
|