deepseek-harness/apps/web
creatixchu d6231007af cleanup(web): give adding a Workspace one route
Both Workspace surfaces offered "Open local folder…" and "Create a new
workspace" for one outcome. The browse occupant already carries its own
New folder affordance, so picking a directory covered creating one; the
name dialog only added a second vocabulary and a create target the
operator could neither see nor choose.

The surviving entry is named after the outcome — "Add workspace…" — and a
menu now appears only where there is something to choose between: with no
Workspace listed (the add-only sidebar header, or an empty hero list) the
anchor gesture raises the directory flow directly instead of a one-row
popover. An empty list counts as final only after the list baseline lands,
and a composition with no directory-flow occupant hides the sidebar button
rather than offering a dead one.

WorkspaceCreateFlow becomes WorkspacePickFlow (createOnly -> addOnly) and
the injected createWorkspace narrows to { path }. The host's
workspace.create({ name }) branch and `dsh web --workspace-root` lost their
last product consumer; both are marked at the call site for a follow-up.
2026-07-31 15:47:40 +08:00
..
public feat(web): add favicon and update IconActions behavior 2026-07-30 19:59:16 +08:00
src Merge remote-tracking branch 'origin/master' into codex/trim-redundant-comments 2026-07-25 13:06:40 +08:00
tests cleanup(web): give adding a Workspace one route 2026-07-31 15:47:40 +08:00
index.html feat(web): add favicon and update IconActions behavior 2026-07-30 19:59:16 +08:00
package.json refactor(web): collapse the shell boot into the AppWebEntry class 2026-07-25 10:23:40 +08:00
tsconfig.json Merge remote-tracking branch 'origin/master' into worktree/composer-scroll-sync 2026-07-31 13:22:52 +08:00
vite.config.ts refactor(web): collapse the shell boot into the AppWebEntry class 2026-07-25 10:23:40 +08:00