Commit Graph
5164 Commits
Author SHA1 Message Date
ZiyaZhang 7d88fc9b2b refactor(web): limit plugin UX changes to add and create flows 2026-09-28 06:22:01 -07:00
ZiyaZhang 6200ffe8c7 fix(web): allow one-task Creator entry with Coding Tools off 2026-09-28 06:11:53 -07:00
Tianyi Cui 5f782ebf12 Merge pull request #5291 from deepseek-harness/fix/document-preview-selection-20260927
test(web): move the spreadsheet selection by keyboard before sidebar reflows
2026-09-28 17:52:39 +08:00
yudshj df82661082 docs(desktop): explain fullscreen IPC platform guard 2026-09-28 16:55:49 +08:00
yudshj 3adf561295 fix(client): unify overlay clearance and preserve the Windows caption 2026-09-28 16:55:49 +08:00
yudshj 1aea67a755 fix(windows): preserve caption gaps across dialogs and fullscreen 2026-09-28 16:55:48 +08:00
Yifffan e5587c7ff5 Merge pull request #5354 from deepseek-harness/ux/plugin-manager-followup
fix(web): 暗色下关闭态开关不再像禁用,并微调插件管理说明图标
2026-09-28 15:58:21 +08:00
Yif 9e8db21d2f fix(web): distinguish an off switch from a disabled one in dark mode
The off-state thumb reused the palette's primary foreground, which resolves
to near-black in dark mode; against the translucent track it read as
disabled, while a disabled control differs only by half opacity. Give the
off state its own thumb color through the new `--dsw-alias-switch-thumb`
alias: white in light mode and neutral-bluish 400 in dark mode.

The plugin management info button also becomes an 11px caption-colored icon
in a 20px square, keeping the 4px gap beside the subtitle.

Refs #5347
2026-09-28 15:46:43 +08:00
lsdsjy c6aefab797 fix(web): 同步反馈菜单端到端快照与桌面说明 2026-09-28 14:59:30 +08:00
lsdsjy 3ae5c883eb feat(web): 反馈问卷预填账号、版本与桌面设备信息 2026-09-28 14:59:30 +08:00
Yichen Jiang 647a787a99 Merge pull request #5323 from deepseek-harness/worktree/macos-microphone-entitlements
fix(desktop): grant microphone access in signed macOS builds
2026-09-28 14:31:53 +08:00
gengruilin 326b9093c1 Merge origin/master into fix/issue-4803-webkit-json 2026-09-28 13:53:54 +08:00
Yichen Jiang db827cbf70 Merge remote-tracking branch 'origin/master' into worktree/macos-microphone-entitlements 2026-09-28 13:32:17 +08:00
turtle1999 c6e4c77a12 fix(release): pin Koffi to the validated native dependency 2026-09-28 12:37:33 +08:00
Yichen Jiang 728d56156c fix(desktop): narrow microphone permission fix 2026-09-28 12:37:30 +08:00
Yichen Jiang 846afdfaa6 fix(desktop): grant microphone access in signed macOS builds 2026-09-28 12:27:20 +08:00
gengruilin 9925ba721d refactor(web): trim unrelated changes from Safari recovery fix 2026-09-28 12:00:35 +08:00
gengruilin aee3c39ee7 fix(deps): pin Koffi to the tested release
Packed consumers resolved ^3.1.0 to 3.3.2, whose source build fails under the Linux release check. Pin every consumer to the existing lockfile version 3.1.1 so published installs use the tested dependency.
2026-09-28 11:16:17 +08:00
yudshj 37ffaa52ca fix(client): make Office and PDF text selections visible in both themes 2026-09-28 11:05:13 +08:00
Ziya 4bbfa0884f Merge pull request #5284 from deepseek-harness/ux/plugin-manager-guidance-preview
fix(web): 完善插件管理说明与安装警告
2026-09-28 10:42:00 +08:00
Ruilin Geng 90cc7ce652 Merge branch 'master' into fix/issue-4803-webkit-json 2026-09-28 10:30:31 +08:00
Tianyi Cui d7b5b42231 test(web): assert the overlay focus and record the measured probe counts
Addresses ds-review-bot: the keyboard step now asserts that focus landed on
the sheet overlay before pressing arrows, the comment keeps only the local
why, and the Agent Note carries the measured counts (10 of 11 master runs,
7 of 38 probe runs, 26 of 26 keyboard runs, 10 of 10 local repetitions).
2026-09-28 01:12:46 +08:00
Tianyi Cui 979b77a6bc test(web): move the spreadsheet selection by keyboard before sidebar reflows
The meeting-sheet step of document-preview.e2e.ts clicked the sheet overlay
at the cell FortuneSheet already selects on mount, so its polls passed before
the click committed, and the press resolved its cell inside a React state
updater that later renders re-execute against the reflowed grid. On loaded
Linux runners that re-execution landed after the first sidebar resize and
committed B1 (the two-column sheet clamps the stale pointer x to its last
column), failing the reflow loop with `expected 'B1' to be 'A1'`.

Select A1 through ArrowRight/ArrowLeft instead: keyboard moves compute the
target from committed state, so a re-executed updater yields the same cell,
and the B1 -> A1 transition verifies the interaction before the reflows.

Refs #5242
2026-09-28 00:54:54 +08:00
ZiyaZhang adb58a76d1 fix(web): align plugin guidance with review feedback 2026-09-27 09:31:07 -07:00
ZiyaZhang 473fd15101 fix(web): clarify plugin management guidance and warnings 2026-09-27 07:18:09 -07:00
Tianyi Cui 0490c30f30 Merge pull request #5271 from deepseek-harness/fix/web-lane-flakes-20260927
test(web): name the input state each browser-lane capture asserts
2026-09-27 20:44:21 +08:00
Tianyi Cui 62ac57218d test(web): correct the states the new comments and note name
Review found two factual errors in the prose this change adds.

plugin-install-cancel: the scenario pauses the page clock before the
enable click, so the highlight's `setTimeout(clearHighlight, 2400)`
cannot fire while the status poll runs. The comment claimed a reload
could outlive that expiry, and the note explained the two CI timeouts
at the untouched highlight locator the same way. The cause of those
timeouts is not diagnosed, so both now say so instead of offering a
mechanism the paused clock rules out. The pre-change file reproduces the
same hang under the same lane command, which the note records.

workspace-new-session-folding: `nth(7)` is the first row the batch
reveals, not the last established one, and the reflowing `showMore.click()`
is above the comment, not below. Both are corrected, and the workspace-row
comment names what `:hover` reveals instead of restating a cell swap the
project row does not have.

turn-tail-actions: clear the pointer modality flag with `Shift`, which
moves no focus, matching focus-rings.e2e.ts.
2026-09-27 20:13:00 +08:00
Tianyi Cui 5e09b8231d Merge pull request #5239 from deepseek-harness/worktree/web-clock-flake-20260926
test(web): pin conversation clocks to the fixture day and await saved settings
2026-09-27 19:15:50 +08:00
Tianyi Cui 751724c88e test(web): drop the obsolete settled-title wait from the steering scenario
Master's 07dcdb46e5 moved the question step's settled title into the
`Ask question waiting` row of mid-steer.expected.md, so the button this
scenario waited for no longer renders. The wait therefore never resolved and
parked the scenario on the question page, producing the lane's cascade: `no
turn/end within 30000ms`, no live root session matching session.v4.jsonl, and
`llm-replay: fixture not fully consumed`. `captureStableAria` already polls
until two consecutive normalized captures agree, so the settled state is
captured without the extra wait.

DSH_SNAPSHOT=replay pnpm exec vitest run --config vitest.web.config.ts
apps/web/tests/steering.e2e.ts -> 7 passed (reproduced twice); with the wait
present the same command fails at its 10 s bound and again widened to 30 s.
2026-09-27 19:06:39 +08:00
Tianyi Cui 378853c096 test(web): name the input state each browser-lane capture asserts
Three scenarios captured an aria region while the state their golden
records was implied by the pointer, the keyboard, or an in-flight Host
read, so the capture could land on the other state.

workspace-new-session-folding captures two goldens of one sidebar, each
recording a hovered row that Rows.module.css renders with the row
actions in place of the relative time. Both hovered rows are now
established before their capture instead of inherited from wherever the
Show-more click left a stationary pointer. The serial self-hosted master
lane failed this scenario in every failing run observed between
2026-09-24 and 2026-09-27.

turn-tail-actions records a tooltip beside the focused Copy footer in
running.expected.md. Tooltip ignores focus while the last input came
from a pointer and only a keydown clears that flag, so the scenario now
establishes keyboard-owned focus and waits for the bubble.

plugin-install-cancel polls the enabled card's status instead of
sampling it once. The store marks the card and starts the directory
reload the Host answers, and the status flipped disabled -> running 61 ms
after the highlight in three local runs, which the single read sampled
inside.

Goldens, product code, and assertion strength are unchanged.
2026-09-27 18:57:12 +08:00
imccyu 78a21f29a9 Merge pull request #5226 from deepseek-harness/worktree-newwhale
feat(ui-chat): animate a whale tail below the transcript while the Session runs
2026-09-27 17:19:32 +08:00
Tianyi Cui 55bcb56684 Merge branch 'master' into worktree/web-clock-flake-20260926 2026-09-27 16:19:16 +08:00
Tianyi Cui 3117268c04 Merge pull request #5243 from deepseek-harness/fix/document-preview-selection-poll
test(web): poll the spreadsheet selection after each sidebar resize
2026-09-27 16:18:23 +08:00
Tianyi Cui ef2c281e6e Merge branch 'master' into worktree/web-clock-flake-20260926 2026-09-27 15:37:37 +08:00
imccyu e9e03abf95 fix(ui-chat): refine running status motion and shimmer 2026-09-27 15:16:20 +08:00
imccyu e44917fc52 test(web): refresh remaining running status snapshots 2026-09-27 15:10:08 +08:00
imccyu 03531c5836 test(web): align running status snapshots 2026-09-27 15:10:08 +08:00
imccyu fa3d555cd8 feat(ui-chat): animate a whale tail below the transcript while the Session runs 2026-09-27 15:08:24 +08:00
Yifffan a8fc0b3f16 Merge pull request #5233 from deepseek-harness/ui/plugin-example-visual-polish
fix(plugins):  change plugin placeholder npm, visual refine and UX bug ifx
2026-09-27 15:02:43 +08:00
Yif 142b655241 fix(plugins): use shared focus color for invalid inputs 2026-09-27 14:48:49 +08:00
Yif 69b55fb53b fix(plugins): preserve registry keyboard selection and focus feedback 2026-09-27 14:25:27 +08:00
Ruilin Geng 4e223acb8a Merge branch 'master' into fix/issue-4803-webkit-json 2026-09-27 14:23:32 +08:00
Yif db5ed22884 test(plugins): make the refresh spinner hold deterministic
Extract settleRefresh() so the spinner-minimum hold has one settle point,
advance the e2e fake clock past the 400ms hold before asserting the button
restores, and drive the disposal-during-hold store test on fake timers for
both success and failure reads.
2026-09-27 12:42:30 +08:00
imccyu 79fce08d25 test(web): align browser scenarios with detailed work defaults 2026-09-27 11:51:50 +08:00
imccyu b066690f70 fix(web): default fresh work details to detailed 2026-09-27 11:43:09 +08:00
Yif eb9efc6265 fix(plugins): restore registry group, own opaque material, hold refresh spinner
The install registry picker used MenuSurface and overrode the theme-owned
menu material tokens, which the shared-menu-material gate rejects. Return
the picker to a fieldset (its native group role) and paint an opaque
bg-layer-2 surface so the form controls stay readable without touching
menu tokens. This also restores the group's radios to the accessible tree.

Align plugin-install-registry.e2e and its snapshots with the PR's visible
text: registry option names drop the parentheses around the host, the
custom address field is no longer disabled, and the custom hint spells out
http(s) and ~/.npmrc.

Hold the manual-refresh spinner to a 400ms minimum so a fast read does not
flash it, clearing to idle (or the failure toast) only after the minimum,
and dropping a refresh that settles after disposal.

Prune the retired no-unknown-casts baseline entry for browser-plugin.client.spec.
2026-09-27 09:46:15 +08:00
Yif 9fabb67bca test(plugins): trim redundant refresh/tooltip coverage
Drop the plugin-manager refresh e2e to a single failure round: the store's
success and retry outcomes are covered deterministically by
manager-store.client.spec.ts, while the e2e keeps its unique value — real
500ms tooltip timing, a running spinner animation, aria-busy, and the
portaled failure toast over kept cards. Regenerate refresh.expected.md.

Remove the components spec tooltip-delay case; ui-primitives'
tooltip.client.spec.tsx already covers 499/500ms hover/focus delay, early
cancellation, and portaling. PluginManagerPage.tsx stays at 100% coverage.
2026-09-27 02:28:09 +08:00
Yif 9c6bdd020c Merge master into ui/plugin-example-visual-polish 2026-09-27 02:03:39 +08:00
Yif f057cc37c4 fix(plugins): guard IME submission and refine automation icon 2026-09-27 01:44:00 +08:00
Yif 5d72bfbe49 fix(plugins): refine refresh feedback and plugin artwork 2026-09-27 01:00:50 +08:00