Commit Graph

6101 Commits

Author SHA1 Message Date
Tianyi Cui
10d8fc1dce Merge pull request #775 from deepseek-harness/dependabot/github_actions/actions/deploy-pages-5
chore(deps): bump actions/deploy-pages from 4 to 5
2026-07-28 12:11:27 +08:00
imccyu
b5168bbf86 feat(ui-slots): bind inject hooks compartments into use<Name> selector hooks
Registrant-private reactive facts previously reached components as raw
observables that each component subscribed by hand (InputBar notices/
lexicon via uSES, SettingsRoot via a version/subscribe/getter triple).
The inject face now carries a reserved hooks compartment of bare
sources; the renderer binds each into a use<Name> selector hook through
the same machinery as the provide channel, so components consume
useNotices/useLexicon/useSections and never see a subscription
primitive. InputBar and SettingsRoot are the first two consumers.
2026-07-28 12:09:48 +08:00
imccyu
b7f3cd3d78 refactor(client): rename currentProvide to currentProvideInfo 2026-07-28 12:09:48 +08:00
imccyu
71529aa7d2 refactor(client): rename the host provide source to provideInfo 2026-07-28 12:09:48 +08:00
imccyu
bce9910b47 docs: regenerate cordis catalog line anchors 2026-07-28 12:09:48 +08:00
imccyu
d3d01cb49c fix(ui-slash): make the reference lexicon reactive end to end
The decoration scan read a mutable lexicon() aggregation during render
with no subscription, so a catalog settling or a child spawning after
prewarm left drafted tokens undecorated until an unrelated re-render.
The controller now publishes the aggregation as a snapshot store fed by
a new optional SlashSource.subscribeLexicon hook (ui-skill notifies on
settle/invalidate, ui-subagent forwards the session-list feed), the
composer keyboard face exposes it as an observable, and InputBar
subscribes through uSES. Sources registered after scope birth now warm
and join live controllers via a service broadcast.
2026-07-28 12:09:48 +08:00
imccyu
eae712409b fix(ui-settings): subscribe to the section ledger through useSyncExternalStore
The manual useState+useEffect subscription could miss a registration
landing between render and effect commit; uSES closes that window and
keeps the same version-dedupe behavior.
2026-07-28 12:09:48 +08:00
imccyu
a0b618abb9 fix(client): publish current session provide bundle as one reactive projection
A provider roster change under a stable current id rematerialized every
scope's bundle but nothing notified React: SessionProvider resolved the
bundle from a current-id subscription only, so mounted entries kept the
obsolete hook/prop schema until an unrelated re-render. The sessions
service now owns an atomic currentProvide observable fed by both current
writes and roster changes; the renderer host exposes it as
sessions.provide, replacing the current/provideInfo/maybeProvideInfo
trio, and both providers subscribe to it.
2026-07-28 12:09:48 +08:00
imccyu
c4df0628db docs(notes): record reactive provide projection and lexicon subscription decisions 2026-07-28 12:09:48 +08:00
Tianyi Cui
fb3b35d70b Merge branch 'master' into dependabot/github_actions/actions/deploy-pages-5 2026-07-28 12:06:30 +08:00
NI0317
a9c0e00620 docs: record the directory-listing and glob-sampling decision
Agent Note for the two changes: what the session log showed, what ordering
can and cannot fix (measured, correcting the first diagnosis), why the page
is sampled only past the cap, why `list` is needed alongside it, and the
alternatives each one beat.
2026-07-28 12:06:25 +08:00
Yif
16b54aa4c4 fix(web-ui): cwd-relative path summaries, sweep glare rework, uniform 16px chat rhythm
Tool row summaries strip the session workspace root; the running sweep
becomes a glare-band overlay (deepsuite ShimmerText pattern); assistant
nodes that render nothing no longer split tool-row groups; block and
tool-row spacing collapse to one 16px rhythm.
2026-07-28 12:05:58 +08:00
NI0317
9b9b45e65e fix(fs-search): sample an over-cap glob result across the tree
Asked what a workspace contained, an agent described one subfolder as the
whole project. `glob {"pattern": "*"}` matched 10030 paths across 22
top-level entries and the inline page was the first 100 of them, all under a
single unpacked archive.

Three properties compose into that page: a pattern with no `/` matches
basenames at any depth, so `*` means the whole tree rather than its top
level; `--sort=modified` orders oldest first, and unpacking an archive
restores timestamps that predate everything the user wrote; and the page was
the head of that order. Each is defensible alone, and together they make the
most ordinary request an agent receives produce a confident wrong answer.

A result within `globMaxResults` is unchanged — shown whole, in
modification-time order. Beyond it the page is filled round-robin across the
complete result's top-level entries, so one subtree cannot own every slot,
and the footer states that the page was sampled rather than taken in
modification-time order. Measured on a 24-entry, 716-file reproduction, the
head of 100 reaches 7 top-level names and the sampled page reaches 21. The
spill artifact still holds the complete sorted list.

The guidance and schema stop steering away from `ls`, state the any-depth
pattern rule, say results are files and never directories, and point at
`list` for a directory's contents.
2026-07-28 12:05:36 +08:00
Tianyi Cui
1ffaeedd3b Merge pull request #770 from deepseek-harness/dependabot/github_actions/actions/configure-pages-6
chore(deps): bump actions/configure-pages from 5 to 6
2026-07-28 12:01:42 +08:00
NI0317
d4614f92d6 feat(fs): add a model-facing directory listing tool
`ctx.fs.listDir` has shipped since the filesystem seam gained it, with skill
discovery as its only consumer; the model-facing tool was deferred to a
separate decision. Nothing else could answer "what is in this directory":
`rg --files` backs glob and grep and never emits a directory entry, so an
empty directory is invisible, no output says which names are directories,
and no output gives an entry count.

`list` takes an optional `path`, defaulting to the session workspace so the
common question needs no argument, and returns the direct children of one
directory with their type. Two presentation rules carry it: directories sort
first, then files, then non-regular children, each alphabetically — so
truncation loses leaves rather than the tree — and the footer always states
the complete listing's size and composition, so a capped view can never read
as a whole directory.

It emits no `fs/observed`: seeing a filename is not reading a file, and a
listing must never satisfy the read-before-write gate.
2026-07-28 11:59:52 +08:00
Tianyi Cui
b27a542149 Merge branch 'master' into dependabot/github_actions/actions/configure-pages-6 2026-07-28 11:56:00 +08:00
imccyu
fe26d793c5 Merge pull request #746 from deepseek-harness/fix/todo-tool-ui
refactor(todos): update TodoRow styling and logic, add IconChecklistOutline16, and enhance AssistantMarkdown rendering
2026-07-28 11:35:36 +08:00
imccyu
8f13e09f31 Merge branch 'master' into fix/todo-tool-ui 2026-07-28 11:32:07 +08:00
07akioni
99d631d41a fix: ci 2026-07-28 11:21:45 +08:00
Yichen Jiang
2a46685414 Merge pull request #797 from deepseek-harness/worktree/tui-session-title-search
fix(tui): search session references by title
2026-07-28 11:17:15 +08:00
Yichen Jiang
2e6abdf8a7 Merge remote-tracking branch 'origin/master' into worktree/tui-session-title-search 2026-07-28 11:12:56 +08:00
Yichen Jiang
968e4d5312 Merge remote-tracking branch 'origin/master' into worktree/tui-session-title-search
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.md
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md
#	packages/context/session-reference/README.i18n.yaml
#	packages/context/session-reference/README.md
#	packages/context/session-reference/README.zh.md
#	packages/context/session-reference/src/index.ts
2026-07-28 11:11:57 +08:00
Tianyi Cui
bbeaa9fb2e Merge pull request #790 from deepseek-harness/worktree/sdk-public-api
fix(sdk): narrow TypeScript client interface
2026-07-28 11:09:59 +08:00
Tianyi Cui
cee7462994 Merge remote-tracking branch 'origin/master' into worktree/sdk-public-api 2026-07-28 11:06:00 +08:00
Yichen Jiang
a43a2032ec fix(tui): search session references by title 2026-07-28 11:05:53 +08:00
Tianyi Cui
3f97b88ff9 Merge pull request #787 from deepseek-harness/worktree/change-scope-trim-20260728
refactor(dev-infra): narrow change-scope contract
2026-07-28 11:03:13 +08:00
Tianyi Cui
4bba60f726 Merge remote-tracking branch 'origin/master' into worktree/sdk-public-api 2026-07-28 11:03:06 +08:00
07akioni
fb9495b21e Merge branch 'master' into fix/todo-tool-ui 2026-07-28 10:59:05 +08:00
Tianyi Cui
e98c180062 Merge branch 'master' into worktree/change-scope-trim-20260728 2026-07-28 10:59:00 +08:00
Tianyi Cui
b7abd1bb8b Merge branch 'master' into dependabot/github_actions/actions/configure-pages-6 2026-07-28 10:58:36 +08:00
Yif
484e0f70cc fix(web-ui): pixel loading language, tool-row sweep, composer polish
- StateDot ongoing: gradient spin ring replaced by an 8-cell pixel chase
  (2px matrix cells, stepped trail, no tweening)
- Chat: streaming pulse block replaced by a turn-level 4-pixel chase at the
  flow tail — rides the whole running turn (first-token wait, tools,
  streaming) instead of flickering with partial presence
- Tool rows (ToolRow/BashRow): running no longer swaps the icon for a dot;
  an animated mask band sweeps the row content, gliding off on exit via
  mask-position transition
- Composer: send/stop unified on the blue fill (bigger stop glyph, static
  white arrow), textarea box-sizing overflow fix, settling phase hides the
  composer while replay decides hero vs docked, workspace-placeholder
  fallback disables the bar
- Hero: glow moved behind (z-index) with lower opacity; tool-row hover icon
  crossfade at 100ms
2026-07-28 07:59:08 +08:00
Yif
ae76ed2874 fix(web-ui): workspace chip placeholder, logo new-session shortcut, hero foot padding
- The hero workspace chip is a selector: no-live-selection states (cold
  start, workspace deleted from the sidebar after the list is ready) now
  render a "Choose workspace" placeholder (closed-folder icon) instead of
  resurrecting the deleted folder name via the session cwd; the cwd-derived
  name still bridges the initial list load. Stale pending picks clear when
  their workspace leaves a ready list.
- The expanded sidebar wordmark starts a new session (visuals unchanged,
  pointer cursor only); the collapsed rail logo keeps its expand toggle.
- The centered hero composer stack gains a 32px foot for visual balance.
2026-07-28 04:56:14 +08:00
Yif
1f79b78045 fix(web-ui): menu placement and scrolling, tool-row and settings polish
Menus: keep 12px viewport clearance with internal scroll, pin workspace
create actions in a footer, and pre-render portal lists hidden so the
first painted frame is already at its final position (no open jump).
Tool rows: 14px icons, secondary titles, no hover fill, and a hover
chevron preview on in-place expandable rows. Settings: 800x600 layer-2
panel over a blurred mask, hover states, and wrapping selector cubes;
ModelSelect surface tokens now match the Menu primitive.
2026-07-28 04:25:18 +08:00
Tianyi Cui
7efd0a1192 Merge branch 'master' into dependabot/npm_and_yarn/native/landlock-run/types/node-26.0.1 2026-07-28 03:03:00 +08:00
Tianyi Cui
283fcd6605 Merge branch 'master' into dependabot/npm_and_yarn/native/landlock-run/typescript-6.0.3 2026-07-28 02:58:20 +08:00
Tianyi Cui
c4c142c855 Merge branch 'master' into dependabot/github_actions/actions/deploy-pages-5 2026-07-28 02:51:31 +08:00
Tianyi Cui
c49c0ba497 Merge pull request #773 from deepseek-harness/dependabot/uv/python/sdk/hatchling-gte-1.30.1
chore(deps-dev): update hatchling requirement from >=1.24.0 to >=1.30.1 in /python/sdk
2026-07-28 02:47:37 +08:00
dependabot[bot]
b2b063b667 chore(deps): bump actions/deploy-pages from 4 to 5
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 18:43:26 +00:00
Tianyi Cui
9803b1c62c Merge branch 'master' into dependabot/uv/python/sdk/hatchling-gte-1.30.1 2026-07-28 02:41:56 +08:00
Tianyi Cui
a2f6f9db39 Merge pull request #772 from deepseek-harness/dependabot/github_actions/actions/setup-python-6.3.0
chore(deps): bump actions/setup-python from 6 to 6.3.0
2026-07-28 02:41:21 +08:00
Tianyi Cui
d597cbf87a Merge branch 'master' into dependabot/github_actions/actions/setup-python-6.3.0 2026-07-28 02:36:09 +08:00
Tianyi Cui
67109cac49 Merge pull request #771 from deepseek-harness/dependabot/github_actions/actions/upload-pages-artifact-5
chore(deps): bump actions/upload-pages-artifact from 4 to 5
2026-07-28 02:35:33 +08:00
Tianyi Cui
8067ef8bd7 Merge branch 'master' into dependabot/github_actions/actions/upload-pages-artifact-5 2026-07-28 02:28:25 +08:00
Tianyi Cui
69c60d6ad6 Merge branch 'master' into dependabot/github_actions/actions/configure-pages-6 2026-07-28 02:25:00 +08:00
Tianyi Cui
6c6dd37d4f Merge pull request #741 from deepseek-harness/codex/ignore-worktree-directories
chore: ignore worktree directories
2026-07-28 02:15:51 +08:00
Tianyi Cui
629f1c638b Merge branch 'master' into worktree/sdk-public-api 2026-07-28 02:11:10 +08:00
Tianyi Cui
4da9876b30 Merge current master into codex/ignore-worktree-directories 2026-07-28 02:11:08 +08:00
Tianyi Cui
547c0ab55e Merge pull request #728 from deepseek-harness/codex/fix-acp-snapshot-refresh-volatiles
fix(snapshot): stabilize refresh volatiles
2026-07-28 01:57:40 +08:00
Tianyi Cui
7503fa896f fix(snapshot): pass refresh context in SDK snapshots 2026-07-28 01:43:40 +08:00
Tianyi Cui
3b5be72086 fix(sdk): narrow TypeScript client interface 2026-07-28 01:41:32 +08:00