@civilization/dsh-git-workbench 0.4.2 → 0.4.3

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
@@ -2057,7 +2057,7 @@ window.__ModuleLoader__.load({
2057
2057
  });
2058
2058
  });
2059
2059
  // \0dsh-css:src/client/GitBranchPill.module.css.mjs
2060
- const css = ".J259IW_anchor{min-width:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));display:inline-flex;position:relative}.J259IW_pill{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-bg-layer-1,#fff);max-width:100%;color:var(--dsw-alias-label-secondary);font:inherit;font-variant-numeric:tabular-nums;font-weight:500;line-height:inherit;white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:1px 8px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.J259IW_pill:hover,.J259IW_pill[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary)}.J259IW_icon{width:14px;height:14px;color:var(--dsw-alias-label-tertiary);flex:none}.J259IW_pill:hover .J259IW_icon,.J259IW_pill[aria-expanded=true] .J259IW_icon{color:var(--dsw-alias-state-business-primary)}.J259IW_branchName{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.J259IW_badge{border-radius:var(--dsw-radius-xs,3px);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);align-items:center;padding:0 4px;font-size:11px;font-weight:500;line-height:14px;display:inline-flex}.J259IW_badgeAhead{color:var(--dsw-alias-state-business-primary)}.J259IW_badgeBehind{color:var(--dsw-alias-state-warn-primary)}.J259IW_popover{z-index:1100;box-sizing:border-box;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-layer-1,#fff));border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);width:310px;max-height:440px;box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-primary);cursor:default;flex-direction:column;font-size:12px;line-height:18px;animation:.15s cubic-bezier(.16,1,.3,1) J259IW_popoverFadeIn;display:flex;position:fixed;overflow:hidden}@keyframes J259IW_popoverFadeIn{0%{opacity:0;transform:translateY(4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.J259IW_header{border-bottom:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:6px;padding:8px 10px 6px;display:flex}.J259IW_searchRow{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-interactive-bg-hover);border:.5px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:4px 8px;display:flex}.J259IW_searchIcon{width:13px;height:13px;color:var(--dsw-alias-label-tertiary);flex:none}.J259IW_searchInput{color:var(--dsw-alias-label-primary);background:0 0;border:none;outline:none;flex:1;font-size:12px}.J259IW_searchInput::placeholder{color:var(--dsw-alias-label-tertiary)}.J259IW_actionBar{justify-content:space-between;align-items:center;gap:4px;display:flex}.J259IW_toolBtnGroup{align-items:center;gap:4px;display:flex}.J259IW_toolBtn{border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:4px;padding:3px 8px;font-family:inherit;font-size:11px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.J259IW_toolBtn:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.J259IW_btnIcon{flex:none;width:12px;height:12px}.J259IW_newBranchBox{gap:6px;margin-top:2px;display:flex}.J259IW_newBranchInput{border-radius:var(--dsw-radius-sm);border:.5px solid var(--dsw-alias-state-business-primary);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);outline:none;flex:1;padding:4px 8px;font-size:12px}.J259IW_newBranchInput::placeholder{color:var(--dsw-alias-label-tertiary)}.J259IW_branchList{flex:1;padding:4px;overflow-y:auto}.J259IW_groupLabel{color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;padding:6px 8px 3px;font-size:11px;font-weight:500;display:flex}.J259IW_branchItem{border-radius:var(--dsw-radius-sm);width:100%;color:var(--dsw-alias-label-secondary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:5px 8px;font-size:12px;transition:background .12s,color .12s;display:flex}.J259IW_branchItem:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.J259IW_currentBranch{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-state-business-primary);font-weight:500}.J259IW_currentBranch:hover{background:var(--dsw-alias-interactive-bg-active)}.J259IW_branchItemLeft{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.J259IW_itemIcon{width:13px;height:13px;color:var(--dsw-alias-label-tertiary);flex:none}.J259IW_currentBranch .J259IW_itemIcon{color:var(--dsw-alias-state-business-primary)}.J259IW_itemText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.J259IW_checkMark{width:14px;height:14px;color:var(--dsw-alias-state-business-primary);flex:none}.J259IW_emptyTip{text-align:center;color:var(--dsw-alias-label-tertiary);padding:16px 8px;font-size:12px}";
2060
+ const css = ".J259IW_anchor{min-width:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));display:inline-flex;position:relative}.J259IW_pill{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l2,#cbd5e1);border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);max-width:100%;color:var(--dsw-alias-label-primary,#0f172a);font:inherit;font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;line-height:inherit;white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:2px 8px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.J259IW_pill:hover,.J259IW_pill[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);border-color:var(--dsw-alias-border-l1,#94a3b8);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_icon{width:14px;height:14px;color:var(--dsw-alias-state-business-primary,#2563eb);flex:none}.J259IW_branchName{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.J259IW_badge{border-radius:var(--dsw-radius-xs,3px);color:var(--dsw-alias-label-secondary,#475569);background:#0000000f;align-items:center;padding:0 4px;font-size:11px;font-weight:500;line-height:14px;display:inline-flex}.J259IW_badgeAhead{color:var(--dsw-alias-state-business-primary,#2563eb)}.J259IW_badgeBehind{color:var(--dsw-alias-state-warn-primary,#d97706)}.J259IW_popover{z-index:1100;box-sizing:border-box;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-layer-1,#fff));border:1px solid var(--dsw-alias-border-l1,#e2e8f0);border-radius:var(--dsw-radius-xl,14px);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1,#e2e8f0);width:320px;max-height:480px;color:var(--dsw-alias-label-primary,#0f172a);cursor:default;flex-direction:column;padding:10px;font-size:13px;line-height:18px;animation:.15s cubic-bezier(.16,1,.3,1) J259IW_popoverFadeIn;display:flex;position:fixed;overflow:hidden;box-shadow:0 10px 28px #00000014,0 2px 8px #0000000a}@keyframes J259IW_popoverFadeIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.J259IW_header{border-bottom:.5px solid var(--dsw-alias-border-l2,#e2e8f0);flex-direction:column;gap:8px;padding-bottom:8px;display:flex}.J259IW_searchRow{border-radius:var(--dsw-radius-md,8px);background:var(--dsw-alias-bg-base,#f8fafc);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);align-items:center;gap:6px;padding:6px 10px;display:flex}.J259IW_searchInput{color:var(--dsw-alias-label-primary,#0f172a);background:0 0;border:none;outline:none;flex:1;font-size:13px;line-height:18px}.J259IW_searchInput::placeholder{color:var(--dsw-alias-label-tertiary,#94a3b8)}.J259IW_actionBar{justify-content:space-between;align-items:center;gap:6px;display:flex}.J259IW_toolBtnGroup{align-items:center;gap:4px;display:flex}.J259IW_toolBtn{border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);color:var(--dsw-alias-label-secondary,#475569);cursor:pointer;border:none;justify-content:center;align-items:center;gap:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.J259IW_toolBtn:hover{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_toolBtnPrimary{border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);color:var(--dsw-alias-label-primary,#334155);cursor:pointer;border:none;align-items:center;gap:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.J259IW_toolBtnPrimary:hover{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_btnIcon{flex:none;width:12px;height:12px}.J259IW_newBranchBox{gap:6px;margin-top:2px;display:flex}.J259IW_newBranchInput{border-radius:var(--dsw-radius-sm,6px);border:1px solid var(--dsw-alias-state-business-primary,#2563eb);background:var(--dsw-alias-bg-base,#f8fafc);color:var(--dsw-alias-label-primary,#0f172a);outline:none;flex:1;padding:5px 10px;font-size:12px}.J259IW_newBranchInput::placeholder{color:var(--dsw-alias-label-tertiary,#94a3b8)}.J259IW_branchList{flex-direction:column;flex:1;gap:2px;padding:4px 0 0;display:flex;overflow-y:auto}.J259IW_groupLabel{color:var(--dsw-alias-label-tertiary,#94a3b8);align-items:center;gap:6px;padding:8px 8px 4px;font-size:12px;font-weight:400;display:flex}.J259IW_branchItem{box-sizing:border-box;border-radius:var(--dsw-radius-sm,8px);width:100%;color:var(--dsw-alias-label-secondary,#334155);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:7px 10px;font-size:13px;font-weight:400;transition:background .12s,color .12s;display:flex}.J259IW_branchItem:hover:not(.J259IW_currentBranch){background:var(--dsw-alias-bg-base,#f8fafc);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_currentBranch{background:var(--dsw-alias-state-business-muted,#eff6ff)!important;color:var(--dsw-alias-state-business-primary,#2563eb)!important;font-weight:600!important}.J259IW_currentBranch:hover{background:var(--dsw-alias-state-business-muted,#eff6ff)!important}.J259IW_branchItemLeft{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.J259IW_itemIcon{width:14px;height:14px;color:var(--dsw-alias-label-tertiary,#94a3b8);flex:none}.J259IW_currentBranch .J259IW_itemIcon{color:var(--dsw-alias-state-business-primary,#2563eb)}.J259IW_itemText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.J259IW_checkMark{width:15px;height:15px;color:var(--dsw-alias-state-business-primary,#2563eb);flex:none}.J259IW_emptyTip{text-align:center;color:var(--dsw-alias-label-tertiary,#94a3b8);padding:20px 8px;font-size:12px}";
2061
2061
  const tagId = "@civilization/dsh-git-workbench/GitBranchPill.module.css";
2062
2062
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
2063
2063
  const tag = document.createElement("style");
@@ -2090,15 +2090,15 @@ window.__ModuleLoader__.load({
2090
2090
  "pill": "J259IW_pill",
2091
2091
  "popover": "J259IW_popover",
2092
2092
  "popoverFadeIn": "J259IW_popoverFadeIn",
2093
- "searchIcon": "J259IW_searchIcon",
2094
2093
  "searchInput": "J259IW_searchInput",
2095
2094
  "searchRow": "J259IW_searchRow",
2096
2095
  "toolBtn": "J259IW_toolBtn",
2097
- "toolBtnGroup": "J259IW_toolBtnGroup"
2096
+ "toolBtnGroup": "J259IW_toolBtnGroup",
2097
+ "toolBtnPrimary": "J259IW_toolBtnPrimary"
2098
2098
  };
2099
2099
  // src/client/GitBranchPill.tsx
2100
2100
  /**
2101
- * Status bar Git branch pill and popover branch switcher (IDEA / VS Code style).
2101
+ * Status bar Git branch pill and popover branch switcher (Clean & Elegant UI).
2102
2102
  * Injected into the 'conversation.composer.dock' slot at order: -1.
2103
2103
  */
2104
2104
  const MenuSurface = react.default.forwardRef(({ children, className, style, ...rest }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -2123,45 +2123,22 @@ window.__ModuleLoader__.load({
2123
2123
  function IconCheckOutlineRegular({ className }) {
2124
2124
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
2125
2125
  className,
2126
- width: "14",
2127
- height: "14",
2126
+ width: "15",
2127
+ height: "15",
2128
2128
  viewBox: "0 0 16 16",
2129
2129
  fill: "none",
2130
2130
  stroke: "currentColor",
2131
- strokeWidth: "2",
2131
+ strokeWidth: "2.4",
2132
2132
  strokeLinecap: "round",
2133
2133
  strokeLinejoin: "round",
2134
2134
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "3 8 7 12 13 4" })
2135
2135
  });
2136
2136
  }
2137
- function IconPlusOutlineRegular({ className }) {
2138
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2139
- className,
2140
- width: "14",
2141
- height: "14",
2142
- viewBox: "0 0 16 16",
2143
- fill: "none",
2144
- stroke: "currentColor",
2145
- strokeWidth: "2",
2146
- strokeLinecap: "round",
2147
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2148
- x1: "8",
2149
- y1: "3",
2150
- x2: "8",
2151
- y2: "13"
2152
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2153
- x1: "3",
2154
- y1: "8",
2155
- x2: "13",
2156
- y2: "8"
2157
- })]
2158
- });
2159
- }
2160
2137
  function IconRefreshOutlineRegular({ className }) {
2161
2138
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2162
2139
  className,
2163
- width: "14",
2164
- height: "14",
2140
+ width: "13",
2141
+ height: "13",
2165
2142
  viewBox: "0 0 16 16",
2166
2143
  fill: "none",
2167
2144
  stroke: "currentColor",
@@ -2171,28 +2148,6 @@ window.__ModuleLoader__.load({
2171
2148
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M2.5 8a5.5 5.5 0 1 0 1.6-3.9L2 6" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M2 2v4h4" })]
2172
2149
  });
2173
2150
  }
2174
- function IconSearchOutlineRegular({ className }) {
2175
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2176
- className,
2177
- width: "14",
2178
- height: "14",
2179
- viewBox: "0 0 16 16",
2180
- fill: "none",
2181
- stroke: "currentColor",
2182
- strokeWidth: "1.8",
2183
- strokeLinecap: "round",
2184
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
2185
- cx: "7",
2186
- cy: "7",
2187
- r: "4.5"
2188
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2189
- x1: "10.5",
2190
- y1: "10.5",
2191
- x2: "14",
2192
- y2: "14"
2193
- })]
2194
- });
2195
- }
2196
2151
  /**
2197
2152
  * Git Branch Pill rendered in the Composer Dock.
2198
2153
  */
@@ -2232,8 +2187,8 @@ window.__ModuleLoader__.load({
2232
2187
  if (!anchorRef.current) return;
2233
2188
  const rect = anchorRef.current.getBoundingClientRect();
2234
2189
  setPopoverPos({
2235
- bottom: window.innerHeight - rect.top + 6,
2236
- left: Math.max(8, Math.min(rect.left, window.innerWidth - 330))
2190
+ bottom: window.innerHeight - rect.top + 8,
2191
+ left: Math.max(12, Math.min(rect.left, window.innerWidth - 340))
2237
2192
  });
2238
2193
  }, []);
2239
2194
  const handleToggle = (0, react.useCallback)((e) => {
@@ -2322,7 +2277,7 @@ window.__ModuleLoader__.load({
2322
2277
  return q ? branches.remote.filter((b) => b.name.toLowerCase().includes(q)) : branches.remote;
2323
2278
  }, [branches?.remote, filter]);
2324
2279
  if (status && !status.isRepo) return null;
2325
- const currentBranchName = status?.branch || "master";
2280
+ const currentBranchName = status?.branch || "main";
2326
2281
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2327
2282
  ref: anchorRef,
2328
2283
  className: GitBranchPill_module_css_default.anchor,
@@ -2359,9 +2314,9 @@ window.__ModuleLoader__.load({
2359
2314
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2360
2315
  className: GitBranchPill_module_css_default.header,
2361
2316
  children: [
2362
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2317
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2363
2318
  className: GitBranchPill_module_css_default.searchRow,
2364
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSearchOutlineRegular, { className: GitBranchPill_module_css_default.searchIcon }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2319
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2365
2320
  autoFocus: true,
2366
2321
  className: GitBranchPill_module_css_default.searchInput,
2367
2322
  placeholder: "搜索或过滤分支...",
@@ -2369,25 +2324,23 @@ window.__ModuleLoader__.load({
2369
2324
  onChange: (e) => {
2370
2325
  setFilter(e.target.value);
2371
2326
  }
2372
- })]
2327
+ })
2373
2328
  }),
2374
2329
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2375
2330
  className: GitBranchPill_module_css_default.actionBar,
2376
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2331
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2377
2332
  type: "button",
2378
- className: GitBranchPill_module_css_default.toolBtn,
2379
- title: "新建分支",
2333
+ className: GitBranchPill_module_css_default.toolBtnPrimary,
2380
2334
  onClick: () => {
2381
2335
  setCreatingBranch((prev) => !prev);
2382
2336
  },
2383
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconPlusOutlineRegular, { className: GitBranchPill_module_css_default.btnIcon }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "新建分支" })]
2337
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "+ 新建分支" })
2384
2338
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2385
2339
  className: GitBranchPill_module_css_default.toolBtnGroup,
2386
2340
  children: [
2387
2341
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2388
2342
  type: "button",
2389
2343
  className: GitBranchPill_module_css_default.toolBtn,
2390
- title: "拉取 (Pull)",
2391
2344
  onClick: () => {
2392
2345
  handlePull();
2393
2346
  },
@@ -2396,7 +2349,6 @@ window.__ModuleLoader__.load({
2396
2349
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2397
2350
  type: "button",
2398
2351
  className: GitBranchPill_module_css_default.toolBtn,
2399
- title: "推送 (Push)",
2400
2352
  onClick: () => {
2401
2353
  handlePush();
2402
2354
  },
@@ -2452,33 +2404,29 @@ window.__ModuleLoader__.load({
2452
2404
  className: GitBranchPill_module_css_default.itemText,
2453
2405
  children: b.name
2454
2406
  })]
2455
- }), b.isCurrent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineRegular, { className: GitBranchPill_module_css_default.checkMark }) : b.ahead !== void 0 && b.ahead > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2456
- className: GitBranchPill_module_css_default.badge,
2457
- children: ["↑", b.ahead]
2458
- })]
2407
+ }), b.isCurrent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineRegular, { className: GitBranchPill_module_css_default.checkMark })]
2459
2408
  }, b.name)),
2460
2409
  filteredRemote.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2461
2410
  className: GitBranchPill_module_css_default.groupLabel,
2462
- style: { marginTop: "6px" },
2463
2411
  children: [
2464
2412
  "远程分支 (",
2465
2413
  filteredRemote.length,
2466
2414
  ")"
2467
2415
  ]
2468
- }), filteredRemote.map((b) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2416
+ }), filteredRemote.map((b) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2469
2417
  type: "button",
2470
- className: GitBranchPill_module_css_default.branchItem,
2418
+ className: `${GitBranchPill_module_css_default.branchItem} ${b.isCurrent ? GitBranchPill_module_css_default.currentBranch : ""}`,
2471
2419
  disabled: switching,
2472
2420
  onClick: () => {
2473
- handleCheckout(b.name);
2421
+ if (!b.isCurrent) handleCheckout(b.name);
2474
2422
  },
2475
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2423
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2476
2424
  className: GitBranchPill_module_css_default.branchItemLeft,
2477
2425
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconBranchOutlineRegular, { className: GitBranchPill_module_css_default.itemIcon }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2478
2426
  className: GitBranchPill_module_css_default.itemText,
2479
2427
  children: b.name
2480
2428
  })]
2481
- })
2429
+ }), b.isCurrent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineRegular, { className: GitBranchPill_module_css_default.checkMark })]
2482
2430
  }, b.name))] }),
2483
2431
  filteredLocal.length === 0 && filteredRemote.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2484
2432
  className: GitBranchPill_module_css_default.emptyTip,
@@ -2519,14 +2467,14 @@ window.__ModuleLoader__.load({
2519
2467
  const NS = "gitView";
2520
2468
  const zh = {
2521
2469
  "type.label": "Git",
2522
- "guide.title": "Git 版本控制",
2523
- "guide.description": "查看项目代码变更、分支、提交历史与差异对比",
2470
+ "guide.title": "Git 源代码管理",
2471
+ "guide.description": "查看项目代码变更、分支、提交历史与代码对比",
2524
2472
  "shortcut.noSession": "没有激活的会话",
2525
2473
  "tabs.changes": "更改",
2526
2474
  "tabs.history": "提交历史",
2527
- "tabs.tree": "提交图谱树",
2528
- "tabs.branches": "分支管理",
2529
- "tabs.tags": "标签管理",
2475
+ "tabs.tree": "提交图谱",
2476
+ "tabs.branches": "分支",
2477
+ "tabs.tags": "标签",
2530
2478
  "actions.refresh": "刷新状态",
2531
2479
  "actions.viewDiff": "查看差异",
2532
2480
  "actions.closeDiff": "收起差异",
@@ -2540,68 +2488,68 @@ window.__ModuleLoader__.load({
2540
2488
  "actions.checkout": "检出分支",
2541
2489
  "actions.newBranch": "新建分支",
2542
2490
  "actions.fetch": "获取远程",
2543
- "actions.pull": "拉取",
2544
- "actions.push": "推送",
2545
- "commit.placeholder": "输入提交信息 (Ctrl+Enter 提交)...",
2491
+ "actions.pull": "拉取 (Pull)",
2492
+ "actions.push": "推送 (Push)",
2493
+ "commit.placeholder": "提交说明信息 (Ctrl+Enter 提交)...",
2546
2494
  "commit.emptyWarning": "请输入提交说明",
2547
2495
  "commit.success": "提交成功",
2548
- "branch.filter": "搜索过滤分支...",
2496
+ "branch.filter": "搜索或过滤分支...",
2549
2497
  "branch.local": "本地分支",
2550
2498
  "branch.remote": "远程分支",
2551
2499
  "branch.current": "当前分支",
2552
- "branch.newPrompt": "输入新分支名称...",
2500
+ "branch.newPrompt": "新分支名称 (按 Enter 创建)...",
2553
2501
  "branch.createAndCheckout": "创建并检出",
2554
2502
  "tree.author": "作者",
2555
2503
  "tree.date": "时间",
2556
2504
  "tree.hash": "哈希",
2557
2505
  "tree.changedFiles": "变更文件",
2558
- "tree.selectCommit": "点击任意提交查看详情与代码差异",
2559
- "status.clean": "工作树干净,无任何未提交更改",
2506
+ "tree.selectCommit": "选择一次提交以查看详情与代码差异",
2507
+ "status.clean": "工作区干净,无未提交的更改",
2560
2508
  "status.notRepo": "当前工作区不是 Git 仓库",
2561
- "status.staged": "已暂存更改",
2562
- "status.unstaged": "工作区修改",
2509
+ "status.staged": "暂存的更改",
2510
+ "status.unstaged": "更改",
2563
2511
  "status.untracked": "未跟踪文件",
2564
2512
  "status.ahead": "领先 {count} 个提交",
2565
2513
  "status.behind": "落后 {count} 个提交",
2566
2514
  "diff.additions": "+{count}",
2567
2515
  "diff.deletions": "-{count}",
2568
2516
  "diff.empty": "无内容变动",
2569
- "tag.filter": "搜索过滤标签 (名称、Hash、提交说明)...",
2517
+ "tag.filter": "过滤标签 (名称、Hash或提交说明)...",
2570
2518
  "tag.newPrompt": "新建标签 (Tag)",
2571
2519
  "tag.nameLabel": "标签名称",
2572
- "tag.namePlaceholder": "输入标签名称 (例如 v1.0.0)...",
2573
- "tag.targetCommitLabel": "目标 Commit Hash (可选,留空为 HEAD)",
2574
- "tag.messageLabel": "说明信息 (可选附注内容)",
2575
- "tag.messagePrompt": "输入附注说明信息 (可选)...",
2520
+ "tag.namePlaceholder": "输入标签名称 (如 v1.0.0)...",
2521
+ "tag.targetCommitLabel": "目标 Commit Hash (可选,默认 HEAD)",
2522
+ "tag.messageLabel": "附注说明信息 (可选)",
2523
+ "tag.messagePrompt": "请输入附注说明信息 (可选)...",
2576
2524
  "tag.createBtn": "创建标签",
2577
2525
  "tag.cancelBtn": "取消",
2578
2526
  "tag.locateBtn": "在图谱中定位",
2579
2527
  "tag.copyName": "复制标签名",
2580
2528
  "tag.deleteBtn": "删除",
2581
2529
  "tag.deleteConfirm": "确定要删除标签 \"{name}\" 吗?",
2582
- "tag.empty": "暂无任何 Git 标签",
2583
- "tag.annotated": "附注",
2584
- "tag.locatedNotice": "已定位到标签 \"{name}\" 所在的提交",
2530
+ "tag.empty": "未找到任何 Git 标签",
2531
+ "tag.annotated": "含附注",
2532
+ "tag.locatedNotice": "已定位到标签 \"{name}\" 所在提交",
2585
2533
  "actions.locate": "定位",
2586
2534
  "tree.colGraph": "图谱",
2587
- "tree.colSubject": "提交说明与分支标记",
2535
+ "tree.colSubject": "提交说明与分支引用",
2588
2536
  "tree.colAuthor": "作者",
2589
2537
  "tree.colTime": "时间",
2590
2538
  "tree.colSha": "Commit SHA",
2591
2539
  "tree.searchPlaceholder": "搜索提交说明、SHA 或作者...",
2592
- "tree.filterAll": "全部",
2593
- "tree.filterMainline": "仅主线",
2540
+ "tree.filterAll": "全部提交",
2541
+ "tree.filterMainline": "主线分支",
2594
2542
  "detail.title": "提交详情 (COMMIT DETAILS)",
2595
- "detail.references": "包含引用 (REFERENCES)",
2596
- "detail.author": "作者 (Author)",
2543
+ "detail.references": "分支引用 (REFERENCES)",
2544
+ "detail.author": "提交作者 (Author)",
2597
2545
  "detail.date": "提交时间 (Date)",
2598
2546
  "detail.parent": "父级提交 (Parent)",
2599
2547
  "detail.checkout": "检出分支 (Checkout)",
2600
- "detail.createBranchOrTag": "创建分支 / 标签",
2601
- "footer.showingCount": "已显示 {count} 条提交 (共 {total} 条)",
2548
+ "detail.createBranchOrTag": "从此检出分支 / 标签",
2549
+ "footer.showingCount": "显示 {count} 条提交 (共 {total} 条)",
2602
2550
  "footer.loadMore": "加载更多",
2603
- "footer.syncNormal": "分支同步正常",
2604
- "footer.ahead": "本地领先 {count} 个提交",
2551
+ "footer.syncNormal": "分支已与远程同步",
2552
+ "footer.ahead": "领先远程 {count} 个提交",
2605
2553
  "footer.behind": "落后远程 {count} 个提交"
2606
2554
  };
2607
2555
  const en = {