@worca/ui 0.8.1 → 0.9.0-rc.1

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/app/styles.css CHANGED
@@ -24,6 +24,7 @@
24
24
  --status-failed: #ef4444;
25
25
  --status-resuming: #3b82f6;
26
26
  --status-skipped: #94a3b8;
27
+ --status-interrupted: #f59e0b;
27
28
  /* legacy */
28
29
  --status-in-progress: #3b82f6;
29
30
  --status-error: #ef4444;
@@ -714,7 +715,7 @@ h1, h2, h3, h4, h5, h6 {
714
715
 
715
716
  .stage-node.status-in-progress .stage-icon {
716
717
  border-color: var(--status-in-progress);
717
- box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.15);
718
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
718
719
  }
719
720
 
720
721
  .stage-node.status-completed .stage-icon {
@@ -730,8 +731,7 @@ h1, h2, h3, h4, h5, h6 {
730
731
  }
731
732
 
732
733
  .stage-node.status-interrupted .stage-icon {
733
- border-color: var(--status-in-progress);
734
- opacity: 0.6;
734
+ border-color: var(--status-interrupted);
735
735
  }
736
736
 
737
737
  .stage-label {
@@ -1110,8 +1110,7 @@ sl-details.log-history-panel::part(content) {
1110
1110
  }
1111
1111
 
1112
1112
  .status-interrupted {
1113
- color: var(--status-in-progress);
1114
- opacity: 0.6;
1113
+ color: var(--status-interrupted);
1115
1114
  }
1116
1115
 
1117
1116
  .status-running {
@@ -1539,6 +1538,11 @@ sl-details.log-history-panel::part(content) {
1539
1538
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
1540
1539
  gap: 14px;
1541
1540
  }
1541
+ /* Worca Versions panels — 50% wider min column (200 → 300) to fit longer
1542
+ version strings (e.g. RCs + local-repo dirty markers) without wrapping */
1543
+ .settings-grid--versions {
1544
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
1545
+ }
1542
1546
 
1543
1547
  .settings-switches {
1544
1548
  display: flex;
@@ -1648,8 +1652,8 @@ sl-details.log-history-panel::part(content) {
1648
1652
 
1649
1653
  .settings-dispatch-row {
1650
1654
  display: grid;
1651
- grid-template-columns: 120px 1fr;
1652
- align-items: center;
1655
+ grid-template-columns: 120px 1fr auto;
1656
+ align-items: start;
1653
1657
  gap: 12px;
1654
1658
  }
1655
1659
 
@@ -1658,6 +1662,97 @@ sl-details.log-history-panel::part(content) {
1658
1662
  font-weight: 500;
1659
1663
  color: var(--fg);
1660
1664
  text-transform: capitalize;
1665
+ padding-top: 6px;
1666
+ }
1667
+
1668
+ /* Tag input component */
1669
+ .dispatch-tag-input-wrapper {
1670
+ position: relative;
1671
+ }
1672
+
1673
+ .dispatch-tag-input {
1674
+ display: flex;
1675
+ flex-wrap: wrap;
1676
+ gap: 4px;
1677
+ align-items: center;
1678
+ padding: 4px 8px;
1679
+ border: 1px solid var(--sl-color-neutral-300);
1680
+ border-radius: var(--sl-border-radius-medium);
1681
+ min-height: 32px;
1682
+ cursor: text;
1683
+ background: var(--sl-color-neutral-0);
1684
+ }
1685
+
1686
+ .dispatch-tag-input:focus-within {
1687
+ border-color: var(--sl-color-primary-500);
1688
+ box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-color-primary-200);
1689
+ }
1690
+
1691
+ .dispatch-tag-input-field {
1692
+ border: none;
1693
+ outline: none;
1694
+ flex: 1;
1695
+ min-width: 60px;
1696
+ font-size: var(--sl-font-size-small);
1697
+ background: transparent;
1698
+ color: var(--fg);
1699
+ }
1700
+
1701
+ .dispatch-suggestions {
1702
+ position: absolute;
1703
+ z-index: 100;
1704
+ top: calc(100% + 2px);
1705
+ left: 0;
1706
+ right: 0;
1707
+ background: var(--sl-color-neutral-0);
1708
+ border: 1px solid var(--sl-color-neutral-200);
1709
+ border-radius: var(--sl-border-radius-medium);
1710
+ box-shadow: var(--sl-shadow-large);
1711
+ max-height: 200px;
1712
+ overflow-y: auto;
1713
+ }
1714
+
1715
+ .dispatch-suggestions .item {
1716
+ padding: 6px 12px;
1717
+ cursor: pointer;
1718
+ font-size: var(--sl-font-size-small);
1719
+ display: flex;
1720
+ justify-content: space-between;
1721
+ align-items: center;
1722
+ }
1723
+
1724
+ .dispatch-suggestions .item:hover,
1725
+ .dispatch-suggestions .item.active {
1726
+ background: var(--sl-color-primary-50);
1727
+ }
1728
+
1729
+ .dispatch-suggestions .item.denied {
1730
+ opacity: 0.5;
1731
+ text-decoration: line-through;
1732
+ cursor: not-allowed;
1733
+ }
1734
+
1735
+ .dispatch-suggestions .item-label {
1736
+ font-size: 11px;
1737
+ color: var(--sl-color-neutral-500);
1738
+ }
1739
+
1740
+ .dispatch-suggestions .group-label {
1741
+ padding: 4px 12px;
1742
+ font-size: 11px;
1743
+ color: var(--sl-color-neutral-500);
1744
+ text-transform: uppercase;
1745
+ letter-spacing: 0.05em;
1746
+ background: var(--sl-color-neutral-50);
1747
+ }
1748
+
1749
+ .dispatch-reset-btn {
1750
+ padding-top: 2px;
1751
+ }
1752
+
1753
+ .dispatch-reset-placeholder {
1754
+ width: 28px;
1755
+ display: inline-block;
1661
1756
  }
1662
1757
 
1663
1758
  /* Permissions list */
@@ -1823,27 +1918,22 @@ sl-input.pricing-input::part(input) {
1823
1918
  color: var(--muted);
1824
1919
  }
1825
1920
 
1826
- .iteration-trigger {
1827
- display: inline-flex;
1921
+ /* --- Iteration Tags Row (trigger, outcome, classification, subagents) --- */
1922
+ .iteration-tags-row {
1923
+ display: flex;
1924
+ flex-wrap: wrap;
1828
1925
  align-items: center;
1829
- gap: 4px;
1830
- padding: 2px 8px;
1831
- border-radius: 4px;
1832
- font-size: 11px;
1833
- font-weight: 500;
1834
- background: var(--bg-tertiary);
1926
+ gap: 6px;
1927
+ margin-top: 6px;
1928
+ font-size: 13px;
1835
1929
  }
1836
1930
 
1837
- .iteration-outcome {
1838
- display: inline-flex;
1839
- align-items: center;
1840
- gap: 4px;
1841
- font-weight: 500;
1931
+ .iteration-tags-sep {
1932
+ color: var(--fg);
1933
+ opacity: 0.7;
1934
+ margin: 0 2px;
1842
1935
  }
1843
1936
 
1844
- .iteration-outcome.success { color: var(--status-completed); }
1845
- .iteration-outcome.failure { color: var(--status-error); }
1846
-
1847
1937
  /* --- Agent Prompt Section --- */
1848
1938
  sl-details.agent-prompt-section {
1849
1939
  margin-top: 12px;
@@ -4143,3 +4233,289 @@ sl-tooltip.bead-tooltip::part(body) {
4143
4233
  text-overflow: ellipsis;
4144
4234
  }
4145
4235
 
4236
+ /* ─── Add Project / Worca Setup dialog shared styles ─────────────────── */
4237
+ .dialog-meta-row {
4238
+ display: flex;
4239
+ align-items: center;
4240
+ gap: 0.5rem;
4241
+ flex-wrap: wrap;
4242
+ font-size: 0.85rem;
4243
+ color: var(--sl-color-neutral-700);
4244
+ margin-bottom: 0.5rem;
4245
+ }
4246
+
4247
+ .dialog-meta-row .sep {
4248
+ color: var(--sl-color-neutral-400);
4249
+ }
4250
+
4251
+ .dialog-meta-row .spacer {
4252
+ flex: 1;
4253
+ }
4254
+
4255
+ .dialog-section-heading {
4256
+ margin: 0.75rem 0 0.5rem;
4257
+ font-size: 0.95rem;
4258
+ font-weight: 600;
4259
+ color: var(--sl-color-neutral-900);
4260
+ }
4261
+
4262
+ .dialog-list {
4263
+ max-height: 300px;
4264
+ overflow-y: auto;
4265
+ border: 1px solid var(--sl-color-neutral-200);
4266
+ border-radius: 4px;
4267
+ padding: 6px 8px;
4268
+ }
4269
+
4270
+ .dialog-list-row {
4271
+ display: flex;
4272
+ align-items: center;
4273
+ gap: 8px;
4274
+ padding: 4px 0;
4275
+ min-height: 28px;
4276
+ }
4277
+
4278
+ .dialog-list-row + .dialog-list-row {
4279
+ border-top: 1px solid var(--sl-color-neutral-100);
4280
+ }
4281
+
4282
+ .dialog-list-row.is-terminal .dialog-list-row-name {
4283
+ opacity: 0.6;
4284
+ }
4285
+
4286
+ .dialog-list-row-icon {
4287
+ flex: 0 0 auto;
4288
+ width: 20px;
4289
+ display: inline-flex;
4290
+ align-items: center;
4291
+ justify-content: center;
4292
+ font-weight: 700;
4293
+ }
4294
+
4295
+ .dialog-list-row-icon.is-success {
4296
+ color: var(--sl-color-success-600);
4297
+ }
4298
+
4299
+ .dialog-list-row-icon.is-failed {
4300
+ color: var(--sl-color-danger-600);
4301
+ }
4302
+
4303
+ .dialog-list-row-name {
4304
+ flex: 0 0 auto;
4305
+ }
4306
+
4307
+ .dialog-list-row-error {
4308
+ color: var(--sl-color-danger-600);
4309
+ font-size: 0.8rem;
4310
+ margin-left: 0.25rem;
4311
+ }
4312
+
4313
+ .dialog-footer {
4314
+ display: flex;
4315
+ justify-content: center;
4316
+ gap: 0.75rem;
4317
+ width: 100%;
4318
+ }
4319
+
4320
+ /* ── Integrations (card catalog) ─────────────────────────────────────── */
4321
+
4322
+ .ig-page {
4323
+ max-width: 720px;
4324
+ }
4325
+
4326
+ .ig-subtitle {
4327
+ margin: 0 0 1.25rem;
4328
+ font-size: 0.85rem;
4329
+ color: var(--sl-color-neutral-500);
4330
+ }
4331
+
4332
+ .ig-cards {
4333
+ display: flex;
4334
+ flex-direction: column;
4335
+ gap: 0.75rem;
4336
+ }
4337
+
4338
+ .ig-card {
4339
+ border: 1px solid var(--sl-color-neutral-200);
4340
+ border-radius: var(--sl-border-radius-medium);
4341
+ padding: 1rem 1.25rem;
4342
+ background: var(--sl-color-neutral-0);
4343
+ }
4344
+
4345
+ .ig-card--connected {
4346
+ border-left: 3px solid var(--sl-color-success-500);
4347
+ }
4348
+
4349
+ .ig-card--disabled {
4350
+ border-left: 3px solid var(--sl-color-neutral-300);
4351
+ opacity: 0.7;
4352
+ }
4353
+
4354
+ .ig-card-footer {
4355
+ display: flex;
4356
+ justify-content: space-between;
4357
+ align-items: center;
4358
+ margin-top: 0.75rem;
4359
+ padding-left: 2.75rem;
4360
+ }
4361
+
4362
+ .ig-card--disconnected {
4363
+ opacity: 0.85;
4364
+ }
4365
+
4366
+ .ig-card-header {
4367
+ display: flex;
4368
+ align-items: center;
4369
+ gap: 0.75rem;
4370
+ }
4371
+
4372
+ .ig-card-icon {
4373
+ font-size: 1.5rem;
4374
+ line-height: 1;
4375
+ }
4376
+
4377
+ .ig-card-title {
4378
+ flex: 1;
4379
+ min-width: 0;
4380
+ }
4381
+
4382
+ .ig-card-name {
4383
+ display: block;
4384
+ font-weight: 600;
4385
+ font-size: 0.95rem;
4386
+ }
4387
+
4388
+ .ig-card-desc {
4389
+ display: block;
4390
+ font-size: 0.8rem;
4391
+ color: var(--sl-color-neutral-500);
4392
+ }
4393
+
4394
+ .ig-badges {
4395
+ display: flex;
4396
+ flex-direction: column;
4397
+ align-items: flex-end;
4398
+ gap: 0.25rem;
4399
+ }
4400
+
4401
+ .ig-card-stats {
4402
+ display: flex;
4403
+ gap: 1rem;
4404
+ margin-top: 0.5rem;
4405
+ padding-left: 2.75rem;
4406
+ font-size: 0.8rem;
4407
+ color: var(--sl-color-neutral-500);
4408
+ }
4409
+
4410
+ .ig-card-stats .stat-warn {
4411
+ color: var(--sl-color-warning-600);
4412
+ }
4413
+
4414
+ .ig-card-chats {
4415
+ display: flex;
4416
+ gap: 0.5rem;
4417
+ flex-wrap: wrap;
4418
+ margin-top: 0.4rem;
4419
+ padding-left: 2.75rem;
4420
+ }
4421
+
4422
+ .ig-chat-badge {
4423
+ display: inline-flex;
4424
+ align-items: center;
4425
+ gap: 0.35rem;
4426
+ font-size: 0.8rem;
4427
+ }
4428
+
4429
+ .ig-chat-id {
4430
+ font-family: var(--sl-font-mono);
4431
+ color: var(--sl-color-neutral-600);
4432
+ font-size: 0.8rem;
4433
+ }
4434
+
4435
+ .ig-card-actions {
4436
+ display: flex;
4437
+ gap: 0.5rem;
4438
+ margin-top: 0.75rem;
4439
+ padding-left: 2.75rem;
4440
+ }
4441
+
4442
+ /* Inline form */
4443
+
4444
+ .ig-form {
4445
+ margin-top: 1rem;
4446
+ padding: 1rem;
4447
+ border-top: 1px solid var(--sl-color-neutral-200);
4448
+ }
4449
+
4450
+ .ig-env-hint {
4451
+ font-size: 0.8rem;
4452
+ color: var(--sl-color-neutral-600);
4453
+ background: var(--sl-color-neutral-50);
4454
+ border: 1px solid var(--sl-color-neutral-200);
4455
+ border-radius: var(--sl-border-radius-small);
4456
+ padding: 0.5rem 0.75rem;
4457
+ margin-bottom: 0.75rem;
4458
+ font-family: var(--sl-font-mono);
4459
+ }
4460
+
4461
+ .ig-form-row {
4462
+ display: grid;
4463
+ grid-template-columns: 1fr 1fr;
4464
+ gap: 0.75rem;
4465
+ }
4466
+
4467
+ @media (max-width: 600px) {
4468
+ .ig-form-row {
4469
+ grid-template-columns: 1fr;
4470
+ }
4471
+ }
4472
+
4473
+ .ig-form-field {
4474
+ margin-bottom: 0.75rem;
4475
+ }
4476
+
4477
+ .ig-form-field label {
4478
+ display: block;
4479
+ font-size: 0.8rem;
4480
+ font-weight: 600;
4481
+ margin-bottom: 0.2rem;
4482
+ color: var(--sl-color-neutral-700);
4483
+ }
4484
+
4485
+ .ig-form-field .form-hint {
4486
+ display: block;
4487
+ font-size: 0.7rem;
4488
+ color: var(--sl-color-neutral-500);
4489
+ margin-top: 0.15rem;
4490
+ }
4491
+
4492
+ .ig-detect-row {
4493
+ display: flex;
4494
+ gap: 0.5rem;
4495
+ align-items: center;
4496
+ }
4497
+
4498
+ .ig-detect-row sl-input {
4499
+ flex: 1;
4500
+ }
4501
+
4502
+ .ig-event-grid {
4503
+ display: grid;
4504
+ grid-template-columns: 1fr 1fr;
4505
+ gap: 0.2rem 0.5rem;
4506
+ }
4507
+
4508
+ .ig-form-actions {
4509
+ display: flex;
4510
+ gap: 0.5rem;
4511
+ margin-top: 0.75rem;
4512
+ }
4513
+
4514
+ .ig-loading {
4515
+ display: flex;
4516
+ align-items: center;
4517
+ gap: 0.5rem;
4518
+ color: var(--sl-color-neutral-500);
4519
+ padding: 2rem;
4520
+ }
4521
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worca/ui",
3
- "version": "0.8.1",
3
+ "version": "0.9.0-rc.1",
4
4
  "description": "Pipeline monitoring UI for worca-cc",
5
5
  "license": "MIT",
6
6
  "author": "Sinisha Djukic",