Skip to content

Releases

v1.1.3

Choose a tag to compare

@shinchen6 shinchen6 released this 15 Oct 04:03

补丁:v1.1.2 引入的回归

v1.1.2 把未跟踪文件并入「更改」组时,折叠目录的 key 只改了一边。

折叠一个目录要两个地方对齐:view 负责把 key 写进去,tree 负责读回来决定跳过整棵子树。未跟踪目录原来挂在自己的 untracked 分组下,合并后那个分组没了,只改了写入方。key 对不上,于是每一个未跟踪目录都默认展开,面板把 Host 明确没发过来的文件全列了出来。

这比排版问题严重:状态扫描之所以不进入未跟踪目录,正是为了只让打开它的人付出代价;全部默认展开等于一次性全要。标题计数也因此和下面的列表对不上——170 对 2521 行,而工作区里只有 7 个这样的目录。

key 现在由 dirKey 统一生成,两边都调它。检查也不再断言 dirKey 自己的返回值——它从来没错过,错的是不再调用它的那个调用点;新的检查直接读这两个文件,任何手写的 key 都算失败,这是两者唯一能再次走散的方式。

v1.1.2

Choose a tag to compare

@shinchen6 shinchen6 released this 15 Oct 03:40

三处改动

未跟踪文件并入「更改」组。 VSCode 的 git.untrackedChanges 默认是 mixed,未跟踪文件就在「更改」里,靠行首的 ? 区分;独立的「未跟踪」分组只在 separate 设置下存在。之前做成了非默认的形状。

分组决定不了「放弃」这一行该执行什么命令——git checkout 丢弃改动,git clean 删除文件——所以 ? 现在自己携带 side。一个文件夹里两种都有时,⊘ 按钮藏起来而不是猜。

提交框右上角的箭头改用绘制。 原来那个字符 U+2303 在这个字体里被画成 7x17 像素的细线,比例失调、笔画偏在行盒上半部,看起来像个尖角而不是箭头。现在是两条边旋转45°,和 VSCode 的 codicon 同一个画法。

styles.js 的模板字符串里出现反引号会让构建失败。 包括写在注释里的那个,看起来完全无害。已有检查会指出行号。

另有一处:推送和提交现在会报出「正在推送…」和「已推送到 …」,结果六秒后自行消失;项目行的三个计数改用与分组一致的词(未跟踪之前误写成「已暂存」)。

v1.1.1

Choose a tag to compare

@shinchen6 shinchen6 released this 14 Oct 09:51

推送现在会说话

推送是唯一一个完全没有反馈的动作。按钮变灰,网络来回结束后一切恢复原样——而一次什么都没发布的推送不会留下任何痕迹,所以「推送成功」和「按钮没反应」看起来一模一样。实测在这台机器上,一个没有新提交的分支推送也要约九秒,也就是九秒的「面板卡死了」。

按钮旁边那行现在同时承担两个状态:超过 400ms 才出现(暂存一个文件只要几毫秒,一帧内出现又消失的行是闪烁,不是信息),六秒后自行清除(免得它被误读成之后某个动作的结果)。提交、拉取、同步也一并报结果。

项目行的分组名说反了

projects.unstagedCount 显示的是「已暂存」,数的却是未暂存的改动——行和它下面那个分组在说同一批文件时互相矛盾:一个有七个未暂存改动的仓库被写成「已暂存」。三个计数现在统一用分组自己的词,并且加了一条文案检查:任何一个计数再冒用别的分组的词就会失败。

验证

  • 十个测试文件全绿,esbuild 0 警告
  • 六条新检查覆盖时序:结果出现、拒绝时不谎报成功、新动作清掉旧结果、快动作不显示「正在执行」、慢动作显示、结果自行过期
  • 浏览器实测:正在推送到 origin/main… (422ms) → 已推送到 origin/main (9871ms),0 异常 0 控制台错误

两个已发布版本之间只有这些改动。

v1.1.0

Choose a tag to compare

@shinchen6 shinchen6 released this 14 Oct 07:53

Every project in the workspace, each committed on its own

The panel used to read one repository. A session whose working directory is a
monorepo checkout saw one of them, and the rest were invisible however much was
pending in each.

It now finds the repositories around the working directory — the one the session
sits in, plus those directly below it, skipping node_modules, which is how
editors scan — and offers each as a project with its own branch, markers and
commit. Nothing is committed across repositories.

Projects with nothing pending fold into a single row, and the repository the
session is sitting in is named by its whole path while nested projects are named
by their folder.

What made that usable

  • Listing a project costs no git. The list is a filesystem walk; asking git
    about each project was the expensive half, and it used to be in front of the
    first paint.
  • Markers arrive after the tree draws, because on a wide workspace they
    compete with it and the tree is what you are looking at.
  • The workspace is walked once, when the panel opens and when a refresh asks
    for it — never on a poll. It costs 2.6 s here, almost all sandbox ACL checks.
  • Answers are remembered for twenty seconds, and dropped the moment anything
    is staged.
  • A failed scan no longer looks like an empty workspace, and two scans at
    once can no longer overwrite each other.
  • A nested repository is a project, not a folder in its parent's file list:
    git will not describe what is inside it to the parent, so opening one showed
    nothing.

Known limitation

A change made outside the panel — in a terminal, say — keeps its marker for up to
twenty seconds, or until you refresh. There is no file watcher.

v1.0.3

Choose a tag to compare

@shinchen6 shinchen6 released this 12 Oct 09:17

Documents the prebuilt install path.

The READMEs only showed dsh plugin add shinchen6/dsh-git-view, which builds
from source. The registry entry points at this release's tarball instead, so
that is the command a reader arriving through the market is actually offered.
Both READMEs now show the tarball and the source route.

No behaviour change. The asset carries the same code as v1.0.2 plus the
updated READMEs.

v1.0.2

Choose a tag to compare

@shinchen6 shinchen6 released this 12 Oct 08:31

Fixes the panel never appearing.

1.0.1 shipped a client.js that registered under @local/dsh-git-view while the
manifest named the package @shin/dsh-git-view. The host keys each client graph
row by the manifest name, so no row claimed the factory: the plugin loaded and
the Git tab stayed missing. scripts/wrap.mjs now reads the name from
package.json instead of hardcoding it.

est/ids.test.mjs asserts the manifest name, the id inside the built

client.js and the name in cordis.patch.yml all agree.

If you installed 1.0.1, reinstall: the tarball it pointed at could not show a
panel at all.

v1.0.1

Choose a tag to compare

@shinchen6 shinchen6 released this 12 Oct 07:50

Fixes a startup refusal on dsh 0.2.0-rc.2.

The peer range for @deepseek-ai/dsh-client-ui-primitives ended below

v1.0.0

Choose a tag to compare

@shinchen6 shinchen6 released this 09 Oct 03:44

Git View 1.0.0.

Prebuilt bundle for dsh. This tarball is what the dsh plugin market installs
instead of building from source, so it skips the build-approval step.

It is byte-for-byte the same content as tag v1.0.0, produced by
pm pack
from that checkout: index.js, client.js, cordis.patch.yml, icon.svg, locale/,
the two READMEs, the license and screenshots.json. Nothing else ships.

The asset name deliberately carries no version.
eleases/latest/download/
resolves latest at request time but takes the filename literally, so a
versioned asset name would work today and 404 the moment the next release is
cut. On a new release, delete this asset and upload the new tarball under the
same name.