taskproof 0.3.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.
Files changed (51) hide show
  1. taskproof/__init__.py +23 -0
  2. taskproof/__main__.py +8 -0
  3. taskproof/adapters/__init__.py +101 -0
  4. taskproof/adapters/base.py +228 -0
  5. taskproof/adapters/claude.py +46 -0
  6. taskproof/adapters/codex.py +140 -0
  7. taskproof/adapters/custom.py +61 -0
  8. taskproof/adapters/gemini.py +45 -0
  9. taskproof/adapters/opencode.py +46 -0
  10. taskproof/api/__init__.py +1 -0
  11. taskproof/api/server.py +822 -0
  12. taskproof/cli.py +1400 -0
  13. taskproof/concurrency.py +329 -0
  14. taskproof/dispatch.py +2289 -0
  15. taskproof/errors.py +55 -0
  16. taskproof/ledger.py +185 -0
  17. taskproof/models.py +155 -0
  18. taskproof/registry.py +1585 -0
  19. taskproof/schemas/result.json +58 -0
  20. taskproof/sql/schema.sql +70 -0
  21. taskproof/storage.py +372 -0
  22. taskproof/verify.py +615 -0
  23. taskproof/web/assets/MatrixView-BM8nu9s2.css +446 -0
  24. taskproof/web/assets/MatrixView-BM8nu9s2.css.gz +0 -0
  25. taskproof/web/assets/MatrixView-BMsawnxh.js +475 -0
  26. taskproof/web/assets/MatrixView-BMsawnxh.js.gz +0 -0
  27. taskproof/web/assets/ProjectsView-BcXcx5Gw.js +302 -0
  28. taskproof/web/assets/ProjectsView-BcXcx5Gw.js.gz +0 -0
  29. taskproof/web/assets/ProjectsView-CqNFL-fi.css +23 -0
  30. taskproof/web/assets/SettingsView-D_-waf0s.js +585 -0
  31. taskproof/web/assets/SettingsView-D_-waf0s.js.gz +0 -0
  32. taskproof/web/assets/SettingsView-aqTS3ubB.css +19 -0
  33. taskproof/web/assets/TaskDrawer-6JoGTH0s.js +597 -0
  34. taskproof/web/assets/TaskDrawer-6JoGTH0s.js.gz +0 -0
  35. taskproof/web/assets/TaskDrawer-N299VKzd.css +465 -0
  36. taskproof/web/assets/TaskDrawer-N299VKzd.css.gz +0 -0
  37. taskproof/web/assets/TasksView-BWhSHCHi.js +114 -0
  38. taskproof/web/assets/TasksView-BWhSHCHi.js.gz +0 -0
  39. taskproof/web/assets/TasksView-Bn08731V.css +30 -0
  40. taskproof/web/assets/icon-Dw-ohsdc.png +0 -0
  41. taskproof/web/assets/index-B-PLdDbR.js +75421 -0
  42. taskproof/web/assets/index-B-PLdDbR.js.gz +0 -0
  43. taskproof/web/assets/index-NKj7kbYl.css +1234 -0
  44. taskproof/web/assets/index-NKj7kbYl.css.gz +0 -0
  45. taskproof/web/index.html +23 -0
  46. taskproof-0.3.0.dist-info/METADATA +470 -0
  47. taskproof-0.3.0.dist-info/RECORD +51 -0
  48. taskproof-0.3.0.dist-info/WHEEL +5 -0
  49. taskproof-0.3.0.dist-info/entry_points.txt +2 -0
  50. taskproof-0.3.0.dist-info/licenses/LICENSE +201 -0
  51. taskproof-0.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,465 @@
1
+
2
+ .tp-mark[data-v-7a91d873] {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ flex: none;
7
+ color: var(--c);
8
+ }
9
+ .tp-mark[data-shape='glyph'][data-v-7a91d873] {
10
+ font: 600 11px/1 var(--mono);
11
+ }
12
+ .tp-mark[data-shape='glyph'][data-status='running'][data-v-7a91d873],
13
+ .tp-mark[data-shape='glyph'][data-status='verifying'][data-v-7a91d873] {
14
+ text-shadow: 0 0 7px currentColor;
15
+ animation: tp-pulse-7a91d873 1.6s ease-in-out infinite;
16
+ }
17
+ .tp-mark .dot[data-v-7a91d873] {
18
+ display: inline-block;
19
+ width: 7px;
20
+ height: 7px;
21
+ border-radius: 50%;
22
+ background: var(--c);
23
+ }
24
+ @keyframes tp-pulse-7a91d873 {
25
+ 0%,
26
+ 100% {
27
+ opacity: 1;
28
+ }
29
+ 50% {
30
+ opacity: 0.45;
31
+ }
32
+ }
33
+ @media (prefers-reduced-motion: reduce) {
34
+ .tp-mark[data-shape='glyph'][data-status='running'][data-v-7a91d873],
35
+ .tp-mark[data-shape='glyph'][data-status='verifying'][data-v-7a91d873] {
36
+ animation: none;
37
+ }
38
+ }
39
+
40
+ .dh[data-v-10de8666] {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 9px;
44
+ padding: 13px 16px 12px;
45
+ border-bottom: 1px solid var(--rule-2);
46
+ flex: none;
47
+ }
48
+ .sc[data-v-10de8666] {
49
+ display: inline-flex;
50
+ align-items: center;
51
+ gap: 6px;
52
+ font: 600 11px/1 var(--sans);
53
+ padding: 4px 9px;
54
+ border-radius: var(--r-pill);
55
+ background: var(--w);
56
+ color: var(--c);
57
+ flex: none;
58
+ }
59
+ .dh .cid[data-v-10de8666] {
60
+ font: 600 12px/1 var(--mono);
61
+ color: var(--ink);
62
+ overflow: visible;
63
+ white-space: normal;
64
+ }
65
+ .dh .dur[data-v-10de8666] {
66
+ font: 10px/1.4 var(--mono);
67
+ color: var(--ink-4);
68
+ margin-left: auto;
69
+ text-align: right;
70
+ }
71
+ .dh .x[data-v-10de8666] {
72
+ font: 13px/1 var(--sans);
73
+ color: var(--ink-4);
74
+ padding: 2px 6px;
75
+ margin-left: 8px;
76
+ border-radius: 6px;
77
+ cursor: pointer;
78
+ }
79
+ .dh .x[data-v-10de8666]:hover {
80
+ color: var(--ink);
81
+ background: var(--raise);
82
+ }
83
+ .dbody[data-v-10de8666] {
84
+ overflow: auto;
85
+ padding: 0 0 26px;
86
+ flex: 1;
87
+ }
88
+ .sec[data-v-10de8666] {
89
+ padding: 15px 16px;
90
+ border-bottom: 1px solid var(--rule-2);
91
+ }
92
+ .sec h4[data-v-10de8666] {
93
+ margin: 0 0 10px;
94
+ font: 600 11px/1 var(--sans);
95
+ letter-spacing: 0.02em;
96
+ color: var(--ink-3);
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 9px;
100
+ }
101
+ .sec h4 em[data-v-10de8666] {
102
+ font-style: normal;
103
+ font-weight: 400;
104
+ color: var(--ink-4);
105
+ }
106
+ .full[data-v-10de8666] {
107
+ margin: 0;
108
+ font: 11px/1.6 var(--mono);
109
+ color: var(--ink-2);
110
+ white-space: pre-wrap;
111
+ word-break: break-word;
112
+ background: var(--sunken);
113
+ border-radius: var(--r-ctl);
114
+ padding: 10px 12px;
115
+ }
116
+ /* Timeline: a hairline with one dot per event. */
117
+ .tl[data-v-10de8666] {
118
+ list-style: none;
119
+ margin: 0;
120
+ padding: 0 0 0 4px;
121
+ }
122
+ .tl .ev[data-v-10de8666] {
123
+ position: relative;
124
+ display: grid;
125
+ grid-template-columns: 52px 1fr auto;
126
+ gap: 0 11px;
127
+ padding: 0 0 13px 16px;
128
+ border-left: 1px solid var(--rule);
129
+ }
130
+ .tl .ev[data-v-10de8666]:last-child {
131
+ border-left-color: transparent;
132
+ padding-bottom: 0;
133
+ }
134
+ .tl .dot[data-v-10de8666] {
135
+ position: absolute;
136
+ left: -4.5px;
137
+ top: 3px;
138
+ width: 8px;
139
+ height: 8px;
140
+ border-radius: 50%;
141
+ background: var(--bg);
142
+ border: 1.5px solid var(--ink-4);
143
+ }
144
+ .tl .ev.now .dot[data-v-10de8666] {
145
+ border-color: var(--c-running);
146
+ background: var(--c-running);
147
+ animation: tp-pulse 1.6s ease-in-out infinite;
148
+ }
149
+ .tl .ev.isbad .dot[data-v-10de8666] {
150
+ border-color: var(--c-failed);
151
+ background: var(--c-failed);
152
+ }
153
+ .tl .t[data-v-10de8666] {
154
+ font: 10px/1.5 var(--mono);
155
+ color: var(--ink-4);
156
+ }
157
+ .tl .k[data-v-10de8666] {
158
+ font: 600 11.5px/1.5 var(--sans);
159
+ grid-column: 2;
160
+ color: var(--ink-2);
161
+ }
162
+ .tl .g[data-v-10de8666] {
163
+ font: 10px/1.5 var(--mono);
164
+ color: var(--ink-4);
165
+ text-align: right;
166
+ }
167
+ .tl .d[data-v-10de8666] {
168
+ grid-column: 2/4;
169
+ font: 10px/1.55 var(--mono);
170
+ color: var(--ink-3);
171
+ word-break: break-word;
172
+ }
173
+ .live[data-v-10de8666] {
174
+ display: inline-flex;
175
+ align-items: center;
176
+ gap: 6px;
177
+ font: 11.5px/1 var(--sans);
178
+ color: var(--ink-3);
179
+ }
180
+ .live i[data-v-10de8666] {
181
+ width: 6px;
182
+ height: 6px;
183
+ border-radius: 50%;
184
+ background: var(--c-running);
185
+ animation: tp-pulse 1.6s ease-in-out infinite;
186
+ }
187
+ .live[data-off] i[data-v-10de8666] {
188
+ background: var(--ink-4);
189
+ animation: none;
190
+ }
191
+ /* The duel: claim | rule | evidence. */
192
+ .duel[data-v-10de8666] {
193
+ display: grid;
194
+ grid-template-columns: 1fr 1px 1fr;
195
+ border-bottom: 1px solid var(--rule-2);
196
+ }
197
+ .duel .side[data-v-10de8666] {
198
+ padding: 14px 16px 16px;
199
+ min-width: 0;
200
+ }
201
+ .duel .side h5[data-v-10de8666] {
202
+ margin: 0 0 8px;
203
+ font: 600 11px/1 var(--sans);
204
+ color: var(--ink-3);
205
+ display: flex;
206
+ align-items: center;
207
+ gap: 6px;
208
+ flex-wrap: wrap;
209
+ }
210
+ .duel .side h5 em[data-v-10de8666] {
211
+ font-style: normal;
212
+ font-weight: 400;
213
+ color: var(--ink-4);
214
+ }
215
+ .duel.solo[data-v-10de8666] {
216
+ grid-template-columns: 1fr;
217
+ }
218
+ .duel .rule[data-v-10de8666] {
219
+ background: var(--rule-2);
220
+ }
221
+ .duel .claim .body[data-v-10de8666] {
222
+ margin: 0;
223
+ font-size: 12px;
224
+ line-height: 1.6;
225
+ color: var(--ink-2);
226
+ white-space: pre-wrap;
227
+ word-break: break-word;
228
+ }
229
+ .duel .ev dl[data-v-10de8666] {
230
+ margin: 0;
231
+ display: grid;
232
+ grid-template-columns: auto 1fr;
233
+ gap: 4px 12px;
234
+ }
235
+ .duel .ev dt[data-v-10de8666] {
236
+ font: 11px/1.5 var(--sans);
237
+ color: var(--ink-4);
238
+ white-space: nowrap;
239
+ }
240
+ .duel .ev dd[data-v-10de8666] {
241
+ margin: 0;
242
+ font: 11px/1.5 var(--mono);
243
+ color: var(--ink);
244
+ word-break: break-word;
245
+ }
246
+ .duel .ev dd.bad[data-v-10de8666] {
247
+ color: var(--c-failed);
248
+ font-weight: 600;
249
+ }
250
+ .duel .ev dd.good[data-v-10de8666] {
251
+ color: var(--ok);
252
+ font-weight: 600;
253
+ }
254
+ .vrow[data-v-10de8666] {
255
+ display: flex;
256
+ align-items: center;
257
+ gap: 9px;
258
+ }
259
+ .vdot[data-v-10de8666] {
260
+ width: 9px;
261
+ height: 9px;
262
+ border-radius: 50%;
263
+ flex: none;
264
+ background: var(--ok);
265
+ }
266
+ .vdot.bad[data-v-10de8666] {
267
+ background: var(--c-failed);
268
+ }
269
+ .vlabel[data-v-10de8666] {
270
+ font: 600 13px/1.4 var(--sans);
271
+ color: var(--ink);
272
+ }
273
+ .vcode[data-v-10de8666] {
274
+ margin-left: auto;
275
+ font: 11.5px/1 var(--mono);
276
+ color: var(--ink-3);
277
+ }
278
+ .vcode.bad[data-v-10de8666] {
279
+ color: var(--c-failed);
280
+ font-weight: 600;
281
+ }
282
+ .vcmd[data-v-10de8666] {
283
+ margin: 7px 0 0;
284
+ font: 10px/1.5 var(--mono);
285
+ color: var(--ink-4);
286
+ overflow-wrap: anywhere;
287
+ }
288
+ /* Tabs: two real buttons; the selected one carries a rule under it. */
289
+ .dtabs[data-v-10de8666] {
290
+ display: flex;
291
+ gap: 2px;
292
+ padding: 0 16px;
293
+ border-bottom: 1px solid var(--rule-2);
294
+ flex: none;
295
+ }
296
+ .dtabs button[data-v-10de8666] {
297
+ font: 600 12px/1 var(--sans);
298
+ color: var(--ink-4);
299
+ background: none;
300
+ border: 0;
301
+ border-bottom: 2px solid transparent;
302
+ padding: 11px 10px 9px;
303
+ margin-bottom: -1px;
304
+ cursor: pointer;
305
+ }
306
+ .dtabs button[data-v-10de8666]:hover {
307
+ color: var(--ink-2);
308
+ }
309
+ .dtabs button.on[data-v-10de8666] {
310
+ color: var(--ink);
311
+ border-bottom-color: var(--accent);
312
+ }
313
+ /* The log panel fills the drawer body: a fixed toolbar and notices above a
314
+ scrolling tail, with the jump button floating at its lower right. */
315
+ .logpanel[data-v-10de8666] {
316
+ position: relative;
317
+ display: flex;
318
+ flex-direction: column;
319
+ flex: 1;
320
+ min-height: 0;
321
+ }
322
+ .logbar[data-v-10de8666] {
323
+ display: flex;
324
+ align-items: center;
325
+ gap: 6px;
326
+ padding: 9px 12px;
327
+ border-bottom: 1px solid var(--rule-2);
328
+ flex: none;
329
+ }
330
+ .logq[data-v-10de8666] {
331
+ flex: 1;
332
+ min-width: 0;
333
+ font: 11.5px/1.4 var(--mono);
334
+ color: var(--ink);
335
+ background: var(--sunken);
336
+ border: 1px solid var(--rule);
337
+ border-radius: var(--r-ctl);
338
+ padding: 5px 8px;
339
+ }
340
+ .logq[data-v-10de8666]:focus {
341
+ outline: none;
342
+ border-color: var(--accent);
343
+ }
344
+ .logcount[data-v-10de8666] {
345
+ font: 11px/1 var(--mono);
346
+ color: var(--ink-3);
347
+ white-space: nowrap;
348
+ min-width: 44px;
349
+ text-align: center;
350
+ }
351
+ .lognav[data-v-10de8666],
352
+ .logact[data-v-10de8666] {
353
+ font: 11.5px/1 var(--mono);
354
+ color: var(--ink-2);
355
+ background: var(--panel);
356
+ border: 1px solid var(--rule);
357
+ border-radius: var(--r-ctl);
358
+ padding: 5px 8px;
359
+ cursor: pointer;
360
+ }
361
+ .lognav[data-v-10de8666]:hover:not(:disabled),
362
+ .logact[data-v-10de8666]:hover {
363
+ background: var(--raise);
364
+ }
365
+ .lognav[data-v-10de8666]:disabled {
366
+ color: var(--ink-4);
367
+ opacity: 0.5;
368
+ cursor: default;
369
+ }
370
+ .logscope[data-v-10de8666] {
371
+ margin: 0;
372
+ padding: 6px 12px;
373
+ font: 10.5px/1.4 var(--mono);
374
+ color: var(--ink-4);
375
+ border-bottom: 1px solid var(--rule-2);
376
+ flex: none;
377
+ }
378
+ .lognone[data-v-10de8666] {
379
+ color: var(--c-failed);
380
+ margin-left: 6px;
381
+ }
382
+ .lognote[data-v-10de8666],
383
+ .logerr[data-v-10de8666] {
384
+ margin: 0;
385
+ padding: 6px 12px;
386
+ font: 10.5px/1.5 var(--mono);
387
+ flex: none;
388
+ }
389
+ .lognote[data-v-10de8666] {
390
+ color: var(--ink-3);
391
+ background: var(--sunken);
392
+ border-bottom: 1px solid var(--rule-2);
393
+ }
394
+ .logerr[data-v-10de8666] {
395
+ color: var(--c-failed);
396
+ border-bottom: 1px solid var(--rule-2);
397
+ }
398
+ .logscroll[data-v-10de8666] {
399
+ flex: 1;
400
+ min-height: 0;
401
+ overflow: auto;
402
+ padding: 8px 12px;
403
+ font: 10.5px/1.55 var(--mono);
404
+ color: var(--ink-2);
405
+ background: var(--bg);
406
+ }
407
+ .logline[data-v-10de8666] {
408
+ white-space: pre-wrap;
409
+ word-break: break-word;
410
+ }
411
+ .logline.cur[data-v-10de8666] {
412
+ background: var(--w-running);
413
+ border-radius: 3px;
414
+ }
415
+ .logline .hit[data-v-10de8666] {
416
+ background: color-mix(in srgb, var(--accent) 35%, transparent);
417
+ border-radius: 2px;
418
+ }
419
+ .logempty[data-v-10de8666] {
420
+ margin: 0;
421
+ color: var(--ink-4);
422
+ }
423
+ .logjump[data-v-10de8666] {
424
+ position: absolute;
425
+ right: 14px;
426
+ bottom: 14px;
427
+ font: 11.5px/1 var(--sans);
428
+ color: #fff;
429
+ background: var(--accent);
430
+ border: 0;
431
+ border-radius: var(--r-pill);
432
+ padding: 7px 12px;
433
+ cursor: pointer;
434
+ box-shadow: 0 6px 16px -6px rgba(0, 0, 0, 0.5);
435
+ }
436
+ .none[data-v-10de8666] {
437
+ padding: 16px;
438
+ color: var(--ink-4);
439
+ }
440
+ @media (prefers-reduced-motion: reduce) {
441
+ .tl .ev.now .dot[data-v-10de8666],
442
+ .live i[data-v-10de8666] {
443
+ animation: none;
444
+ }
445
+ }
446
+
447
+ .tp-drawer {
448
+ top: var(--mast) !important;
449
+ height: calc(100% - var(--mast)) !important;
450
+ background: var(--panel) !important;
451
+ border-left: 1px solid var(--rule) !important;
452
+ border-radius: var(--r-card) 0 0 var(--r-card);
453
+ box-shadow: -20px 0 44px -26px rgba(0, 0, 0, 0.8) !important;
454
+ display: flex;
455
+ flex-direction: column;
456
+ }
457
+ html[data-theme='light'] .tp-drawer {
458
+ box-shadow: -20px 0 44px -26px rgba(0, 0, 0, 0.28) !important;
459
+ }
460
+ .tp-drawer .el-drawer__body {
461
+ padding: 0;
462
+ overflow: hidden;
463
+ display: flex;
464
+ flex-direction: column;
465
+ }
@@ -0,0 +1,114 @@
1
+ import { d as defineComponent, i as useBoardStore, u as useI18n, c as createElementBlock, b as createBaseVNode, t as toDisplayString, f as unref, g as createCommentVNode, e as createVNode, l as withCtx, h as computed, p as resolveComponent, v as useRouter, s as useRoute, o as openBlock, _ as _export_sfc } from "./index-B-PLdDbR.js";
2
+ import { T as TaskDrawer, d as duration } from "./TaskDrawer-6JoGTH0s.js";
3
+ const _hoisted_1 = { class: "tasks-view" };
4
+ const _hoisted_2 = { class: "panes" };
5
+ const _hoisted_3 = { class: "sub" };
6
+ const _hoisted_4 = { class: "taken" };
7
+ const _hoisted_5 = { class: "tp-table" };
8
+ const _hoisted_6 = ["data-status"];
9
+ const _hoisted_7 = { class: "mono" };
10
+ const _hoisted_8 = { class: "mono muted" };
11
+ const _hoisted_9 = { class: "mono muted" };
12
+ const _hoisted_10 = { class: "mono" };
13
+ const _sfc_main = /* @__PURE__ */ defineComponent({
14
+ __name: "TasksView",
15
+ setup(__props) {
16
+ const store = useBoardStore();
17
+ const router = useRouter();
18
+ const route = useRoute();
19
+ const { t } = useI18n();
20
+ const rows = computed(() => store.tasks);
21
+ function open(id) {
22
+ void router.push({ name: "tasks", params: { taskId: id }, query: route.query });
23
+ }
24
+ return (_ctx, _cache) => {
25
+ const _component_el_table_column = resolveComponent("el-table-column");
26
+ const _component_el_table = resolveComponent("el-table");
27
+ return openBlock(), createElementBlock("div", _hoisted_1, [
28
+ createBaseVNode("div", _hoisted_2, [
29
+ createBaseVNode("h3", null, toDisplayString(unref(t)("tasks.title")), 1),
30
+ createBaseVNode("p", _hoisted_3, toDisplayString(unref(t)("tasks.sub")), 1),
31
+ createBaseVNode("div", _hoisted_4, [
32
+ createBaseVNode("span", null, toDisplayString(unref(t)("board.taken", { n: unref(store).tasks.length, m: unref(store).total })), 1),
33
+ unref(store).tasks.length < unref(store).total ? (openBlock(), createElementBlock("button", {
34
+ key: 0,
35
+ type: "button",
36
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(store).growBudget())
37
+ }, toDisplayString(unref(t)("board.takeMore")), 1)) : createCommentVNode("", true)
38
+ ]),
39
+ createBaseVNode("div", _hoisted_5, [
40
+ createVNode(_component_el_table, {
41
+ data: rows.value,
42
+ style: { "width": "100%" },
43
+ onRowClick: _cache[1] || (_cache[1] = (row) => open(row.id))
44
+ }, {
45
+ default: withCtx(() => [
46
+ createVNode(_component_el_table_column, {
47
+ label: unref(t)("status.label"),
48
+ width: "92"
49
+ }, {
50
+ default: withCtx((scope) => [
51
+ createBaseVNode("span", {
52
+ class: "sc",
53
+ "data-status": scope.row.status
54
+ }, toDisplayString(unref(t)(`status.${scope.row.status}`)), 9, _hoisted_6)
55
+ ]),
56
+ _: 1
57
+ }, 8, ["label"]),
58
+ createVNode(_component_el_table_column, {
59
+ label: "id",
60
+ width: "148"
61
+ }, {
62
+ default: withCtx((scope) => [
63
+ createBaseVNode("span", _hoisted_7, toDisplayString(scope.row.id), 1)
64
+ ]),
65
+ _: 1
66
+ }),
67
+ createVNode(_component_el_table_column, {
68
+ label: unref(t)("rail.title"),
69
+ width: "118"
70
+ }, {
71
+ default: withCtx((scope) => [
72
+ createBaseVNode("span", _hoisted_8, toDisplayString(scope.row.project), 1)
73
+ ]),
74
+ _: 1
75
+ }, 8, ["label"]),
76
+ createVNode(_component_el_table_column, {
77
+ prop: "brief",
78
+ label: unref(t)("tasks.col.brief"),
79
+ "min-width": "300",
80
+ "class-name": "tp-clip"
81
+ }, null, 8, ["label"]),
82
+ createVNode(_component_el_table_column, {
83
+ label: unref(t)("tasks.col.adapter"),
84
+ width: "126"
85
+ }, {
86
+ default: withCtx((scope) => [
87
+ createBaseVNode("span", _hoisted_9, toDisplayString(scope.row.adapter ?? "—"), 1)
88
+ ]),
89
+ _: 1
90
+ }, 8, ["label"]),
91
+ createVNode(_component_el_table_column, {
92
+ label: unref(t)("tasks.col.dur"),
93
+ width: "82",
94
+ align: "right"
95
+ }, {
96
+ default: withCtx((scope) => [
97
+ createBaseVNode("span", _hoisted_10, toDisplayString(unref(duration)(scope.row.started_at, scope.row.finished_at)), 1)
98
+ ]),
99
+ _: 1
100
+ }, 8, ["label"])
101
+ ]),
102
+ _: 1
103
+ }, 8, ["data"])
104
+ ])
105
+ ]),
106
+ createVNode(TaskDrawer)
107
+ ]);
108
+ };
109
+ }
110
+ });
111
+ const TasksView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5700280e"]]);
112
+ export {
113
+ TasksView as default
114
+ };
@@ -0,0 +1,30 @@
1
+
2
+ .tasks-view[data-v-5700280e] {
3
+ display: flex;
4
+ flex-direction: column;
5
+ flex: 1;
6
+ min-height: 0;
7
+ }
8
+ .tp-table[data-v-5700280e] .el-table__row {
9
+ cursor: pointer;
10
+ }
11
+ .taken[data-v-5700280e] {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 10px;
15
+ margin: 2px 0 10px;
16
+ font: 11.5px/1 var(--mono);
17
+ color: var(--ink-3);
18
+ }
19
+ .taken button[data-v-5700280e] {
20
+ font: 11.5px/1 var(--sans);
21
+ color: var(--accent);
22
+ background: var(--panel);
23
+ border: 1px solid var(--rule);
24
+ border-radius: var(--r-ctl);
25
+ padding: 5px 10px;
26
+ cursor: pointer;
27
+ }
28
+ .taken button[data-v-5700280e]:hover {
29
+ background: var(--raise);
30
+ }
Binary file