| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(i18n): harden prompt response handling | 1 个月前 | |
fix(release): make publication retry, space out, and skip what landed A landlock publication failed with E409 Failed to save packument on the second of three packages. The registry answers a write it could not commit that way, and publishing several packages back to back is what provokes it. Neither publish path could recover. The native sequence published from a shell loop of bare npm publish calls: no retry, and no way to resume, because the registry rejects a repeat of an existing version permanently — so a failure partway through left the release stuck. publish.ts skipped versions already present, which made a re-run safe, but had no retry either. Both paths now attempt a tarball up to four times, space writes at least two seconds apart, and back off 2s/4s/8s between attempts. Every retry re-reads the registry first, because a reported failure can answer a write that landed anyway: a version that now exists with this tarball's integrity counts as published rather than as one to place again. That same re-read is what turns a mid-run E403 cannot publish over the previously published versions into a skip when the bytes match, and leaves it a hard failure when they do not. The native sequence gets the registry comparison publish.ts already had, through its own script rather than shared code — the two sequences keep separate publication paths. Its publish job now checks out the repository, which the shell loop did not need. Verified against a scripted registry: a clean publish, one E409 then success, an E409 whose write landed anyway, E409 on every attempt (fails after four), and a version already present with matching integrity (publishes nothing). | 27 天前 | |
docs: add link to preview paper | 27 天前 | |
docs: make technical prose concrete | 30 天前 | |
fix(notes): keep archive helpers internal | 1 个月前 | |
Merge remote-tracking branch 'origin/master' into worktree/archive-agent-notes-20260726 # Conflicts: # .agents/notes/archived/process/2026-07-23-browser-demo-gif-recording.i18n.yaml | 1 个月前 | |
docs: make technical prose concrete | 30 天前 | |
build(web): react-free vendor list for the incremental markdown pipeline, npmPackageOf scoped guard, chunk audit script | 1 个月前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
Adopt MIT for DSH packages | 27 天前 | |
test(windows): budget instrumented integration waits | 1 个月前 | |
refactor(dev-infra): narrow change scope report | 1 个月前 | |
ci: reject golden filenames on matching PRs | 1 个月前 | |
fix: address Python release review feedback | 29 天前 | |
Add lefthook git hooks with a vendor-manifest guard pre-commit: ESLint --fix on staged files (vendored source excluded), incremental typecheck, and the vendor-manifest guard — any staged change under vendor/*/src must be accompanied by a vendor/README.md update in the same commit, mechanizing the local-modification log discipline. pre-push: tests + hygiene (knip/publint/constraints). Hooks call the same package.json scripts CI runs (single source of truth); installed automatically via postinstall. | 2 个月前 | |
build(release): publish the dsh family publicly Every release member now declares publishConfig.access: public, so the scope no longer mixes levels: the 221 packages/*/* and apps/* manifests join the vendored framework and the native packages. check-workspace-constraints drops the per-sequence expectation and holds every release member to public, which is what stops a member from drifting back. Access is a property of the package, not of a version: the dsh packages already published as restricted become world-readable at their next publication. | 27 天前 | |
ci: split failover switch into per-platform Linux and Windows variables Replace the single DSH_CI_FAILOVER variable with two independent switches so an outage on one platform no longer retargets the other: - DSH_CI_FAILOVER_LINUX: the three required Linux workers (node-24, node-24-coverage, node-24-consumers) and the all-checks-passed verdict, which resolves its pool to vm-backup and keeps its concurrency and cache-restore branches. - DSH_CI_FAILOVER_WINDOWS: the non-blocking windows-native job, which resolves to the dsh-win-ci pool. all-checks-passed rides the Linux switch because it aggregates the required Linux workers and runs on the vm-backup pool. The Dependabot exclusion is preserved on both switches. The failover runbook (EN/ZH) and its translation pairing, plus the docs that referenced the old variable, are updated in the same change. | 27 天前 | |
fix(clean): remove native build state (review round 3) | 1 个月前 | |
fix(clean): remove native build state (review round 3) | 1 个月前 | |
build: order Host and Client compilation faces | 1 个月前 | |
refactor: nest client manifest metadata under dsh | 30 天前 | |
fix: rebase 3 | 28 天前 | |
Stabilize master CI across platforms | 1 个月前 | |
fix(ci): ignore translation records in Cordis config scan The Loader verifier matched docs/cordis-primer.i18n.yaml solely because its basename contained cordis. Centralize file discovery, exclude i18n sidecars, and cover Loader YAML plus excluded trees with a regression test. | 1 个月前 | |
docs: generate each subsystem's cordis surface into its own page; delete the flat catalogs Rebuild of the region machinery (PR3) on the post-#904 Typert projection: renderPageRegion/renderInheritedPage live in dsh-typert-generator beside the projection; scripts/gen-cordis-catalog.ts owns the curated SERVICE_PAGE / EVENT_SCOPE_PAGE / SERVICE_WALK_EXEMPTIONS / LINK_MAP partition (fail-loud in both directions, with the independent Context-merge scan backstopping the projection's blind spot), spliceRegion, and the guarded pair auto-record. docs/cordis-catalog/ is deleted: the flat events/services catalogs dissolve into per-page regions and docs/cordis-catalog/core moves to docs/cordis-api/ with the inherited tier as its own generated page. The partition absorbs the post-regrouping surface: ctx.typert → invariants.md, ctx.directoryPicker → workspace.md, skills/* events → skills.md, and the four launcher-provided tui accessor values join the named exemptions. | 1 个月前 | |
refactor: replace overloaded surface terminology | 29 天前 | |
build(vendor): rescope the vendored Cordis packages into @deepseek-ai Machine-produced by pnpm run rescope-vendor --apply plus the regeneration it prints: pnpm install for the lockfile, pnpm run gen-third-party-notices, verify-translation-pairing --write for the touched bilingual pairs, gen-doc-graphs, and one typert snapshot whose ids embed character offsets. pnpm run rescope-vendor --check verifies the result. Renames nine vendored packages (cordis, cosmokit, schemastery and the six @cordisjs plugins) and every reference that resolves them: manifest names and dependency keys, module specifiers including declare-module merges, cordis.yml plugin names, tsconfig paths, every Markdown fence, and docs/ prose. Directory names, upstream versions, and dependency ranges are unchanged, so vendor/README.md still reads as an upstream snapshot; its manifest table gains an upstream-name column so THIRD_PARTY_NOTICES keeps MIT attribution pointed at each fork's origin. The tutorial tier follows the rename end to end: its yaml fences named plugins the Loader can no longer resolve, its ts ignore-check fences disagreed with the compiled fences beside them, and its prose quoted both. The contracts that told readers to keep upstream names — the root convention and the vendoring cookbook's tree comment and manifest invariant — now say to rescope instead. Two rules read @deepseek-ai/ as "another workspace plugin": the client bundle purity gate now names the vendored libraries a browser bundle inlines, and the files where a bare cordis is an agent-preset id keep that product data. | 30 天前 | |
fix(ci): review follow-ups for the coverage lane split - Split DSH_COVERAGE_MAX_WORKERS between the two parallel gates (instrumented gets ~2/3, exempt gets ~1/3, both at least 1) so the lane never exceeds the budget the failover pool's 8 x 6-instance bound assumes; a budget of 1 pairs with DSH_GATE_CONCURRENCY=1 on the serial reference lanes, which already prevents gate overlap. - Fail loud on a set-but-not-'1' DSH_COVERAGE_EXEMPT_HEAVY value in vitest.config.ts instead of silently ignoring it. - Add coverage-exempt.spec.ts: each roster entry's filter and exclude must select the same non-empty spec set and entries must not overlap, so a renamed suite breaks the gate instead of silently returning to the instrumented run with a stale roster. | 1 个月前 | |
docs: make technical prose concrete | 30 天前 | |
ci: print exact uncovered locations when the coverage gate fails The per-file 100% thresholds name only the failing file. A custom istanbul reporter now prints one clickable path:line:col record per uncovered statement, branch path, and function, right above the threshold errors, in both the CI coverage lane and local test:coverage runs (they share this config). CJS because istanbul-reports loads custom reporters with a bare require() outside the tsx/ESM pipeline. | 1 个月前 | |
fix(cli): close shared config review gaps | 1 个月前 | |
feat(cli)!: dsh boots profiles; plugin subcommand manages them via pnpm dsh --profile <name> replaces the fixed entry modes: --config and -p are removed, --patch adds overlays over the composed profile, a positional task selects one-shot mode (requires the headless-runner row), and dsh web stays as the alias for --profile web carrying the Web flag family as patches. dsh plugin --profile <name> forwards verbatim to pnpm in the profile directory, initializes on first use, and reconciles the dsh.plugins layer list after add/remove (patch-less packages warn and stay plain dependencies). Config dumps and the keyless web e2e scaffold compose the same bundle layers over the same empty root as the boot. | 1 个月前 | |
refactor: nest client manifest metadata under dsh | 30 天前 | |
refactor(web): remove --dev; mount the reload chain unconditionally The client-hmr row joins the web bundle as an ordinary always-on roster row: without a rebuild watcher rewriting client bundles it polls unchanged files and stays idle. This deletes the --dev flag, the web runtime's mode config, the mode-forked prompt contract, the DSH_WEB_MODE bash variable, and the post-settlement row-creation machinery the conditional row required. dsh web + pnpm run dev:web remains the development loop. | 29 天前 | |
Merge remote-tracking branch 'origin/master' into worktree/schedule-conversational-after | 29 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
docs: make technical prose concrete | 30 天前 | |
docs: make technical prose concrete | 30 天前 | |
fix: ci | 28 天前 | |
fix: ci and static | 28 天前 | |
docs: fix release smoke test failures | 27 天前 | |
refactor(cordis): generate catalogs from Typert models | 1 个月前 | |
build(vendor): rescope the vendored Cordis packages into @deepseek-ai Machine-produced by pnpm run rescope-vendor --apply plus the regeneration it prints: pnpm install for the lockfile, pnpm run gen-third-party-notices, verify-translation-pairing --write for the touched bilingual pairs, gen-doc-graphs, and one typert snapshot whose ids embed character offsets. pnpm run rescope-vendor --check verifies the result. Renames nine vendored packages (cordis, cosmokit, schemastery and the six @cordisjs plugins) and every reference that resolves them: manifest names and dependency keys, module specifiers including declare-module merges, cordis.yml plugin names, tsconfig paths, every Markdown fence, and docs/ prose. Directory names, upstream versions, and dependency ranges are unchanged, so vendor/README.md still reads as an upstream snapshot; its manifest table gains an upstream-name column so THIRD_PARTY_NOTICES keeps MIT attribution pointed at each fork's origin. The tutorial tier follows the rename end to end: its yaml fences named plugins the Loader can no longer resolve, its ts ignore-check fences disagreed with the compiled fences beside them, and its prose quoted both. The contracts that told readers to keep upstream names — the root convention and the vendoring cookbook's tree comment and manifest invariant — now say to rescope instead. Two rules read @deepseek-ai/ as "another workspace plugin": the client bundle purity gate now names the vendored libraries a browser bundle inlines, and the files where a bare cordis is an agent-preset id keep that product data. | 30 天前 | |
docs: generate each subsystem's cordis surface into its own page; delete the flat catalogs Rebuild of the region machinery (PR3) on the post-#904 Typert projection: renderPageRegion/renderInheritedPage live in dsh-typert-generator beside the projection; scripts/gen-cordis-catalog.ts owns the curated SERVICE_PAGE / EVENT_SCOPE_PAGE / SERVICE_WALK_EXEMPTIONS / LINK_MAP partition (fail-loud in both directions, with the independent Context-merge scan backstopping the projection's blind spot), spliceRegion, and the guarded pair auto-record. docs/cordis-catalog/ is deleted: the flat events/services catalogs dissolve into per-page regions and docs/cordis-catalog/core moves to docs/cordis-api/ with the inherited tier as its own generated page. The partition absorbs the post-regrouping surface: ctx.typert → invariants.md, ctx.directoryPicker → workspace.md, skills/* events → skills.md, and the four launcher-provided tui accessor values join the named exemptions. | 1 个月前 | |
fix(session-query): rename session log export package | 28 天前 | |
• feat(self-modification): add dynamic Cordis plugin runtime and UI | 28 天前 | |
fix(scripts): share package-source selection to clear the jscpd clone The spec duplicated collectEventRelations' source-selection block; extract collectPackageSources and use it from both sides. | 1 个月前 | |
fix: test/docs | 28 天前 | |
refactor(acp): reduce bridge to automation protocol | 1 个月前 | |
docs: fix release smoke test failures | 27 天前 | |
build(vendor): rescope the vendored Cordis packages into @deepseek-ai Machine-produced by pnpm run rescope-vendor --apply plus the regeneration it prints: pnpm install for the lockfile, pnpm run gen-third-party-notices, verify-translation-pairing --write for the touched bilingual pairs, gen-doc-graphs, and one typert snapshot whose ids embed character offsets. pnpm run rescope-vendor --check verifies the result. Renames nine vendored packages (cordis, cosmokit, schemastery and the six @cordisjs plugins) and every reference that resolves them: manifest names and dependency keys, module specifiers including declare-module merges, cordis.yml plugin names, tsconfig paths, every Markdown fence, and docs/ prose. Directory names, upstream versions, and dependency ranges are unchanged, so vendor/README.md still reads as an upstream snapshot; its manifest table gains an upstream-name column so THIRD_PARTY_NOTICES keeps MIT attribution pointed at each fork's origin. The tutorial tier follows the rename end to end: its yaml fences named plugins the Loader can no longer resolve, its ts ignore-check fences disagreed with the compiled fences beside them, and its prose quoted both. The contracts that told readers to keep upstream names — the root convention and the vendoring cookbook's tree comment and manifest invariant — now say to rescope instead. Two rules read @deepseek-ai/ as "another workspace plugin": the client bundle purity gate now names the vendored libraries a browser bundle inlines, and the files where a bare cordis is an agent-preset id keep that product data. | 30 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
Adopt MIT for DSH packages | 27 天前 | |
docs: fix release smoke test failures | 27 天前 | |
docs: make technical prose concrete | 30 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
fix(i18n): preserve merge conflicts without runtime | 1 个月前 | |
fix: Windows-native CI findings on latest master Local run of check:ci:windows-complete (the windows-native gate) on latest master surfaced five Windows-only failures, all unreachable by current CI because the native windows job is disabled and the wine gate only covers build+site. - install-lefthook/translation-pairing-merge specs junctioned the real scripts/ and tsx package into fixtures; Windows recursive deletion (Node rmSync and git worktree remove) follows MOUNT_POINT junctions and deleted the repository's own directories mid-run. Fixtures now unlink their reparse points before any recursive removal (shared helper in scripts/test-fixture-cleanup.ts). - workflow-workerthread spawned its worker with an empty env; on Windows os.tmpdir() then degrades to the literal relative path undefined\temp, so tsx wrote its transform cache into a cwd-relative undefined/ directory inside the repo. The worker env now injects the host temp path on win32 (workerSpawnEnv, platform-parameterized and unit-tested on both arms). - workspace-context spec did not stub USERPROFILE (win32 homedir) or a set DSH_HOME, leaking the developer machine's real ~/.dsh/AGENTS.md into discovery. - ui-trajectory client-bundle spec mounted the built artifact without the remote/settingsScope provides the locale plugin needs, so the plugin never activated and no view registered. - subagent temp-fixture cleanup lacked the maxRetries Windows handle release needs under load (EPERM); added retries to the three affected specs and the fixture-cleanup helper. | 27 天前 | |
refactor: replace overloaded surface terminology | 29 天前 | |
docs: make technical prose concrete | 30 天前 | |
fix(scripts): address review findings on the gate consolidation - publint-all: the recursive publication view uses readdirSync {recursive} again instead of globSync('**/*') — the glob skips dot-prefixed segments (verified empirically), but npm pack publishes dotfiles inside included directories, so hidden exports were reported missing and other hidden files escaped validation - markdown.ts/verify-type-equiv: markdownFences now reports whether a closing delimiter terminates the block (mdast silently closes an unterminated fence at EOF), and verify-type-equiv rejects unclosed type-equivalence fences again — the Agent Note claimed such a block still fails at the manifest checks, but its comparisons can succeed - Agent Note EN+ZH: record the restored rejection; rewrite the zh Problem section into past tense to match the English side's shipped reality; pair re-recorded | 1 个月前 | |
fix(i18n): preserve merge conflicts without runtime | 1 个月前 | |
fix(i18n): preserve merge conflicts without runtime | 1 个月前 | |
feat(session): default JSONL writes to packed rows | 1 个月前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
fix: normalize glob paths with split(sep).join('/') on Windows glob/globSync returns host-separator paths on Windows. Nine scripts that consume these paths for split('/'), manifest-key comparison, startsWith/includes exclusion checks, or committed-output rendering now normalize with .map(s => s.split(sep).join('/')) at ingestion. This replaces the previous replaceAll('\\\\', '/') with an explicit, self-documenting OS-separator-to-POSIX conversion. | 1 个月前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
docs: deduplicate paired code-block checks | 1 个月前 | |
docs: deduplicate paired code-block checks | 1 个月前 | |
fix(ci): tolerate platform-specific coverage and curl retries | 30 天前 | |
docs(website): name the Python SDK group SDK The group holds language SDKs, and the sidebar reads SDK > Python rather than repeating the word in the page label. | 28 天前 | |
docs: fix reference sidebar ordering and group the subsystem pages The VitePress config declared no position for the subsystem or other-interface sections, so indexOf returned -1 and sorted them ahead of every declared group: the reference landing page's own sidebar entry sat 1549px below the fold. Four subsystem pages also shared order values with pages in the same section, resolved only by sort stability and array concatenation order. Section placement and collapse move into the manifest as a per-locale declaration, and sectionSpec throws for an undeclared section instead of sorting it silently to the top. Subsystem pages are grouped by concern, the six topical groups collapse until one holds the page being read, and page order derives from array position. The projector drops the language-switcher line and repository badge the canonical pages carry for their GitHub readers. The navigation bar gains the DeepSeek wordmark, a release-stage tag, and a favicon; the sidebar scrollbar rests invisible and appears while scrolling. Subsystem pages carry a two-level outline, and the two plugin-development tracks now cross-link. | 28 天前 | |
build: enforce split project reference faces | 1 个月前 | |
build: enforce split project reference faces | 1 个月前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
feat(dev-infra): make gate plans inspectable and replayable | 1 个月前 | |
fix(scripts): address review findings on the gate consolidation - publint-all: the recursive publication view uses readdirSync {recursive} again instead of globSync('**/*') — the glob skips dot-prefixed segments (verified empirically), but npm pack publishes dotfiles inside included directories, so hidden exports were reported missing and other hidden files escaped validation - markdown.ts/verify-type-equiv: markdownFences now reports whether a closing delimiter terminates the block (mdast silently closes an unterminated fence at EOF), and verify-type-equiv rejects unclosed type-equivalence fences again — the Agent Note claimed such a block still fails at the manifest checks, but its comparisons can succeed - Agent Note EN+ZH: record the restored rejection; rewrite the zh Problem section into past tense to match the English side's shipped reality; pair re-recorded | 1 个月前 | |
fix: no .map fix: no map | 29 天前 | |
Merge remote-tracking branch 'origin/master' into worktree/archive-agent-notes-20260726 # Conflicts: # .agents/notes/archived/process/2026-07-23-browser-demo-gif-recording.i18n.yaml | 1 个月前 | |
build(vendor): add the @deepseek-ai rescope codemod, its mapping doc, and its Agent Note Every harness package declares cordis as a peer dependency, so publishing the harness publishes the vendored framework layer too; under the upstream names that publication would squat them on the registry. scripts/rescope-vendor.ts owns the rename: the nine-package mapping, a delimited-token rule that leaves cordis.yml, the Loader's cordis: builtins and vendor directory names alone, per-file exemptions where a name is a directory or an upstream runtime identifier, and the exact edits for sites a token rule cannot express — dot-notation lookups, unquoted manifest keys, a regex literal whose failure would make every Context-merge scan silently find nothing, the vendored-manifest table, and the contracts that told readers vendored packages keep their upstream names. Markdown follows the rename inside every fence, because a fence is code a reader copies or configuration they mount, and in docs/ prose as well, where a sentence quoting a name teaches something this repository no longer resolves. Prose elsewhere records what was true when it was written, and the same spelling can mean something else: the Python SDK's cordis option, or the unvendored @cordisjs/plugin-http. docs/rescope.md states both names on purpose and is exempt. exactEditState() classifies every exact edit as pending, applied, or invalid. An insertion keeps its anchor and a deletion keeps its remainder, so each side counts the form that survives: a duplicated insertion, a half-applied replacement, and a deletion whose remainder moved are all invalid. The run classifies every edit before writing anything and aborts on the first invalid one, so a disagreement between the mapping and the tree cannot leave a half-rescoped checkout; each write re-reads its file, because two edits can target one. rescope-vendor.spec.ts pins those rejections, and --check asserts the whole post-state from the hygiene gate, so CI owns the invariant. --reverse restores the upstream names, verified as a round trip: reverse, then apply, reproduces this tree byte for byte. docs/rescope.md is the consumer-facing reference: the old-name/new-name table with each package's role, what the rename deliberately leaves alone, the sites callers must change, and the commands to apply, verify, and revert. The Agent Note carries the decision and its consequences. The rename itself lands in the next commit, produced by running the script. | 30 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
Adopt MIT for DSH packages | 27 天前 | |
docs: address fragment review feedback | 27 天前 | |
refactor: centralize Oxlint worker bounds | 1 个月前 | |
refactor: make lint workflows Oxlint-only | 1 个月前 | |
feat(session): default JSONL writes to packed rows | 1 个月前 | |
fix(scripts): complete fixture migration diagnostics | 1 个月前 | |
fix(scripts): complete fixture migration diagnostics | 1 个月前 | |
• feat(self-modification): add dynamic Cordis plugin runtime and UI | 28 天前 | |
fix: rebase 4 | 28 天前 | |
fix(scripts): widen fixture-cleanup EPERM retry window The failover Windows pool releases child-process and antivirus file handles slower than the hosted pool; a 1-second window (10 x 100 ms) still exhausts before release under load, so install-lefthook fixture cleanup threw EPERM in rmSync. A 10-second window (50 x 200 ms) covers the slower release without pinning afterEach cleanup, since a terminated child's handles drain once rather than reacquire. | 27 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
feat(i18n): unit-mapped briefings with mechanical --apply, adopting the #684 planner mechanics The briefing now maps each update at the narrowest safely aligned granularity, widening deterministically on mapping failure: a change confined to the pair's byte-identical code fences is computed outright (--apply splices it into the counterpart and validates the result against the pairing gate's structural signature before writing); otherwise changed Markdown units — headings, paragraphs, table rows, list items, fences, block quotes, HTML blocks, thematic breaks, link definitions, matched by container-scoped kind sequences — each carry their last-confirmed source, current source, and current counterpart text; units that do not align fall back to depth-matched heading sections (depth only, so translated heading text still maps); and when sections do not align either, or both sides drifted, the briefing says so and withholds the mapping. Terminology rows now match the changed spans only, English terms on word boundaries with plural inflections, and Chinese-target briefings track each relevant term's document-wide first occurrence — a moved occurrence pulls the vacated and receiving spans into the briefing with an explanatory note. The unit mapping, mechanical code splice, and first-occurrence tracking adopt the planner design from the incremental prompt-pipeline PR (#684), whose provider-backed bake-off independently validated the same scope ladder; this PR carries those mechanics into the agent-facing briefing path so both consumers of the consistency records behave alike. The prior line-hunk section mapping and its heading-text alignment (which could not map cross-language sections) are replaced wholesale. Docs: SKILL.md update path, i18n README pair, development.md pair, and the briefed-updates Agent Note pair brought along; the development.md fence edit was applied with --apply itself, and the prose updates were made through the new unit/section briefings. | 1 个月前 | |
docs: purge chain-of-thought leakage from prose Delete design-session citations (decision/audit/plan ordinals, stack positions), change narration, review choreography, and reviewer-addressed justification from comments, JSDoc, docs, READMEs, Agent Notes, tests, and generator templates; restate every affected fact as current-state contract prose. Fix generated docs at their sources and regenerate the catalogs and cordis-surface regions; re-paste type-equiv blocks; update every bilingual counterpart and re-record the pairs. Record the citation rule in the committed-artifact-citations Agent Note. | 1 个月前 | |
docs: make technical prose concrete | 30 天前 | |
fix: Windows-native CI findings on latest master Local run of check:ci:windows-complete (the windows-native gate) on latest master surfaced five Windows-only failures, all unreachable by current CI because the native windows job is disabled and the wine gate only covers build+site. - install-lefthook/translation-pairing-merge specs junctioned the real scripts/ and tsx package into fixtures; Windows recursive deletion (Node rmSync and git worktree remove) follows MOUNT_POINT junctions and deleted the repository's own directories mid-run. Fixtures now unlink their reparse points before any recursive removal (shared helper in scripts/test-fixture-cleanup.ts). - workflow-workerthread spawned its worker with an empty env; on Windows os.tmpdir() then degrades to the literal relative path undefined\temp, so tsx wrote its transform cache into a cwd-relative undefined/ directory inside the repo. The worker env now injects the host temp path on win32 (workerSpawnEnv, platform-parameterized and unit-tested on both arms). - workspace-context spec did not stub USERPROFILE (win32 homedir) or a set DSH_HOME, leaking the developer machine's real ~/.dsh/AGENTS.md into discovery. - ui-trajectory client-bundle spec mounted the built artifact without the remote/settingsScope provides the locale plugin needs, so the plugin never activated and no view registered. - subagent temp-fixture cleanup lacked the maxRetries Windows handle release needs under load (EPERM); added retries to the three affected specs and the fixture-cleanup helper. | 27 天前 | |
fix: address Python release review feedback | 29 天前 | |
feat(i18n): compose pairing records during merges | 1 个月前 | |
docs: complete Chinese proofreading and generated reference pairing | 1 个月前 | |
fix: address Python release review feedback | 29 天前 | |
fix: address Python release review feedback | 29 天前 | |
fix(i18n): complete prompt v4 pipeline path | 1 个月前 | |
docs: make technical prose concrete | 30 天前 | |
docs: make technical prose concrete | 30 天前 | |
fix(build): reuse TypeScript config host | 1 个月前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
docs: make technical prose concrete | 30 天前 | |
docs: make technical prose concrete | 30 天前 | |
docs: make technical prose concrete | 30 天前 | |
refactor(scripts): consolidate gate scripts on mdast fences, parseArgs, and globSync Implements the gate-consolidation Agent Note from the NIH dependency audit: - Shared markdownFences helper in scripts/markdown.ts (mdast code-node visit); doc-typecheck and verify-type-equiv extract fences through it; md-fences.ts and the duplicated extractEquivBlocks regex scanner are deleted; markdownProseLines derives fenced lines from parsed code-node positions instead of a second fence regex. - publint-all.ts and verify-built-package-invariants.mjs parse argv with node:util parseArgs instead of hand-stepped parseOptions copies. - Five straggler readdirSync walks become globSync: verify-runtime-closure, dev-web discoverPluginDirs, verify-package-paths realPackageNames, verify-client-domain-graph listSources, publint-all addPath. The dirent-diagnostic walks in check-workspace-constraints.ts and clean.ts stay. Behavior parity verified: pnpm run doc-sync and every rewritten gate produce byte-identical output before and after on this tree. Moves the owning Agent Note proposed -> implemented and re-records its pair. | 1 个月前 | |
ci: enforce bounded build lanes | 1 个月前 | |
refactor: replace overloaded surface terminology | 29 天前 | |
fix(config): cover shipped bundle source ownership | 1 个月前 | |
docs: make technical prose concrete | 30 天前 | |
refactor(loader): tighten the disabled gate and rehome the note Address review: the gate module docstring now states the actual evaluation contexts (config after injections against the plugin context, disabled at every mount decision against the loader context); metadataExpressionErrors rejects expressions nested below disabled and syntax-checks the disabled expression itself so an unparseable gate fails at the gate instead of the boot. The tutorial's !!js claims follow, and the loader note moves to implemented/architecture with its inbound links retargeted. | 29 天前 | |
refactor: apply repository naming contract Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change. | 28 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
docs: rebalance prose cleanup and add trimming skill | 1 个月前 | |
Rename RFCs to Agent Notes | 1 个月前 | |
docs: address fragment review feedback | 27 天前 | |
docs: address fragment review feedback | 27 天前 | |
Adopt MIT for DSH packages | 27 天前 | |
Adopt MIT for DSH packages | 27 天前 | |
refactor: replace overloaded surface terminology | 29 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
fix(doc-gates): review findings — GitHub-slugger parity and the surviving old-rule prose ds-review-bot round: slugs now come from RENDERED heading text (links, inline code, emphasis) with underscores kept and GitHub's occupied-set repeat suffixes; explicit <a id> anchors register only from real HTML flow (fences, inline code, and comments no longer produce phantoms); fragment matching is exact-case since element ids are. anchorCache is exported and the spec reuses it. The contradicting 'gate checks file existence, not #anchor validity' sentence in docs/AGENTS.md is gone; the dsh-doc-standards residual caveat names the real TS-string anchor homes; the 2026-06-18 cross-link note is updated to shipped behavior and cross-linked with the fragment-gate note. | 1 个月前 | |
chore: remove remaining SDK toolchain residue | 29 天前 | |
docs(notes): archive low-value decision records | 1 个月前 | |
Merge origin/master into worktree/web-plugin-config, adapting to ctx.remote.$on #2201 landed three moves this branch sits on top of. bindSettingsScope became ctx.settingsScope.bind on the Settings surface, so the section injects that service and the Remote face instead of importing a free function; the SettingsScope types moved into the runtime contract module, which is where this branch's base, user, and unset now live; and the client credentials/changed event became the forwarded owner event credentials/updated, which the web-search card subscribes to through ctx.remote.$on. The generated module graph crossed mermaid's 1000-edge render guard with this branch's 14 new edges. The guard doubles again, exactly as it did at 500 — the graph counts real package edges, and trimming them to fit a renderer default would make the document lie about the dependency set. | 29 天前 | |
refactor: replace overloaded surface terminology | 29 天前 | |
docs: make technical prose concrete | 30 天前 | |
chore: remove remaining SDK toolchain residue | 29 天前 | |
Rename RFCs to Agent Notes | 1 个月前 | |
• feat(self-modification): add dynamic Cordis plugin runtime and UI | 28 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
docs: replace nonexistent repository references | 29 天前 | |
docs: replace nonexistent repository references | 29 天前 | |
refactor(scripts): consolidate gate scripts on mdast fences, parseArgs, and globSync Implements the gate-consolidation Agent Note from the NIH dependency audit: - Shared markdownFences helper in scripts/markdown.ts (mdast code-node visit); doc-typecheck and verify-type-equiv extract fences through it; md-fences.ts and the duplicated extractEquivBlocks regex scanner are deleted; markdownProseLines derives fenced lines from parsed code-node positions instead of a second fence regex. - publint-all.ts and verify-built-package-invariants.mjs parse argv with node:util parseArgs instead of hand-stepped parseOptions copies. - Five straggler readdirSync walks become globSync: verify-runtime-closure, dev-web discoverPluginDirs, verify-package-paths realPackageNames, verify-client-domain-graph listSources, publint-all addPath. The dirent-diagnostic walks in check-workspace-constraints.ts and clean.ts stay. Behavior parity verified: pnpm run doc-sync and every rewritten gate produce byte-identical output before and after on this tree. Moves the owning Agent Note proposed -> implemented and re-records its pair. | 1 个月前 | |
fix(skill): enforce manual invocation policy | 30 天前 | |
fix(skill): enforce manual invocation policy | 30 天前 | |
fix: address Python release review feedback | 29 天前 | |
fix(i18n): harden prompt response handling | 1 个月前 | |
fix(scripts): address review findings on the gate consolidation - publint-all: the recursive publication view uses readdirSync {recursive} again instead of globSync('**/*') — the glob skips dot-prefixed segments (verified empirically), but npm pack publishes dotfiles inside included directories, so hidden exports were reported missing and other hidden files escaped validation - markdown.ts/verify-type-equiv: markdownFences now reports whether a closing delimiter terminates the block (mdast silently closes an unterminated fence at EOF), and verify-type-equiv rejects unclosed type-equivalence fences again — the Agent Note claimed such a block still fails at the manifest checks, but its comparisons can succeed - Agent Note EN+ZH: record the restored rejection; rewrite the zh Problem section into past tense to match the English side's shipped reality; pair re-recorded | 1 个月前 | |
fix(review): label host-preparation failures and gate vendored lockfile links ds-review-bot round 1: boot() now throws host preparation failed when prepare() rejects before any config-tree entry mounts (the plugin-tree label overstated), and the new hygiene gate verify-vendored-links pins the linkWorkspacePackages fix — every vendored package name in pnpm-lock.yaml must resolve to a workspace link with no registry copy alongside. | 1 个月前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
feat(desktop): add Windows desktop client with whale icon, wallpaper, and portable packaging | 25 天前 | |
fix(test): isolate jsdom storage on Node 26 | 1 个月前 | |
ci(wine): add verified archive mirror fallback | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 2 个月前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 29 天前 | ||
| 29 天前 | ||
| 28 天前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 27 天前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 30 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 27 天前 | ||
| 29 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 27 天前 | ||
| 28 天前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 27 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 29 天前 | ||
| 28 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 27 天前 | ||
| 29 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 29 天前 | ||
| 30 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 25 天前 | ||
| 29 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 1 个月前 |