@co0ontty/wand 1.42.0 → 1.43.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.
@@ -15549,227 +15549,425 @@
15549
15549
  }
15550
15550
  .qc-clean-badge svg { flex-shrink: 0; }
15551
15551
 
15552
- /* HEAD a plain inline line (no nested box). */
15553
- .qc-head-card {
15552
+ /* ── Quick commit release panel ─────────────────────────────── */
15553
+ .quick-commit-modal {
15554
+ max-width: 620px;
15555
+ }
15556
+ .quick-commit-modal .modal-body {
15557
+ gap: 0;
15558
+ }
15559
+ .qc-release-panel,
15560
+ .qc-result-panel {
15561
+ display: flex;
15562
+ flex-direction: column;
15563
+ gap: 14px;
15564
+ }
15565
+ .qc-pair {
15566
+ display: grid;
15567
+ grid-template-columns: 72px minmax(0, 1fr);
15568
+ gap: 12px;
15569
+ align-items: start;
15570
+ }
15571
+ .qc-pair-label {
15572
+ padding-top: 9px;
15573
+ font-size: 0.72rem;
15574
+ font-weight: 800;
15575
+ color: var(--text-muted);
15576
+ letter-spacing: 0.06em;
15577
+ text-transform: uppercase;
15578
+ }
15579
+ .qc-pair-flow {
15580
+ display: grid;
15581
+ grid-template-columns: minmax(0, 0.9fr) 24px minmax(0, 1.1fr);
15582
+ gap: 8px;
15583
+ align-items: center;
15584
+ min-width: 0;
15585
+ }
15586
+ .qc-pair-value {
15587
+ min-width: 0;
15588
+ min-height: 38px;
15554
15589
  display: flex;
15555
15590
  align-items: center;
15556
15591
  gap: 8px;
15592
+ padding: 8px 10px;
15593
+ border: 1px solid rgba(125, 91, 57, 0.12);
15594
+ border-radius: 8px;
15595
+ background: rgba(255, 255, 255, 0.52);
15596
+ color: var(--text-secondary);
15597
+ overflow: hidden;
15557
15598
  }
15558
- .qc-head-label {
15599
+ .qc-pair-value--to {
15600
+ background: rgba(255, 255, 255, 0.84);
15601
+ border-color: rgba(197, 101, 61, 0.22);
15602
+ color: var(--text-primary);
15603
+ }
15604
+ .qc-pair-value code {
15559
15605
  flex-shrink: 0;
15560
- font-size: 0.66rem;
15606
+ font-family: var(--font-mono, monospace);
15607
+ font-size: 0.78rem;
15561
15608
  font-weight: 700;
15562
- letter-spacing: 0.06em;
15563
- color: var(--text-muted);
15564
- text-transform: uppercase;
15565
- padding: 1px 6px;
15609
+ color: var(--accent);
15610
+ background: rgba(197, 101, 61, 0.09);
15566
15611
  border-radius: 5px;
15567
- background: rgba(125, 91, 57, 0.08);
15612
+ padding: 2px 6px;
15568
15613
  }
15569
- .qc-head-text {
15570
- flex: 1 1 auto;
15614
+ .qc-pair-value span {
15571
15615
  min-width: 0;
15572
- font-family: var(--font-mono, monospace);
15573
- font-size: 0.78rem;
15574
- color: var(--text-primary);
15575
15616
  overflow: hidden;
15576
15617
  text-overflow: ellipsis;
15577
15618
  white-space: nowrap;
15578
- background: transparent;
15579
- padding: 0;
15619
+ font-size: 0.82rem;
15580
15620
  }
15581
-
15582
- /* Status chips (ahead/behind/tags) */
15583
- .qc-status-chips {
15584
- display: flex;
15585
- flex-wrap: wrap;
15586
- gap: 6px;
15621
+ .qc-pair--commit .qc-pair-flow {
15622
+ align-items: stretch;
15587
15623
  }
15588
- .qc-chip {
15589
- display: inline-flex;
15590
- align-items: center;
15591
- gap: 4px;
15592
- padding: 3px 9px;
15593
- border-radius: 999px;
15594
- font-size: 0.72rem;
15595
- font-weight: 600;
15596
- line-height: 1.4;
15597
- background: rgba(120, 120, 120, 0.08);
15598
- color: var(--text-secondary);
15599
- border: 1px solid rgba(120, 120, 120, 0.12);
15600
- white-space: nowrap;
15624
+ .qc-pair--commit .qc-pair-value {
15625
+ min-height: 76px;
15626
+ align-items: flex-start;
15601
15627
  }
15602
- .qc-chip--ahead {
15603
- background: rgba(60, 130, 200, 0.14);
15604
- color: rgba(40, 100, 170, 0.95);
15605
- border-color: rgba(60, 130, 200, 0.28);
15628
+ .qc-pair--commit .qc-pair-value--to {
15629
+ padding: 0;
15630
+ border: 0;
15631
+ background: transparent;
15606
15632
  }
15607
- .qc-chip--behind {
15608
- background: rgba(180, 100, 60, 0.14);
15609
- color: rgba(160, 90, 50, 0.95);
15610
- border-color: rgba(180, 100, 60, 0.28);
15633
+ .qc-pair--commit .qc-message-input {
15634
+ min-height: 76px;
15635
+ width: 100%;
15636
+ resize: vertical;
15611
15637
  }
15612
- .qc-chip--warn {
15613
- background: rgba(220, 150, 30, 0.14);
15614
- color: rgba(180, 110, 20, 0.95);
15615
- border-color: rgba(220, 150, 30, 0.32);
15638
+ .qc-pair--tag .qc-pair-value--to {
15639
+ padding: 0;
15640
+ border: 0;
15641
+ background: transparent;
15616
15642
  }
15617
- .qc-chip--clean {
15618
- background: rgba(60, 160, 90, 0.12);
15619
- color: rgba(40, 130, 70, 0.95);
15620
- border-color: rgba(60, 160, 90, 0.24);
15643
+ .qc-pair--tag .qc-tag-field-input {
15644
+ width: 100%;
15645
+ min-height: 38px;
15621
15646
  }
15622
-
15623
- /* "为当前提交打 Tag" button (icon + text, balances the push button) */
15624
- .qc-tag-head-btn {
15647
+ .qc-pair-arrow {
15625
15648
  display: inline-flex;
15626
15649
  align-items: center;
15627
- gap: 5px;
15650
+ justify-content: center;
15651
+ color: var(--text-muted);
15652
+ font-weight: 800;
15653
+ font-family: var(--font-mono, monospace);
15628
15654
  }
15629
- .qc-tag-head-btn svg { flex-shrink: 0; opacity: 0.8; }
15630
- .qc-tag-head-btn.is-open {
15631
- background: rgba(140, 100, 200, 0.12);
15632
- border-color: rgba(140, 100, 200, 0.28);
15633
- color: rgba(96, 60, 160, 0.98);
15655
+ .qc-muted {
15656
+ color: var(--text-muted);
15657
+ font-style: italic;
15634
15658
  }
15635
-
15636
- /* Tag HEAD inline drawer */
15637
- .qc-tag-head-panel {
15659
+ .qc-modal-actions,
15660
+ .qc-result-actions {
15638
15661
  display: flex;
15639
- flex-direction: column;
15662
+ justify-content: flex-end;
15640
15663
  gap: 8px;
15641
- padding: 11px 12px;
15642
- background: rgba(255, 255, 255, 0.85);
15643
- border: 1px solid rgba(140, 100, 200, 0.18);
15644
- border-radius: 10px;
15645
15664
  }
15646
- .qc-tag-head-hint {
15647
- font-size: 0.74rem;
15648
- color: var(--text-muted);
15649
- line-height: 1.4;
15650
- }
15651
- .qc-tag-head-row {
15652
- display: flex;
15653
- gap: 6px;
15654
- align-items: stretch;
15665
+ .qc-result-panel {
15666
+ padding-top: 2px;
15655
15667
  }
15656
- .qc-tag-head-row .field-input { flex: 1 1 auto; min-width: 0; }
15657
- .qc-tag-head-push {
15658
- display: flex;
15668
+ .qc-result-pushed {
15669
+ display: inline-flex;
15659
15670
  align-items: center;
15660
- gap: 6px;
15671
+ min-height: 30px;
15672
+ padding: 0 10px;
15673
+ border-radius: 999px;
15674
+ color: rgba(40, 130, 70, 0.95);
15675
+ background: rgba(60, 160, 90, 0.12);
15676
+ border: 1px solid rgba(60, 160, 90, 0.24);
15661
15677
  font-size: 0.78rem;
15662
- color: var(--text-secondary);
15663
- cursor: pointer;
15664
- user-select: none;
15678
+ font-weight: 700;
15665
15679
  }
15666
- .qc-tag-head-actions {
15680
+
15681
+ /* ================================================================
15682
+ Quick-Git drag slider — v2
15683
+ Layout: [ 🔘 Commit ] ────→ [ Tag ] ────→ [ Push ]
15684
+ - Tap (no drag) → Commit
15685
+ - Drag straight to Push → Commit + Push (skipped Tag — fast through)
15686
+ - Drag to Tag, dwell ~600ms → Tag latch arms
15687
+ - Released at Tag (armed) → Commit + Tag
15688
+ - Continue armed → Push → Commit + Tag + Push
15689
+ Empty commit message / tag → auto-generated by the backend on submit
15690
+ ================================================================ */
15691
+ .qc-drag-wrap {
15692
+ padding-top: 4px;
15667
15693
  display: flex;
15668
- justify-content: flex-end;
15694
+ flex-direction: column;
15669
15695
  gap: 6px;
15670
15696
  }
15671
-
15672
- /* Split button (primary action: commit / commit & push) */
15673
- .qc-split-button {
15697
+ .qc-drag-track {
15698
+ --qc-progress: 0%;
15699
+ --qc-knob-x: 6px;
15700
+ --qc-tone: var(--accent);
15701
+ --qc-tone-soft: rgba(197, 101, 61, 0.20);
15702
+ /* Keep in sync with QUICK_COMMIT_TAG_DWELL_MS in scripts.js */
15703
+ --qc-dwell-ms: 1100ms;
15674
15704
  position: relative;
15675
- display: inline-flex;
15676
- align-items: stretch;
15677
- isolation: isolate;
15705
+ height: 76px;
15706
+ padding: 10px 12px;
15707
+ border-radius: 14px;
15708
+ border: 1px solid rgba(125, 91, 57, 0.18);
15709
+ background:
15710
+ radial-gradient(120% 100% at 50% 50%, rgba(255, 255, 255, 0.58), rgba(255, 245, 235, 0.20)),
15711
+ linear-gradient(180deg, rgba(255, 255, 255, 0.5), rgba(255, 245, 235, 0.24));
15712
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75), 0 1px 3px rgba(89, 58, 32, 0.05);
15713
+ overflow: hidden;
15714
+ touch-action: none;
15715
+ user-select: none;
15716
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
15678
15717
  }
15679
- .qc-split-main {
15680
- border-top-right-radius: 0;
15681
- border-bottom-right-radius: 0;
15682
- padding-right: 12px;
15718
+ .qc-drag-track:hover {
15719
+ border-color: rgba(125, 91, 57, 0.30);
15720
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85), 0 2px 8px rgba(89, 58, 32, 0.08);
15683
15721
  }
15684
- .qc-split-caret {
15685
- border-top-left-radius: 0;
15686
- border-bottom-left-radius: 0;
15687
- padding: 0 8px;
15688
- border-left: 1px solid rgba(255, 255, 255, 0.25);
15689
- min-width: 26px;
15690
- display: inline-flex;
15722
+ /* Track tone shifts per current action so the whole panel echoes the knob color. */
15723
+ .qc-drag-track[data-action="commit-tag"] { --qc-tone: #4a6fa5; --qc-tone-soft: rgba(74, 111, 165, 0.20); }
15724
+ .qc-drag-track[data-action="commit-push"] { --qc-tone: #4f7a58; --qc-tone-soft: rgba(79, 122, 88, 0.22); }
15725
+ .qc-drag-track[data-action="commit-tag-push"] { --qc-tone: #7c5aa8; --qc-tone-soft: rgba(124, 90, 168, 0.24); }
15726
+
15727
+ /* Baseline rail — Commit → Tag → Push. Segments brighten as the knob crosses them. */
15728
+ .qc-drag-baseline {
15729
+ position: absolute;
15730
+ inset: 0 14px;
15731
+ width: calc(100% - 28px);
15732
+ height: 100%;
15733
+ pointer-events: none;
15734
+ }
15735
+ .qc-baseline-rail {
15736
+ stroke: rgba(125, 91, 57, 0.16);
15737
+ stroke-width: 2;
15738
+ stroke-linecap: round;
15739
+ }
15740
+ .qc-baseline-seg {
15741
+ stroke: var(--qc-tone);
15742
+ stroke-width: 2;
15743
+ stroke-linecap: round;
15744
+ opacity: 0;
15745
+ transition: opacity 0.2s ease, stroke 0.2s ease;
15746
+ }
15747
+ .qc-drag-track[data-zone="tag"] .qc-baseline-seg--left,
15748
+ .qc-drag-track[data-zone="push"] .qc-baseline-seg--left { opacity: 0.85; }
15749
+ .qc-drag-track[data-zone="push"] .qc-baseline-seg--right { opacity: 0.85; }
15750
+
15751
+ /* Three marching chevrons → drag this way */
15752
+ .qc-chevrons {
15753
+ position: absolute;
15754
+ top: 50%;
15755
+ right: 16px;
15756
+ transform: translateY(-50%);
15757
+ display: flex;
15691
15758
  align-items: center;
15692
- justify-content: center;
15759
+ gap: 3px;
15760
+ pointer-events: none;
15761
+ color: rgba(125, 91, 57, 0.42);
15762
+ z-index: 1;
15693
15763
  }
15694
- .qc-split-caret svg {
15695
- transition: transform 0.16s ease;
15764
+ .qc-chevron {
15765
+ opacity: 0.16;
15766
+ animation: qc-chevron-march 1.3s ease-in-out infinite;
15767
+ }
15768
+ .qc-chevron:nth-child(1) { animation-delay: 0s; }
15769
+ .qc-chevron:nth-child(2) { animation-delay: 0.16s; }
15770
+ .qc-chevron:nth-child(3) { animation-delay: 0.32s; }
15771
+ .qc-drag-track[data-zone="tag"] .qc-chevrons { color: var(--qc-tone); }
15772
+ .qc-drag-track[data-zone="push"] .qc-chevrons { opacity: 0.25; }
15773
+ .qc-drag-track[data-tag-dwell="armed"] .qc-chevrons { color: var(--qc-tone); }
15774
+ .qc-drag-track[data-tag-dwell="armed"] .qc-chevron { animation-duration: 0.8s; }
15775
+ .qc-drag-track.is-dragging .qc-chevron { animation-play-state: paused; opacity: 0.55; }
15776
+ @keyframes qc-chevron-march {
15777
+ 0%, 100% { opacity: 0.10; transform: translateX(-4px); }
15778
+ 45% { opacity: 0.95; transform: translateX(0); }
15779
+ 75% { opacity: 0.45; transform: translateX(3px); }
15780
+ }
15781
+
15782
+ /* Stage labels along the rail */
15783
+ .qc-drag-stages {
15784
+ position: absolute;
15785
+ inset: 12px 18px;
15786
+ display: grid;
15787
+ grid-template-columns: 1fr 1fr 1fr;
15788
+ align-items: end;
15789
+ pointer-events: none;
15790
+ z-index: 2;
15696
15791
  }
15697
- .qc-split-caret.is-active svg {
15698
- transform: rotate(180deg);
15792
+ .qc-drag-stage {
15793
+ align-self: end;
15794
+ padding-bottom: 6px;
15795
+ font-size: 0.68rem;
15796
+ font-weight: 800;
15797
+ color: var(--text-muted);
15798
+ letter-spacing: 0.06em;
15799
+ text-transform: uppercase;
15800
+ transition: color 0.18s ease, transform 0.18s ease;
15801
+ }
15802
+ .qc-stage-commit { justify-self: start; padding-left: 4px; }
15803
+ .qc-stage-tag { justify-self: center; }
15804
+ .qc-stage-push { justify-self: end; padding-right: 4px; }
15805
+ .qc-drag-stage.is-passed { color: var(--qc-tone); }
15806
+ .qc-drag-stage.is-active { transform: translateY(-1px); }
15807
+ /* Tag stage gets a little dot indicator that pulses while user dwells. */
15808
+ .qc-stage-tag::before {
15809
+ content: "";
15810
+ display: block;
15811
+ width: 6px;
15812
+ height: 6px;
15813
+ margin: 0 auto 4px;
15814
+ border-radius: 50%;
15815
+ background: rgba(125, 91, 57, 0.30);
15816
+ transition: background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
15817
+ }
15818
+ .qc-drag-stage.qc-stage-tag.is-passed::before {
15819
+ background: var(--qc-tone);
15820
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--qc-tone) 22%, transparent);
15699
15821
  }
15700
- .qc-split-button--secondary .qc-split-caret {
15701
- border-left-color: rgba(125, 91, 57, 0.12);
15822
+ .qc-drag-track[data-tag-dwell="active"] .qc-stage-tag::before {
15823
+ background: var(--qc-tone);
15824
+ animation: qc-tag-dot-pulse var(--qc-dwell-ms) ease-out forwards;
15825
+ }
15826
+ .qc-drag-track[data-tag-dwell="armed"] .qc-stage-tag::before {
15827
+ background: var(--qc-tone);
15828
+ transform: scale(1.4);
15829
+ box-shadow: 0 0 0 6px color-mix(in srgb, var(--qc-tone) 22%, transparent);
15830
+ }
15831
+ @keyframes qc-tag-dot-pulse {
15832
+ 0% { transform: scale(1); }
15833
+ 100% { transform: scale(1.35); box-shadow: 0 0 0 6px color-mix(in srgb, var(--qc-tone) 18%, transparent); }
15702
15834
  }
15703
15835
 
15704
- /* Dropdown menu (used by primary action + push) */
15705
- .qc-dropdown-menu {
15836
+ /* The draggable knob starts at left, breathes when idle, snaps colors per zone. */
15837
+ .qc-drag-action {
15706
15838
  position: absolute;
15707
- top: calc(100% + 6px);
15708
- right: 0;
15709
- min-width: 220px;
15710
- max-width: 320px;
15711
- background: rgba(255, 255, 255, 0.98);
15712
- backdrop-filter: blur(12px);
15713
- -webkit-backdrop-filter: blur(12px);
15714
- border: 1px solid rgba(125, 91, 57, 0.16);
15839
+ left: var(--qc-knob-x, 6px);
15840
+ top: 50%;
15841
+ z-index: 3;
15842
+ width: 42%;
15843
+ min-width: 138px;
15844
+ max-width: 200px;
15845
+ height: 56px;
15846
+ padding: 0 16px;
15847
+ border: 0;
15715
15848
  border-radius: 12px;
15716
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06);
15717
- padding: 4px;
15718
- z-index: 20;
15719
- display: flex;
15720
- flex-direction: column;
15721
- gap: 2px;
15722
- animation: qcDropdownIn 0.14s ease-out;
15849
+ background: linear-gradient(180deg, var(--qc-tone), color-mix(in srgb, var(--qc-tone) 84%, black));
15850
+ color: white;
15851
+ font-family: var(--font-sans);
15852
+ font-size: 0.86rem;
15853
+ font-weight: 800;
15854
+ letter-spacing: 0.01em;
15855
+ display: inline-flex;
15856
+ align-items: center;
15857
+ justify-content: center;
15858
+ gap: 10px;
15859
+ cursor: grab;
15860
+ box-shadow:
15861
+ 0 8px 22px var(--qc-tone-soft),
15862
+ inset 0 1px 0 rgba(255, 255, 255, 0.35);
15863
+ transform: translateY(-50%);
15864
+ transition: left 0.22s cubic-bezier(0.4, 0.0, 0.2, 1),
15865
+ background 0.18s ease,
15866
+ box-shadow 0.18s ease;
15867
+ touch-action: none;
15868
+ overflow: hidden;
15869
+ animation: qc-knob-breathe 2.4s ease-in-out infinite;
15723
15870
  }
15724
- .qc-dropdown-menu--right { right: 0; left: auto; }
15725
- @keyframes qcDropdownIn {
15726
- from { opacity: 0; transform: translateY(-4px); }
15727
- to { opacity: 1; transform: translateY(0); }
15871
+ .qc-drag-track.is-dragging .qc-drag-action {
15872
+ cursor: grabbing;
15873
+ transition: background 0.12s ease, box-shadow 0.12s ease;
15874
+ animation: none;
15728
15875
  }
15729
- .qc-dropdown-item {
15730
- all: unset;
15731
- display: flex;
15876
+ .qc-drag-grip {
15877
+ display: inline-flex;
15732
15878
  flex-direction: column;
15879
+ align-items: center;
15880
+ justify-content: center;
15733
15881
  gap: 2px;
15734
- padding: 8px 10px;
15735
- border-radius: 8px;
15736
- cursor: pointer;
15737
- transition: background 0.12s ease;
15882
+ margin-right: 2px;
15883
+ opacity: 0.7;
15884
+ flex: 0 0 auto;
15738
15885
  }
15739
- .qc-dropdown-item:hover:not(.is-disabled) {
15740
- background: rgba(197, 101, 61, 0.08);
15886
+ .qc-drag-grip i {
15887
+ display: block;
15888
+ width: 12px;
15889
+ height: 1.5px;
15890
+ border-radius: 1px;
15891
+ background: rgba(255, 255, 255, 0.85);
15741
15892
  }
15742
- .qc-dropdown-item.is-selected {
15743
- background: rgba(197, 101, 61, 0.10);
15893
+ .qc-drag-label {
15894
+ white-space: nowrap;
15895
+ overflow: hidden;
15896
+ text-overflow: ellipsis;
15744
15897
  }
15745
- .qc-dropdown-item.is-disabled {
15898
+ .qc-drag-action:disabled {
15746
15899
  opacity: 0.5;
15747
15900
  cursor: not-allowed;
15901
+ box-shadow: none;
15902
+ animation: none;
15748
15903
  }
15749
- .qc-dropdown-item-main {
15750
- display: flex;
15751
- align-items: center;
15752
- gap: 6px;
15904
+ /* Dwell progress bar — bottom of the knob, fills left→right over DWELL_MS */
15905
+ .qc-drag-dwell-bar {
15906
+ position: absolute;
15907
+ left: 0;
15908
+ right: 0;
15909
+ bottom: 0;
15910
+ height: 3px;
15911
+ background: rgba(255, 255, 255, 0.78);
15912
+ transform: scaleX(0);
15913
+ transform-origin: left center;
15914
+ border-radius: 0 0 12px 12px;
15915
+ pointer-events: none;
15916
+ transition: opacity 0.2s ease;
15917
+ opacity: 0;
15753
15918
  }
15754
- .qc-dropdown-check {
15755
- flex-shrink: 0;
15756
- width: 13px;
15757
- height: 13px;
15758
- display: inline-flex;
15759
- align-items: center;
15760
- justify-content: center;
15761
- color: var(--accent);
15919
+ .qc-drag-track[data-tag-dwell="active"] .qc-drag-dwell-bar {
15920
+ opacity: 1;
15921
+ animation: qc-dwell-fill var(--qc-dwell-ms) linear forwards;
15762
15922
  }
15763
- .qc-dropdown-item-title {
15764
- font-size: 0.84rem;
15765
- font-weight: 600;
15766
- color: var(--text-primary);
15923
+ .qc-drag-track[data-tag-dwell="armed"] .qc-drag-dwell-bar {
15924
+ opacity: 0.55;
15925
+ transform: scaleX(1);
15767
15926
  }
15768
- .qc-dropdown-item-desc {
15769
- font-size: 0.72rem;
15927
+ @keyframes qc-dwell-fill {
15928
+ from { transform: scaleX(0); }
15929
+ to { transform: scaleX(1); }
15930
+ }
15931
+ @keyframes qc-knob-breathe {
15932
+ 0%, 100% { box-shadow: 0 6px 18px var(--qc-tone-soft), inset 0 1px 0 rgba(255, 255, 255, 0.35); }
15933
+ 50% { box-shadow: 0 10px 28px var(--qc-tone-soft),
15934
+ 0 0 0 4px color-mix(in srgb, var(--qc-tone) 22%, transparent),
15935
+ inset 0 1px 0 rgba(255, 255, 255, 0.4); }
15936
+ }
15937
+ @media (prefers-reduced-motion: reduce) {
15938
+ .qc-drag-action,
15939
+ .qc-chevron,
15940
+ .qc-drag-dwell-bar { animation: none !important; transition: none !important; }
15941
+ }
15942
+
15943
+ /* Cancel mode — user has ventured past Commit, then dragged back. Release here = no-op. */
15944
+ .qc-drag-track[data-cancel-mode="1"] {
15945
+ --qc-tone: #8c735f;
15946
+ --qc-tone-soft: rgba(125, 91, 57, 0.16);
15947
+ }
15948
+ .qc-drag-track[data-cancel-mode="1"] .qc-drag-action {
15949
+ background: linear-gradient(180deg, #a3897a, #7a604c);
15950
+ box-shadow: 0 4px 12px rgba(125, 91, 57, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.25);
15951
+ animation: none;
15952
+ }
15953
+ .qc-drag-track[data-cancel-mode="1"] .qc-drag-dwell-bar,
15954
+ .qc-drag-track[data-cancel-mode="1"] .qc-baseline-seg,
15955
+ .qc-drag-track[data-cancel-mode="1"] .qc-chevrons { opacity: 0.25 !important; }
15956
+ .qc-drag-track[data-cancel-mode="1"] .qc-drag-label {
15957
+ animation: qc-cancel-shake 0.6s ease-in-out infinite;
15958
+ }
15959
+ @keyframes qc-cancel-shake {
15960
+ 0%, 100% { transform: translateX(0); }
15961
+ 25% { transform: translateX(-1.5px); }
15962
+ 75% { transform: translateX(1.5px); }
15963
+ }
15964
+
15965
+ .qc-drag-help {
15966
+ font-size: 0.7rem;
15770
15967
  color: var(--text-muted);
15771
- line-height: 1.4;
15772
- padding-left: 19px;
15968
+ text-align: center;
15969
+ letter-spacing: 0.02em;
15970
+ opacity: 0.78;
15773
15971
  }
15774
15972
 
15775
15973
  @media (max-width: 720px) {
@@ -15777,11 +15975,24 @@
15777
15975
  .topbar-git-badge { padding: 0 8px; font-size: 0.7rem; }
15778
15976
  .quick-commit-modal { max-width: 95vw; }
15779
15977
  .qc-files-wrap { max-height: 160px; }
15780
- .qc-dropdown-menu { min-width: 180px; }
15781
- .qc-section-actions--secondary { flex-wrap: wrap; gap: 8px; }
15782
- .qc-section-actions--secondary .qc-tag-head-btn { flex: 1 1 auto; justify-content: center; }
15783
- /* Keep the commit footer one row, but let the two button groups share width. */
15784
- .qc-action-group { flex: 1 1 auto; justify-content: flex-end; }
15978
+ .qc-pair {
15979
+ grid-template-columns: 1fr;
15980
+ gap: 6px;
15981
+ }
15982
+ .qc-pair-label {
15983
+ padding-top: 0;
15984
+ }
15985
+ .qc-pair-flow {
15986
+ grid-template-columns: 1fr 18px 1fr;
15987
+ gap: 6px;
15988
+ }
15989
+ .qc-drag-track { height: 80px; }
15990
+ .qc-drag-action {
15991
+ width: 46%;
15992
+ min-width: 122px;
15993
+ height: 54px;
15994
+ }
15995
+ .qc-chevrons { right: 10px; }
15785
15996
  }
15786
15997
 
15787
15998
  /* ============================================================ */
@@ -1,4 +1,4 @@
1
- export declare const EMBEDDED_WEB_ASSET_VERSION = "ed9dad22c425";
1
+ export declare const EMBEDDED_WEB_ASSET_VERSION = "57b36c48d8a4";
2
2
  export declare const EMBEDDED_WEB_ASSETS: {
3
3
  readonly scriptsJs: string;
4
4
  readonly stylesCss: string;