Commit graph

13147 commits

Author SHA1 Message Date
Chinesezjc
a989d4e98b docs: separate portable vs complete-aggregate evidence in larger-hosted note
Per review: the self-hosted serial standby is not portable evidence — portable
means standard GitHub-hosted capacity without repository-external runner
configuration, which the self-hosted vm-backup/dsh-win-ci pools do not satisfy.
In 2026-07-22-evidence-based-larger-hosted-runners L73, distinguish the two:
standard-hosted compatibility jobs preserve portable evidence, while the
self-hosted serial standby preserves complete-aggregate evidence. Update the en
and zh pair and re-record the i18n hash.
2026-08-19 15:37:58 +08:00
CreatixChu
e84b82d745 Merge pull request #733 from deepseek-harness/worktree/web-file-session-references
feat(web): add file and session references
2026-08-19 15:30:32 +08:00
Chinesezjc
72f0c9dc6d docs: sync serial-linux removal across remaining implemented notes
Keep the remaining current-state Agent Notes in line with removing the hosted
serial-linux job (PR #2744), per the implemented-note rule that mechanisms stay
current in the same change that alters them:

- 2026-07-30-web-browser-snapshot-ci-gate (L15/L21): the hosted default-branch
  Linux serial job no longer produces the browser cache; pull requests restore
  the archived cache without a master producer, and only the self-hosted standby
  runs the comparison on master.
- 2026-07-24-web-gui-browser-e2e-lane (L49): no hosted Linux serial producer of
  the browser cache remains; the self-hosted standby runs the same gate.
- 2026-07-23-portable-required-pull-request-ci (L19): the serial completeness
  check is now provided by the self-hosted vm-backup/dsh-win-ci standby lanes,
  with serial-macos as the only disabled hosted serial.
- 2026-07-22-evidence-based-larger-hosted-runners (L17/L53/L73): serial
  completeness evidence comes from the self-hosted standby pools; no hosted
  Linux serial reference remains.

All four en/zh pairs updated with consistent current-state wording (no deletion
narrative) and i18n hashes re-recorded; note-format still passes.
2026-08-19 15:22:57 +08:00
creatixchu
54cd736a4e Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references 2026-08-19 15:21:17 +08:00
_Kerman
ea35359b86 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 15:12:21 +08:00
creatixchu
09b3dfa06d Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-19 15:09:59 +08:00
_Kerman
e0984854a1 Merge remote-tracking branch 'github/master' into xtr/2701-stable-session-snapshots 2026-08-19 15:01:40 +08:00
Chinesezjc
2824ef7ab4 docs, ci: apply second serial-linux review pass
Address the review findings from the fresh pass on PR #2744:

- 2026-07-21 note L31: the enabled serial references run on the self-hosted
  vm-backup/dsh-win-ci pools and the only remaining disabled hosted serial is
  serial-macos (macos-latest); removed the stale hosted ubuntu-latest/windows-2025
  serial framing and the outdated 'when enabled, serial / windows' clause.
- Drop remaining change-narrative from both notes: L19 (serial / linux, macos)
  and the 2026-07-26 caching note L16/L34 now state only current facts without
  deletion dates/PR numbers; the no-producer fact has one home (L16). zh.ms'
  '直至其过期为逐出' corrected to '直至其被逐出'. Bilingual hashes re-recorded.
- ci.yml TODO notes that re-enabling serial-macos does not restore a Linux
  hosted-cache producer and records the seeder-vs-remove decision direction.
- The Playwright restore's failover-skip comment is now self-contained (the
  VM's persistent browser cache is warm) instead of pointing at the coveragelane
  rationale, which is pnpm-store-specific.

Verification: scripts/ci-workflow.spec.ts passes (12/12), YAML re-parses,
both translation pairs consistent, git diff --check clean.
2026-08-19 15:01:37 +08:00
ihsiang
0497a10f90 Merge pull request #2686 from deepseek-harness/ihsiangzhang/rail-search-outside-click-fix
fix(ui-workspace): keep rail-opened search expanded when the opening click reaches document
2026-08-19 14:58:18 +08:00
creatixchu
ff88d3dd00 Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-19 14:55:32 +08:00
creatixchu
9620a752c8 refactor(agent-loop): 缩小取消前缀收尾范围 2026-08-19 14:55:26 +08:00
_Kerman
cb0747091b Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:52:29 +08:00
Yichen Jiang
fe351b4d28 Merge pull request #2650 from deepseek-harness/worktree/llm-pi-ai-config-exposure-05f455
fix(llm-pi-ai): 补全 pi-ai 协议兼容开关,修复 OpenAI 兼容网关无法接入
2026-08-19 14:51:02 +08:00
_Kerman
571dba37cb Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:50:24 +08:00
creatixchu
e7a668906a Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references
# Conflicts:
#	packages/client/connection/src/client/fixture.ts
#	packages/client/ui-conversation/src/client/input/facade.ts
#	packages/client/ui-conversation/src/client/input/hub.ts
#	packages/client/ui-conversation/tests/input-matrix.client.spec.tsx
#	packages/client/ui-conversation/tests/input-scenarios.client.spec.tsx
#	packages/client/ui-conversation/tests/skeleton.client.spec.tsx
2026-08-19 14:49:57 +08:00
pku-xht
fa2ce12162 review fix: avoid bigint cache-hit formatting 2026-08-19 14:41:23 +08:00
pku-xht
a4da0f40d5 feat(web): preserve near-full cache-hit precision 2026-08-19 14:41:23 +08:00
_Kerman
ad94c35a77 docs: refresh config catalog source links 2026-08-19 14:40:23 +08:00
Yichen Jiang
07fbaa9b30 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 14:39:44 +08:00
Chinesezjc
0593293b0a ci, docs: address serial-linux removal review
Apply review feedback on the serial-linux removal (PR #2744):

ci.yml:
- Rewrite the new comments as current-state statements, not change
  narrative (dsh-prose-standard): the TODO names serial-macos as the one
  remaining disabled hosted serial job; serial-macos's intro and the
  self-hosted standby's frozen-archive note no longer narrate the deletion.
- The self-hosted standby's frozen-archive comment states its own reason
  (full history to resolve DSH_ARCHIVE_BASE_REF against github.event.before)
  instead of referenceing a now-nonexistent hosted serial reference.
- Move the hosted-cache comment above the pnpm restore so it covers both
  restore-keys fallback steps, and describe the real consequence (matches the
  archived entry until evict, then cold) instead of the false
  'cold on a lockfile change'. Restore the per-step failover-skip note.

Agent Note 2026-07-26-pnpm-action-setup-for-symmetric-ci-caching:
- Update the restore-only bullet and the consequences closing line (it
  described serial-linux as the active master-push producer of the pnpm store
  cache) to state that no master job produces these hosted keys since the
  producer was removed; the Problem and Alternatives sections are historical
  context and are left unchanged. Re-record the bilingual pair hashes.

Verification: scripts/ci-workflow.spec.ts passes (12/12), YAML re-parses,
both translation pairs consistent, git diff --check clean.
2026-08-19 14:39:03 +08:00
_Kerman
4729554c5b Merge remote-tracking branch 'github/master' into xtr/2701-stable-session-snapshots
# Conflicts:
#	examples/acp-agent/tests/acp.snapshot.ts
#	examples/acp-agent/tests/snapshots/code-mode-read-image/session.jsonl
#	examples/acp-agent/tests/snapshots/inline-image-prompt/session.jsonl
#	examples/acp-agent/tests/snapshots/read-image-dimension/session.jsonl
#	examples/acp-agent/tests/snapshots/read-image/session.jsonl
2026-08-19 14:35:52 +08:00
yx.zhang
f6a90db467 review: address ds-review-bot findings on rail-search fix
- Translate the zh Agent Note's title and section headings and align
  its rail terminology with the established zh READMEs (轨道).
- Disambiguate 'the browser's listener' to WorkspaceBrowser's in the
  English note.
- Record the in-flight outside-click exception in the ui-workspace
  README (both languages) and the owning workspace-sidebar feature
  note, cross-linked to the bug-fix note.
- Add an apps/web real-browser scenario pinning the document-level
  bubble the jsdom test cannot replay: one real rail click must leave
  the search expanded and focused, and a genuine outside click must
  dismiss it afterwards. Negative-controlled against the unguarded
  code (fails in 12s on the aria-expanded assertion).
- Register the new e2e file in the host tsconfig face and the client
  face's exclude list.
2026-08-19 14:34:17 +08:00
yx.zhang
106b117e18 fix(ui-workspace): keep rail-opened search expanded when the opening click reaches document
The rail search click flips the shell wide and mounts the outside-click
dismissal listener during its own dispatch; the click then bubbles to
document with the unmounted rail button as its target — outside
searchRoot — so the listener dismissed the search it just opened. The
listener now stays off while the rail gesture is in flight
(searchOnExpand), which already ends exactly when focus lands.

The regression test replays the document-level bubbling order that
fireEvent on the button alone does not exercise.
2026-08-19 14:34:16 +08:00
_Kerman
da463ddebc refactor(subagent): normalize optional timing output 2026-08-19 14:34:00 +08:00
_Kerman
e1a71c08bc fix(test): retain session fixture line diagnostics 2026-08-19 14:33:27 +08:00
_Kerman
9127d7e8b7 fix(session-projection): keep host state off wire 2026-08-19 14:32:48 +08:00
Yichen Jiang
4f1eb8f3ac Merge pull request #2724 from deepseek-harness/worktree/deepseek-native-multimodal
feat(llm-deepseek): support native multimodal requests
2026-08-19 14:32:32 +08:00
_Kerman
f281933dde fix doc-site fence cache safety 2026-08-19 14:27:56 +08:00
Yichen Jiang
7748a2f19c Merge remote-tracking branch 'origin/worktree/deepseek-native-multimodal' into worktree/deepseek-vision-model-catalog 2026-08-19 14:24:42 +08:00
Yichen Jiang
458a742cfe Merge remote-tracking branch 'origin/master' into worktree/deepseek-native-multimodal 2026-08-19 14:22:22 +08:00
07akioni
7d2982de68 Merge pull request #2695 from deepseek-harness/fix/open-file-fail
feat(web): Implement file-open failure handling in chat view
2026-08-19 14:16:37 +08:00
07akioni
2aaf760fa2 Merge pull request #2709 from deepseek-harness/feat/home-path-abbr
feat(ui-tool): integrate connection handling for POSIX home path abbreviation
2026-08-19 14:16:08 +08:00
_Kerman
e850c07691 perf(infra): parallelize hygiene checks 2026-08-19 14:12:16 +08:00
_Kerman
04a5e4b592 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2702
# Conflicts:
#	examples/acp-agent/tests/snapshots/product-subagent-result-diagnostic/session.jsonl
2026-08-19 14:06:11 +08:00
_Kerman
00257fa079 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 14:04:04 +08:00
Chinesezjc
89caa9dac2 docs: note hosted serial-linux removed as dead code
Keep the 2026-07-21 serial-reference note current with the ci.yml change: the
standard-hosted serial / linux definition no longer exists (removed as dead
code), and the current serial / windows definition is the in-house standby, not
a disabled standard-hosted job. Re-record the translation-pair hashes.
2026-08-19 14:02:35 +08:00
_Kerman
52a1f80327 Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:01:31 +08:00
Chinesezjc
e6b494ed17 ci: remove dead hosted serial-linux job
serial-linux (hosted ubuntu-latest) has been `if: false` since 2026-07-30 and
never runs. Remove the dead job block and retire the dangling references:

- TODO(hosted-serial-ci) narrowed to the single remaining disabled hosted
  serial job (serial-macos); the hosted linux definition is gone.
- The cache producer comment no longer claims serial-linux refreshes the
  hosted pnpm/Playwright caches; there is currently no active master producer
  for them, so restores are cold on a lockfile change.
- The self-hosted standby's frozen-archive comment no longer cross-references
  the deleted job.
- serial-macos gains its own intro comment since the shared 'hosted reference
  jobs below are disabled' lede was removed.

No runner allocation, required gate, or all-checks-passed.needs reference this
job; the aggregate is unchanged.
2026-08-19 14:00:33 +08:00
Chinesezjc
6079181d1a Merge pull request #2673 from deepseek-harness/fix/web-feedback-note-popover
fix(feedback): float the note editor in a popover
2026-08-19 13:59:30 +08:00
Yichen Jiang
9b5fad14e0 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 13:59:24 +08:00
Yichen Jiang
3b74deec3e fix(llm-pi-ai): pin compat field types both ways and refuse empty values
The upstream-type proof only ran covariantly, so it caught a profile
field wider than pi-ai's but not one narrower — the direction its own
JSDoc claimed to guard. It now asserts both directions; the reverse holds
today because every field is either derived from upstream or a boolean.

`ModelCompat` gained `BedrockCompat`, which the gate had already started
serving, and the per-field protocol lists now match what the gates
resolve: `docs/config-catalog.md` pastes that JSDoc verbatim, so a stale
list there contradicted the README in the same change. The interface
header names the Responses grouping, since a catalog reader never sees
the README passage that explains it.

Valueless keys are judged after the name, so a withheld or misspelled key
written bare is refused for being that name rather than sent back for a
value it would be refused with anyway; the remedy no longer promises an
installed catalog value that a hand-declared route does not have. The
check covers `undefined` beside `null`: schemastery keeps the key either
way, and a cordis.yml entry reaches that state through `!!js undefined`,
so it is a config boundary rather than a typed one.

Coverage follows the composed path: the rejection is asserted through a
written settings section, and a switch is carried from that section onto
the wire a provider receives.

Refs #2646
2026-08-19 13:58:55 +08:00
_Kerman
f8828ffe3e refactor(test): simplify session fixture decoding 2026-08-19 13:58:41 +08:00
pku-xht
943daa17dc Merge pull request #2640 from deepseek-harness/codex/product-subagent-failure-facts-codex
fix(subagent): preserve Codex failure facts
2026-08-19 13:50:47 +08:00
Chinesezjc
e2ee5c0f5d feat(feedback): float the note editor in a popover, not inline in the actions row
The message-feedback note editor previously expanded inline inside the
assistant message's shared IconActions row, overflowing the row at every
viewport and pushing the branch action and the clock out of the column.
Rework it into a portable popover: the note editor is a fixed-position panel
portaled to document.body and anchored to the note trigger, so the row keeps
its single 28px line whether the editor is open or not and the panel escapes
the column's overflow clip.

The like/dislike buttons and the note trigger stay in the row unchanged; the
trigger toggles the popover (textarea + Save/Cancel + note-save failure) which
auto-focuses the input and closes on Escape or an outside click, returning
focus to the trigger. Rating/list-load failures surface in the row, note-save
failures inside the popover. Reuse the Menu portal surface tokens and add
@types/react-dom so the createPortal usage typechecks.

Layout e2e sweeps six viewports and pins that opening the editor leaves the
row's overflow, line count, and out-of-column items unchanged, and that the
panel is outside the column, within the viewport, and anchored to its trigger.
Unit tests cover the popover's portal-to-body, toggle, Escape/outside-click
dismissal, and unmount early-returns.
2026-08-19 13:49:30 +08:00
pku-xht
bae043e432 Merge pull request #2636 from deepseek-harness/codex/product-subagent-failure-facts-claude
fix(subagent): preserve Claude Code failure facts
2026-08-19 13:48:10 +08:00
Yichen Jiang
c4037732ae docs(user): point the provider guide at the adapter's catalog section
The full switch list already exists and is generated from source, so the
guide needs a way in rather than a copy: `config-catalog.md` carries 107
plugin sections, and linking the whole file leaves a reader to find the
one that configures the page they are on. Both mentions now deep-link the
`dsh-llm-pi-ai` anchor.

Refs #2646
2026-08-19 13:46:39 +08:00
_Kerman
f4af19d724 perf(infra): shorten doc-sync critical path 2026-08-19 13:45:34 +08:00
_Kerman
9921de2d03 refactor(test): keep session fixture projection local 2026-08-19 13:41:42 +08:00
pku-xht
23b573b23f Merge remote-tracking branch 'origin/codex/product-subagent-failure-facts-claude' into codex/resolve-pr2640-20260819134000 2026-08-19 13:39:34 +08:00
pku-xht
7e764e168d Merge remote-tracking branch 'origin/master' into codex/resolve-pr2636-2640-20260819133346 2026-08-19 13:34:07 +08:00