issue-flow 0.4.4 → 0.5.2

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 (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -1
  3. package/dist/{analyze-PDDIU7HD.js → analyze-QVQ4CTCU.js} +7 -9
  4. package/dist/{analyze-PDDIU7HD.js.map → analyze-QVQ4CTCU.js.map} +1 -1
  5. package/dist/chunk-3ULIAC2J.js +58 -0
  6. package/dist/chunk-3ULIAC2J.js.map +1 -0
  7. package/dist/{chunk-LTPXKMPE.js → chunk-DLWRUTRL.js} +105 -157
  8. package/dist/chunk-DLWRUTRL.js.map +1 -0
  9. package/dist/chunk-HDV3YDTG.js +52 -0
  10. package/dist/chunk-HDV3YDTG.js.map +1 -0
  11. package/dist/chunk-JMSRJ43G.js +84 -0
  12. package/dist/chunk-JMSRJ43G.js.map +1 -0
  13. package/dist/{chunk-4OQ2ARLP.js → chunk-KLBAHTXX.js} +10 -2
  14. package/dist/chunk-KLBAHTXX.js.map +1 -0
  15. package/dist/chunk-KMX3DUJN.js +104 -0
  16. package/dist/chunk-KMX3DUJN.js.map +1 -0
  17. package/dist/{chunk-65KDGHLM.js → chunk-LJI45O5B.js} +38 -19
  18. package/dist/chunk-LJI45O5B.js.map +1 -0
  19. package/dist/chunk-O5XI2CFF.js +850 -0
  20. package/dist/chunk-O5XI2CFF.js.map +1 -0
  21. package/dist/{chunk-HPSU5GGE.js → chunk-OEJSMZMO.js} +7 -9
  22. package/dist/{chunk-HPSU5GGE.js.map → chunk-OEJSMZMO.js.map} +1 -1
  23. package/dist/chunk-PA3GI7LR.js +240 -0
  24. package/dist/chunk-PA3GI7LR.js.map +1 -0
  25. package/dist/{chunk-OZVHOVDT.js → chunk-SLHZPB3C.js} +15 -8
  26. package/dist/chunk-SLHZPB3C.js.map +1 -0
  27. package/dist/{chunk-CSSXTPWE.js → chunk-VM7C7L3A.js} +2 -2
  28. package/dist/cli.js +55 -18
  29. package/dist/cli.js.map +1 -1
  30. package/dist/execute-TEJ26L4O.js +12 -0
  31. package/dist/{generate-HP4CPMJG.js → generate-KBQ4KW4T.js} +4 -4
  32. package/dist/init-4VMPBRMA.js +9 -0
  33. package/dist/plan-PWYZP5AN.js +13 -0
  34. package/dist/pr-CJQWZUDR.js +13 -0
  35. package/dist/prd-4KLQY7BC.js +13 -0
  36. package/dist/review-YFCWBBKY.js +11 -0
  37. package/dist/{run-A44XQ77Z.js → run-3GJC54DB.js} +292 -26
  38. package/dist/run-3GJC54DB.js.map +1 -0
  39. package/package.json +13 -3
  40. package/web/public/app.css +481 -0
  41. package/web/public/app.js +522 -0
  42. package/web/public/index.html +113 -0
  43. package/dist/chunk-4OQ2ARLP.js.map +0 -1
  44. package/dist/chunk-65KDGHLM.js.map +0 -1
  45. package/dist/chunk-LTPXKMPE.js.map +0 -1
  46. package/dist/chunk-OZVHOVDT.js.map +0 -1
  47. package/dist/chunk-SKTTLX7R.js +0 -68
  48. package/dist/chunk-SKTTLX7R.js.map +0 -1
  49. package/dist/chunk-X5QCISNM.js +0 -180
  50. package/dist/chunk-X5QCISNM.js.map +0 -1
  51. package/dist/chunk-YAFHVFV5.js +0 -199
  52. package/dist/chunk-YAFHVFV5.js.map +0 -1
  53. package/dist/chunk-ZJB2IMPU.js +0 -85
  54. package/dist/chunk-ZJB2IMPU.js.map +0 -1
  55. package/dist/execute-WKYSGIGH.js +0 -11
  56. package/dist/init-SXFGOCML.js +0 -9
  57. package/dist/plan-JUOBYTCD.js +0 -12
  58. package/dist/pr-CYZYJZZV.js +0 -12
  59. package/dist/prd-PZOY3FCC.js +0 -12
  60. package/dist/review-MK5FTVUE.js +0 -12
  61. package/dist/run-A44XQ77Z.js.map +0 -1
  62. /package/dist/{chunk-CSSXTPWE.js.map → chunk-VM7C7L3A.js.map} +0 -0
  63. /package/dist/{execute-WKYSGIGH.js.map → execute-TEJ26L4O.js.map} +0 -0
  64. /package/dist/{generate-HP4CPMJG.js.map → generate-KBQ4KW4T.js.map} +0 -0
  65. /package/dist/{init-SXFGOCML.js.map → init-4VMPBRMA.js.map} +0 -0
  66. /package/dist/{plan-JUOBYTCD.js.map → plan-PWYZP5AN.js.map} +0 -0
  67. /package/dist/{pr-CYZYJZZV.js.map → pr-CJQWZUDR.js.map} +0 -0
  68. /package/dist/{prd-PZOY3FCC.js.map → prd-4KLQY7BC.js.map} +0 -0
  69. /package/dist/{review-MK5FTVUE.js.map → review-YFCWBBKY.js.map} +0 -0
@@ -0,0 +1,481 @@
1
+ /* Interface do monitoramento web do issue-flow.
2
+ Autocontida: sem fontes externas, sem CDN — funciona offline. */
3
+
4
+ :root {
5
+ --bg: #f4f5f7;
6
+ --card: #ffffff;
7
+ --fg: #1a1f27;
8
+ --muted: #6b7280;
9
+ --border: #e2e5ea;
10
+ --accent: #4f46e5;
11
+ --ok: #16a34a;
12
+ --warn: #b45309;
13
+ --warn-bg: #fef3c7;
14
+ --err: #dc2626;
15
+ --err-bg: #fee2e2;
16
+ --run: #2563eb;
17
+ --run-bg: #dbeafe;
18
+ --ok-bg: #dcfce7;
19
+ --idle-bg: #e5e7eb;
20
+ --shadow: 0 1px 2px rgb(0 0 0 / 0.06);
21
+ }
22
+
23
+ @media (prefers-color-scheme: dark) {
24
+ :root {
25
+ --bg: #0f1218;
26
+ --card: #171c24;
27
+ --fg: #e5e9f0;
28
+ --muted: #8b93a1;
29
+ --border: #262d38;
30
+ --accent: #818cf8;
31
+ --ok: #4ade80;
32
+ --warn: #fbbf24;
33
+ --warn-bg: #3a2d10;
34
+ --err: #f87171;
35
+ --err-bg: #3b1a1a;
36
+ --run: #60a5fa;
37
+ --run-bg: #172a45;
38
+ --ok-bg: #14301f;
39
+ --idle-bg: #262d38;
40
+ --shadow: none;
41
+ }
42
+ }
43
+
44
+ * {
45
+ box-sizing: border-box;
46
+ }
47
+
48
+ body {
49
+ margin: 0;
50
+ background: var(--bg);
51
+ color: var(--fg);
52
+ font: 15px/1.5 system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
53
+ }
54
+
55
+ main {
56
+ max-width: 960px;
57
+ margin: 0 auto;
58
+ padding: 16px 16px 48px;
59
+ display: grid;
60
+ gap: 16px;
61
+ }
62
+
63
+ /* Itens de grid têm min-width automático: sem isto, um conteúdo largo
64
+ (logs, títulos longos) alarga todos os cards e cria scroll horizontal. */
65
+ main > *,
66
+ .columns > * {
67
+ min-width: 0;
68
+ }
69
+
70
+ .mono {
71
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
72
+ font-size: 0.86em;
73
+ }
74
+
75
+ .muted {
76
+ color: var(--muted);
77
+ }
78
+
79
+ .card {
80
+ background: var(--card);
81
+ border: 1px solid var(--border);
82
+ border-radius: 10px;
83
+ padding: 16px;
84
+ box-shadow: var(--shadow);
85
+ }
86
+
87
+ h1 {
88
+ margin: 0;
89
+ font-size: 1.25rem;
90
+ display: flex;
91
+ align-items: baseline;
92
+ gap: 8px;
93
+ }
94
+
95
+ h2 {
96
+ margin: 0 0 10px;
97
+ font-size: 0.8rem;
98
+ font-weight: 600;
99
+ text-transform: uppercase;
100
+ letter-spacing: 0.06em;
101
+ color: var(--muted);
102
+ }
103
+
104
+ a {
105
+ color: var(--accent);
106
+ text-decoration: none;
107
+ }
108
+
109
+ a:hover {
110
+ text-decoration: underline;
111
+ }
112
+
113
+ /* ---- Cabeçalho ---- */
114
+
115
+ .header {
116
+ display: flex;
117
+ flex-wrap: wrap;
118
+ justify-content: space-between;
119
+ align-items: flex-start;
120
+ gap: 12px;
121
+ }
122
+
123
+ .brand {
124
+ font-weight: 700;
125
+ }
126
+
127
+ .issue-link {
128
+ font-weight: 600;
129
+ }
130
+
131
+ #branch-line {
132
+ margin: 4px 0 0;
133
+ }
134
+
135
+ .header-side {
136
+ display: flex;
137
+ flex-direction: column;
138
+ align-items: flex-end;
139
+ gap: 6px;
140
+ }
141
+
142
+ .timers {
143
+ display: flex;
144
+ gap: 10px;
145
+ font-variant-numeric: tabular-nums;
146
+ }
147
+
148
+ .refresh-control,
149
+ .log-filter-control {
150
+ font-size: 0.82rem;
151
+ color: var(--muted);
152
+ display: inline-flex;
153
+ align-items: center;
154
+ gap: 6px;
155
+ }
156
+
157
+ select {
158
+ background: var(--card);
159
+ color: var(--fg);
160
+ border: 1px solid var(--border);
161
+ border-radius: 6px;
162
+ padding: 3px 6px;
163
+ font: inherit;
164
+ font-size: 0.85rem;
165
+ }
166
+
167
+ /* ---- Badges de status ---- */
168
+
169
+ .badge {
170
+ display: inline-block;
171
+ padding: 2px 10px;
172
+ border-radius: 999px;
173
+ font-size: 0.78rem;
174
+ font-weight: 600;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.04em;
177
+ }
178
+
179
+ .status-idle {
180
+ background: var(--idle-bg);
181
+ color: var(--muted);
182
+ }
183
+
184
+ .status-running {
185
+ background: var(--run-bg);
186
+ color: var(--run);
187
+ }
188
+
189
+ .status-completed {
190
+ background: var(--ok-bg);
191
+ color: var(--ok);
192
+ }
193
+
194
+ .status-failed {
195
+ background: var(--err-bg);
196
+ color: var(--err);
197
+ }
198
+
199
+ /* ---- Banner de desconexão ---- */
200
+
201
+ .banner {
202
+ position: sticky;
203
+ top: 0;
204
+ z-index: 10;
205
+ background: var(--err);
206
+ color: #fff;
207
+ text-align: center;
208
+ padding: 8px 16px;
209
+ font-weight: 600;
210
+ }
211
+
212
+ /* ---- Erros e avisos em destaque ---- */
213
+
214
+ .alerts {
215
+ border-color: var(--err);
216
+ }
217
+
218
+ .alert-entry {
219
+ border-left: 3px solid var(--err);
220
+ padding: 4px 10px;
221
+ margin: 6px 0;
222
+ border-radius: 0 6px 6px 0;
223
+ background: var(--err-bg);
224
+ }
225
+
226
+ .alert-entry.level-warn {
227
+ border-left-color: var(--warn);
228
+ background: var(--warn-bg);
229
+ }
230
+
231
+ .alert-count {
232
+ font-size: 0.82rem;
233
+ color: var(--muted);
234
+ margin: 0 0 4px;
235
+ }
236
+
237
+ /* ---- Progresso ---- */
238
+
239
+ .progress-row {
240
+ display: flex;
241
+ align-items: center;
242
+ gap: 12px;
243
+ }
244
+
245
+ progress {
246
+ flex: 1;
247
+ height: 10px;
248
+ accent-color: var(--accent);
249
+ }
250
+
251
+ .progress-percent {
252
+ font-weight: 700;
253
+ font-variant-numeric: tabular-nums;
254
+ min-width: 3.5ch;
255
+ text-align: right;
256
+ }
257
+
258
+ #progress-counters {
259
+ margin: 8px 0 0;
260
+ font-size: 0.86rem;
261
+ }
262
+
263
+ /* ---- Executando agora ---- */
264
+
265
+ .now-grid {
266
+ display: grid;
267
+ grid-template-columns: max-content 1fr;
268
+ gap: 4px 14px;
269
+ }
270
+
271
+ .now-grid dt {
272
+ color: var(--muted);
273
+ font-size: 0.86rem;
274
+ }
275
+
276
+ .now-grid dd {
277
+ margin: 0;
278
+ overflow: hidden;
279
+ text-overflow: ellipsis;
280
+ white-space: nowrap;
281
+ }
282
+
283
+ .pulse {
284
+ display: inline-block;
285
+ width: 8px;
286
+ height: 8px;
287
+ border-radius: 50%;
288
+ background: var(--run);
289
+ margin-right: 6px;
290
+ animation: pulse 1.4s ease-in-out infinite;
291
+ }
292
+
293
+ @keyframes pulse {
294
+ 50% {
295
+ opacity: 0.3;
296
+ }
297
+ }
298
+
299
+ @media (prefers-reduced-motion: reduce) {
300
+ .pulse {
301
+ animation: none;
302
+ }
303
+ }
304
+
305
+ /* ---- Listas (fases, stories, commits, PRs, logs) ---- */
306
+
307
+ .plain-list {
308
+ list-style: none;
309
+ margin: 0;
310
+ padding: 0;
311
+ }
312
+
313
+ .plain-list li {
314
+ display: flex;
315
+ align-items: baseline;
316
+ gap: 8px;
317
+ padding: 5px 0;
318
+ border-bottom: 1px solid var(--border);
319
+ }
320
+
321
+ .plain-list li:last-child {
322
+ border-bottom: none;
323
+ }
324
+
325
+ .item-icon {
326
+ flex: none;
327
+ width: 1.2em;
328
+ text-align: center;
329
+ font-weight: 700;
330
+ }
331
+
332
+ .icon-completed {
333
+ color: var(--ok);
334
+ }
335
+
336
+ .icon-running {
337
+ color: var(--run);
338
+ }
339
+
340
+ .icon-failed {
341
+ color: var(--err);
342
+ }
343
+
344
+ .icon-pending {
345
+ color: var(--muted);
346
+ }
347
+
348
+ .item-main {
349
+ flex: 1;
350
+ min-width: 0;
351
+ }
352
+
353
+ .item-title {
354
+ overflow: hidden;
355
+ text-overflow: ellipsis;
356
+ white-space: nowrap;
357
+ }
358
+
359
+ .item-error {
360
+ color: var(--err);
361
+ font-size: 0.85rem;
362
+ white-space: pre-wrap;
363
+ word-break: break-word;
364
+ }
365
+
366
+ .item-side {
367
+ flex: none;
368
+ color: var(--muted);
369
+ font-size: 0.84rem;
370
+ font-variant-numeric: tabular-nums;
371
+ }
372
+
373
+ .story-id {
374
+ font-weight: 600;
375
+ margin-right: 6px;
376
+ }
377
+
378
+ .commit-hash {
379
+ margin-right: 8px;
380
+ }
381
+
382
+ /* ---- Próximos passos ---- */
383
+
384
+ #next-steps ol {
385
+ margin: 0;
386
+ padding-left: 20px;
387
+ }
388
+
389
+ #next-steps li {
390
+ padding: 2px 0;
391
+ }
392
+
393
+ /* ---- Logs ---- */
394
+
395
+ .section-head {
396
+ display: flex;
397
+ justify-content: space-between;
398
+ align-items: baseline;
399
+ gap: 12px;
400
+ }
401
+
402
+ .logs {
403
+ max-height: 320px;
404
+ overflow-y: auto;
405
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
406
+ font-size: 0.8rem;
407
+ }
408
+
409
+ .logs li {
410
+ border-bottom: none;
411
+ padding: 2px 0;
412
+ align-items: flex-start;
413
+ }
414
+
415
+ .log-time {
416
+ flex: none;
417
+ color: var(--muted);
418
+ }
419
+
420
+ .log-level {
421
+ flex: none;
422
+ width: 5ch;
423
+ font-weight: 700;
424
+ }
425
+
426
+ .level-info .log-level {
427
+ color: var(--muted);
428
+ }
429
+
430
+ .level-warn .log-level {
431
+ color: var(--warn);
432
+ }
433
+
434
+ .level-error .log-level {
435
+ color: var(--err);
436
+ }
437
+
438
+ .log-message {
439
+ flex: 1;
440
+ min-width: 0;
441
+ white-space: pre-wrap;
442
+ word-break: break-word;
443
+ }
444
+
445
+ /* ---- Diversos ---- */
446
+
447
+ .empty {
448
+ color: var(--muted);
449
+ font-style: italic;
450
+ margin: 0;
451
+ }
452
+
453
+ .footer {
454
+ text-align: center;
455
+ font-size: 0.78rem;
456
+ }
457
+
458
+ .noscript {
459
+ max-width: 960px;
460
+ margin: 16px auto;
461
+ padding: 0 16px;
462
+ }
463
+
464
+ @media (min-width: 720px) {
465
+ .columns {
466
+ display: grid;
467
+ grid-template-columns: 1fr 1fr;
468
+ gap: 16px;
469
+ }
470
+ }
471
+
472
+ @media (max-width: 719px) {
473
+ .columns {
474
+ display: grid;
475
+ gap: 16px;
476
+ }
477
+
478
+ .header-side {
479
+ align-items: flex-start;
480
+ }
481
+ }