github.com/DingTalk-Real-AI/dingtalk-workspace-cli
What this package is like to depend on
Last release today
23 Aug 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 56 of 59 stable releases
Nothing withdrawn
no release was ever pulled
4 months old
152 releases · first in 2026
152 releases in the last 12 months
see the full history below
Release timeline
152 releases · Mar 2026 to Aug 2026Releases
latest 60 of 152-
v1.0.60-beta.1.0.20260823105241-58e8e359483723 Aug 2026 pre-releaseNothing published for this version
-
v1.0.60-beta.1.0.20260822171411-fcfead71cbbb22 Aug 2026 pre-releaseNothing published for this version
-
v1.0.60-beta.1.0.20260821055610-8b56e9bc9efe21 Aug 2026 pre-releaseNothing published for this version
-
v1.0.60-beta.121 Aug 2026 pre-releaseRelease notes
Open source →Changed
-
OA, DING, and Report shortcuts — hardens response, identity, pagination, and confirmation contracts; publishes verified form search, receiver status, and report read workflows while withholding shortcuts that lack trustworthy downstream evidence.
-
Stable release sealing — directly preparing a stable release now renders and archives release fragments merged after its beta baseline, avoiding a forced extra beta solely to consume pending notes.
Fixed
-
Calendar empty windows (#1074) — returns a legitimate empty result when the service emits its exact exhausted empty-event sentinel.
-
Task update verification (#1074) — compares due-time readback as exact milliseconds so committed updates are no longer reported as failures.
-
Comment reaction validation (#1074) — narrows accepted reaction input to reviewed DingTalk emoji names and rejects Unicode emoji and unsupported names such as
likeandheartbefore the RPC. -
OAuth refresh falls back to the organization mirror — when the server rejects the
current identity'srefresh_tokenwith the reviewedinvalidParameter.authCode.notFound
business code,dwsnow retries once with the still-valid token mirrored in the same
organization's slot (same corp, matching or backfilled user identity) before giving up,
and writes the rotated credential back to both the identity and the organization slots so
the fallback stays usable on later refreshes. Transient failures and direct-mode HTTP
rejections without a reviewed business code do not trigger the fallback.
Release notes
Open source →Changed
-
OA, DING, and Report shortcuts — hardens response, identity, pagination, and confirmation contracts; publishes verified form search, receiver status, and report read workflows while withholding shortcuts that lack trustworthy downstream evidence.
-
Stable release sealing — directly preparing a stable release now renders and archives release fragments merged after its beta baseline, avoiding a forced extra beta solely to consume pending notes.
Fixed
-
Calendar empty windows (#1074) — returns a legitimate empty result when the service emits its exact exhausted empty-event sentinel.
-
Task update verification (#1074) — compares due-time readback as exact milliseconds so committed updates are no longer reported as failures.
-
Comment reaction validation (#1074) — narrows accepted reaction input to reviewed DingTalk emoji names and rejects Unicode emoji and unsupported names such as
likeandheartbefore the RPC. -
OAuth refresh falls back to the organization mirror — when the server rejects the current identity's
refresh_tokenwith the reviewedinvalidParameter.authCode.notFoundbusiness code,dwsnow retries once with the still-valid token mirrored in the same organization's slot (same corp, matching or backfilled user identity) before giving up, and writes the rotated credential back to both the identity and the organization slots so the fallback stays usable on later refreshes. Transient failures and direct-mode HTTP rejections without a reviewed business code do not trigger the fallback.
-
-
v1.0.60-0.20260820084555-62d72ad84cb620 Aug 2026 pre-releaseNothing published for this version
-
v1.0.5920 Aug 2026Release notes
Open source →This release promotes the sealed
v1.0.59-beta.5contents to stable.Changed
-
Chat personal emotions — adds commands to list, send, and favorite the current user's personal favorite emotions.
-
Minutes, DingTalk tasks, and Wiki parameter aliases — adds reviewed parameter-name normalization, ambiguity guards, and end-to-end payload coverage.
-
Shortcut functional workflows — fixes Drive preview accuracy, AITable write verification and deletion accounting, Wiki feeds, and false-success handling across task, Contact, Minutes, and Wiki operations.
Release notes
Open source →This release promotes the sealed
v1.0.59-beta.5contents to stable.Changed
-
Chat personal emotions — adds commands to list, send, and favorite the current user's personal favorite emotions.
-
Minutes, DingTalk tasks, and Wiki parameter aliases — adds reviewed parameter-name normalization, ambiguity guards, and end-to-end payload coverage.
-
Shortcut functional workflows — fixes Drive preview accuracy, AITable write verification and deletion accounting, Wiki feeds, and false-success handling across task, Contact, Minutes, and Wiki operations.
-
-
v1.0.59-beta.520 Aug 2026 pre-releaseRelease notes
Open source →Added
-
Chat personal emotions — adds
chat emotion list,chat emotion send, andchat emotion favoritefor current-user personal favorite emotion listing, sending, and favoriting. -
Minutes, DingTalk tasks, and Wiki parameter aliases — adds reviewed parameter-name normalization, ambiguity guards, and end-to-end payload coverage for the three products.
Fixed
- Shortcut functional workflows (#1050) — fixes truthful Drive push/sync previews, strict AITable write verification and deletion accounting, lossless Wiki feeds, and false-success handling across task, Contact, Minutes, and Wiki operations.
Release notes
Open source →Added
-
Chat personal emotions — adds
chat emotion list,chat emotion send, andchat emotion favoritefor current-user personal favorite emotion listing, sending, and favoriting. -
Minutes, DingTalk tasks, and Wiki parameter aliases — adds reviewed parameter-name normalization, ambiguity guards, and end-to-end payload coverage for the three products.
Fixed
- Shortcut functional workflows (#1050) — fixes truthful Drive push/sync previews, strict AITable write verification and deletion accounting, lossless Wiki feeds, and false-success handling across task, Contact, Minutes, and Wiki operations.
-
-
v1.0.59-beta.420 Aug 2026 pre-releaseRelease notes
Open source →Added
-
招聘职位管理 (#976) — 新增招聘职位列表、详情查询和职位创建命令。
-
OA admin approval query —
oa approval list-by-adminqueries approval instances of a template with admin scope, with simple flags and an advanced--requestmode;startTime/endTimeuseyyyy-MM-dd HH:mm:ssstrings per the 2026-08 MCP contract update (ISO-8601 flag inputs auto-convert), and pageSize/time format are validated client-side with localized errors.
Changed
-
Attendance and Mail Shortcuts (#1045) — publishes only capabilities with
strict response, identity, pagination, and real-data verification while
retaining historical CLI discovery and argument compatibility for commands
that remain unavailable to agents. Mailbox auto-resolution now accepts both
reviewed string and object response shapes, and Attendance date ranges cover
the complete requested end date without dropping cross-midnight punches whose
actual check time is inside the requested range. The schedule query remains
CLI-compatible but is withheld from the Agent catalog because its downstream
service returns a successful process exit with a null body for both populated
and empty ranges. -
Chat group roles (#1058) — exposes the single-value
--role-idflag for assigning one custom group role while preserving hidden--role-idscompatibility. -
CLI compatibility governance — adds a reviewed two-stage path for hiding retained legacy commands or optional
NoOpt=trueboolean flags from Help and Schema when their activated capability moves to a dedicated command, with legacy-leaf, complete parameter/constant mapping, durable runtime constant evidence, protected framework bridges, dry-run preservation, parameter-collision, and fail-closed required-parameter checks.
Fixed
-
Canonical Agent Skills (#996) — installs bundled DWS Skills once under
~/.agents/skills, migrates duplicate Agent copies, and matches the upstream 76-Agent registry across Go, npm, Shell, and PowerShell. Non-universal Agents use directory links — junctions on Windows from the npm and PowerShell installers, symbolic links fromdws upgrade/dws skill setup— with a safe copy fallback when link creation is unavailable (including Windows without Developer Mode); custom/XDG homes and OpenClaw legacy aliases are preserved. Upgrades now back up and restore Skills safely across external volumes by staging, lexically copying links (including dangling links), verifying contents, and deleting the source only after publication succeeds. Atomic no-replace publication and identity-checked quarantine rollback preserve concurrent user changes instead of overwriting or recursively deleting them; filesystems that reject the no-replace flag (NFS, FUSE, overlayfs) keep the no-clobber contract by holding the claimed destination for the entire transaction — renaming over the claim where the platform permits it, otherwise moving the source children into it — instead of unlinking the claim and retrying a plain rename, which opened a window where a concurrent directory could be overwritten. A degraded child-move that cannot consume the emptied source shell fails the publication loudly with the destination retained, so a failed move never silently discards staging data. When the fresh mkdir-claim identity captured by the child-move fallback — dev:ino on POSIX, the volume file ID on Windows — no longer matches the destination, the publication reportsErrSkillPathPublicationUncertainand keeps the destination: the object may belong to a concurrent writer, and the mono/multi upgrade copy fallbacks as well asdws skill setuphonor the sentinel by surfacing the state instead of retrying over (and displacing) it. npm same-volume and cross-volume moves, PowerShell recoverably moves, and npm canonical-link / copied-set confirmation follow the same occupy-then-confirm contract. Same-volume publication and restore use a no-replace primitive (mkdir-claim plus child move, symlink-at-dest, or hard-link plus retract) so a dest that becomes occupied after any pre-check is refused instead of replaced. A rollback that has already quarantined dest re-checks identity in quarantine and restores an unmatched object onto dest with that same no-replace publish, so dest is not left empty with the concurrent object hidden unless the restore itself fails (then both locations are named). The npm installer now proves ownership at dest (inode, device, fingerprint) before any quarantine rename, matching Go: a concurrent replacement is left on the original path, and only a post-quarantine identity change is restored with no-replace. Go identity proofs report a stable file identity on every platform — dev:ino on Linux and macOS, the volume file ID on Windows — with the post-publish content fingerprint as the backstop against inode recycling; Shell copied-set rollback proves dest first with inode, child names, and a recursive content digest (sorted paths, mode bits, file hashes, link targets) for the same reason, so an in-place content edit after publish is preserved rather than retracted as this transaction's object. The npm installer's mono and multi set copy publication claims the destination with an atomic mkdir before moving the staged children into it, and canonical link publication creates the symlink or junction directly at the destination, so a concurrently created file, symlink, or directory is refused atomically instead of being replaced by Node's replacing rename or linked into byln -Pon POSIX or Windows. The standalone event/devapp copy publishers use the same mkdir claim instead ofmving a staging directory onto dest. Shell copied-set and link rollback claim dest into quarantine before deleting, so a concurrent writer's file, symlink, or directory is renamed back instead of being deleted by a path-blindrmafter an inode pre-check. Because that degraded publication has no atomic no-clobber primitive for a link,dws skill setupfalls back to a direct copy when a link fails to publish as well as when it fails to stage, so non-universal Agents are still configured on those filesystems — except when the failure reports the uncertain sentinel, which retains the destination for manual inspection instead of retrying over it. Failing to retire an obsolete Agent copy is now a warning rather than an install failure. Every install surface prunes~/.dws/skill-backupsto the newest 5 batches from earlier runs while never deleting a backup taken by the run in progress, so a migration that retires more than 5 batches stays reversible; stamp roots created before the ownership marker existed are preserved rather than pruned. Standalone installers verify every downloaded release asset againstchecksums.txt, and the npm engine declaration now reflects the actual Node 16.7+ API floor. -
Chat user mentions — preserves literal
<@openDingTalkId>tokens in current-user Markdown messages and rejects mismatches between message-body mentions and mention flags before sending. -
Chat direct media — uses the IM upload target field for current-user direct file, audio, and video uploads, then uses the Chat receiver field for final message delivery.
Release notes
Open source →Added
-
招聘职位管理 (#976) — 新增招聘职位列表、详情查询和职位创建命令。
-
OA admin approval query —
oa approval list-by-adminqueries approval instances of a template with admin scope, with simple flags and an advanced--requestmode;startTime/endTimeuseyyyy-MM-dd HH:mm:ssstrings per the 2026-08 MCP contract update (ISO-8601 flag inputs auto-convert), and pageSize/time format are validated client-side with localized errors.
Changed
-
Attendance and Mail Shortcuts (#1045) — publishes only capabilities with strict response, identity, pagination, and real-data verification while retaining historical CLI discovery and argument compatibility for commands that remain unavailable to agents. Mailbox auto-resolution now accepts both reviewed string and object response shapes, and Attendance date ranges cover the complete requested end date without dropping cross-midnight punches whose actual check time is inside the requested range. The schedule query remains CLI-compatible but is withheld from the Agent catalog because its downstream service returns a successful process exit with a null body for both populated and empty ranges.
-
Chat group roles (#1058) — exposes the single-value
--role-idflag for assigning one custom group role while preserving hidden--role-idscompatibility. -
CLI compatibility governance — adds a reviewed two-stage path for hiding retained legacy commands or optional
NoOpt=trueboolean flags from Help and Schema when their activated capability moves to a dedicated command, with legacy-leaf, complete parameter/constant mapping, durable runtime constant evidence, protected framework bridges, dry-run preservation, parameter-collision, and fail-closed required-parameter checks.
Fixed
-
Canonical Agent Skills (#996) — installs bundled DWS Skills once under
~/.agents/skills, migrates duplicate Agent copies, and matches the upstream 76-Agent registry across Go, npm, Shell, and PowerShell. Non-universal Agents use directory links — junctions on Windows from the npm and PowerShell installers, symbolic links fromdws upgrade/dws skill setup— with a safe copy fallback when link creation is unavailable (including Windows without Developer Mode); custom/XDG homes and OpenClaw legacy aliases are preserved. Upgrades now back up and restore Skills safely across external volumes by staging, lexically copying links (including dangling links), verifying contents, and deleting the source only after publication succeeds. Atomic no-replace publication and identity-checked quarantine rollback preserve concurrent user changes instead of overwriting or recursively deleting them; filesystems that reject the no-replace flag (NFS, FUSE, overlayfs) keep the no-clobber contract by holding the claimed destination for the entire transaction — renaming over the claim where the platform permits it, otherwise moving the source children into it — instead of unlinking the claim and retrying a plain rename, which opened a window where a concurrent directory could be overwritten. A degraded child-move that cannot consume the emptied source shell fails the publication loudly with the destination retained, so a failed move never silently discards staging data. When the fresh mkdir-claim identity captured by the child-move fallback — dev:ino on POSIX, the volume file ID on Windows — no longer matches the destination, the publication reportsErrSkillPathPublicationUncertainand keeps the destination: the object may belong to a concurrent writer, and the mono/multi upgrade copy fallbacks as well asdws skill setuphonor the sentinel by surfacing the state instead of retrying over (and displacing) it. npm same-volume and cross-volume moves, PowerShell recoverably moves, and npm canonical-link / copied-set confirmation follow the same occupy-then-confirm contract. Same-volume publication and restore use a no-replace primitive (mkdir-claim plus child move, symlink-at-dest, or hard-link plus retract) so a dest that becomes occupied after any pre-check is refused instead of replaced. A rollback that has already quarantined dest re-checks identity in quarantine and restores an unmatched object onto dest with that same no-replace publish, so dest is not left empty with the concurrent object hidden unless the restore itself fails (then both locations are named). The npm installer now proves ownership at dest (inode, device, fingerprint) before any quarantine rename, matching Go: a concurrent replacement is left on the original path, and only a post-quarantine identity change is restored with no-replace. Go identity proofs report a stable file identity on every platform — dev:ino on Linux and macOS, the volume file ID on Windows — with the post-publish content fingerprint as the backstop against inode recycling; Shell copied-set rollback proves dest first with inode, child names, and a recursive content digest (sorted paths, mode bits, file hashes, link targets) for the same reason, so an in-place content edit after publish is preserved rather than retracted as this transaction's object. The npm installer's mono and multi set copy publication claims the destination with an atomic mkdir before moving the staged children into it, and canonical link publication creates the symlink or junction directly at the destination, so a concurrently created file, symlink, or directory is refused atomically instead of being replaced by Node's replacing rename or linked into byln -Pon POSIX or Windows. The standalone event/devapp copy publishers use the same mkdir claim instead ofmving a staging directory onto dest. Shell copied-set and link rollback claim dest into quarantine before deleting, so a concurrent writer's file, symlink, or directory is renamed back instead of being deleted by a path-blindrmafter an inode pre-check. Because that degraded publication has no atomic no-clobber primitive for a link,dws skill setupfalls back to a direct copy when a link fails to publish as well as when it fails to stage, so non-universal Agents are still configured on those filesystems — except when the failure reports the uncertain sentinel, which retains the destination for manual inspection instead of retrying over it. Failing to retire an obsolete Agent copy is now a warning rather than an install failure. Every install surface prunes~/.dws/skill-backupsto the newest 5 batches from earlier runs while never deleting a backup taken by the run in progress, so a migration that retires more than 5 batches stays reversible; stamp roots created before the ownership marker existed are preserved rather than pruned. Standalone installers verify every downloaded release asset againstchecksums.txt, and the npm engine declaration now reflects the actual Node 16.7+ API floor. -
Chat user mentions — preserves literal
<@openDingTalkId>tokens in current-user Markdown messages and rejects mismatches between message-body mentions and mention flags before sending. -
Chat direct media — uses the IM upload target field for current-user direct file, audio, and video uploads, then uses the Chat receiver field for final message delivery.
-
-
v1.0.59-beta.319 Aug 2026 pre-releaseRelease notes
Open source →Added
-
Robot group reference replies (#928) —
chat message send-by-botsupports paired--replyand--ref-senderflags for Markdown replies that quote an existing group message. -
AI Table server-side statistics — adds
dws aitable record statsfor
ungrouped record-set metrics throughquery_records_stats, plusdws aitable record group-statsfor grouped, distinct, and advanced aggregation through
query_stats; both commands validate their JSON aggregation contracts before
dispatch. -
Calendar event share-info (#980) — adds
dws calendar event share-infoto fetch a calendar event's share info (title, organizer, location, join info) for sharing with others; supports--calendar-idand--language. -
Calendar and To-do Shortcut workflows — aligns 47 public task-oriented
entries with lark-cli where the DingTalk backend supports equivalent
semantics, rejects malformed or missing collections instead of returning
false empty success, preserves truthful pagination, and requires stable
identifiers plus read-back or explicit terminal receipts for writes. Adds
deterministic contract coverage, a PII-safe live E2E runner, and a sanitized
capability review with documented platform boundaries. -
Doc and Sheet comment lifecycle commands — adds
comment batch-query,
comment resolve,comment restore, and the lightweight
comment react-replyto bothdws docanddws sheet. The two domains share
the samedoc-commentMCP capabilities; batch queries preserve input order
for repeatedtopicId:commentKeyreferences, while reaction replies require
DingTalk reaction names such as憨笑or鼓掌rather than raw Unicode emoji. -
Sheet SourceRange dropdowns — supports range-backed dropdowns across direct, cell, and batch write paths, with structured readback for valid and invalid references. Batch
set-dropdownnow rejects unsupported top-levelcolors/source-colors; Inline colors belong inoptions[].color, while SourceRange color writes remain unsupported. -
Sheet read completion metadata — documents and preserves returned ranges, truncation reasons, and partial-read status for large range and CSV reads.
Changed
-
AI Table parameter aliases — accepts reviewed equivalent spellings for Base, table, workflow, search, pagination, and description parameters while keeping role-changing or semantically ambiguous inputs blocked.
-
Doc/drive description scope — restates the
dingtalk-docdescription as document-entity-and-content operations with an explicit exclusion list, and narrowsdingtalk-driveto file-level management of DingTalk documents, so first-round Agent selection separates content work from file management without changing CLI behavior.
Fixed
-
Aitable pagination and Minutes unshare verification (#1006) — keeps
record queries on the service's 20-record page boundary so multi-page reads
and mutation readbacks no longer report false retryable failures, preserves
totalCountwhen supplied, validates--dry-runplans before transport,
follows active deletion readback continuations before proving absence, and
rejects Minutes unshare success until the listening note exists and the
service acknowledges the exact task and member targets. -
Document write verification (#960) — avoids false partial-success results when normalized Markdown, paginated blocks, inline images, or version reverts are confirmed by server readback. Document reverts and media inserts now require explicit readback evidence and report partial success when the server cannot prove the requested result.
-
Chat sender identity guards — preserves unverified mixed sender inputs after exact message
senderIdmatches and aligns--sender-querySkill guidance with fail-closed Runtime behavior. -
Windows event bus lifecycle — start event consumers without unsupported inherited file descriptors, stop buses through local IPC with a termination fallback, and preserve subscription cleanup when startup fails.
Release notes
Open source →Added
-
Robot group reference replies (#928) —
chat message send-by-botsupports paired--replyand--ref-senderflags for Markdown replies that quote an existing group message. -
AI Table server-side statistics — adds
dws aitable record statsfor ungrouped record-set metrics throughquery_records_stats, plusdws aitable record group-statsfor grouped, distinct, and advanced aggregation throughquery_stats; both commands validate their JSON aggregation contracts before dispatch. -
Calendar event share-info (#980) — adds
dws calendar event share-infoto fetch a calendar event's share info (title, organizer, location, join info) for sharing with others; supports--calendar-idand--language. -
Calendar and To-do Shortcut workflows — aligns 47 public task-oriented entries with lark-cli where the DingTalk backend supports equivalent semantics, rejects malformed or missing collections instead of returning false empty success, preserves truthful pagination, and requires stable identifiers plus read-back or explicit terminal receipts for writes. Adds deterministic contract coverage, a PII-safe live E2E runner, and a sanitized capability review with documented platform boundaries.
-
Doc and Sheet comment lifecycle commands — adds
comment batch-query,comment resolve,comment restore, and the lightweightcomment react-replyto bothdws docanddws sheet. The two domains share the samedoc-commentMCP capabilities; batch queries preserve input order for repeatedtopicId:commentKeyreferences, while reaction replies require DingTalk reaction names such as憨笑or鼓掌rather than raw Unicode emoji. -
Sheet SourceRange dropdowns — supports range-backed dropdowns across direct, cell, and batch write paths, with structured readback for valid and invalid references. Batch
set-dropdownnow rejects unsupported top-levelcolors/source-colors; Inline colors belong inoptions[].color, while SourceRange color writes remain unsupported. -
Sheet read completion metadata — documents and preserves returned ranges, truncation reasons, and partial-read status for large range and CSV reads.
Changed
-
AI Table parameter aliases — accepts reviewed equivalent spellings for Base, table, workflow, search, pagination, and description parameters while keeping role-changing or semantically ambiguous inputs blocked.
-
Doc/drive description scope — restates the
dingtalk-docdescription as document-entity-and-content operations with an explicit exclusion list, and narrowsdingtalk-driveto file-level management of DingTalk documents, so first-round Agent selection separates content work from file management without changing CLI behavior.
Fixed
-
Aitable pagination and Minutes unshare verification (#1006) — keeps record queries on the service's 20-record page boundary so multi-page reads and mutation readbacks no longer report false retryable failures, preserves
totalCountwhen supplied, validates--dry-runplans before transport, follows active deletion readback continuations before proving absence, and rejects Minutes unshare success until the listening note exists and the service acknowledges the exact task and member targets. -
Document write verification (#960) — avoids false partial-success results when normalized Markdown, paginated blocks, inline images, or version reverts are confirmed by server readback. Document reverts and media inserts now require explicit readback evidence and report partial success when the server cannot prove the requested result.
-
Chat sender identity guards — preserves unverified mixed sender inputs after exact message
senderIdmatches and aligns--sender-querySkill guidance with fail-closed Runtime behavior. -
Windows event bus lifecycle — start event consumers without unsupported inherited file descriptors, stop buses through local IPC with a termination fallback, and preserve subscription cleanup when startup fails.
-
-
v1.0.59-beta.2.0.20260817111030-9e3a5d6fbd3817 Aug 2026 pre-releaseNothing published for this version
-
v1.0.59-beta.217 Aug 2026 pre-releaseRelease notes
Open source →Added
-
Privacy-safe CLI telemetry (#1009) — reports reviewed command outcomes and profile identity dimensions while excluding command arguments, output, paths, device fingerprints, and automatic system dimensions;
DO_NOT_TRACK=1disables reporting. -
Feedback survey entry in root help (#1019) —
dws --helpnow closes with a Feedback section linking the user-experience survey form. -
Wiki Shortcut workflows — publishes 20 reviewed space, member, node, and
activity shortcuts with strict collection validation, cursor handling,
write-terminal evidence, safe read-backs where the backend supports them,
task-oriented routing, and documented backend
boundaries.
Changed
-
Chat IM ID flags (#954) — standardizes chat command entry points on
--conversation-idfor conversation IDs and--message-idfor message IDs, so help, Schema, and Agent recommendations use the same canonical flags. -
Legacy chat flag compatibility (#954) — keeps older chat IM ID flags such as
--group,--id,--chat,--open-conversation-id,--msg-id, and--open-message-idworking as compatibility aliases where applicable, while hiding migrated aliases from recommended help and Schema surfaces. -
Chat group bots target flag (#954) — keeps
dws chat group botson the visible--groupflag; this command does not register--group-name, and--groupaccepts either an openConversationId or a uniquely resolved group name. -
Faster Schema Catalog assembly — projects typed values into payload JSON
without re-running a validation scan over documentsjson.Marshalhas just
produced, cutting roughly a third of the projection work across the full tool
set. Untrusted JSON input keeps its existing validation.
Fixed
- Chat card update evidence — distinguishes an accepted update request from an independently verified visible update, preserving the real
bizIdand warning callers not to repeat an unverified write. - Chat command guidance — splits message and group references by task and explains that
--fromis ambiguous between sender and time-range intent.
Release notes
Open source →Added
-
Privacy-safe CLI telemetry (#1009) — reports reviewed command outcomes and profile identity dimensions while excluding command arguments, output, paths, device fingerprints, and automatic system dimensions;
DO_NOT_TRACK=1disables reporting. -
Feedback survey entry in root help (#1019) —
dws --helpnow closes with a Feedback section linking the user-experience survey form. -
Wiki Shortcut workflows — publishes 20 reviewed space, member, node, and activity shortcuts with strict collection validation, cursor handling, write-terminal evidence, safe read-backs where the backend supports them, task-oriented routing, and documented backend boundaries.
Changed
-
Chat IM ID flags (#954) — standardizes chat command entry points on
--conversation-idfor conversation IDs and--message-idfor message IDs, so help, Schema, and Agent recommendations use the same canonical flags. -
Legacy chat flag compatibility (#954) — keeps older chat IM ID flags such as
--group,--id,--chat,--open-conversation-id,--msg-id, and--open-message-idworking as compatibility aliases where applicable, while hiding migrated aliases from recommended help and Schema surfaces. -
Chat group bots target flag (#954) — keeps
dws chat group botson the visible--groupflag; this command does not register--group-name, and--groupaccepts either an openConversationId or a uniquely resolved group name. -
Faster Schema Catalog assembly — projects typed values into payload JSON without re-running a validation scan over documents
json.Marshalhas just produced, cutting roughly a third of the projection work across the full tool set. Untrusted JSON input keeps its existing validation.
Fixed
- Chat card update evidence — distinguishes an accepted update request from an independently verified visible update, preserving the real
bizIdand warning callers not to repeat an unverified write. - Chat command guidance — splits message and group references by task and explains that
--fromis ambiguous between sender and time-range intent.
-
-
v1.0.59-beta.114 Aug 2026 pre-releaseRelease notes
Open source →Added
-
Drive list type/time filtering (#942) —
dws drive listgains--type file|folder,--start, and--endfor client-side filtering by node type
and modification time on both the pan and workspace routes. Filtering runs
a bounded full scan of the target directory (2000-entry cap, reported via
truncated=true), composes with--latest/--pattern/--depth, and is
mutually exclusive with--versions/--cursor/--order-by/--order/
--limit. Time values accept relative forms (24h/7d/2w), RFC 3339,
zone-less ISO 8601 (Asia/Shanghai), or a plain date. -
Drive folder synchronization — adds
dws drive status,dws drive pull,
dws drive push, anddws drive syncfor file-level comparison and transfer
between a local folder and a Drive folder. Differences come from exact MD5 by
default or from modification time with--quick;statusis read-only,pull
andpushare one-directional with--if-exists skip|smart|overwrite, and
syncis bidirectional with--on-conflict remote-wins|local-wins|keep-both|ask.
Only regular files are transferred — online documents and shortcuts are skipped,
neither side deletes extra files, downloads are staged through a temporary file
and committed with an atomic rename, and remote names that would escape
--local-folderare reported as failures instead of being written. Every command
prints a structured summary on stdout and exits non-zero when any item fails. -
International DingTalk region support — adds
.iologin and MCP routing, pre-release endpoint overrides, and profile-aware gateway selection while preserving the existing.comflow.
Changed
- Chat identity routing — validates explicit
openDingTalkIdinputs and improves name,userId, andopenDingTalkIdrouting for message shortcuts.
Fixed
-
Drive
--latestrefuses incomplete Top-N (#899) —dws drive list --latestused to
exit 0 with a "Top-N" computed over a partially scanned tree whenever a directory read
failed mid-recursion (permission denied, API error), letting an incomplete set pose as the
globally newest files. Truncation at the 2000-item scan cap and mid-recursion directory
failures now both fail closed (LATEST_SCAN_TRUNCATED/LATEST_SCAN_INCOMPLETE), report
the first failing folder with its depth and reason, and emit a recovery command that
reproduces the original candidate set — query domain,--folder,--pattern,--type,
--startand--endare all carried over. On POSIX shells each user-supplied value is
quoted so a URL query string or a shell metacharacter cannot change how the copied command
parses. On Windows no quoting form is safe for bothcmd.exeand PowerShell, so values
containing metacharacters are not inlined at all: the command carries a placeholder and the
original value is shown on a separate line marked as data rather than an executable command.
Unrecoverable errors under--latestreturn the root cause instead of a partial result.
Remote-controlled folder names and server error text are stripped of ANSI escapes and
control characters before they reach the plain-text stderr message. The internalsortTime
sort key no longer leaks intodrive list --depthoutput on any path. -
Drive list pattern filtering (#942) —
dws drive list --patternon the
single-layer pan route now filters the returned page by name pattern; the
flag was previously accepted but silently ignored. -
Drive list
--type folder --latestcomposition (#942) —--latestnow
ranks the filtered entries (folders included when--type folderis set)
instead of unconditionally dropping folders, so the documented combination
returns the most recently modified folders rather than an empty list. -
Chat message time defaults (#973) — default omitted
chat message list-alltime bounds inAsia/Shanghaiwhen emitting timezone-lessyyyy-MM-dd HH:mm:ssvalues, matching parsing semantics and rejecting reversed windows. -
Doc and Drive parameter aliases — normalizes reviewed identifier, pagination, path, version, and role synonyms while blocking ambiguous values before dispatch.
Release notes
Open source →Added
-
Drive list type/time filtering (#942) —
dws drive listgains--type file|folder,--start, and--endfor client-side filtering by node type and modification time on both the pan and workspace routes. Filtering runs a bounded full scan of the target directory (2000-entry cap, reported viatruncated=true), composes with--latest/--pattern/--depth, and is mutually exclusive with--versions/--cursor/--order-by/--order/--limit. Time values accept relative forms (24h/7d/2w), RFC 3339, zone-less ISO 8601 (Asia/Shanghai), or a plain date. -
Drive folder synchronization — adds
dws drive status,dws drive pull,dws drive push, anddws drive syncfor file-level comparison and transfer between a local folder and a Drive folder. Differences come from exact MD5 by default or from modification time with--quick;statusis read-only,pullandpushare one-directional with--if-exists skip|smart|overwrite, andsyncis bidirectional with--on-conflict remote-wins|local-wins|keep-both|ask. Only regular files are transferred — online documents and shortcuts are skipped, neither side deletes extra files, downloads are staged through a temporary file and committed with an atomic rename, and remote names that would escape--local-folderare reported as failures instead of being written. Every command prints a structured summary on stdout and exits non-zero when any item fails. -
International DingTalk region support — adds
.iologin and MCP routing, pre-release endpoint overrides, and profile-aware gateway selection while preserving the existing.comflow.
Changed
- Chat identity routing — validates explicit
openDingTalkIdinputs and improves name,userId, andopenDingTalkIdrouting for message shortcuts.
Fixed
-
Drive
--latestrefuses incomplete Top-N (#899) —dws drive list --latestused to exit 0 with a "Top-N" computed over a partially scanned tree whenever a directory read failed mid-recursion (permission denied, API error), letting an incomplete set pose as the globally newest files. Truncation at the 2000-item scan cap and mid-recursion directory failures now both fail closed (LATEST_SCAN_TRUNCATED/LATEST_SCAN_INCOMPLETE), report the first failing folder with its depth and reason, and emit a recovery command that reproduces the original candidate set — query domain,--folder,--pattern,--type,--startand--endare all carried over. On POSIX shells each user-supplied value is quoted so a URL query string or a shell metacharacter cannot change how the copied command parses. On Windows no quoting form is safe for bothcmd.exeand PowerShell, so values containing metacharacters are not inlined at all: the command carries a placeholder and the original value is shown on a separate line marked as data rather than an executable command. Unrecoverable errors under--latestreturn the root cause instead of a partial result. Remote-controlled folder names and server error text are stripped of ANSI escapes and control characters before they reach the plain-text stderr message. The internalsortTimesort key no longer leaks intodrive list --depthoutput on any path. -
Drive list pattern filtering (#942) —
dws drive list --patternon the single-layer pan route now filters the returned page by name pattern; the flag was previously accepted but silently ignored. -
Drive list
--type folder --latestcomposition (#942) —--latestnow ranks the filtered entries (folders included when--type folderis set) instead of unconditionally dropping folders, so the documented combination returns the most recently modified folders rather than an empty list. -
Chat message time defaults (#973) — default omitted
chat message list-alltime bounds inAsia/Shanghaiwhen emitting timezone-lessyyyy-MM-dd HH:mm:ssvalues, matching parsing semantics and rejecting reversed windows. -
Doc and Drive parameter aliases — normalizes reviewed identifier, pagination, path, version, and role synonyms while blocking ambiguous values before dispatch.
-
-
v1.0.59-0.20260813131711-608edfa3098413 Aug 2026 pre-releaseNothing published for this version
-
v1.0.59-0.20260813124625-dd604455cc4e13 Aug 2026 pre-releaseNothing published for this version
-
v1.0.59-0.20260813115141-91090a13b9a013 Aug 2026 pre-releaseNothing published for this version
-
v1.0.5813 Aug 2026Release notes
Open source →This release promotes the sealed
v1.0.58-beta.6contents to stable.Changed
- Expanded collaborative workflows — adds full AI Table, Sheet, Minutes, approval-event, Drive-comment, document export, and CSV workflow support, including safer validation, explicit confirmation for writes, and machine-readable completion receipts.
- More capable Chat operations — adds robot image/file messages, toolbar management, streaming-card mentions, automatic pagination controls, and clearer post-send ID, Markdown-image, paging, and result-shape guidance.
- Reliable Agent and CLI contracts — expands Agent-visible Chat and Minutes commands, aligns bundled skills, improves schema/result envelopes, and hardens parameter, pagination, runtime-token, and write-result verification so ambiguous or incomplete operations fail closed.
- Multi-skill install and upgrade — makes the multi-skill layout the default for fresh installs and upgrades while preserving an explicit legacy mono option.
- Safer release delivery — strengthens release-equivalent compatibility, sealing, package verification, and evaluation-dispatch checks for more reliable cross-platform releases.
-
v1.0.58-preview04 Jul 2026 pre-releaseNothing published for this version
-
v1.0.58-beta.613 Aug 2026 pre-releaseRelease notes
Open source →Fixed
- npm package verification for multi-skill installs (#991) — aligns the release verifier with the installer’s concrete Agent skill-root selection, preventing valid multi-skill package layouts from failing release delivery.
Changed
- Release-seal CI classification (#987) — recognizes the reviewed CHANGELOG-and-fragment archival shape while retaining release-contract and lifecycle validation, reducing unrelated CI work for release-seal PRs.
-
v1.0.58-beta.513 Aug 2026 pre-releaseRelease notes
Open source →Added
-
Agent version and extended context passthrough (Aone 85384225) — adds validated
DWS_AGENT_VERand sensitive JSONDWS_AGENT_EXTmetadata to ordinary non-plugin MCP requests without forwarding it to A2A, OAuth, Discovery, or third-party plugins. -
Drive file comments (#961) — adds
dws drive comment listanddws drive comment createfor comments on ordinary preview files. -
Chat automatic pagination controls (#970) — adds bounded
--max-itemsand cancellable--page-delaysupport to the core IM list shortcuts, with safe continuation metadata and truncation reporting.
Changed
-
Chat message send help - Clarifies Markdown image syntax for inline mixed text and images.
-
Doc/drive/wiki routing descriptions — clarifies the document-space container-vs-content boundary across the doc, drive, and wiki skill descriptions for more predictable first-round Agent selection, without changing CLI behavior.
-
-
v1.0.58-beta.412 Aug 2026 pre-releaseRelease notes
Open source →Added
- Multi-skill installation and upgrade — fresh installs,
dws skill setup, anddws upgradenow use the multi-skill layout by default. Existing mono installations migrate during upgrade; mono remains an explicit legacy option. - Native streaming-card mentions —
dws chat message send-cardnow accepts--at-open-dingtalk-idsand--at-allfor group cards and forwards them tocreate_and_send_card, matching the existing shortcut behavior without changing single-chat card creation. - Expanded Minutes workflows — 27 public Minutes shortcuts now cover upload, download, export, recording, analysis, sharing, and recovery flows; every write command keeps an explicit confirmation requirement.
- Chat command discovery — 30 existing typed Chat commands are now available in the runtime Schema and Agent catalog, with sensitive writes carrying their required confirmation metadata.
Changed
- Chat read results — typed commands and shortcuts now expose a consistent
top-level
messageslist with stablemessageIdandtextfields while retaining existing response envelopes and fields. - Wiki feed results — Wiki feed list output now formats time fields and
trims excess fields. Its
--limitdefault is 10 and maximum is 20. - Developer command results — the
devand selecteddevappcommands now use the unified result envelope for consistent success, pending, partial, and failure reporting. - Evaluation dispatch hardening —
/evalnow uses a verifiable polling relay instead of direct access from the hosted runner, binding the workflow, comment, PR head, parameters, and result provenance.
Fixed
- Streaming-card update acknowledgement — accepts the pre-production
success: trueresponse fromupdate_streaming_cardas affirmative write evidence while preserving explicit negative, conflicting, and bizId-drift failures, so Agents do not repeat an update that the service already applied. - Text input bounds — literal input, stdin, and
@fileinputs now all enforce the same byte limit; file reads validate the opened descriptor and cannot exceed the limit after a path replacement or file growth. - Evaluation PR comments — restores
/evalPR conversation comments with the least required pull-request write permission and actionable GitHub 403 diagnostics.
- Multi-skill installation and upgrade — fresh installs,
-
v1.0.58-beta.3.0.20260811100641-21bbf42ca76c11 Aug 2026 pre-releaseNothing published for this version
-
v1.0.58-beta.311 Aug 2026 pre-releaseRelease notes
Open source →Added
- Aitable workflow execution and history — adds
dws aitable workflow runfor confirmed asynchronous execution of scheduled or record-triggered workflows, plusdws aitable workflow historyfor status-, time-, and page-filtered execution records. The commands map directly toaitable/run_workflowandaitable/get_flow_record_list, validate trigger-specific arguments locally, and document theexecutionId/instanceIdcorrelation. - Streaming-card mentions —
chat +messages-send-cardnow accepts--at-open-dingtalk-idsand--at-allfor group cards, passing mention targets to the initial card-creation request and prepending its returnedatTagto the automatic streaming update. - Personal OA approval events — personal event consumers now support task creation, completion, redirection, instance start, termination, and completion events, with typed output and matching usage documentation.
Fixed
- Machine-readable export and download receipts —
dws doc export,dws drive download, anddws drive download --versionnow keep progress logs on stderr under--format jsonand emit one JSON result on stdout after a successful local write. The result includes the saved path and byte size; document exports additionally report the node, requested format, job/task ID, and final status. - IM search and card-write safety — conversation-scoped search now fails closed when the target cannot be verified, and streaming-card updates require business evidence rather than a transport-only success response.
- Document shortcut reliability — document write, readback verification, pagination, template/version discovery, export, media, and local-file workflows now preserve compatibility while rejecting ambiguous write results.
- Event runtime-token handoff — personal
event consume,status,stop, and+listen-imhonor the root--tokenwithout falling back to a stale OAuth profile. Detached buses negotiate an owner-only, memory-only IPC credential channel; tokens are never placed in child argv, environment, profiles, logs, or run-state files.
Changed
- Minutes
permission apply --policytype —--policyis now declared as anintflag and its required check usesFlags().Changed, matching the numeric-parameter convention.--helpreportsintinstead ofstring; accepted values (2/3/4) and gateway behavior are unchanged. - Minutes skill references — document
permission applyin both Minutes skill references: list it in the command trees, describe its policy values and how it differs frompermission add, and add its intent routing. - Chat paging guidance — typed chat message commands now document
--page-all, aggregate result shapes, and cursor behavior in CLI Help and Agent selection examples. - Calendar skill parity — mono and multi Calendar references are aligned to prevent documentation drift without changing CLI behavior.
- Release engineering — CI now shards helper-package changes through the
full race suite, widens a flaky stdio idempotency test budget, governs exact
reviewed CLI/Schema type migrations, and lets authorized maintainers trigger
internal MCP evaluation with a reviewed
/evalPR comment.
- Aitable workflow execution and history — adds
-
v1.0.58-beta.2.0.20260810082255-867bb445861910 Aug 2026 pre-releaseNothing published for this version
-
v1.0.58-beta.210 Aug 2026 pre-releaseRelease notes
Open source →Added
dws sheet create-with-data(新命令) — 建表并写入初始数据与样式:--values(二维数组写默认表)/--sheets(typed table 多工作表,二者必须给一个)/--styles(cell_styles/row_sizes/col_sizes/cell_merges,顶层键对齐飞书 snake_case、列表项内字段兼容 camelCase)。所有结构、字段类型与枚举在创建文档之前校验,非法配置不会留下白建的空文档:--sheets按table_put的输入契约逐字段校验(columns必填且列名非空不重复、data为二维且行宽与columns一致、单元格仅限字符串/数字/布尔/null、dtypes/formats的键须是列名、mode/header/allowOverwrite/startCell类型与取值、单表 30000 单元格上限),并拒绝未知键、snake_case 变体、{"sheets":"bad"}这类畸形包装与sheetId(服务端会静默丢弃写错的键,导致"只写了表头却报成功"的静默丢数据);--values校验单元格为标量并受 30000 单元格 / 2000000 字符上限约束;--styles的顶层键与列表项内字段同样拒绝未知键,避免样式只应用一半。写入后回读校验按startCell/header/mode推算的首个预期非空单元格,而非固定 A1。该命令是多步编排(建文档 → 探活 → 定位默认工作表 → 写数据 → 回读 → 可选样式),因此如实声明为独立叶子sheet.create_with_data+interface_mode: composite(附评审 reason,按契约不带interface_ref);dws sheet create保持原样不变——仍是一次create_workspace_sheet直连(interface_mode: mcp),不新增 flag,避免让 Schema 消费者把编排步骤的参数误当成该 RPC 的入参。dws sheet export-csv(新命令) — 同步导出单个工作表为 RFC4180 CSV,支持--sheet-id选表、--range限定范围、--value-render-option选取值模式;--output落盘(为目录时按sheet-export.csv命名,落盘走AtomicWrite原子替换,写入失败时已有文件保持原样;父目录不存在按错误处理,不会自动创建),不传则把纯 CSV 打到 stdout(警告只走 stderr)。数据超出单次读取上限时默认报错、既不输出也不写文件,需--allow-truncated显式接受不完整结果。响应缺csv字段或类型不对一律报错,不会用 0 字节覆盖已有文件。该分支读的是get_range_as_csv、与 xlsx 的异步导出任务毫无关系,因此独立成叶子sheet.export_csv并如实声明interface_mode: mcp+interface_ref: get_range_as_csv;dws sheet export保持原样不变——仍只导 xlsx(interface_ref: submit_export_job),flag 面仍是--node/--output,csv 专属 flag 不会出现在它上面(此前挂在同一条命令上时,漏写--export-format csv会让--range被静默丢弃而导出整篇工作簿)。sheet update-dimension --size-type—pixel/standard(恢复默认行高列宽)/auto(按内容自适应行高,仅 ROWS)。sheet replace --match-formula— 在公式文本中查找替换。sheet range set-style扩展样式维度 — 新增--font-style(斜体)/--font-line(下划线、删除线)/--font-family/--border-styles-json(四边边框;每条边只接受style/color,未知键与非字符串color直接报错,不再静默忽略而画出无颜色的边框,set-style/batch-set-style/create-with-data --styles三条路径同源校验)。sheet range batch-set-style --ranges— 一组样式刷多个带工作表前缀的区域,组装为一次原子batch_update。
Changed
- Chat message post-send ID handoff (#897) — CLI Help and bundled Skills
now document the
send→query-send-status→edit/recallworkflow, so callers can reuse returned task, message, and conversation IDs instead of searching message history by content. - Sheet mono/multi Skill alignment — replaces the oversized mono Sheet reference with the progressive routing layout, aligns all 20 Sheet topic references across the mono and multi bundles, and adds a content-policy guard that prevents the paired topic trees from drifting again.
sheet range set-style后端切换为set_cell_range— 样式统一走 cellStyles 路径(仅设样式、保留原值),这是斜体/下划线删除线/字体族/边框唯一可用的通道。interface_ref由update_range变为set_cell_range,12 个样式 flag 改为 reviewed mapping exclusion。CLI 用法向后兼容、无 flag 删除;schema-compatibility 经 reviewed 豁免判定为兼容(0 changed fields)。sheet range batch-set-style改为单次原子提交 — 由本地循环多次update_range改为一次batch_update,任一项失败默认整批回滚;--continue-on-error由本地控制改为透传服务端。新增批量上限:最多 100 个区域且累计不超过 200000 个单元格。sheet range batch-clear/batch-set-style的--ranges拒绝空白工作表前缀(用户可见行为变更)— 此前只按原始串里!的位置判断," !A1:B2"修剪后工作表名成了空串,操作却照样带着sheetId: ""提交:服务端要么让整批batch_update失败,要么更糟——落到默认工作表而不是用户指定的那张表,且命令报成功。现在工作表名与范围都必须在修剪之后仍非空,否则在发起任何请求之前报错。batch-set-style --batch的纯空白sheetId/range同样拒绝(此前只挡空字符串);--batch下发仍用原值不替用户修剪,因为sheetId可以是允许带首尾空格的工作表名。两条--ranges路径现在共用同一个拆分器。sheet insert-dimension/delete-dimension/update-dimension的--length严格校验(用户可见行为变更)— 解析由fmt.Sscanf("%d")改为strconv.Atoi。此前只消费前缀数字,--length 2x/3foo会被静默当成2/3并对错误的行列数执行操作(删除方向不可回滚);现在整个值必须是合法正整数,否则报错「--length必须为正整数(>= 1)」且不发起任何请求。升级影响:原先依赖这种宽松解析、在传畸形--length的脚本会开始报错,请把参数修正为纯数字。合法数字值行为不变,上限仍为 5000。add-dimension的--length是Int类型 flag,一直由 cobra 严格校验,不受影响。- CLI 接口兼容门禁支持 reviewed flag 类型豁免(无用户可见变更)—
authoritative-interface-integrity与check-command-compatibility.sh此前一律拒绝历史命令的 flag 类型变更,即使新类型只是把同一套校验从 RunE 前移到解析期,也没有任何评审通道。现在两道门禁各带一张精确豁免表:命令路径 + flag 名 + 旧类型 → 新类型四元组全等才命中、方向敏感(string→int与int→string是两个不同的键,只有被评审的方向可用),且仅当该 flag 的其他契约(shorthand / required / hidden / no-opt / scope)纹丝不动时才放行,因此豁免夹带不了别的破坏。首条也是目前唯一一条登记的是dws minutes permission apply --policy的string→int(配合 #912):旧实现在 RunE 里做strconv.ParseInt(v, 10, 64)再校验[2,4],新实现由 pflag 以strconv.ParseInt(s, 0, 64)解析后仍校验[2,4],历史上能成功的调用集是新调用集的子集(base 0 额外接受0x3这类写法,只放宽不收紧),非法值依然失败、只是报错文案与时机前移;flag 默认值由""变"0"是类型的必然结果,两道门禁都不比较默认值,且该 flag 必须显式给出、默认值不可达。两张表必须逐字一致并有守卫测试锚定漂移——重复是被迫的而非选择:check-authoritative-interface-baselines.sh会把整个scripts/policy/interface-baseline目录复制进检出历史版本的 worktree 再编译,那份拷贝不能 import 本分支新增的包。 - Schema 兼容门禁支持 reviewed 参数类型豁免(无用户可见变更)— 接上一条。
schema-compatibility是同一个Interface Integrityjob 里排在两道 CLI 接口门禁之后的第三道检查,此前也一律拒绝已发布参数的type变更。由于前两道先失败、set -e让它从未在 CI 上暴露,上一条豁免只解决了三分之二。现在checkParameterCompatibility也带一张精确豁免表:<product>/<tool id>+ 参数名 + 旧类型 + 新类型四元组全等才命中、方向敏感,且仅当该参数除type外的全部已发布字段逐字段相等时才放行。这里刻意用相等性比较而非「没有产生其他兼容性错误」:放宽required/cli_required、清空required_when、扩宽enum、清空interface_type、经 reviewed mapping exclusion 清空property——这些变化单独看都是兼容的、根本不产生错误,若以错误列表代替相等性检查,它们就能搭着一次已评审的类型迁移一起蒙混过关。结构体整体比较还意味着将来给parameterSchema新增字段时会自动纳入守卫,而不是悄悄放宽每一条既有条目。唯一条目是minutes/minutes.apply_minutes_permission的policy由"string"迁移到"integer"(配合 #912):该type由 Cobra flag 类型投影而来(provenancecobra_flag_type),描述的是 CLI 如何接受取值;消费方据此拼装的是命令行,而--policy 4在两种声明下是同一个 argv,加引号的--policy "4"到 pflag 仍是 4,RunE 也仍校验[2,4]——而且该参数映射的 propertypolicyId一直以数字上报,新声明比旧声明更贴近真实请求。表里的类型值必须是schemaType实际产出的带引号形态("string"而非裸string),守卫测试用schemaType复算并校验类型名属于 JSON Schema 的封闭取值集合——reviewedInterfaceRefRedirect曾因键的书写形态错误两次静默失效,这里不重犯。
Fixed
- Event runtime-token handoff — personal
event consume,status,stop, and+listen-imnow honor the existing root--tokeninstead of falling back to a stale local OAuth profile. Detached personal-event buses negotiate the credential only after an additive capability handshake, receive and rotate it through owner-only local IPC, and keep it in memory; the token is never forwarded through child argv, environment variables, profiles, logs, or run-state files. Existing OAuth and multi-profile behavior is unchanged when--tokenis absent. A new client refuses to send a runtime token to an older bus and leaves its existing consumers and subscriptions untouched; the recovery message asks users to inspectevent status --as user, previewevent stop --as user --all --dry-run, and explicitly confirmevent stop --as user --all --yesbefore retrying.
-
v1.0.58-beta.1.0.20260807155904-18030f1018f907 Aug 2026 pre-releaseNothing published for this version
-
v1.0.58-beta.107 Aug 2026 pre-releaseRelease notes
Open source →Added
- Robot image and file messages (#867) —
dws chat message send-by-botnow supports image URLs and local-file uploads through explicit message types, while retaining Markdown as the default and preserving its existing title and text requirements. - Conversation shortcut-bar management (#877) — adds
dws chat toolbarcommands to list, add, hide, sort, and manage custom conversation shortcuts, with validation and confirmation for destructive removal. - Complete AI Table Shortcut surface (#901) — makes all 92 supported AI Table Shortcuts discoverable through Runtime Schema and adds reliable Base, table, record, attachment, view, dashboard, and workflow operations with explicit confirmation and result-verification semantics for writes.
Changed
- Doc import upload fallback —
dws doc importno longer fails on file formats outside the conversion whitelist (html, pdf, zip, extensionless, and any future format): it now hands the file to the document-space upload chain (the same primitive asdws drive upload --workspace), stores the original file at the requested--folder/--workspacetarget, and prints an explicit stderr notice with the supported-format list and the convert-to-md alternative. The fallback shares the import file checks (20MB cap, empty-file guard), keeps--format json/--dry-runoutput as a single JSON document, and marks the machine-readable result withfallback: "upload"andconverted: falseso agents never mistake the stored file for a converted online document. The fallback fails closed unless the commit response parses as JSON and carries a file identity (exposed asdentry_id); empty or unverifiable responses surface as errors instead of fabricated success. Importable formats anddws sheet importvalidation are unchanged. - IM natural-target and history alignment — Chat shortcuts can resolve natural user/group targets before execution, and message-history workflows expose bounded time ranges, ordering, explicit all-page controls, continuation ledgers, safe local export, and thread-reply pagination without treating empty or incomplete reads as successful results. Bundled mono/multi Skills and intent routing now describe the same executable surface.
- Sheet CSV formula writes —
dws sheet csv-putand batchcsv-putnow expose the service contract that CSV fields beginning with=are written as formulas. Prefix the field with an apostrophe to write literal text beginning with=; CSV content continues to pass through unchanged. - Release-equivalent PR compatibility gate (#889) — pull-request
admission now runs command-surface compatibility checks against the current
release baseline before code reaches
main. - Reviewer routing governance (#903) — updates the Reviewer Router pool used for new ready PRs while retaining the existing current-head review and required-check gates.
Fixed
- Fail-closed IM pagination and audit evidence —
+chat-messages,+search-msg,+thread-replies,+at-me,+my-groups, conversation lists, and favorites preserve partial-read failures, reject missing or stalled continuation state, deduplicate page boundaries, and publish completion evidence. The live-audit regression suite now rejects empty projections and incomplete reads instead of promoting them to passing results. - Sheet formula verification (#873) —
dws sheet formula-verifynow calls the registered remote tool nameverify_formula; the previousformula_verifyname failed at gateway dispatch. - CLI and parameter recovery boundaries (#864) — command and parameter recovery now fail closed when an Agent-provided path or flag cannot be reconciled with the executable CLI surface, reducing unsafe hallucinated retries.
- Robot image and file messages (#867) —
-
v1.0.58-0.20260807024532-6035d43899e407 Aug 2026 pre-releaseNothing published for this version
-
v1.0.58-0.20260806135332-4148a90bf58806 Aug 2026 pre-releaseNothing published for this version
-
v1.0.58-0.20260806093841-15d5be60008b06 Aug 2026 pre-releaseNothing published for this version
-
v1.0.5706 Aug 2026Release notes
Open source →This stable release promotes the fully delivered
v1.0.57-beta.4baseline. It includes the v1.0.57 beta-line command-contract, document, chat, OA, Wiki, and compatibility improvements, plus the multi-skill framework alignment and expanded calendar, Drive, Markdown, Mail, and Minutes workflows validated in the final prerelease.- Promote v1.0.57-beta.4 — publishes the final validated prerelease
baseline as stable
v1.0.57without adding post-beta product changes.
- Promote v1.0.57-beta.4 — publishes the final validated prerelease
baseline as stable
-
v1.0.57-beta.406 Aug 2026 pre-releaseRelease notes
Open source →Added
- Expanded open CLI workflows (#887) — adds calendar event-instance queries, Drive latest-file selection, Markdown diff, Mail calendar/export/ share-to-chat workflows, and Minutes hot-word, permission, and audio-memo operations, with matching Schema and cross-platform coverage.
Changed
- Multi-skill framework alignment (#887) — folds long-tail skills into
dingtalk-misc, renames the shared package todingtalk-shared, removes stale Preview guidance, and reorganizes shared recipes and routing for more predictable Agent selection. - Bounded Agent Schema delivery (#887) — keeps compact and wire projections
focused on executable contract facts, retires stale MCP metadata candidates,
and teaches Agents to prefer
dws schema --compactfor bounded context.
Deprecated
- Recovery and discovery-cache compatibility surfaces (#887) — keeps
visible Deprecated
dws recoveryanddws cachecompatibility stubs while retiring their former recovery engine and dynamic discovery-cache behavior. Recovery plan/execute/finalize now return an explicit “不再支持” notice, and Skills no longer teach either retired workflow.
Fixed
- Mail share-to-chat confirmation (#887) — requires explicit confirmation before the first remote write, while preserving the confirmed sign-retry flow and covering both direct-success and retry responses.
-
v1.0.57-beta.306 Aug 2026 pre-releaseRelease notes
Open source →Added
- Reviewed document shortcuts (#880) — adds public document shortcuts for safe local downloads, content and history, review, media and style, and document access/sharing workflows, while retaining reviewed compatibility identities and confirmation safeguards for writes.
- Mentions in chat replies (#881) —
chat message replynow supports--at-open-dingtalk-idsand--at-all, forwarding reply mention fields and adding any required mention placeholders without changing existing send behavior.
-
v1.0.57-beta.205 Aug 2026 pre-releaseRelease notes
Open source →Fixed
- Stable Chat command compatibility (#876) — restores the hidden migration
entries for
chat send,chat history, and theirimaliases, preserving the v1.0.56 command surface while directing callers to the supportedchat message send/listcommands. Legacy flags now reach the same migration hints instead of failing during flag parsing. - Drive download cancellation-test stability (#876) — replaces a timing-sensitive worker-cancellation coverage test with a deterministic seam, reducing flaky CI without changing download behavior.
- Stable Chat command compatibility (#876) — restores the hidden migration
entries for
-
v1.0.57-beta.105 Aug 2026 pre-releaseRelease notes
Open source →This beta starts the v1.0.57 line on top of v1.0.56. It packages the unified command-contract and runtime Schema architecture, complete Multi IM Chat coverage, document whiteboard and OA approval workflows, Wiki activity feeds, and compatibility and CI reliability fixes.
Added
- Contact personal-status updates (#872) — adds
contact user update-ownness(aliasset-ownness) for updating a user's personal status text. The write operation maps revieweduserIdandownnessTextparameters to the service contract and requires confirmation unless--yesis explicitly supplied. - Document whiteboard workflows (#861) — adds
doc whiteboard insert,whiteboard query/update, anddoc media upload. These commands support confirmed document-embedded whiteboard creation and updates, structured OpenNodes reads, and preparation of node-bound Vector/SVG resources. - Complete Multi IM Chat coverage (#860) — hardens deterministic group and stable-ID resolution, sending, querying, downloading, pagination, and JSON export. The remaining reviewed Chat Shortcuts enter Schema coverage, with destructive delete and clear operations aligned to confirmation gates.
- OA approval form workflows (#853) — adds OA form-schema lookup,
process forecast, and confirmed approval-instance creation, supporting both
simple flags and complete
--requestpayloads. - Wiki activity-feed queries (#862) — adds
wiki feed listto retrieve workspace document activity, with cursor paging and optional file exclusion.
Changed
- Unified command and Schema contract framework (#830) — Leaf commands and
Shortcuts now use the shared typed
corecmdbase for flags, constraints, confirmation, Help, and runtime Schema projection. Schema delivery assembles from leaf Contract declarations at runtime; the retired hint overlays, pinned MCP metadata, and committed Catalog artifacts are no longer delivery authorities. - Faster macOS CI without reducing native coverage (#857) — narrows the macOS race suite to Keychain, codesign, and Darwin-only tests while adding a reachability contract that prevents native-only tests from being silently excluded.
Fixed
- Chat media-download JSON compatibility (#854) — restores parseable
success,downloadUrl, andoutputfields forchat message download-media --format jsonafter a successful download, without progress output corrupting JSON stdout.
Added
- Document-embedded whiteboard workflows — adds
doc whiteboard insertfor confirmed creation and part-ID verification,whiteboard query/updatefor structured OpenNodes reads and confirmed writes, anddoc media uploadfor preparing node-bound Vector/SVG resources. The public adapter uses an explicit helper-only whiteboard endpoint, validates update envelopes locally, decodesresultJson, and publishes the full command, Schema, Skill, and safety contract migrated fromdws-wukong@e2da8ab947c6. - Robot image and file messages — extends
chat message send-by-botwith public image URL delivery through--msg-type image --image-urland local-file upload/send through--msg-type file --file-path, while preserving Markdown as the default message type.
Changed
- Chat reply mentions —
dws chat message replycan @ specified group members with--at-open-dingtalk-idsor @ everyone with--at-all, forwarding the existingsend_personal_messagemention fields and automatically adding missing current-user<@id>/<@all>placeholders. - Pinned MCP metadata retired — deletes
internal/cli/schema_mcp_metadata.jsonand removes its embed/loader/fallback role from Schema assembly. Catalog now assembles from Contract/ParamDecl/Interface + Cobra only;make fetch-mcp-metadataremains an optional diagnostic dump underartifacts/and refuses the retired pin path. Policy bans the pin from reappearing. - MCP service review retired — deletes
schema_mcp_service_review.jsonand removes its policy jq / outputguard / test disposition gate (notify→out_of_surface, snapshot hash pin). No replacement ledger. - Hints retired; ContractDecl is the leaf Schema source (#830) —
schema_hints/, Manual/Schema hint overlays, andschema_agent_metadata/delivery are removed. Selection, safety, parameters, and interface facts declare on ProductDecl / leafContract(corecmd.ContractDecl+contract.ParamDecl/Safety). Authoring renamedSchemaDecl→ContractDecl; nested fields reusecontract.*directly. - Contract package seam (#830) — types / ProductDecl live under
internal/corecmd/contract(DTO only). Annotate writers live ininternal/corecmd/runtimeannotate; Cobra-keyed ContractFinal store + Register live ininternal/corecmd/contractfinal; homology gates ininternal/cli/homology. All packages importcorecmd/*directly; the formercli/runtimeannotate/cli/contractfinalshim packages are removed, and thecliroot keeps only package-local aliases (runtime_schema_seam.go). Catalog/ResolveMetastay on theclidelivery root.internal/corecmdmust not import anyinternal/clipackage. - CommandMeta cache for ResolveMeta — production
ResolveMeta/ leaf--helpSafety project from the runtime-assembledSchemaRegistryinto amap[cli_path]CommandMetainstalled duringdeliverySchemaCatalogsync.Once. Steady-state lookups are O(1); full Catalog wire maps stay deferred. RegistrySourcestampsruntime-assembled.
Fixed
- Fail-closed IM pagination and audit evidence —
+chat-messages,+search-msg,+thread-replies,+at-me,+my-groups, conversation lists, and favorites preserve partial-read failures, reject missing or stalled continuation state, deduplicate page boundaries, and publish completion evidence. The live-audit regression suite now rejects empty projections and incomplete reads instead of promoting them to passing results. - Unified command safety and Shortcut runtime (H0) — Shortcut leaves now execute through
corecmd.New, sharing the same typed Safety confirmation gate as Leaf commands. EOF / closed stdin returnsconfirmation_required, and interactivenoreturns the existing non-zero cancellation validation error instead of reporting success for an operation that did not run. Pass--yesor--dry-runto skip the prompt. - Constraint "provided" for
at_least_one/exactly_one(H0) — a flag set to an empty string (--flag "") no longer counts as provided; previously bare CobraChangedsatisfied the constraint. Pass a non-blank value for a member of the group. - Chat media download JSON compatibility —
dws chat message download-media --format jsononce again returns a clean{success, downloadUrl, output}result after the file is saved, preserving the temporary URL and resolved local path without progress text corrupting JSON stdout.
- Contact personal-status updates (#872) — adds
-
v1.0.57-0.20260804120558-ca2b8adcb2a604 Aug 2026 pre-releaseNothing published for this version
-
v1.0.57-0.20260804074831-6376f294dab004 Aug 2026 pre-releaseNothing published for this version
-
v1.0.57-0.20260804025025-e40f5bc5374304 Aug 2026 pre-releaseNothing published for this version
-
v1.0.5604 Aug 2026Release notes
Open source →This stable release promotes the fully delivered
v1.0.56-beta.4baseline. It includes PR #852's resilient multipart Drive download implementation, together with the v1.0.56 beta-line command, Schema, Skill, and runtime improvements already validated through the prerelease channel.Added
- Resilient multipart Drive downloads (#852) —
drive downloadanddrive download-versionsupport parallel chunk transfer, Range probing, fingerprint-validated checkpoint resume, automatic 401/403 credential refresh, and graceful interruption with checkpoint preservation.
- Resilient multipart Drive downloads (#852) —
-
v1.0.56-beta.404 Aug 2026 pre-releaseRelease notes
Open source →This beta adds PR #852 on top of v1.0.56-beta.3. It makes Drive downloads resilient for large files through parallel transfer, validated resumable checkpoints, and automatic credential refresh.
Added
- Multipart Drive downloads (#852) — adds
--part-size,--parallel, and--no-resumetodrive downloadanddrive download-version. Files above the part-size threshold use a Range probe and parallel chunks, resume from a fingerprint-validated checkpoint, refresh credentials on 401/403, and keep the checkpoint when Ctrl+C interrupts a transfer.
- Multipart Drive downloads (#852) — adds
-
v1.0.56-beta.303 Aug 2026 pre-releaseRelease notes
Open source →This beta adds PRs #846 and #851 on top of v1.0.56-beta.2. It adds a service-provided Aitable workflow-editing reference command and makes local event-bus IPC reliable on shared filesystems by placing Unix sockets in a validated private runtime directory.
Added
- Aitable workflow editing reference (#851) — adds
dws aitable workflow edit-example, a parameter-free read command that returns the service-provided workflow editing documentation andworkflow-dsl/v1examples throughaitable/edit_workflow_example.
Fixed
- Event bus sockets on shared filesystems (#846) — Unix event buses now place their local IPC socket in a private per-user runtime directory (
XDG_RUNTIME_DIRwhen available, otherwise a0700per-UID directory under the system temporary directory) while retaining locks, metadata, logs, and subscription state in the configured Workdir. Listener and dial paths validate directory ownership and permissions before use. This preventsdws event consumefrom failing withbind: errno 524when~/.dwsis hosted on NFS, CSI, FUSE, or another filesystem that does not support Unix Domain Sockets without exposing the socket directly in a shared/tmproot. WhenXDG_RUNTIME_DIRis unavailable, the per-UID directory name is deterministic: ownership validation prevents endpoint hijacking, but another local user can pre-create the directory to deny service; multi-user deployments should provide a privateXDG_RUNTIME_DIR.
- Aitable workflow editing reference (#851) — adds
-
v1.0.56-beta.2.0.20260730150034-187787040b0e30 Jul 2026 pre-releaseNothing published for this version
-
v1.0.56-beta.230 Jul 2026 pre-releaseRelease notes
Open source →This beta adds PRs #831 and #835 on top of v1.0.56-beta.1. It separates Agent Product observability and IM display identity from the stable edition-owned PAT and routing identity, and reduces common-path Skill context loading without changing the public command or Runtime Schema surface.
Changed
- Agent Product identity separation (#831) — sends
DWS_AGENT_PRODUCTthrough the newx-dws-agent-productobservability Header and uses a valid non-empty value for the IMclawTypedisplay label whenever--ai-tagis enabled. Because--ai-tagdefaults totrue, callers that setDWS_AGENT_PRODUCTchange the displayed label by default. With--ai-tag=false, nativechat message send/replycalls preserve their existing wire shape by sending an empty IMclawType, while shortcut calls omit the argument. Unset or empty Product values omit the Header and preserve the active edition's IM display default. - Agent Host dimension convention (#831) — new integrations should send the runtime form (
cloudordesktop) throughDWS_AGENT_HOSTand report the product separately throughDWS_AGENT_PRODUCT. Legacy combined labels such asqwenwork_cloudremain syntactically valid for compatibility. - Reduced common-path Skill context (#835) — keeps the complete 97-command Chat Shortcut inventory in Runtime Catalog and leaf Schema while routing common intents through compact Skill tables and references. When an exact command path is already known, the mono Skill no longer requires eager loading of a complete product reference. The generated Skill policy now detects drift, forced full-reference loading, and context-budget regressions; the common Chat plus shared activation estimate drops from 7,301 to 4,771
o200k_basetokens without changing the 845-tool Schema surface.
Fixed
- Stable PAT/routing identity (#831) — restores the CLI-emitted open-source HTTP
claw-typeand PAThostControl.clawTypeto the edition-fixedopenClawvalue.DWS_AGENT_PRODUCTno longer changes those wire values, and the client continues to derive PAT, authentication, routing, and Discovery behaviour from the existing independent signals. - Portable generated Skill validation (#835) — resolves the mono Skill name by scanning upward from the generated target, keeping
--checkindependent of the repository checkout path and preventing false drift failures when an ancestor directory resembles a Skill name.
- Agent Product identity separation (#831) — sends
-
v1.0.56-beta.130 Jul 2026 pre-releaseRelease notes
Open source →This beta starts the v1.0.56 line on top of v1.0.55 and packages PRs #817, #806, and #834, together with release-validation fixes #838 and #839. It closes the remaining Agent-visible IM shortcut gaps, introduces reviewed command-scoped parameter normalization without guessing business identifiers or values, and prevents deterministic personal-event subscription failures from becoming unbounded retry storms.
Added
- Complete IM shortcut workflows (#817) — publishes the previously excluded
+chat-messages,+messages-send,+messages-send-card,+search-msg, and+thread-repliesshortcuts in Runtime Schema. Unified send, streaming-card delivery, advanced search, thread replies, and opt-in resource downloads now share reviewed parameters, selection guidance, and runtime-aligned safety semantics. - Reviewed parameter concept normalization (#806) — adds a closed parameter-concept dictionary and generated command-level alias table, covering reviewed IM synonyms while preserving the boundaries between group, conversation, user, open-user, cursor, and paging identifiers.
Fixed
- Message delivery and resource handling (#817) — resolves direct recipients through exact contact search, preserves rich and nested message resources, avoids same-name download overwrites, and prevents read shortcuts from silently returning empty results on non-interactive input.
- Parameter parsing safety (#806) — rejects ambiguous, blocked, or conflicting aliases before dispatch, normalizes explicit boolean values such as
--dry-run false, and keeps internal pre-parse handler details out of user-visible errors. - Personal-event subscription retry safety (#834) — adds cross-process attempt claims, deterministic backoff and jitter,
Retry-Afterhandling, terminal holds, compare-and-swap completion, and fail-closed state handling across all public personal-event subscriptions, preventing deterministic failures from causing unbounded callback retries. - Scoped CI and release validation reliability (#838, #839) — keeps scoped coverage aligned with intentionally skipped supporting profiles, gives focused race and Multi-profile E2E suites enough time for the current
internal/appworkload, and preserves hidden E2E diagnostics on failure.
- Complete IM shortcut workflows (#817) — publishes the previously excluded
-
v1.0.56-0.20260730040022-9aa76ea7486030 Jul 2026 pre-releaseNothing published for this version
-
v1.0.56-0.20260730031141-7ba12a8e4c1a30 Jul 2026 pre-releaseNothing published for this version
-
v1.0.5530 Jul 2026Release notes
Open source →This release promotes the validated
v1.0.55-beta.8baseline to stable. It expands the public Workspace command surface and personal event consumption, makes the full built-in shortcut catalog available to Agents, and hardens multi-account routing, authentication compatibility, command safety, and response projection across the CLI.Added
- Broader Workspace command surface (#621, #676) — adds roughly 30 reviewed Drive, Doc, Sheet, and Chat leaf commands synchronized from Wukong, including Drive version and permission operations, document styling, Sheet comment/version/formula verification, and in-place text-emotion updates. A reusable declarative
LeafSpecframework now delivers command identity, safety, selection, and guarded Help metadata consistently. - Complete Agent-visible shortcut delivery (#802, #815) — publishes all 210 built-in shortcuts as reviewed Runtime Schema leaves across 16 products, including 88 validated Chat shortcuts, with executable paths, parameters, constraints, selection guidance, dry-run capabilities, and runtime-aligned confirmation semantics.
- Expanded enterprise and event capabilities (#790) — adds the HR Brain talent-pool, employee-profile, and structured-search command families;
dws mcp url getresolves MCP Market endpoints; personal event consumption supports eight additional IM event keys, multi-key consumers, and targeted shutdown. - Agent integration identity (#804, #816) — adds validated
DWS_AGENT_HOSTandDWS_AGENT_PRODUCTlabels for observability and product attribution while keeping them separate from authentication and authorization.
Changed
- Progressive multi-Skill guidance and account safety (#621, #821) — reorganizes bundled product guidance for progressive discovery and restores the mandatory rule that Agents must not guess an account when a multi-account organization has no unique current default.
- Supported Chat file delivery — retires the legacy AppKey/AppSecret-backed
chat media uploadcommand from discovery and routes local files throughchat message send --msg-type file --file-path, while callers with an existing media ID can continue sending images directly. - Guarded release delivery (#791) — strengthens immutable GitHub, npm, Homebrew, optional mirror, recovery, and version-allocation checks while keeping beta and stable publication role-gated and auditable.
Fixed
- Shortcut and message projection correctness (#706, #783, #795) — prevents successful read shortcuts from silently projecting non-empty backend responses to empty results, renders rich, forwarded, and encrypted message forms safely, and fixes group-bot, bot-search, mail-thread, media-ID alias, and Todo paging response handling.
- Command contract edge cases (#803) — makes approval revocation and document rollback honor dry-run before confirmation or preflight, fixes Drive and Doc rename semantics, restores Drive-specific metadata, and validates Todo reminder rules.
- Authentication and external-contact compatibility (#756, #757) — migrates legacy global and organization-scoped credentials without cross-account token borrowing, preserves contacts that expose only
openDingTalkId, and aligns message-resource flags with message-list output fields.
- Broader Workspace command surface (#621, #676) — adds roughly 30 reviewed Drive, Doc, Sheet, and Chat leaf commands synchronized from Wukong, including Drive version and permission operations, document styling, Sheet comment/version/formula verification, and in-place text-emotion updates. A reusable declarative
-
v1.0.55-beta.830 Jul 2026 pre-releaseRelease notes
Open source →This beta revalidates the
v1.0.55-beta.7product baseline through a complete guarded release delivery. It carries no new product-facing command behavior; the new version is required because the published beta.7 artifacts succeeded on GitHub, npm, and Homebrew, but its enabled optional Gitee mirror failed and left that Release run ineligible for stable promotion.Changed
- Complete promotion evidence — republishes the validated v1.0.55 command, Runtime Schema, Skill, authentication, and projection changes with the optional Gitee upload fallback disabled, so the release can produce one successful auditable delivery proof before stable promotion.
-
v1.0.55-beta.7.0.20260729101940-4f31863aae5629 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.729 Jul 2026 pre-releaseRelease notes
Open source →This beta supersedes the unpublished
v1.0.55-beta.6candidate and packages PRs #621, #676, #757, #815, #816, and #821. It restores the mandatory multi-account safety rule caught by the sealed-release E2E gate while retaining the reviewed Wukong capability and multi-Skill synchronization, declarative command and Schema delivery, hardened Chat shortcuts, external contact resolution, and Agent product identity on top of thev1.0.55-beta.5baseline.Added
- Wukong capability and multi-Skill synchronization (#621) — ports roughly 30 reviewed leaf commands into the open-source CLI across Drive, Doc, Sheet, and Chat, including in-place text-emotion updates, Drive version and permission operations, document styling, and Sheet comment/version/formula verification. The bundled multi-Skill framework is reorganized into progressive product references and routing guidance while retaining current open-source command, response, safety, and Runtime Schema contracts.
- Declarative leaf commands and unified metadata delivery (#676) — adds the reusable
LeafSpeccommand framework and migrates 27 DevApp commands without changing their paths or flags. Runtime consumers now resolve identity, safety, and selection through one embedded Catalog-backed API, and guarded Help output publishes the command's safety/confirmation annotation. - Agent product identity (#816) — adds the optional
DWS_AGENT_PRODUCToverride for the existing HTTPclaw-typeheader while preserving each edition's default when unset. Product and runtime labels are caller-declared signals, not authentication credentials; services must validate supported values and must not grant access solely from them. The override does not change the separate IM message-displayclawTypeparameter controlled by the edition and--ai-tag.
Changed
- Reviewed Chat shortcut delivery (#815) — publishes 88 currently available Chat shortcuts after real-business validation, keeps three confirmed lower-service failures unavailable, strengthens semantic availability and dry-run contracts, and adds safe message-resource download plus group-member listing. Conversation filtering, IM routing/reporting, and member mute resolution are aligned with the validated backend identities.
- Agent identity label hardening (#816) — limits
DWS_AGENT_PRODUCTandDWS_AGENT_HOSTto 64 ASCII bytes, trims only surrounding ASCII spaces and tabs, and rejects other control or Unicode whitespace. QwenWork integrations should report the two dimensions separately asDWS_AGENT_PRODUCT=qwenworkplusDWS_AGENT_HOST=cloudordesktop; previously used combined Host labels such asqwenwork_cloudremain syntactically valid for compatibility.
Fixed
- External-contact and message-resource chaining (#757) — the shared name-to-ID resolver keeps external or cross-organization contacts that expose only
openDingTalkId, applies reviewed display-name fallbacks, and preserves organization-only filtering for commands that requireuserId.chat +messages-resource-urlnow accepts--msg-idand--open-message-idas aliases for--message-id, matching message-list response fields. - Multi-account Skill safety contract (#821) — restores the mandatory rule that an Agent must never choose the first, most recently logged-in, or most recently used account when an organization has multiple accounts without one unique
isOrgCurrent=truedefault. A PR-level embedded-Skill regression test now catches removal before the full sealed-release E2E gate.
-
v1.0.55-beta.629 Jul 2026 pre-releaseRelease notes
Open source →This beta packages PRs #621, #676, #757, #815, and #816, validating the Wukong capability and multi-Skill synchronization, declarative command and Schema delivery, hardened Chat shortcuts, external contact resolution, and Agent product identity on top of the
v1.0.55-beta.5baseline.Added
- Wukong capability and multi-Skill synchronization (#621) — ports roughly 30 reviewed leaf commands into the open-source CLI across Drive, Doc, Sheet, and Chat, including in-place text-emotion updates, Drive version and permission operations, document styling, and Sheet comment/version/formula verification. The bundled multi-Skill framework is reorganized into progressive product references and routing guidance while retaining current open-source command, response, safety, and Runtime Schema contracts.
- Declarative leaf commands and unified metadata delivery (#676) — adds the reusable
LeafSpeccommand framework and migrates 27 DevApp commands without changing their paths or flags. Runtime consumers now resolve identity, safety, and selection through one embedded Catalog-backed API, and guarded Help output publishes the command's safety/confirmation annotation. - Agent product identity (#816) — adds the optional
DWS_AGENT_PRODUCToverride for the existing HTTPclaw-typeheader while preserving each edition's default when unset. Product and runtime labels are caller-declared signals, not authentication credentials; services must validate supported values and must not grant access solely from them. The override does not change the separate IM message-displayclawTypeparameter controlled by the edition and--ai-tag.
Changed
- Reviewed Chat shortcut delivery (#815) — publishes 88 currently available Chat shortcuts after real-business validation, keeps three confirmed lower-service failures unavailable, strengthens semantic availability and dry-run contracts, and adds safe message-resource download plus group-member listing. Conversation filtering, IM routing/reporting, and member mute resolution are aligned with the validated backend identities.
- Agent identity label hardening (#816) — limits
DWS_AGENT_PRODUCTandDWS_AGENT_HOSTto 64 ASCII bytes, trims only surrounding ASCII spaces and tabs, and rejects other control or Unicode whitespace. QwenWork integrations should report the two dimensions separately asDWS_AGENT_PRODUCT=qwenworkplusDWS_AGENT_HOST=cloudordesktop; previously used combined Host labels such asqwenwork_cloudremain syntactically valid for compatibility.
Fixed
- External-contact and message-resource chaining (#757) — the shared name-to-ID resolver keeps external or cross-organization contacts that expose only
openDingTalkId, applies reviewed display-name fallbacks, and preserves organization-only filtering for commands that requireuserId.chat +messages-resource-urlnow accepts--msg-idand--open-message-idas aliases for--message-id, matching message-list response fields.
-
v1.0.55-beta.5.0.20260729030556-6ab01a365eba29 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.5.0.20260728143259-7937d09eedd428 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.5.0.20260728071013-5783c4e82a4428 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.528 Jul 2026 pre-releaseRelease notes
Open source →This beta validates expanded personal event consumption, complete Agent-visible Runtime Schema coverage for all 210 built-in shortcuts, Agent host observability, and hardened document, Drive, approval, and Todo command contracts on top of the
v1.0.55-beta.4baseline.Added
- Expanded personal event consumption (#790) — adds eight IM personal event keys, supports subscribing to and consuming multiple event keys in one
dws event consumeinvocation, and adds targeted local-consumer shutdown when a subscription is stopped so other consumers can continue on the shared event bus. - Shortcut Runtime Schema delivery (#802) — publishes all 210 public built-in shortcuts as reviewed Agent-visible leaf tools across 16 product groups, with stable canonical identities, executable
+shortcutCLI paths, parameter and cross-parameter constraints, selection guidance, interface metadata, and runtime-aligned safety/confirmation semantics.dws shortcut listremains the lightweight batch-discovery view, while leaf Schema now carries the complete Agent contract; declared string-slice defaults are also preserved consistently in Cobra and Schema. - Agent host observability (#804) — accepts an optional, validated
DWS_AGENT_HOSTlabel and sends it asx-dws-agent-hostfor logs and BI only; invalid values fail before CLI network activity, and the label never participates in authentication or routing.
Fixed
- Command contract edge cases (#803) — approval revocation and document-version rollback now honor
--dry-runbefore confirmation or remote preflight;drive renameremoves only a suffix matching the node's current extension to avoid duplicate extensions whiledoc renamepreserves the caller's exact display name;doc infokeeps its stable MCP contract whiledrive inforestores Drive-only metadata such as a non-nullfileSize; and Todo reminder writes now reject invalid rule JSON while Help, Schema, and Skills distinguish a due time from an independently unreadable reminder rule.
- Expanded personal event consumption (#790) — adds eight IM personal event keys, supports subscribing to and consuming multiple event keys in one
-
v1.0.55-beta.4.0.20260727161129-2c10be2a1a2f27 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.427 Jul 2026 pre-releaseRelease notes
Open source →This beta validates the shortcut projection fixes for group bots, bot search, and mail threads, together with hardened release delivery to Gitee and npm on top of the
v1.0.55-beta.3baseline.Fixed
- Shortcut projection fixes (#795) —
chat +chat-botsno longer projects a non-emptylist_group_botsresponse to an empty list,+bot-findrecognizes thesearch_botsresponse shape (result.botsentries withbotOpenDingTalkId), and mail thread listings keeplastUpdatedwhen the backend returnslastModifiedDateTime.
Changed
- Hardened release delivery — the Gitee mirror workflow can synchronize a specific release's assets on demand, release lookup tolerates Gitee's HTTP 200 null-body response for missing releases, npm dist-tag verification waits through slow registry CDN propagation with incremental backoff, and beta/stable release operations are role-enforced (#791).
- Shortcut projection fixes (#795) —
-
v1.0.55-beta.3.0.20260724105830-0cc049eaa1be24 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.324 Jul 2026 pre-releaseRelease notes
Open source →This beta validates the HR Brain command surface, smoother guarded release automation, and deterministic Markdown test coverage on top of the
v1.0.55-beta.2baseline.Added
- HR Brain (
dws hrbrain) command surface — adds 11 commands across three groups:talent-pool list/detail/employeesfor talent pool browsing,profile metadata/query/labels/career/performancefor employee profile data, andsearch employees/employees-structured/fieldsfor basic and advanced (rule-based) people search. Ships with bundled mono/multi Skill guidance (dingtalk-hrbrain,cli_version: ">=1.0.54");search employees-structuredvalidates--origin-jsonas a JSON object and--fieldsas a JSON array before dispatch.
Changed
- Smoother guarded releases — publishes verified stable and beta Homebrew Formula updates directly from the release workflow, retries transient tag-ref visibility failures, lets an exact same-run retry reuse its sealed tag, and allows machine-verified rebuild recovery without a separate approval wait.
Fixed
- Deterministic Markdown coverage — replaces timing-dependent temporary-file deletion tests with synchronized file-stat failures so release admission no longer flakes on scheduler timing.
Changed
- Faster guarded releases — trusts an independently revalidated, exact
CHANGELOG.md-only successor of an already admittedmaincommit, runs cloud planning alongside governance, and executes sealed-release automation, compatibility, and multi-profile validation in parallel with artifact compilation. Normal cloud publication no longer requires an unshareable local packaging preflight. - Scoped document reads and group mentions —
doc read --content-format jsonmlcan returnoutline,range,section, or custom-tag fragments with depth and block-boundary controls; document comment create, reply, and update can mention groups through--mentioned-open-conversation-id. - Drive overwrite uploads —
drive upload --node <fileId>can replace an existing Drive or document-space file, is mutually exclusive with--folder, supports dry-run, and requires confirmation before writing. - Chat nickname clearing and cross-organization todos — omitting
--nickfromchat group update-nicknow clears the current user's group nickname, whiletodo task list --query-allqueries todos across organizations.
Fixed
- Legacy authentication compatibility (#756) — migrates pre-v1.0.53 global and organization-scoped login state into the identity-aware token store, including all legacy organizations, while keeping unresolved accounts isolated from exact
corpId:userIdcredentials so external or no-directory identities can complete login without borrowing another user's token.
- HR Brain (
-
v1.0.55-beta.223 Jul 2026 pre-releaseNothing published for this version
-
v1.0.55-beta.123 Jul 2026 pre-releaseRelease notes
Open source →This beta validates MCP Market URL resolution, the supported Wukong local-file send path after retiring the legacy credential-based media upload command from discovery, and reliable message-read rendering for rich content, forwarded records, encrypted messages, and media-download ID aliases.
Added
- MCP URL resolution — adds
dws mcp url get <mcpId>for resolving a DingTalk MCP Market ID to the current user and organization scoped Streamable HTTP URL, while keeping the helper-onlymcp-metaendpoint out of the public product command surface.
Changed
- Chat local-file sending — hides the open-source-only
chat media uploadcompatibility command from Help, Schema, and bundled Skills, and removes its legacy AppKey/AppSecret OAPI path. Historical argv still receives an actionable migration error. Send local images and files throughchat message send --msg-type file --file-path; callers that already hold a mediaId may continue to use--msg-type image --media-id.
Fixed
- Shortcut projection silent-empty returns (#783) — a batch of read shortcuts returned an empty list with exit 0 and no error envelope even when the underlying MCP tool returned data, so agents misread "no data". The projection resolvers now probe the real container keys (
processCodeList,values,wikiSpaces,itemList,groupList,recentItems,emailAccounts,deptUserList,labelUserList,roles,report_list, and the groupedget_org_labelslabels[]), unwrap items nested under a VO wrapper (shiftVO/entityVO/userInfo), andtodo +created-todosuses the shared pager (pageSize=20) because the backend silently returns an empty page forpageSize>20. Affects contact/oa/wiki/drive/minutes/calendar/attendance/chat/report/smart shortcuts, each with a guard test asserting the real response shape projects non-empty.scripts/shortcut_real_result.pyalso gains an upper-vs-lower layer comparison so an exit-0 empty projection over a non-empty backend is scored asprojection-data-lossin the real read-audit path rather thanreal-ok. - Message-read shortcut projection (#706) — the message-list shortcuts (
chat +chat-messages/+messages-list/+messages-list-direct/+at-me/+search-msg/+thread-replies) now render card and out-of-office rich-content JSON as readable text (without ever rewriting ordinary text that merely embeds a JSON fragment), expand a forwarded chat record's nestedforwardMessagesinstead of collapsing to a "[卡片]" summary, and mark undecryptable encrypted card messages as[加密消息]; the speaker is read from the baresenderkey, nested{name:…}sender objects yield their display name, and the literal string"null"is treated as absent. Shared projection helpers now live ininternal/shortcut/chatmsg.chat message download-mediaalso gains--msg-id/--open-message-idaliases for its--message-idflag so agents copying theopenMessageId/msgIdoutput field no longer hit "unknown flag".
- MCP URL resolution — adds