dsh-vscode-mode 0.15.5 → 0.15.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-vscode-mode",
3
- "version": "0.15.5",
3
+ "version": "0.15.6",
4
4
  "description": "DSH 上的类 VSCode 编码体验:Monaco 编辑器(文件页签/QuickOpen/状态栏,可驻 DSH 0.1.5+ 官方右侧 Sidebar 与对话同屏)+ 命令栏(Ctrl+Shift+P)与可扩展指令系统 + VS Code 兼容代码片段(.code-snippets 全局/项目,IntelliSense 展开)+ Agent 编辑差异审查(整文件差异/采纳/拒绝/归档/回滚)+ SVN 集成(侧栏变更面板/日志弹窗/并排差异)+ 语言服务器(LSP)智能(跳转定义/引用/hover/大纲 + VSIX 扩展市场安装),状态持久化到工作区旁车,界面状态(页签/光标/侧栏/编辑 Tab/导航历史)镜像到 DSH home 跨重启恢复",
5
5
  "icon": "assets/icon.svg",
6
6
  "keywords": [
@@ -418,6 +418,10 @@ export function FileExplorer(props) {
418
418
  }))
419
419
  : []
420
420
 
421
+ /** @private @author ddj 2026年10月15号 Open the existing update window for the current project root. */
422
+ function updateProject() { ctx?.openSvnUpdate?.('') }
423
+ const updateHint = !ctx?.svn?.svnCli ? 'SVN CLI 不可用' : !ctx?.openSvnUpdate ? 'SVN 更新窗口不可用' : '更新项目(打开 SVN 更新窗口)'
424
+
421
425
  const errorList = Object.entries(errors)
422
426
  const errorText = errorList.length ? errorList[0][1] : null
423
427
 
@@ -427,10 +431,10 @@ export function FileExplorer(props) {
427
431
  React.createElement('span', { className: 'edrv-side-root', title: root || '' }, rootName),
428
432
  React.createElement('span', { style: { flex: 1 } }),
429
433
  ctx?.svn?.managed ? React.createElement(Button, {
430
- variant: 'toolbar', size: 'sm', disabled: !svn.canCheck || svn.busy,
431
- title: '检查仓库更新(只读;不会执行 svn update)', onClick: svn.checkRemote,
432
- 'aria-label': '检查仓库更新',
433
- }, svn.busy ? '…' : '↓') : null,
434
+ variant: 'toolbar', size: 'sm', disabled: !ctx.svn.svnCli || !ctx.openSvnUpdate,
435
+ title: updateHint, onClick: updateProject,
436
+ 'aria-label': '更新项目',
437
+ }, '↓') : null,
434
438
  React.createElement('button', { className: 'edrv-side-btn', title: '刷新目录树', onClick: () => emitRefresh({ scope, kind: 'unknown' }) }, refreshIconEl())),
435
439
  svn.message ? React.createElement('div', { className: 'edrv-tree-status', role: 'status' }, svn.message) : null,
436
440
  React.createElement('div', { className: 'edrv-tree', ref: treeRef },
@@ -975,6 +975,9 @@ export function SvnPanel(props) {
975
975
  revert: onRevert,
976
976
  }),
977
977
  })
978
+ /** @private @author ddj 2026年10月15号 Open the shared update window independently of selection and local changes. */
979
+ function updateProject() { ctxRef.current?.openSvnUpdate?.('') }
980
+ const updateHint = !managed ? 'SVN CLI 或工作副本不可用' : !ctx?.openSvnUpdate ? 'SVN 更新窗口不可用' : '更新项目(打开 SVN 更新窗口)'
978
981
  const rootName = ctx?.svn?.wcRoot ? String(ctx.svn.wcRoot).split(/[\\/]/).pop() || ctx.svn.wcRoot : ''
979
982
 
980
983
  // W2-3:远端更新提示条(null = 未检查;failed = 降级文案;否则展示落后数与 against 修订)
@@ -1032,8 +1035,12 @@ export function SvnPanel(props) {
1032
1035
  React.createElement('span', { className: 'edrv-side-title' }, 'SVN 变更'),
1033
1036
  React.createElement('span', { className: 'edrv-side-root', title: ctx?.svn?.wcRoot || '' }, rootName),
1034
1037
  React.createElement('span', { style: { flex: 1 } }),
1035
- // 图标组(设计定稿:AI 功能迁至独立 dock,头部只留导航/刷新)
1038
+ // 项目更新、只读检查和本地刷新保持独立入口。
1036
1039
  React.createElement('span', { className: 'edrv-svn-head-icons' },
1040
+ React.createElement('button', {
1041
+ className: 'edrv-side-btn', title: updateHint, 'aria-label': '更新项目',
1042
+ disabled: !managed || !ctx?.openSvnUpdate, onClick: updateProject,
1043
+ }, '↓'),
1037
1044
  React.createElement('button', {
1038
1045
  className: 'edrv-side-btn', title: '检查远端更新(svn status -u;约数秒,离线自动降级)',
1039
1046
  onClick: checkRemote,
@@ -136,6 +136,6 @@ export function useExplorerSvn(ctx: SidebarCtx | undefined, rows: readonly SvnVi
136
136
  /** @public @author ddj 2026年10月10号 Request an explicit offline full scan. */
137
137
  function refreshLocal() { owner.current?.refresh() }
138
138
  return { ...remote, local: snapshot?.view.marks ?? null, remote: snapshot ? remote.remote : null,
139
- message: localMessage(snapshot?.view) + (remote.message ? ';' + remote.message : ''), canCheck: ready && snapshot !== null, refreshLocal }
139
+ message: ready ? localMessage(snapshot?.view) + (remote.message ? ';' + remote.message : '') : '', canCheck: ready && snapshot !== null, refreshLocal }
140
140
  }
141
141
  // --endregion