Skip to content

Releases: wilsonchengassistant/dsh-quick-workspace

Release list

v1.0.1

Choose a tag to compare

@wilsonchengassistant wilsonchengassistant released this 21 Oct 12:12

What changed

The zh dictionary was written in Traditional Chinese, but DSH ships zh as the
Simplified locale — the separate dsh-zh-hant pack is what converts a bundle's
zh table to Traditional, with OpenCC.

So 1.0.0 gave Simplified users Traditional text (區 / 稱 / 會 / 將 / 敗 / 資料夾), and
the zh-Hant conversion was a no-op on this namespace instead of the reverse of the
table.

1.0.1 rewrites the 12 zh values in Simplified:

key 1.0.0 (wrong) 1.0.1
dialog.title 新增工作區 新增工作区
field.label 工作區名稱 工作区名称
field.hint 只支援單一資料夾名稱 只支持单一资料夹名称
target 將建立於 {path} 将建立于 {path}
close 關閉 关闭
failed 建立失敗 建立失败
error.blank 請輸入工作區名稱。 请输入工作区名称。

The dsh-zh-hant pack now regenerates exactly the previous Traditional strings from
them — verified as an exact OpenCC cn → tw round trip.

English is unchanged. Both dictionaries still carry the same 12 keys.

v1.0.0

Choose a tag to compare

@wilsonchengassistant wilsonchengassistant released this 19 Oct 09:30

Why

Clicking Add workspace in the DeepSeek Harness web UI did nothing when you were driving it from anywhere other than the host machine.

dsh-host-directory-picker-auto resolves the native backend whenever the bind host is 127.0.0.1 on macOS, on the assumption that the operator is sitting at that screen. The native backend is a renderless osascript "choose folder with prompt …" call, so it puts a Finder dialog on the host screen and renders nothing in the browser.

It got worse than dead: while that hidden dialog was open, WorkspacePickFlow held directoryBusy, and createWorkspaceShortcutControls().add() is a no-op whenever that flag is set — so every click after the first was silently discarded, with no error and nothing on screen.

What this does

Occupies both directory-flow holes — the sidebar header button and the composer's Choose workspace — with a name prompt:

  1. type a name,
  2. the dialog shows the exact path it is about to create,
  3. DSH makes the folder, registers it as a workspace, and opens it.

New folders land beside the deployment's default workspace, so a workspace at
~/Documents/deepseek-harness/default-workspace gets siblings in ~/Documents/deepseek-harness/.

It registers at priority: -100, the documented way to shadow a single-kind slot occupant: the slot registry sorts entries by ascending priority and the lowest renders, so this takes the seat instead of throwing at the native picker.

Install

dsh plugin --profile web add dsh-quick-workspace

Restart dsh web afterwards — the host half is lib/index.js, which only re-imports on restart. The client half hot-reloads on its own.

Verified

End-to-end on an isolated DSH profile: the folder really appears, the registry gains a row, and the sidebar gains the new workspace. Path-traversal names (../escape, blank, names containing /) are rejected host-side before anything touches the filesystem.