@phenx-inc/ctlsurf 0.3.13 → 0.3.14
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/bin/ctlsurf-worker.js +38 -22
- package/out/headless/index.mjs +247 -1
- package/out/headless/index.mjs.map +4 -4
- package/out/main/index.js +303 -46
- package/out/preload/index.js +5 -0
- package/out/renderer/assets/{cssMode-CYoo4t9f.js → cssMode-G_SDogBL.js} +3 -3
- package/out/renderer/assets/{freemarker2--UQnPZsn.js → freemarker2-BzEus0h2.js} +1 -1
- package/out/renderer/assets/{handlebars-DVDrmX0C.js → handlebars-Et995f6O.js} +1 -1
- package/out/renderer/assets/{html-D1-cXoLy.js → html-D4wgKxPD.js} +1 -1
- package/out/renderer/assets/{htmlMode-f5nBuprq.js → htmlMode-DSxpefzL.js} +3 -3
- package/out/renderer/assets/{index-65hyKM_8.css → index-AQ346NMi.css} +386 -0
- package/out/renderer/assets/{index-D23nru43.js → index-ByJTqkiQ.js} +318 -22
- package/out/renderer/assets/{javascript-CcarFzBL.js → javascript-CzLoo8aq.js} +2 -2
- package/out/renderer/assets/{jsonMode-BvF-xK9U.js → jsonMode-BrwPy7fY.js} +3 -3
- package/out/renderer/assets/{liquid-CHLtUKl2.js → liquid-BsfPf6YG.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-B9aNeatS.js → lspLanguageFeatures-CxLZ421s.js} +1 -1
- package/out/renderer/assets/{mdx-HGDrkifZ.js → mdx-CPvHIsAR.js} +1 -1
- package/out/renderer/assets/{python-B_dPzjJ6.js → python-Dr7dCUjG.js} +1 -1
- package/out/renderer/assets/{razor-CHheM4ot.js → razor-a7zjD7Y3.js} +1 -1
- package/out/renderer/assets/{tsMode-CdC3i1gG.js → tsMode-B7KLV2X6.js} +1 -1
- package/out/renderer/assets/{typescript-BX6guVRK.js → typescript-Cjuzf37q.js} +1 -1
- package/out/renderer/assets/{xml-CpS-pOPE.js → xml-Yz9xINtk.js} +1 -1
- package/out/renderer/assets/{yaml-Du0AjOHW.js → yaml-DtKnp5J0.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
- package/src/main/ctlsurfApi.ts +11 -0
- package/src/main/index.ts +20 -0
- package/src/main/orchestrator.ts +37 -0
- package/src/main/ticketStore.ts +252 -0
- package/src/preload/index.ts +10 -0
- package/src/renderer/App.tsx +21 -0
- package/src/renderer/components/TicketPanel.tsx +308 -0
- package/src/renderer/styles.css +386 -0
|
@@ -8413,3 +8413,389 @@ html, body, #root {
|
|
|
8413
8413
|
display: flex;
|
|
8414
8414
|
gap: 4px;
|
|
8415
8415
|
}
|
|
8416
|
+
|
|
8417
|
+
/* ─── Ticket drawer ──────────────────────────────── */
|
|
8418
|
+
|
|
8419
|
+
.ticket-scrim {
|
|
8420
|
+
position: fixed;
|
|
8421
|
+
inset: 0;
|
|
8422
|
+
background: rgba(13, 14, 22, 0.55);
|
|
8423
|
+
backdrop-filter: blur(2px);
|
|
8424
|
+
opacity: 0;
|
|
8425
|
+
pointer-events: none;
|
|
8426
|
+
transition: opacity 0.2s ease;
|
|
8427
|
+
z-index: 90;
|
|
8428
|
+
}
|
|
8429
|
+
.ticket-scrim.open {
|
|
8430
|
+
opacity: 1;
|
|
8431
|
+
pointer-events: auto;
|
|
8432
|
+
}
|
|
8433
|
+
|
|
8434
|
+
.ticket-drawer {
|
|
8435
|
+
position: fixed;
|
|
8436
|
+
top: 0;
|
|
8437
|
+
right: 0;
|
|
8438
|
+
bottom: 0;
|
|
8439
|
+
width: 380px;
|
|
8440
|
+
background: linear-gradient(180deg, #20243a 0%, #1b1e2e 100%);
|
|
8441
|
+
border-left: 1px solid #343860;
|
|
8442
|
+
box-shadow: -16px 0 48px rgba(0, 0, 0, 0.5);
|
|
8443
|
+
display: flex;
|
|
8444
|
+
flex-direction: column;
|
|
8445
|
+
transform: translateX(100%);
|
|
8446
|
+
transition: transform 0.24s cubic-bezier(0.32, 0.72, 0, 1);
|
|
8447
|
+
z-index: 100;
|
|
8448
|
+
}
|
|
8449
|
+
.ticket-drawer.open {
|
|
8450
|
+
transform: translateX(0);
|
|
8451
|
+
}
|
|
8452
|
+
|
|
8453
|
+
/* ── header ── */
|
|
8454
|
+
.ticket-drawer-header {
|
|
8455
|
+
display: flex;
|
|
8456
|
+
align-items: flex-start;
|
|
8457
|
+
justify-content: space-between;
|
|
8458
|
+
padding: 16px 16px 14px;
|
|
8459
|
+
border-bottom: 1px solid #2a2b3d;
|
|
8460
|
+
}
|
|
8461
|
+
.ticket-drawer-heading {
|
|
8462
|
+
display: flex;
|
|
8463
|
+
gap: 11px;
|
|
8464
|
+
align-items: center;
|
|
8465
|
+
}
|
|
8466
|
+
.ticket-drawer-badge {
|
|
8467
|
+
width: 34px;
|
|
8468
|
+
height: 34px;
|
|
8469
|
+
border-radius: 9px;
|
|
8470
|
+
background: rgba(122, 162, 247, 0.14);
|
|
8471
|
+
border: 1px solid rgba(122, 162, 247, 0.3);
|
|
8472
|
+
display: flex;
|
|
8473
|
+
align-items: center;
|
|
8474
|
+
justify-content: center;
|
|
8475
|
+
font-size: 16px;
|
|
8476
|
+
flex-shrink: 0;
|
|
8477
|
+
}
|
|
8478
|
+
.ticket-drawer-headtext {
|
|
8479
|
+
display: flex;
|
|
8480
|
+
flex-direction: column;
|
|
8481
|
+
gap: 1px;
|
|
8482
|
+
}
|
|
8483
|
+
.ticket-drawer-title {
|
|
8484
|
+
font-size: 14px;
|
|
8485
|
+
font-weight: 650;
|
|
8486
|
+
color: #d5dbf5;
|
|
8487
|
+
letter-spacing: 0.01em;
|
|
8488
|
+
}
|
|
8489
|
+
.ticket-drawer-subtitle {
|
|
8490
|
+
font-size: 11.5px;
|
|
8491
|
+
color: #6b739b;
|
|
8492
|
+
}
|
|
8493
|
+
.ticket-drawer-subtitle strong {
|
|
8494
|
+
color: #7aa2f7;
|
|
8495
|
+
font-weight: 600;
|
|
8496
|
+
}
|
|
8497
|
+
.ticket-drawer-warn {
|
|
8498
|
+
color: #e0af68;
|
|
8499
|
+
}
|
|
8500
|
+
.ticket-drawer-close {
|
|
8501
|
+
background: none;
|
|
8502
|
+
border: none;
|
|
8503
|
+
color: #565f89;
|
|
8504
|
+
font-size: 20px;
|
|
8505
|
+
line-height: 1;
|
|
8506
|
+
cursor: pointer;
|
|
8507
|
+
padding: 2px 6px;
|
|
8508
|
+
border-radius: 6px;
|
|
8509
|
+
transition: background 0.12s ease, color 0.12s ease;
|
|
8510
|
+
}
|
|
8511
|
+
.ticket-drawer-close:hover {
|
|
8512
|
+
color: #d5dbf5;
|
|
8513
|
+
background: rgba(255, 255, 255, 0.06);
|
|
8514
|
+
}
|
|
8515
|
+
|
|
8516
|
+
/* ── body ── */
|
|
8517
|
+
.ticket-drawer-body {
|
|
8518
|
+
flex: 1;
|
|
8519
|
+
overflow-y: auto;
|
|
8520
|
+
padding: 16px;
|
|
8521
|
+
display: flex;
|
|
8522
|
+
flex-direction: column;
|
|
8523
|
+
gap: 16px;
|
|
8524
|
+
}
|
|
8525
|
+
|
|
8526
|
+
.ticket-field {
|
|
8527
|
+
display: flex;
|
|
8528
|
+
flex-direction: column;
|
|
8529
|
+
gap: 7px;
|
|
8530
|
+
}
|
|
8531
|
+
.ticket-field-label {
|
|
8532
|
+
font-size: 10.5px;
|
|
8533
|
+
font-weight: 600;
|
|
8534
|
+
color: #6b739b;
|
|
8535
|
+
text-transform: uppercase;
|
|
8536
|
+
letter-spacing: 0.07em;
|
|
8537
|
+
}
|
|
8538
|
+
|
|
8539
|
+
.ticket-field input,
|
|
8540
|
+
.ticket-field textarea {
|
|
8541
|
+
background: #15161f;
|
|
8542
|
+
border: 1px solid #2a2b3d;
|
|
8543
|
+
border-radius: 8px;
|
|
8544
|
+
color: #d5dbf5;
|
|
8545
|
+
font-size: 13px;
|
|
8546
|
+
font-family: inherit;
|
|
8547
|
+
padding: 9px 11px;
|
|
8548
|
+
outline: none;
|
|
8549
|
+
transition: border-color 0.14s ease, box-shadow 0.14s ease;
|
|
8550
|
+
}
|
|
8551
|
+
.ticket-field input::placeholder,
|
|
8552
|
+
.ticket-field textarea::placeholder {
|
|
8553
|
+
color: #4a4f6e;
|
|
8554
|
+
}
|
|
8555
|
+
.ticket-field input:focus,
|
|
8556
|
+
.ticket-field textarea:focus {
|
|
8557
|
+
border-color: #7aa2f7;
|
|
8558
|
+
box-shadow: 0 0 0 3px rgba(122, 162, 247, 0.13);
|
|
8559
|
+
}
|
|
8560
|
+
.ticket-input-title {
|
|
8561
|
+
font-size: 14px !important;
|
|
8562
|
+
font-weight: 550;
|
|
8563
|
+
}
|
|
8564
|
+
.ticket-field textarea {
|
|
8565
|
+
resize: vertical;
|
|
8566
|
+
line-height: 1.5;
|
|
8567
|
+
}
|
|
8568
|
+
|
|
8569
|
+
/* ── segmented pill controls ── */
|
|
8570
|
+
.ticket-segmented {
|
|
8571
|
+
display: flex;
|
|
8572
|
+
flex-wrap: wrap;
|
|
8573
|
+
gap: 6px;
|
|
8574
|
+
}
|
|
8575
|
+
.ticket-seg {
|
|
8576
|
+
display: inline-flex;
|
|
8577
|
+
align-items: center;
|
|
8578
|
+
gap: 6px;
|
|
8579
|
+
background: #15161f;
|
|
8580
|
+
border: 1px solid #2a2b3d;
|
|
8581
|
+
border-radius: 999px;
|
|
8582
|
+
color: #8088ac;
|
|
8583
|
+
font-size: 12px;
|
|
8584
|
+
font-family: inherit;
|
|
8585
|
+
font-weight: 550;
|
|
8586
|
+
padding: 5px 11px 5px 9px;
|
|
8587
|
+
cursor: pointer;
|
|
8588
|
+
transition: background 0.13s ease, border-color 0.13s ease, color 0.13s ease;
|
|
8589
|
+
}
|
|
8590
|
+
.ticket-seg:hover {
|
|
8591
|
+
border-color: #3b3d57;
|
|
8592
|
+
color: #c0caf5;
|
|
8593
|
+
}
|
|
8594
|
+
.ticket-seg-dot {
|
|
8595
|
+
width: 7px;
|
|
8596
|
+
height: 7px;
|
|
8597
|
+
border-radius: 50%;
|
|
8598
|
+
flex-shrink: 0;
|
|
8599
|
+
}
|
|
8600
|
+
.ticket-seg.active {
|
|
8601
|
+
font-weight: 650;
|
|
8602
|
+
}
|
|
8603
|
+
|
|
8604
|
+
.ticket-drawer-error {
|
|
8605
|
+
background: rgba(247, 118, 142, 0.13);
|
|
8606
|
+
border: 1px solid rgba(247, 118, 142, 0.38);
|
|
8607
|
+
color: #f7768e;
|
|
8608
|
+
font-size: 12px;
|
|
8609
|
+
border-radius: 8px;
|
|
8610
|
+
padding: 8px 10px;
|
|
8611
|
+
}
|
|
8612
|
+
|
|
8613
|
+
/* ── footer ── */
|
|
8614
|
+
.ticket-drawer-footer {
|
|
8615
|
+
display: flex;
|
|
8616
|
+
align-items: center;
|
|
8617
|
+
justify-content: space-between;
|
|
8618
|
+
gap: 8px;
|
|
8619
|
+
padding: 12px 16px;
|
|
8620
|
+
border-top: 1px solid #2a2b3d;
|
|
8621
|
+
background: rgba(13, 14, 22, 0.35);
|
|
8622
|
+
}
|
|
8623
|
+
.ticket-drawer-hint {
|
|
8624
|
+
font-size: 11px;
|
|
8625
|
+
color: #565f89;
|
|
8626
|
+
}
|
|
8627
|
+
.ticket-drawer-footer-btns {
|
|
8628
|
+
display: flex;
|
|
8629
|
+
gap: 8px;
|
|
8630
|
+
}
|
|
8631
|
+
.ticket-btn-secondary,
|
|
8632
|
+
.ticket-btn-primary {
|
|
8633
|
+
font-size: 12.5px;
|
|
8634
|
+
font-family: inherit;
|
|
8635
|
+
font-weight: 600;
|
|
8636
|
+
border-radius: 8px;
|
|
8637
|
+
padding: 8px 14px;
|
|
8638
|
+
cursor: pointer;
|
|
8639
|
+
transition: background 0.13s ease, border-color 0.13s ease, transform 0.06s ease;
|
|
8640
|
+
}
|
|
8641
|
+
.ticket-btn-secondary {
|
|
8642
|
+
background: transparent;
|
|
8643
|
+
color: #c0caf5;
|
|
8644
|
+
border: 1px solid #2a2b3d;
|
|
8645
|
+
}
|
|
8646
|
+
.ticket-btn-secondary:hover {
|
|
8647
|
+
background: rgba(255, 255, 255, 0.05);
|
|
8648
|
+
border-color: #3b3d57;
|
|
8649
|
+
}
|
|
8650
|
+
.ticket-btn-primary {
|
|
8651
|
+
background: linear-gradient(180deg, #8db0fa 0%, #7aa2f7 100%);
|
|
8652
|
+
color: #11131f;
|
|
8653
|
+
border: 1px solid #7aa2f7;
|
|
8654
|
+
}
|
|
8655
|
+
.ticket-btn-primary:hover:not(:disabled) {
|
|
8656
|
+
background: linear-gradient(180deg, #9bbcfb 0%, #89b4fa 100%);
|
|
8657
|
+
}
|
|
8658
|
+
.ticket-btn-primary:active:not(:disabled) {
|
|
8659
|
+
transform: translateY(1px);
|
|
8660
|
+
}
|
|
8661
|
+
.ticket-btn-primary:disabled {
|
|
8662
|
+
opacity: 0.4;
|
|
8663
|
+
cursor: not-allowed;
|
|
8664
|
+
}
|
|
8665
|
+
|
|
8666
|
+
/* ── titlebar tickets icon ── */
|
|
8667
|
+
.ticket-tag-icon {
|
|
8668
|
+
display: inline-block;
|
|
8669
|
+
vertical-align: -2px;
|
|
8670
|
+
margin-right: 5px;
|
|
8671
|
+
}
|
|
8672
|
+
|
|
8673
|
+
/* ── drawer badge / back button ── */
|
|
8674
|
+
.ticket-drawer-badge {
|
|
8675
|
+
color: #7aa2f7;
|
|
8676
|
+
}
|
|
8677
|
+
.ticket-drawer-back {
|
|
8678
|
+
width: 34px;
|
|
8679
|
+
height: 34px;
|
|
8680
|
+
border-radius: 9px;
|
|
8681
|
+
background: rgba(122, 162, 247, 0.1);
|
|
8682
|
+
border: 1px solid rgba(122, 162, 247, 0.28);
|
|
8683
|
+
color: #7aa2f7;
|
|
8684
|
+
font-size: 22px;
|
|
8685
|
+
line-height: 1;
|
|
8686
|
+
cursor: pointer;
|
|
8687
|
+
flex-shrink: 0;
|
|
8688
|
+
transition: background 0.12s ease;
|
|
8689
|
+
}
|
|
8690
|
+
.ticket-drawer-back:hover {
|
|
8691
|
+
background: rgba(122, 162, 247, 0.2);
|
|
8692
|
+
}
|
|
8693
|
+
|
|
8694
|
+
/* ── ticket list ── */
|
|
8695
|
+
.ticket-list-body {
|
|
8696
|
+
flex: 1;
|
|
8697
|
+
overflow-y: auto;
|
|
8698
|
+
padding: 12px;
|
|
8699
|
+
display: flex;
|
|
8700
|
+
flex-direction: column;
|
|
8701
|
+
gap: 7px;
|
|
8702
|
+
}
|
|
8703
|
+
.ticket-list-msg {
|
|
8704
|
+
color: #6b739b;
|
|
8705
|
+
font-size: 12.5px;
|
|
8706
|
+
padding: 16px 4px;
|
|
8707
|
+
text-align: center;
|
|
8708
|
+
}
|
|
8709
|
+
|
|
8710
|
+
.ticket-empty {
|
|
8711
|
+
display: flex;
|
|
8712
|
+
flex-direction: column;
|
|
8713
|
+
align-items: center;
|
|
8714
|
+
gap: 5px;
|
|
8715
|
+
padding: 48px 16px;
|
|
8716
|
+
text-align: center;
|
|
8717
|
+
}
|
|
8718
|
+
.ticket-empty-icon {
|
|
8719
|
+
color: #3b3d57;
|
|
8720
|
+
margin-bottom: 4px;
|
|
8721
|
+
}
|
|
8722
|
+
.ticket-empty-title {
|
|
8723
|
+
font-size: 13.5px;
|
|
8724
|
+
font-weight: 600;
|
|
8725
|
+
color: #8088ac;
|
|
8726
|
+
}
|
|
8727
|
+
.ticket-empty-hint {
|
|
8728
|
+
font-size: 12px;
|
|
8729
|
+
color: #565f89;
|
|
8730
|
+
}
|
|
8731
|
+
|
|
8732
|
+
/* ── ticket card ── */
|
|
8733
|
+
.ticket-card {
|
|
8734
|
+
display: flex;
|
|
8735
|
+
align-items: stretch;
|
|
8736
|
+
gap: 10px;
|
|
8737
|
+
background: #15161f;
|
|
8738
|
+
border: 1px solid #262a3f;
|
|
8739
|
+
border-radius: 10px;
|
|
8740
|
+
padding: 10px 11px 10px 0;
|
|
8741
|
+
cursor: pointer;
|
|
8742
|
+
text-align: left;
|
|
8743
|
+
font-family: inherit;
|
|
8744
|
+
overflow: hidden;
|
|
8745
|
+
transition: border-color 0.13s ease, background 0.13s ease, transform 0.06s ease;
|
|
8746
|
+
}
|
|
8747
|
+
.ticket-card:hover {
|
|
8748
|
+
border-color: #3d425f;
|
|
8749
|
+
background: #181a26;
|
|
8750
|
+
}
|
|
8751
|
+
.ticket-card:active {
|
|
8752
|
+
transform: scale(0.99);
|
|
8753
|
+
}
|
|
8754
|
+
.ticket-card-bar {
|
|
8755
|
+
width: 3px;
|
|
8756
|
+
border-radius: 3px;
|
|
8757
|
+
flex-shrink: 0;
|
|
8758
|
+
align-self: stretch;
|
|
8759
|
+
}
|
|
8760
|
+
.ticket-card-main {
|
|
8761
|
+
flex: 1;
|
|
8762
|
+
min-width: 0;
|
|
8763
|
+
display: flex;
|
|
8764
|
+
flex-direction: column;
|
|
8765
|
+
gap: 5px;
|
|
8766
|
+
}
|
|
8767
|
+
.ticket-card-title {
|
|
8768
|
+
font-size: 13px;
|
|
8769
|
+
font-weight: 550;
|
|
8770
|
+
color: #d5dbf5;
|
|
8771
|
+
white-space: nowrap;
|
|
8772
|
+
overflow: hidden;
|
|
8773
|
+
text-overflow: ellipsis;
|
|
8774
|
+
}
|
|
8775
|
+
.ticket-card-meta {
|
|
8776
|
+
display: flex;
|
|
8777
|
+
align-items: center;
|
|
8778
|
+
gap: 10px;
|
|
8779
|
+
}
|
|
8780
|
+
.ticket-card-status {
|
|
8781
|
+
display: inline-flex;
|
|
8782
|
+
align-items: center;
|
|
8783
|
+
gap: 5px;
|
|
8784
|
+
font-size: 11px;
|
|
8785
|
+
font-weight: 600;
|
|
8786
|
+
}
|
|
8787
|
+
.ticket-card-date {
|
|
8788
|
+
font-size: 11px;
|
|
8789
|
+
color: #565f89;
|
|
8790
|
+
}
|
|
8791
|
+
.ticket-card-pri {
|
|
8792
|
+
align-self: center;
|
|
8793
|
+
font-size: 10px;
|
|
8794
|
+
font-weight: 700;
|
|
8795
|
+
letter-spacing: 0.04em;
|
|
8796
|
+
text-transform: uppercase;
|
|
8797
|
+
border: 1px solid;
|
|
8798
|
+
border-radius: 999px;
|
|
8799
|
+
padding: 2px 8px;
|
|
8800
|
+
flex-shrink: 0;
|
|
8801
|
+
}
|