@norman-else/dsh-claude 0.1.52 → 0.1.53

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/lib/client.js CHANGED
@@ -2293,15 +2293,18 @@ window.__ModuleLoader__.load({
2293
2293
  zIndex: 1100,
2294
2294
  bottom: "calc(100% + 8px)",
2295
2295
  right: 0,
2296
- width: 320,
2296
+ width: 360,
2297
+ maxWidth: "calc(100vw - 32px)",
2298
+ maxHeight: "min(480px, calc(100dvh - 48px))",
2299
+ overflowY: "auto",
2297
2300
  boxSizing: "border-box",
2298
2301
  display: "flex",
2299
2302
  flexDirection: "column",
2300
2303
  alignItems: "stretch",
2301
- gap: 8,
2302
- padding: 12,
2304
+ gap: 12,
2305
+ padding: 18,
2303
2306
  border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
2304
- borderRadius: 10,
2307
+ borderRadius: 14,
2305
2308
  background: "var(--dsw-specific-menu, var(--dsw-alias-bg-layer-1))",
2306
2309
  boxShadow: "var(--dsw-shadow-lv3)",
2307
2310
  textAlign: "left",
@@ -2309,8 +2312,11 @@ window.__ModuleLoader__.load({
2309
2312
  };
2310
2313
  const repositoryChecksTitle = {
2311
2314
  color: "var(--dsw-alias-label-primary)",
2312
- fontSize: 12,
2313
- fontWeight: 650
2315
+ fontSize: 14,
2316
+ fontWeight: 650,
2317
+ lineHeight: "22px",
2318
+ paddingBottom: 10,
2319
+ borderBottom: "1px solid var(--dsw-alias-border-l2)"
2314
2320
  };
2315
2321
  const repositoryChecksHint = {
2316
2322
  color: "var(--dsw-alias-label-tertiary)",
@@ -2323,8 +2329,11 @@ window.__ModuleLoader__.load({
2323
2329
  const repositoryChecksItem = {
2324
2330
  display: "flex",
2325
2331
  flexDirection: "column",
2326
- gap: 2,
2327
- minWidth: 0
2332
+ gap: 5,
2333
+ minWidth: 0,
2334
+ padding: "10px 12px",
2335
+ borderRadius: 8,
2336
+ background: "var(--dsw-alias-bg-layer-2)"
2328
2337
  };
2329
2338
  const repositoryChecksName = {
2330
2339
  color: "var(--dsw-alias-label-primary)",
@@ -2337,14 +2346,13 @@ window.__ModuleLoader__.load({
2337
2346
  const repositoryChecksDesc = {
2338
2347
  color: "var(--dsw-alias-label-tertiary)",
2339
2348
  fontSize: 11,
2340
- overflow: "hidden",
2341
- textOverflow: "ellipsis",
2342
- whiteSpace: "nowrap"
2349
+ lineHeight: "18px",
2350
+ overflowWrap: "anywhere"
2343
2351
  };
2344
2352
  const repositoryChecksFix = {
2345
2353
  alignSelf: "flex-end",
2346
- minHeight: 26,
2347
- padding: "3px 10px",
2354
+ minHeight: 32,
2355
+ padding: "6px 12px",
2348
2356
  border: "none",
2349
2357
  borderRadius: 7,
2350
2358
  background: "var(--dsw-static-blue-450)",
@@ -2605,10 +2613,11 @@ window.__ModuleLoader__.load({
2605
2613
  boxSizing: "border-box",
2606
2614
  display: "flex",
2607
2615
  flexDirection: "column",
2608
- gap: 10,
2609
- padding: 12,
2616
+ gap: 14,
2617
+ padding: 18,
2618
+ overflowY: "auto",
2610
2619
  border: askSurfaceBorder,
2611
- borderRadius: 12,
2620
+ borderRadius: 14,
2612
2621
  background: "var(--dsw-alias-bg-layer-1)",
2613
2622
  color: "var(--dsw-alias-label-primary)",
2614
2623
  boxShadow: askSurfaceShadow,
@@ -2621,7 +2630,7 @@ window.__ModuleLoader__.load({
2621
2630
  WebkitLineClamp: 3,
2622
2631
  WebkitBoxOrient: "vertical",
2623
2632
  margin: 0,
2624
- padding: "6px 10px",
2633
+ padding: "10px 12px",
2625
2634
  overflow: "hidden",
2626
2635
  borderLeft: "3px solid color-mix(in srgb, var(--dsw-static-blue-450) 60%, transparent)",
2627
2636
  borderRadius: 6,
@@ -2642,7 +2651,8 @@ window.__ModuleLoader__.load({
2642
2651
  };
2643
2652
  const askTextarea = {
2644
2653
  width: "100%",
2645
- minHeight: 64,
2654
+ minHeight: 88,
2655
+ flexShrink: 0,
2646
2656
  boxSizing: "border-box",
2647
2657
  padding: "8px 10px",
2648
2658
  border: askSurfaceBorder,
@@ -2660,7 +2670,10 @@ window.__ModuleLoader__.load({
2660
2670
  display: "flex",
2661
2671
  alignItems: "center",
2662
2672
  justifyContent: "flex-end",
2663
- gap: 6
2673
+ gap: 8,
2674
+ flexWrap: "wrap",
2675
+ paddingTop: 12,
2676
+ borderTop: "1px solid var(--dsw-alias-border-l2)"
2664
2677
  };
2665
2678
  const askAnswer = {
2666
2679
  flex: "1 1 auto",
@@ -2670,8 +2683,8 @@ window.__ModuleLoader__.load({
2670
2683
  wordBreak: "break-word"
2671
2684
  };
2672
2685
  const askButton = {
2673
- minHeight: 26,
2674
- padding: "3px 10px",
2686
+ minHeight: 32,
2687
+ padding: "6px 12px",
2675
2688
  border: askSurfaceBorder,
2676
2689
  borderRadius: 7,
2677
2690
  outline: "none",
@@ -3160,8 +3173,8 @@ window.__ModuleLoader__.load({
3160
3173
  .${promptSaveFieldClass} {
3161
3174
  box-sizing: border-box;
3162
3175
  width: 100%;
3163
- height: 30px;
3164
- padding: 0 9px;
3176
+ height: 38px;
3177
+ padding: 0 11px;
3165
3178
  border: 1px solid var(--dsw-alias-border-inverted);
3166
3179
  border-radius: 7px;
3167
3180
  background: var(--dsw-alias-interactive-bg-hover);
@@ -3199,12 +3212,14 @@ window.__ModuleLoader__.load({
3199
3212
  boxSizing: "border-box",
3200
3213
  display: "flex",
3201
3214
  flexDirection: "column",
3202
- gap: 8,
3203
- width: 340,
3215
+ gap: 14,
3216
+ width: 360,
3204
3217
  maxWidth: "calc(100vw - 32px)",
3205
- padding: "10px 12px",
3218
+ maxHeight: "calc(100dvh - 32px)",
3219
+ overflowY: "auto",
3220
+ padding: 18,
3206
3221
  border: "1px solid var(--dsw-alias-border-inverted)",
3207
- borderRadius: 11,
3222
+ borderRadius: 14,
3208
3223
  background: "var(--dsw-specific-menu)",
3209
3224
  boxShadow: "var(--dsw-shadow-lv3)",
3210
3225
  color: "var(--dsw-alias-label-primary)",
@@ -3212,14 +3227,17 @@ window.__ModuleLoader__.load({
3212
3227
  lineHeight: "20px"
3213
3228
  };
3214
3229
  const promptSaveHeading = {
3215
- color: "var(--dsw-alias-label-tertiary)",
3216
- fontSize: 11,
3217
- lineHeight: "16px"
3230
+ color: "var(--dsw-alias-label-primary)",
3231
+ fontSize: 14,
3232
+ fontWeight: 600,
3233
+ lineHeight: "22px"
3218
3234
  };
3219
3235
  const promptSaveActions = {
3220
3236
  display: "flex",
3221
3237
  justifyContent: "flex-end",
3222
- gap: 6
3238
+ gap: 8,
3239
+ paddingTop: 12,
3240
+ borderTop: "1px solid var(--dsw-alias-border-l2)"
3223
3241
  };
3224
3242
  /** The saved file, wrapped rather than truncated: a path the user cannot read
3225
3243
  * in full does not tell them where to go and edit it. */
@@ -3227,7 +3245,10 @@ window.__ModuleLoader__.load({
3227
3245
  color: "var(--dsw-alias-label-tertiary)",
3228
3246
  fontSize: 11,
3229
3247
  lineHeight: "16px",
3230
- overflowWrap: "anywhere"
3248
+ overflowWrap: "anywhere",
3249
+ padding: "10px 12px",
3250
+ borderRadius: 8,
3251
+ background: "var(--dsw-alias-bg-layer-2)"
3231
3252
  };
3232
3253
  const promptSaveError = {
3233
3254
  color: "var(--dsw-static-red-450, #d64545)",
@@ -3310,6 +3331,7 @@ window.__ModuleLoader__.load({
3310
3331
  cursor: "pointer"
3311
3332
  };
3312
3333
  const diffRepositoryTriggerClass = "dshClaudeDiffRepositoryTrigger";
3334
+ const diffFileHeaderClass = "dshClaudeDiffFileHeader";
3313
3335
  /** The checkout switch: a quiet pill in the header's own type, lit on hover
3314
3336
  * and while its menu is open, with the chevron set off in a lighter tone. */
3315
3337
  const diffRepositoryCss = `
@@ -3344,6 +3366,15 @@ window.__ModuleLoader__.load({
3344
3366
  flex: none;
3345
3367
  color: var(--dsw-alias-label-tertiary);
3346
3368
  }
3369
+ /* Sticky headers each form a stacking context, so the host Tooltip bubble
3370
+ (rendered inline, position: fixed) is painted under the next file's header.
3371
+ Lift the hovered header above its siblings while the bubble can be open. */
3372
+ .${diffFileHeaderClass} {
3373
+ z-index: 1;
3374
+ }
3375
+ .${diffFileHeaderClass}:hover {
3376
+ z-index: 2;
3377
+ }
3347
3378
  `;
3348
3379
  /** A row of the checkout menu: name left, its counts right in tabular figures. */
3349
3380
  const diffRepositoryRow = {
@@ -3394,7 +3425,6 @@ window.__ModuleLoader__.load({
3394
3425
  const diffFileHeader = {
3395
3426
  position: "sticky",
3396
3427
  top: 0,
3397
- zIndex: 1,
3398
3428
  width: "100%",
3399
3429
  minHeight: 38,
3400
3430
  display: "flex",
@@ -3630,6 +3660,107 @@ window.__ModuleLoader__.load({
3630
3660
  outline: none;
3631
3661
  box-shadow: inset 0 0 0 1px var(--dsw-static-blue-450);
3632
3662
  }
3663
+ .dshClaudeUtilityDialog {
3664
+ width: min(580px, calc(100vw - 32px));
3665
+ max-width: calc(100vw - 32px);
3666
+ max-height: calc(100dvh - 32px);
3667
+ gap: 0;
3668
+ padding: 0;
3669
+ border: 1px solid var(--dsw-alias-border-l2);
3670
+ border-radius: 16px;
3671
+ }
3672
+ .dshClaudeUtilityContent { box-sizing: border-box; padding: 24px; }
3673
+ .dshClaudeUtilityContent > div:first-child { padding: 0 0 12px; }
3674
+ .dshClaudeUtilityContent h2 { font-size: 19px; line-height: 28px; letter-spacing: -.3px; }
3675
+ .dshClaudeUtilityContent > p { padding: 0; margin: 0 0 20px; color: var(--dsw-alias-label-secondary); }
3676
+ .dshClaudeUtilityContent > div:last-child:not(:first-child) { padding: 0; margin-top: 0; }
3677
+ .dshClaudeUtilityDialog > div:last-child:not(.dshClaudeUtilityContent) { padding: 16px 24px; border-top: 1px solid var(--dsw-alias-border-l2); }
3678
+ .dshClaudeUtilitySummary {
3679
+ padding: 14px;
3680
+ border: 1px solid var(--dsw-alias-border-l2);
3681
+ border-radius: 10px;
3682
+ background: var(--dsw-alias-bg-layer-1);
3683
+ flex-wrap: wrap;
3684
+ align-items: center;
3685
+ }
3686
+ .dshClaudeUtilitySummary > strong { color: var(--dsw-alias-label-primary); }
3687
+ .dshClaudeUtilitySummary > span { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
3688
+ .dshClaudeUtilityOption {
3689
+ padding: 13px 14px;
3690
+ border: 1px solid var(--dsw-alias-border-l2);
3691
+ border-radius: 10px;
3692
+ line-height: 20px;
3693
+ cursor: pointer;
3694
+ }
3695
+ .dshClaudeUtilityOption input { flex-shrink: 0; }
3696
+ .dshClaudeUtilityOption:has(input:checked) { border-color: color-mix(in srgb, var(--dsw-static-blue-450) 45%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, var(--dsw-static-blue-450) 5%, transparent); }
3697
+ .dshClaudeUtilityOption:has(input:disabled) { cursor: default; }
3698
+ .dshClaudeUtilityContent ul { max-height: 240px; overflow-y: auto; }
3699
+ .dshClaudeUtilityContent li { padding: 8px 4px; overflow-wrap: anywhere; }
3700
+ .dshClaudeUtilityContent li + li { border-top: 1px solid var(--dsw-alias-border-l2); }
3701
+ .dshClaudeUtilityContent [role='alert'] { padding: 12px; border-radius: 8px; background: var(--dsw-alias-bg-layer-1); overflow-wrap: anywhere; }
3702
+ .dshClaudeUtilityDialog button:focus-visible { outline: 2px solid var(--dsw-static-blue-450); outline-offset: 2px; }
3703
+ @media (max-width: 640px) {
3704
+ .dshClaudeUtilityContent { padding: 18px; }
3705
+ .dshClaudeUtilityDialog > div:last-child:not(.dshClaudeUtilityContent) { padding: 14px 18px; }
3706
+ }
3707
+ .dshClaudeCommitDialog {
3708
+ gap: 0;
3709
+ padding: 0;
3710
+ width: min(880px, calc(100vw - 32px));
3711
+ max-width: calc(100vw - 32px);
3712
+ max-height: calc(100dvh - 32px);
3713
+ border: 1px solid var(--dsw-alias-border-l2);
3714
+ border-radius: 16px;
3715
+ overflow: hidden;
3716
+ }
3717
+ .dshClaudeCommitContent { padding: 24px; box-sizing: border-box; }
3718
+ .dshClaudeCommitContent > div:first-child { padding: 0 0 16px; }
3719
+ .dshClaudeCommitContent > div:last-child:not(:first-child) { padding: 0; margin-top: 0; }
3720
+ .dshClaudeCommitContent h2 { font-size: 19px; line-height: 28px; letter-spacing: -.3px; }
3721
+ .dshClaudeCommitContext {
3722
+ display: flex;
3723
+ align-items: center;
3724
+ flex-wrap: wrap;
3725
+ gap: 8px;
3726
+ padding-bottom: 18px;
3727
+ border-bottom: 1px solid var(--dsw-alias-border-l2);
3728
+ color: var(--dsw-alias-label-secondary);
3729
+ font-size: 12px;
3730
+ overflow-wrap: anywhere;
3731
+ }
3732
+ .dshClaudeCommitContext strong { color: var(--dsw-alias-label-primary); margin-right: 4px; }
3733
+ .dshClaudeCommitBranch {
3734
+ min-width: 0;
3735
+ padding: 3px 8px;
3736
+ border-radius: 6px;
3737
+ background: var(--dsw-alias-bg-layer-1);
3738
+ font-family: ui-monospace, monospace;
3739
+ }
3740
+ .dshClaudeCommitGrid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 24px; }
3741
+ .dshClaudeCommitSection, .dshClaudeCommitEditor { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
3742
+ .dshClaudeCommitSection h3 { margin: 0; font-size: 12px; font-weight: 600; color: var(--dsw-alias-label-secondary); }
3743
+ .dshClaudeCommitChanges { padding-right: 24px; border-right: 1px solid var(--dsw-alias-border-l2); }
3744
+ .dshClaudeCommitFiles { max-height: 320px; overflow-y: auto; min-width: 0; }
3745
+ .dshClaudeCommitFile { display: flex; align-items: center; gap: 10px; padding: 11px 0; font-size: 12px; line-height: 18px; }
3746
+ .dshClaudeCommitFile + .dshClaudeCommitFile { border-top: 1px solid var(--dsw-alias-border-l2); }
3747
+ .dshClaudeCommitPath { flex: 1; min-width: 0; overflow-wrap: anywhere; }
3748
+ .dshClaudeCommitState { flex: none; max-width: 45%; padding: 2px 6px; border-radius: 4px; background: var(--dsw-alias-bg-layer-1); color: var(--dsw-alias-label-secondary); font-size: 10px; line-height: 16px; }
3749
+ .dshClaudeCommitState[data-staged='true'] { color: var(--dsw-static-green-450, var(--dsw-alias-label-primary)); }
3750
+ .dshClaudeCommitHash { flex: none; color: var(--dsw-alias-label-secondary); font-size: 11px; }
3751
+ .dshClaudeCommitEditor textarea, .dshClaudeCommitEditor input { border-radius: 8px; }
3752
+ .dshClaudeCommitEditor textarea { width: 100%; box-sizing: border-box; }
3753
+ .dshClaudeCommitHint { margin: -6px 0 0; color: var(--dsw-alias-label-secondary); font-size: 11px; line-height: 18px; }
3754
+ .dshClaudeCommitProgress { margin: 0 0 16px; padding: 10px 12px; border-radius: 8px; background: var(--dsw-alias-bg-layer-1); color: var(--dsw-alias-label-secondary); font-size: 12px; line-height: 18px; }
3755
+ .dshClaudeCommitDialog > div:last-child:not(.dshClaudeCommitContent) { padding: 16px 24px; border-top: 1px solid var(--dsw-alias-border-l2); }
3756
+ .dshClaudeCommitDialog button:focus-visible { outline: 2px solid var(--dsw-static-blue-450); outline-offset: 2px; }
3757
+ @media (max-width: 640px) {
3758
+ .dshClaudeCommitContent { padding: 18px; }
3759
+ .dshClaudeCommitGrid { grid-template-columns: minmax(0, 1fr); gap: 20px; }
3760
+ .dshClaudeCommitChanges { padding: 0 0 18px; border-right: 0; border-bottom: 1px solid var(--dsw-alias-border-l2); }
3761
+ .dshClaudeCommitFiles { max-height: 180px; }
3762
+ .dshClaudeCommitDialog > div:last-child:not(.dshClaudeCommitContent) { padding: 14px 18px; }
3763
+ }
3633
3764
  `;
3634
3765
  const diffModalBody = {
3635
3766
  display: "flex",
@@ -3654,31 +3785,6 @@ window.__ModuleLoader__.load({
3654
3785
  textOverflow: "ellipsis",
3655
3786
  whiteSpace: "nowrap"
3656
3787
  };
3657
- const diffModalFiles = {
3658
- minWidth: 0,
3659
- maxHeight: 300,
3660
- overflowX: "hidden",
3661
- overflowY: "auto",
3662
- border: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
3663
- borderRadius: 8
3664
- };
3665
- const diffModalFile = {
3666
- display: "flex",
3667
- justifyContent: "space-between",
3668
- gap: 12,
3669
- minWidth: 0,
3670
- padding: "8px 12px",
3671
- borderBottom: "1px solid var(--dsw-alias-border-l2, color-mix(in srgb, currentColor 16%, transparent))",
3672
- color: "var(--dsw-alias-label-secondary)",
3673
- fontSize: 12,
3674
- lineHeight: "18px"
3675
- };
3676
- const diffModalFilePath = {
3677
- minWidth: 0,
3678
- overflow: "hidden",
3679
- textOverflow: "ellipsis",
3680
- whiteSpace: "nowrap"
3681
- };
3682
3788
  const diffModalFileState = { flex: "none" };
3683
3789
  const diffModalField = {
3684
3790
  display: "flex",
@@ -8867,8 +8973,8 @@ window.__ModuleLoader__.load({
8867
8973
  children: diffModalCss
8868
8974
  }),
8869
8975
  /* @__PURE__ */ jsx(Modal, {
8870
- className: "dshClaudeRepositoryActionModal",
8871
- contentClassName: "dshClaudeRepositoryActionModalContent",
8976
+ className: "dshClaudeRepositoryActionModal dshClaudeUtilityDialog",
8977
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeUtilityContent",
8872
8978
  open: dialog !== void 0,
8873
8979
  onClose: closeDialog,
8874
8980
  title: t("conflictTitle"),
@@ -8906,6 +9012,7 @@ window.__ModuleLoader__.load({
8906
9012
  style: diffModalBody,
8907
9013
  children: [
8908
9014
  /* @__PURE__ */ jsxs("div", {
9015
+ className: "dshClaudeUtilitySummary",
8909
9016
  style: diffModalMeta,
8910
9017
  children: [/* @__PURE__ */ jsxs("strong", {
8911
9018
  style: diffModalMetaText,
@@ -8933,6 +9040,7 @@ window.__ModuleLoader__.load({
8933
9040
  children: t("conflictResolve")
8934
9041
  }),
8935
9042
  repository.remote === void 0 ? null : /* @__PURE__ */ jsxs("label", {
9043
+ className: "dshClaudeUtilityOption",
8936
9044
  style: diffModalCheckbox,
8937
9045
  children: [/* @__PURE__ */ jsx("input", {
8938
9046
  type: "checkbox",
@@ -9059,8 +9167,8 @@ window.__ModuleLoader__.load({
9059
9167
  children: diffModalCss
9060
9168
  }),
9061
9169
  /* @__PURE__ */ jsx(Modal, {
9062
- className: "dshClaudeRepositoryActionModal",
9063
- contentClassName: "dshClaudeRepositoryActionModalContent",
9170
+ className: "dshClaudeRepositoryActionModal dshClaudeUtilityDialog",
9171
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeUtilityContent",
9064
9172
  open: dialog !== void 0,
9065
9173
  onClose: closeDialog,
9066
9174
  title: t("repositoryUpdateBranch"),
@@ -9092,6 +9200,7 @@ window.__ModuleLoader__.load({
9092
9200
  style: diffModalBody,
9093
9201
  children: [
9094
9202
  /* @__PURE__ */ jsxs("div", {
9203
+ className: "dshClaudeUtilitySummary",
9095
9204
  style: diffModalMeta,
9096
9205
  children: [/* @__PURE__ */ jsxs("strong", {
9097
9206
  style: diffModalMetaText,
@@ -9110,6 +9219,7 @@ window.__ModuleLoader__.load({
9110
9219
  })]
9111
9220
  }),
9112
9221
  ["rebase", "merge"].map((option) => /* @__PURE__ */ jsxs("label", {
9222
+ className: "dshClaudeUtilityOption",
9113
9223
  style: diffModalCheckbox,
9114
9224
  children: [/* @__PURE__ */ jsx("input", {
9115
9225
  type: "radio",
@@ -9192,8 +9302,8 @@ window.__ModuleLoader__.load({
9192
9302
  children: diffModalCss
9193
9303
  }),
9194
9304
  /* @__PURE__ */ jsx(Modal, {
9195
- className: "dshClaudeRepositoryActionModal",
9196
- contentClassName: "dshClaudeRepositoryActionModalContent",
9305
+ className: "dshClaudeRepositoryActionModal dshClaudeUtilityDialog",
9306
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeUtilityContent",
9197
9307
  open: dialog !== void 0,
9198
9308
  onClose: closeDialog,
9199
9309
  title: t("cleanupTitle"),
@@ -9224,6 +9334,7 @@ window.__ModuleLoader__.load({
9224
9334
  children: dialog === void 0 ? null : /* @__PURE__ */ jsxs("div", {
9225
9335
  style: diffModalBody,
9226
9336
  children: [/* @__PURE__ */ jsxs("div", {
9337
+ className: "dshClaudeUtilitySummary",
9227
9338
  style: diffModalMeta,
9228
9339
  children: [/* @__PURE__ */ jsxs("strong", {
9229
9340
  style: diffModalMetaText,
@@ -9340,8 +9451,8 @@ window.__ModuleLoader__.load({
9340
9451
  children: diffModalCss
9341
9452
  }),
9342
9453
  /* @__PURE__ */ jsx(Modal, {
9343
- className: "dshClaudeRepositoryActionModal",
9344
- contentClassName: "dshClaudeRepositoryActionModalContent",
9454
+ className: "dshClaudeRepositoryActionModal dshClaudeUtilityDialog",
9455
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeUtilityContent",
9345
9456
  open: dialog !== void 0,
9346
9457
  onClose: closeDialog,
9347
9458
  title: t("diffMergePr"),
@@ -9373,6 +9484,7 @@ window.__ModuleLoader__.load({
9373
9484
  style: diffModalBody,
9374
9485
  children: [
9375
9486
  /* @__PURE__ */ jsxs("div", {
9487
+ className: "dshClaudeUtilitySummary",
9376
9488
  style: diffModalMeta,
9377
9489
  children: [/* @__PURE__ */ jsxs("strong", {
9378
9490
  style: diffModalMetaText,
@@ -9392,6 +9504,7 @@ window.__ModuleLoader__.load({
9392
9504
  children: pullRequest.title
9393
9505
  }),
9394
9506
  /* @__PURE__ */ jsxs("label", {
9507
+ className: "dshClaudeUtilityOption",
9395
9508
  style: diffModalCheckbox,
9396
9509
  children: [/* @__PURE__ */ jsx("input", {
9397
9510
  type: "checkbox",
@@ -14975,6 +15088,7 @@ window.__ModuleLoader__.load({
14975
15088
  style: diffFile,
14976
15089
  children: [/* @__PURE__ */ jsxs("button", {
14977
15090
  type: "button",
15091
+ className: diffFileHeaderClass,
14978
15092
  style: diffFileHeader,
14979
15093
  "aria-expanded": open,
14980
15094
  onClick: () => onOpenChange(!open),
@@ -15757,13 +15871,12 @@ window.__ModuleLoader__.load({
15757
15871
  ]
15758
15872
  }),
15759
15873
  /* @__PURE__ */ jsxs(Modal, {
15760
- className: "dshClaudeRepositoryActionModal",
15761
- contentClassName: "dshClaudeRepositoryActionModalContent",
15874
+ className: "dshClaudeRepositoryActionModal dshClaudeCommitDialog",
15875
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeCommitContent",
15762
15876
  open: dialog !== void 0,
15763
15877
  onClose: closeDialog,
15764
15878
  title: dialog === void 0 ? t("diffCommit") : actionLabel(dialog.action, t),
15765
15879
  closeLabel: t("diffCancel"),
15766
- description: t("diffConfirmDescription"),
15767
15880
  footer: /* @__PURE__ */ jsxs("div", {
15768
15881
  style: diffModalFooter,
15769
15882
  children: [/* @__PURE__ */ jsx("button", {
@@ -15783,120 +15896,161 @@ window.__ModuleLoader__.load({
15783
15896
  },
15784
15897
  disabled: dialog?.submitting === true || dialog?.preview === void 0 || dialog.action !== "push" && message.trim() === "",
15785
15898
  onClick: () => void confirm(),
15786
- children: dialog?.submitting === true ? t("diffSubmitting") : t("diffConfirm")
15899
+ children: dialog?.submitting === true ? t("diffSubmitting") : dialog === void 0 ? t("diffCommit") : actionLabel(dialog.action, t)
15787
15900
  })]
15788
15901
  }),
15789
15902
  children: [
15790
15903
  dialog?.loading === true ? /* @__PURE__ */ jsx("p", {
15791
- style: diffModalStatus,
15792
- children: t("diffGeneratingMessage")
15904
+ className: "dshClaudeCommitProgress",
15905
+ role: "status",
15906
+ children: t(dialog.preview === void 0 ? "diffLoadingPreview" : "diffGeneratingMessage")
15793
15907
  }) : null,
15794
15908
  dialog?.preview !== void 0 ? /* @__PURE__ */ jsxs("div", {
15795
15909
  style: diffModalBody,
15796
- children: [
15797
- /* @__PURE__ */ jsxs("div", {
15798
- style: diffModalMeta,
15799
- children: [/* @__PURE__ */ jsx("strong", {
15800
- style: diffModalMetaText,
15801
- title: dialog.preview.branch,
15802
- children: dialog.action === "push" ? `${dialog.preview.branch} → ${dialog.preview.upstream ?? `origin/${dialog.preview.branch}`}` : dialog.preview.branch
15910
+ children: [/* @__PURE__ */ jsxs("div", {
15911
+ className: "dshClaudeCommitContext",
15912
+ children: [
15913
+ /* @__PURE__ */ jsx("strong", {
15914
+ title: dialog.preview.root,
15915
+ children: repositoryLabel({
15916
+ root: dialog.preview.root,
15917
+ cwd: dialog.preview.root
15918
+ })
15919
+ }),
15920
+ /* @__PURE__ */ jsx("span", {
15921
+ className: "dshClaudeCommitBranch",
15922
+ children: dialog.preview.branch
15923
+ }),
15924
+ dialog.action === "push" || dialog.action === "commit-push" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
15925
+ "aria-hidden": "true",
15926
+ children: "→"
15803
15927
  }), /* @__PURE__ */ jsx("span", {
15804
- style: diffModalFileState,
15805
- children: dialog.action === "push" ? t("diffPushAhead", { count: dialog.preview.unpushedTruncated ? `${dialog.preview.unpushedCommits.length}+` : dialog.preview.unpushedCommits.length }) : t("diffFiles", { count: dialog.preview.files.length })
15806
- })]
15807
- }),
15808
- dialog.action === "push" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
15809
- style: diffModalFiles,
15928
+ className: "dshClaudeCommitBranch",
15929
+ children: dialog.preview.upstream ?? `origin/${dialog.preview.branch}`
15930
+ })] }) : null
15931
+ ]
15932
+ }), dialog.action === "push" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("section", {
15933
+ className: "dshClaudeCommitSection",
15934
+ children: [/* @__PURE__ */ jsx("h3", { children: t("diffPushAhead", { count: dialog.preview.unpushedTruncated ? `${dialog.preview.unpushedCommits.length}+` : dialog.preview.unpushedCommits.length }) }), /* @__PURE__ */ jsx("div", {
15935
+ className: "dshClaudeCommitFiles",
15810
15936
  children: dialog.preview.unpushedCommits.map((commit) => /* @__PURE__ */ jsxs("div", {
15811
- style: diffModalFile,
15812
- children: [/* @__PURE__ */ jsx("span", {
15813
- style: diffModalFilePath,
15937
+ className: "dshClaudeCommitFile",
15938
+ children: [/* @__PURE__ */ jsx("code", {
15939
+ className: "dshClaudeCommitHash",
15940
+ children: commit.hash.slice(0, 8)
15941
+ }), /* @__PURE__ */ jsx("span", {
15942
+ className: "dshClaudeCommitPath",
15814
15943
  title: commit.subject,
15815
15944
  children: commit.subject
15816
- }), /* @__PURE__ */ jsx("span", {
15817
- style: diffModalFileState,
15818
- children: commit.hash.slice(0, 8)
15819
15945
  })]
15820
15946
  }, commit.hash))
15821
- }), /* @__PURE__ */ jsx("p", {
15822
- style: diffModalStatus,
15823
- children: t("diffPushDescription")
15824
- })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
15825
- /* @__PURE__ */ jsx("div", {
15826
- style: diffModalFiles,
15827
- children: dialog.preview.files.map((file) => /* @__PURE__ */ jsxs("div", {
15828
- style: diffModalFile,
15829
- children: [/* @__PURE__ */ jsx("span", {
15830
- style: diffModalFilePath,
15831
- title: file.path,
15832
- children: file.path
15833
- }), /* @__PURE__ */ jsx("span", {
15834
- style: diffModalFileState,
15835
- children: file.untracked ? t("diffUntracked") : file.staged && file.unstaged ? t("diffStagedUnstaged") : file.staged ? t("diffStaged") : t("diffUnstaged")
15947
+ })]
15948
+ }), /* @__PURE__ */ jsx("p", {
15949
+ style: diffModalStatus,
15950
+ children: t("diffPushDescription")
15951
+ })] }) : /* @__PURE__ */ jsxs("div", {
15952
+ className: "dshClaudeCommitGrid",
15953
+ children: [/* @__PURE__ */ jsxs("section", {
15954
+ className: "dshClaudeCommitSection dshClaudeCommitChanges",
15955
+ children: [
15956
+ /* @__PURE__ */ jsx("h3", { children: t("diffFilesShort", { count: dialog.preview.files.length }) }),
15957
+ /* @__PURE__ */ jsx("div", {
15958
+ className: "dshClaudeCommitFiles",
15959
+ children: dialog.preview.files.map((file) => /* @__PURE__ */ jsxs("div", {
15960
+ className: "dshClaudeCommitFile",
15961
+ children: [/* @__PURE__ */ jsx("span", {
15962
+ className: "dshClaudeCommitPath",
15963
+ title: file.path,
15964
+ children: file.path
15965
+ }), /* @__PURE__ */ jsx("span", {
15966
+ className: "dshClaudeCommitState",
15967
+ "data-staged": file.staged && !file.unstaged && !file.untracked,
15968
+ children: file.untracked ? t("diffUntracked") : file.staged && file.unstaged ? t("diffStagedUnstaged") : file.staged ? t("diffStaged") : t("diffUnstaged")
15969
+ })]
15970
+ }, file.path))
15971
+ }),
15972
+ /* @__PURE__ */ jsxs("label", {
15973
+ style: diffModalCheckbox,
15974
+ children: [/* @__PURE__ */ jsx("input", {
15975
+ type: "checkbox",
15976
+ checked: includeUnstaged,
15977
+ disabled: !dialog.preview.hasUnstaged && !dialog.preview.hasUntracked,
15978
+ onChange: (event) => setIncludeUnstaged(event.currentTarget.checked)
15979
+ }), t("diffIncludeUnstaged")]
15980
+ })
15981
+ ]
15982
+ }), /* @__PURE__ */ jsxs("div", {
15983
+ className: "dshClaudeCommitEditor",
15984
+ children: [
15985
+ dialog.action === "create-pr" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
15986
+ /* @__PURE__ */ jsxs("label", {
15987
+ style: diffModalField,
15988
+ children: [t("diffPrTitle"), /* @__PURE__ */ jsx("input", {
15989
+ style: {
15990
+ ...diffModalTextInput,
15991
+ fontWeight: 400
15992
+ },
15993
+ value: prTitle,
15994
+ maxLength: 256,
15995
+ onChange: (event) => setPrTitle(event.currentTarget.value)
15996
+ })]
15997
+ }),
15998
+ /* @__PURE__ */ jsxs("label", {
15999
+ style: diffModalField,
16000
+ children: [t("diffPrBase"), /* @__PURE__ */ jsx("input", {
16001
+ style: {
16002
+ ...diffModalTextInput,
16003
+ fontWeight: 400
16004
+ },
16005
+ value: baseBranch,
16006
+ maxLength: 512,
16007
+ placeholder: t("diffPrBaseDefault"),
16008
+ onChange: (event) => setBaseBranch(event.currentTarget.value)
16009
+ })]
16010
+ }),
16011
+ /* @__PURE__ */ jsxs("label", {
16012
+ style: diffModalField,
16013
+ children: [t("diffPrDescription"), /* @__PURE__ */ jsx("textarea", {
16014
+ style: {
16015
+ ...diffModalTextarea,
16016
+ fontWeight: 400,
16017
+ minHeight: 180
16018
+ },
16019
+ value: prBody,
16020
+ maxLength: 8192,
16021
+ onChange: (event) => setPrBody(event.currentTarget.value)
16022
+ })]
16023
+ }),
16024
+ /* @__PURE__ */ jsxs("label", {
16025
+ style: diffModalCheckbox,
16026
+ children: [/* @__PURE__ */ jsx("input", {
16027
+ type: "checkbox",
16028
+ checked: draft,
16029
+ onChange: (event) => setDraft(event.currentTarget.checked)
16030
+ }), t("diffPrDraft")]
16031
+ })
16032
+ ] }) : null,
16033
+ /* @__PURE__ */ jsxs("label", {
16034
+ style: diffModalField,
16035
+ children: [t("diffCommitMessage"), /* @__PURE__ */ jsx("textarea", {
16036
+ style: {
16037
+ ...diffModalTextarea,
16038
+ fontWeight: 400,
16039
+ minHeight: dialog.action === "create-pr" ? 100 : 220
16040
+ },
16041
+ value: message,
16042
+ maxLength: 2048,
16043
+ placeholder: t("diffCommitMessagePlaceholder"),
16044
+ onChange: (event) => setMessage(event.currentTarget.value)
15836
16045
  })]
15837
- }, file.path))
15838
- }),
15839
- /* @__PURE__ */ jsxs("label", {
15840
- style: diffModalCheckbox,
15841
- children: [/* @__PURE__ */ jsx("input", {
15842
- type: "checkbox",
15843
- checked: includeUnstaged,
15844
- disabled: !dialog.preview.hasUnstaged && !dialog.preview.hasUntracked,
15845
- onChange: (event) => setIncludeUnstaged(event.currentTarget.checked)
15846
- }), t("diffIncludeUnstaged")]
15847
- }),
15848
- /* @__PURE__ */ jsxs("label", {
15849
- style: diffModalField,
15850
- children: [t("diffCommitMessage"), /* @__PURE__ */ jsx("textarea", {
15851
- style: diffModalTextarea,
15852
- value: message,
15853
- maxLength: 2048,
15854
- onChange: (event) => setMessage(event.currentTarget.value)
15855
- })]
15856
- })
15857
- ] }),
15858
- dialog.action === "create-pr" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
15859
- /* @__PURE__ */ jsxs("label", {
15860
- style: diffModalField,
15861
- children: [t("diffPrTitle"), /* @__PURE__ */ jsx("input", {
15862
- style: diffModalTextInput,
15863
- value: prTitle,
15864
- maxLength: 256,
15865
- onChange: (event) => setPrTitle(event.currentTarget.value)
15866
- })]
15867
- }),
15868
- /* @__PURE__ */ jsxs("label", {
15869
- style: diffModalField,
15870
- children: [t("diffPrBase"), /* @__PURE__ */ jsx("input", {
15871
- style: diffModalTextInput,
15872
- value: baseBranch,
15873
- maxLength: 512,
15874
- placeholder: t("diffPrBaseDefault"),
15875
- onChange: (event) => setBaseBranch(event.currentTarget.value)
15876
- })]
15877
- }),
15878
- /* @__PURE__ */ jsxs("label", {
15879
- style: diffModalField,
15880
- children: [t("diffPrDescription"), /* @__PURE__ */ jsx("textarea", {
15881
- style: {
15882
- ...diffModalTextarea,
15883
- minHeight: 240
15884
- },
15885
- value: prBody,
15886
- maxLength: 8192,
15887
- onChange: (event) => setPrBody(event.currentTarget.value)
15888
- })]
15889
- }),
15890
- /* @__PURE__ */ jsxs("label", {
15891
- style: diffModalCheckbox,
15892
- children: [/* @__PURE__ */ jsx("input", {
15893
- type: "checkbox",
15894
- checked: draft,
15895
- onChange: (event) => setDraft(event.currentTarget.checked)
15896
- }), t("diffPrDraft")]
15897
- })
15898
- ] }) : null
15899
- ]
16046
+ }),
16047
+ /* @__PURE__ */ jsx("p", {
16048
+ className: "dshClaudeCommitHint",
16049
+ children: t("diffCommitMessageHint")
16050
+ })
16051
+ ]
16052
+ })]
16053
+ })]
15900
16054
  }) : null,
15901
16055
  dialog?.error !== void 0 ? /* @__PURE__ */ jsxs("p", {
15902
16056
  role: "alert",
@@ -16571,6 +16725,10 @@ window.__ModuleLoader__.load({
16571
16725
  "data-dsh-claude-ask-styles": true,
16572
16726
  children: [panelIconButtonCss, askHighlightCss]
16573
16727
  }),
16728
+ /* @__PURE__ */ jsx("strong", {
16729
+ style: promptSaveHeading,
16730
+ children: t("askTooltip")
16731
+ }),
16574
16732
  /* @__PURE__ */ jsx("p", {
16575
16733
  style: askQuote,
16576
16734
  children: selection.text
@@ -17037,8 +17195,8 @@ window.__ModuleLoader__.load({
17037
17195
  children: diffModalCss
17038
17196
  }),
17039
17197
  /* @__PURE__ */ jsx(Modal, {
17040
- className: "dshClaudeRepositoryActionModal",
17041
- contentClassName: "dshClaudeRepositoryActionModalContent",
17198
+ className: "dshClaudeRepositoryActionModal dshClaudeUtilityDialog",
17199
+ contentClassName: "dshClaudeRepositoryActionModalContent dshClaudeUtilityContent",
17042
17200
  open: target !== void 0,
17043
17201
  onClose: close,
17044
17202
  title: t("rewindTitle"),
@@ -17074,6 +17232,7 @@ window.__ModuleLoader__.load({
17074
17232
  children: target.text.slice(0, 2e3)
17075
17233
  }),
17076
17234
  /* @__PURE__ */ jsxs("label", {
17235
+ className: "dshClaudeUtilityOption",
17077
17236
  style: diffModalCheckbox,
17078
17237
  children: [/* @__PURE__ */ jsx("input", {
17079
17238
  type: "checkbox",
@@ -18586,7 +18745,10 @@ window.__ModuleLoader__.load({
18586
18745
  role: "dialog",
18587
18746
  "aria-label": label,
18588
18747
  children: panel.kind === "saved" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
18589
- /* @__PURE__ */ jsx("span", { children: t("promptSaved", { name: panel.prompt.name }) }),
18748
+ /* @__PURE__ */ jsx("span", {
18749
+ style: promptSaveHeading,
18750
+ children: t("promptSaved", { name: panel.prompt.name })
18751
+ }),
18590
18752
  /* @__PURE__ */ jsx("span", {
18591
18753
  style: promptSaveLocation,
18592
18754
  children: panel.prompt.location
@@ -18609,8 +18771,13 @@ window.__ModuleLoader__.load({
18609
18771
  children: [
18610
18772
  /* @__PURE__ */ jsx("span", {
18611
18773
  style: promptSaveHeading,
18612
- children: panel.suggesting ? t("promptSaveNaming") : label
18774
+ children: label
18613
18775
  }),
18776
+ panel.suggesting ? /* @__PURE__ */ jsx("span", {
18777
+ role: "status",
18778
+ style: repositoryChecksHint,
18779
+ children: t("promptSaveNaming")
18780
+ }) : null,
18614
18781
  /* @__PURE__ */ jsx("input", {
18615
18782
  className: promptSaveFieldClass,
18616
18783
  "aria-label": t("promptSaveName"),
@@ -19090,6 +19257,9 @@ window.__ModuleLoader__.load({
19090
19257
  diffPushAhead: "{count} 个未推送的 commit",
19091
19258
  diffPushCompleted: "已推送 commit {commit}",
19092
19259
  diffGeneratingMessage: "正在生成建议的 commit message,只会填进你没写的字段。",
19260
+ diffLoadingPreview: "正在读取仓库变更…",
19261
+ diffCommitMessagePlaceholder: "简要描述这次修改…",
19262
+ diffCommitMessageHint: "首行写修改摘要,空一行后可补充详细说明。",
19093
19263
  diffActionFailed: "仓库操作失败。",
19094
19264
  diffIncludeUnstaged: "包含 unstaged 和 untracked 改动",
19095
19265
  diffCommitMessage: "Commit message",
@@ -19531,6 +19701,9 @@ window.__ModuleLoader__.load({
19531
19701
  diffPushAhead: "{count} unpushed commit(s)",
19532
19702
  diffPushCompleted: "Pushed commit {commit}",
19533
19703
  diffGeneratingMessage: "Suggesting a commit message. It only fills the fields you leave empty.",
19704
+ diffLoadingPreview: "Loading repository changes…",
19705
+ diffCommitMessagePlaceholder: "Describe what changed…",
19706
+ diffCommitMessageHint: "Start with a short summary. Add details after a blank line.",
19534
19707
  diffActionFailed: "Repository action failed.",
19535
19708
  diffIncludeUnstaged: "Include unstaged and untracked changes",
19536
19709
  diffCommitMessage: "Commit message",