Commit Graph
1828 Commits
Author SHA1 Message Date
Yichen Jiang 9b456b4e93 perf(forge): compare from the recorded base while confirming the head
Status snapshots carry the base commit the host recorded with the head
(baseSha). ForgeService.diff passes it to the provider when the latest
status names the requested head, and forge-github starts the compare read
from it while its GraphQL read confirms the head; a stale head or another
base cancels and joins the early read.
2026-11-07 16:22:24 +08:00
Yichen Jiang 7eed60f415 Merge remote-tracking branch 'origin/master' into feat/forge-review-viewed-lenses 2026-11-07 13:56:05 +08:00
Dudu-0223 6d6fc89686 test: cover macOS CUA channel policy forwarding on every platform 2026-11-07 13:07:08 +08:00
Yichen Jiang ef34a844de fix(forge-panel): refuse commit runs off the first-parent line and harden review state
- Shift-chosen commits must follow each other as first parents; the picker
  says why it keeps a run that leaves the line, and the Host refuses one with
  forgePanel/commits-not-linear for the Branch scope and change requests.
- The Branch scope lists its newest maxCommits commits with
  --no-show-signature, so log.showSignature cannot corrupt the listing.
- Viewed marks merge with the stored entry on each write and follow the
  storage event, so tabs of one Session keep each other's marks.
- .gitattributes patterns follow Git's wildmatch rules, checked against
  git check-attr; change digests include file mode lines.
- GitHub commit pagination refuses a repeated cursor or a changed count;
  commits validates the repository before its host like the other reads.
- The commit list is read once per head, base, or refresh; the lens menu
  hides the count of the disabled Tests lens.
2026-11-07 12:56:23 +08:00
Yichen Jiang fb637c2bfd Merge remote-tracking branch 'origin/master' into feat/forge-review-viewed-lenses
# Conflicts:
#	apps/web/tests/forge-panel.e2e.ts
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/subsystems/forge.i18n.yaml
#	docs/subsystems/forge.md
#	docs/subsystems/forge.zh.md
#	packages/experimental/client-ui-forge/README.i18n.yaml
#	packages/experimental/client-ui-forge/README.md
#	packages/experimental/client-ui-forge/README.zh.md
#	packages/experimental/client-ui-forge/src/client/ChangesTab.tsx
#	packages/experimental/client-ui-forge/src/index.ts
#	packages/experimental/client-ui-forge/tests/controller.host.spec.ts
#	packages/experimental/forge-github/README.i18n.yaml
#	packages/experimental/forge-github/README.md
#	packages/experimental/forge-github/README.zh.md
#	packages/experimental/forge-github/src/index.ts
#	packages/experimental/forge-github/src/provider.ts
#	packages/experimental/forge-github/tests/plugin.spec.ts
#	packages/experimental/forge-github/tests/provider.spec.ts
#	packages/experimental/forge-github/tests/review.spec.ts
#	packages/experimental/forge/README.i18n.yaml
#	packages/extensions/tool-cordis/src/api-catalog.ts
2026-11-07 12:13:56 +08:00
CreatixChu 683a98aa37 Merge pull request #8015 from deepseek-harness/fix/macos-window-element-click
Fix macOS mouse actions after the interface change
2026-11-07 03:52:42 +00:00
creatixchu f8237c051e Describe mouseMove as a request to move to the target 2026-11-07 11:34:09 +08:00
Yichen Jiang 0a10b6fd16 Merge pull request #8049 from deepseek-harness/fix/forge-pinned-diff
fix(forge): pin change request diffs to the polled head and count every review thread
2026-11-07 11:22:43 +08:00
Yudong Han 2d463af8d2 Merge pull request #7365 from deepseek-harness/feat/sidebar-file-search
feat(ui-sidebar-files): 侧栏文件树新增搜索栏 UI 与排除规则设置
2026-11-07 00:56:13 +08:00
Yichen Jiang 0e971200c4 feat(forge-panel): let repositories declare review layers in .gitattributes
A repository's root .gitattributes now decides a file's review layer first:
dsh-review-layer names test, interface, or implementation, and
linguist-generated still places a file in the test layer. The testPaths and
interfacePaths settings add globs before the built-in rules and are empty by
default. The built-in rules follow the default conventions of common
languages and tools instead of treating every JSON or YAML file and every
name containing config as interface. This repository declares its own locale
dictionaries, snapshot tree, pairing records, and types modules.
2026-11-06 18:47:22 +08:00
Yichen Jiang c9997e03c7 fix(forge): read commit ranges like the pinned pull request diff
The compare read now takes the same arguments as the comparison helper of the
pinned-diff change: explicit commits, the diff media type, and
--allow-escape-sequences, which gh 2.97 and newer requires to print a patch
whose files hold terminal escape sequences. HTTP 406, GitHub's refusal to
render a diff over its limits, reads as too-large.
2026-11-06 18:18:51 +08:00
Yichen Jiang e07b170d77 fix(forge): address review of pinned diffs and thread counting
- forge-github: repeat a compare read without --allow-escape-sequences when
  a gh older than 2.97 rejects the option; such a gh prints escape sequences
  unchanged, so every version reads every diff (checked with gh 2.96.0 and
  2.100.0 on a pull request whose patch holds an ESC byte).
- client-ui-forge: a stale refusal now re-runs the read effect, so a status
  that arrived during the read, including a failed poll that keeps the
  earlier head, starts the next read at once instead of leaving the changes
  view loading.
- forge: ctx.forge.diff polls at once only for the first stale read at a head
  commit; later stale reads at it wait for the regular poll, which bounds the
  read-poll loop while GitHub's answers briefly disagree.
- forge-github: review thread pages share the byte budget of a complete
  check read.
- client-ui-forge: a truncated count shows its "+" even when it is zero.
- READMEs: document the batch deadline and rewritten-base limitations.
2026-11-06 18:17:04 +08:00
creatixchu b9b6fccd6c Name the window receiver in macOS click guidance 2026-11-06 17:52:25 +08:00
Yichen Jiang 325b2d27e5 Merge remote-tracking branch 'origin/master' into feat/forge-review-viewed-lenses 2026-11-06 17:51:39 +08:00
Yichen Jiang c313392bf8 feat(forge-panel): review changes by layer, mark files viewed, and view chosen commits
The changes view gains a lens of All, Interface, Implementation, and Tests
that spans the file tree above it, a switch that hides test files from the
tree and the diff, and a viewed checkbox on each file header that collapses
the file. The toolbar counts viewed files and V toggles the file being read.
Marks are kept per Session, source, path, and change digest in browser
storage, so a file that changes again reads as changed since viewed. All
commits beside Submit review, and beside the base branch of the Branch scope,
shows one commit or a Shift run of commits.
2026-11-06 17:51:22 +08:00
Yichen Jiang 929e283c5e feat(forge-panel): classify changed files into review layers and read chosen commits
Each diff file now carries a review layer and a change digest. The layer
follows the new testPaths and interfacePaths globs and the linguist-generated
lines of the root .gitattributes, which the panel reads at the compared side
and caches beside change request patches. localCommits and
changeRequestCommits list commits, and a branch scope or change request diff
can name consecutive commits to show instead of the whole comparison.
2026-11-06 17:51:06 +08:00
Yichen Jiang 38b59a84bc feat(forge): read pull request commits and commit ranges
ForgeProvider gains optional commits and compare methods, which a provider
implements together. The forge service returns undefined from commits and an
unavailable failure from compare when either is missing. The GitHub provider
lists commits through GraphQL pages pinned to one head, bounded by the new
maxCommits setting, and reads ranges through the compare API in diff form.
2026-11-06 17:50:54 +08:00
creatixchu 24477680bd Guide macOS clicks on clipped elements and verify their effects 2026-11-06 17:46:22 +08:00
lsdsjy d51d623bfc feat(account): 接入通用通知接口并统一账号服务 (#7550)
将赠金专用提示迁移到通用通知 list、content 和 events 接口,支持轮询、语言刷新及单次交互上报。

统一账号服务和 Remote,通知 UI 放入侧栏并保持独立生命周期。

Refs #6373
2026-11-06 17:40:24 +08:00
creatixchu a2dc561cb9 Limit shared CUA guidance changes to hover and foreground recovery 2026-11-06 17:28:12 +08:00
Yichen Jiang 7dc864a931 fix(forge-github): read pinned diffs through the compare API
The GitHub provider now reads headRefOid and baseRefOid in one GraphQL query,
returns `stale` when the head moved, and reads the patch from
`compare/<baseRefOid>...<headSha>` instead of bracketing `gh pr diff` with two
head reads. Both ends are fixed commits. The compare read lives in the internal
`readComparison` helper so commit-range diffs can reuse it.

For every open and merged pull request measured, the compare patch is
byte-identical to `gh pr diff`. Unlike the pull request diff, it returns diffs
over 300 files, so such a pull request now shows its complete diff; only output
over `maxOutputBytes` or GitHub's HTTP 406 / `too_large` refusal is
`too-large`. The read passes `--allow-escape-sequences`, which gh 2.97 and
newer require to print patches whose files contain terminal escape sequences.
2026-11-06 17:05:05 +08:00
creatixchu 5e7532f8fa Verify macOS hover permission stays with its connection 2026-11-06 16:21:51 +08:00
creatixchu 0f15e8766a Refresh the configuration catalog and retain Agent disposal coverage 2026-11-06 16:19:01 +08:00
creatixchu 3430de3531 Keep platform-specific CUA instructions and hover policy in the macOS provider 2026-11-06 16:16:47 +08:00
Yichen Jiang 94336c6b3d fix(forge): pin change request diffs to the polled head and count every review thread
ForgeProvider.diff now takes the head commit it must describe. The GitHub
provider reads headRefOid before and after `gh pr diff` and returns the new
ForgeFailure code `stale` when either read names another commit, so the
forge panel never caches a patch under a head it does not describe. A stale
read polls the change request at once, and the changes view waits for the
next status before reading again.

Status polling pages reviewThreads up to the new `maxReviewThreads` setting
(default 1,000) instead of counting only the first 100, and sets
ChangeRequestSnapshot.threadsTruncated when the count is a lower bound.
2026-11-06 16:15:24 +08:00
creatixchu 1fd66fd75f Measure refused hover in the cursor-stability fixture 2026-11-06 15:43:06 +08:00
creatixchu 0d6c614164 Establish the file panel keyboard target and compare hover state across refusal 2026-11-06 15:40:54 +08:00
creatixchu 344e8a91a5 Resolve element hover before checking geometry for pointer delivery 2026-11-06 15:35:37 +08:00
creatixchu c07035b4ef Check the rendered file panel button against its AX bounds 2026-11-06 15:34:32 +08:00
creatixchu 0c2fbb031d Capture the selected macOS window without its attached window group 2026-11-06 15:31:55 +08:00
creatixchu 09b90ed112 Keep macOS hover off the system pointer by default and route file panel clicks 2026-11-06 15:20:30 +08:00
Chinesezjc e643811b4d Merge pull request #7995 from deepseek-harness/fix/ci-8600dbc-gh-exec-sleep
test(forge-github): exec the fake gh sleep so deadline cases settle
2026-11-06 15:01:46 +08:00
creatixchu eba321d918 Open the fixture sheet through its button action before testing pointer scope 2026-11-06 14:48:28 +08:00
creatixchu 84bd8fd7ba Check the file panel after its Open button becomes actionable 2026-11-06 14:46:50 +08:00
creatixchu 3b677fdf1a Exercise stale window recovery through the CUA object API 2026-11-06 14:44:04 +08:00
creatixchu 7557dda6ff Explain how to recover from macOS pointer target mismatches 2026-11-06 14:43:03 +08:00
creatixchu 84c760f205 Describe macOS mouse dispatch on the click method itself 2026-11-06 14:33:59 +08:00
Yichen Jiang 6a315e6aea Merge pull request #8008 from deepseek-harness/fix/forge-file-menu-and-comment-echo
fix(forge): center the selected file in the file menu and shorten comment quotes
2026-11-06 14:22:57 +08:00
creatixchu 5d0ffe3c99 Invoke the system Open panel button through its default action 2026-11-06 14:10:51 +08:00
creatixchu ecd56a18d3 Verify and document mouse clicks separately from AX actions 2026-11-06 14:08:06 +08:00
creatixchu 97ec654f44 Send mouse events for every macOS click 2026-11-06 14:08:05 +08:00
creatixchu d4f0efa260 Exercise mouse delivery to the center of a scoped element 2026-11-06 13:23:45 +08:00
creatixchu 10d4199270 Document and exercise window-scoped macOS element input 2026-11-06 13:22:18 +08:00
creatixchu a0ae65fa35 Honor the selected macOS window for element clicks and hover 2026-11-06 13:18:42 +08:00
CreatixChu ad3ca91623 Merge pull request #6746 from deepseek-harness/feat/cua-shared-native-api
处理 Windows 实现过程中发现的 CUA 包接口变更
2026-11-06 13:14:30 +08:00
Yichen Jiang 3c839748bd fix(forge): address review on file menu reveal and comment quote summaries
- Reveal the selected file again when files arrive or reorder around it,
  so a navigation that selects a file before the diff loads still scrolls
  the wide pane; a changed filter shows its results from the top.
- Compare quote summaries in draft change detection, so restoring a draft
  that only adds or changes a summary updates the snapshot and storage.
- Read the full path and range instead of the short label to assistive
  technology; the Web snapshot now records src/<file>.
- Type the stored summary schema against QuoteSummary, test the stored
  round trip, and document why revealRow does not use scrollIntoView.
2026-11-06 13:10:37 +08:00
creatixchu 4995b0e87a Check activation results and narrow validated runner descriptors 2026-11-06 12:31:15 +08:00
Yichen Jiang b81e8c823b fix(forge): center the selected file when the file menu opens
Scrolling by the least distance left a selected file below the fold
flush against the menu's bottom edge with none of its neighbors visible.
Mounting now centers a selected row that is out of view; later selection
steps in the wide pane still scroll by the least distance.
2026-11-06 12:26:41 +08:00
creatixchu 96a6b779fe Validate CUA response targets and stabilize platform permission loading 2026-11-06 12:15:41 +08:00
creatixchu 16d87f95de Keep incomplete AX action metadata local to the observed element 2026-11-06 12:05:18 +08:00