zhayujie
e4794f2e92
Merge pull request #3764 from rudycelekli/fix/discord-bound-inbound-attachment-size-20261014
...
fix(discord): refuse oversized inbound attachments before downloading
2026-10-16 16:35:32 +08:00
zhayujie
f1ee381b9d
Merge pull request #3753 from rudycelekli/fix/cow-net-new-skill-replacement-rollback-20261013
...
fix(skills): preserve installed skills during replacement failures
2026-10-16 16:35:09 +08:00
zhayujie
44c9accf54
Merge pull request #3760 from c020627/fix-skills-confirm-display-fields
...
fix(web): keep the registry's presentation fields on skill confirm
2026-10-16 16:32:18 +08:00
zhayujie
ca1ee3ed39
Merge pull request #3738 from c020627/fix-team-mention-boundary
...
fix(team): treat sentence-ending punctuation as an @mention boundary
2026-10-16 16:31:17 +08:00
zhayujie
1967fb51d2
Merge pull request #3767 from xiao115255/fix/context-usage-survives-restart
...
fix: keep the context-usage chart after a restart
2026-10-16 16:31:05 +08:00
zhayujie
7637c8ab1a
Merge pull request #3713 from rudycelekli/fix/cow50-mcp-token-record-shapes-20261012
...
fix(mcp): ignore malformed persisted OAuth records
2026-10-16 15:56:06 +08:00
zhayujie
d46b98e4af
Merge pull request #3723 from rudycelekli/fix/cow50-appdata-directory-race
...
fix(config): tolerate concurrent app data directory creation
2026-10-16 15:55:49 +08:00
zhayujie
4f95b2bcaa
Merge pull request #3711 from rudycelekli/fix/cow50-skill-list-name-types-20261012
...
fix(skills): normalize list-based names before cataloging
2026-10-16 15:55:38 +08:00
zhayujie
22ae4dc63b
Merge pull request #3707 from rudycelekli/fix/cow50-subscription-empty-prefix
...
fix(config): render subscription messages with no chat prefixes
2026-10-16 15:55:32 +08:00
zhayujie
83e0462943
Merge pull request #3698 from rudycelekli/fix/cow50-skill-config-entry-shapes-20261012
...
fix(skills): isolate malformed persisted config entries
2026-10-16 15:55:26 +08:00
zhayujie
c70005332a
Merge pull request #3696 from rudycelekli/fix/cow50-hidden-skill-setup-hints-20261012
...
fix(skills): honor model visibility in setup hints
2026-10-16 15:55:21 +08:00
zhayujie
752f1b2116
Merge pull request #3695 from rudycelekli/fix/cow50-custom-provider-types-20261012
...
fix(skills): validate custom provider credential types
2026-10-16 15:55:15 +08:00
zhayujie
b72666c112
Merge pull request #3686 from rudycelekli/fix/cow50-cli-config-object-root-20261012
...
fix(cli): ignore JSON configuration with a non-object root
2026-10-16 15:55:10 +08:00
zhayujie
079b9a3592
Merge pull request #3685 from rudycelekli/fix/cow50-skill-bom-20261012
...
fix(skills): support UTF-8 BOM in skills and configuration
2026-10-16 15:55:03 +08:00
zhayujie
7c8f4e05b2
Merge pull request #3734 from rudycelekli/fix/cow50-bridge-step-write-retry
...
fix(bridge): retry finished steps after transient history write failures
2026-10-16 15:54:57 +08:00
zhayujie
8af61a374c
Merge pull request #3733 from rudycelekli/fix/cow50-web-request-cancel-agent-scope-20261012
...
fix(web): scope request cancellation to the resolved agent
2026-10-16 15:54:50 +08:00
zhayujie
bf895f4d64
Merge pull request #3730 from rudycelekli/fix/cow50-workspace-template-create-race
...
fix(agent): avoid overwriting profiles during concurrent initialization
2026-10-16 15:54:44 +08:00
zhayujie
1a65dca5c9
Merge pull request #3727 from rudycelekli/fix/cow50-screenshot-project-directory-20261012
...
fix(browser): save screenshots in the current project
2026-10-16 15:54:38 +08:00
zhayujie
7bcbee7809
Merge pull request #3725 from rudycelekli/fix/cow50-browser-fill-required-text-20261012
...
fix(browser): require explicit text before filling inputs
2026-10-16 15:54:32 +08:00
zhayujie
420f6d0238
Merge pull request #3722 from rudycelekli/fix/cow50-onboarding-empty-profile
...
fix(agent): keep onboarding pending for empty profile files
2026-10-16 15:54:26 +08:00
zhayujie
1386a0d042
Merge pull request #3719 from rudycelekli/fix/cow50-log-sse-truncation-recovery-20261012
...
fix(web): resume live log streaming after file truncation
2026-10-16 15:54:20 +08:00
zhayujie
117fadabfa
Merge pull request #3717 from rudycelekli/fix/cow50-log-sse-error-json-20261012
...
fix(web): serialize log replay failures as valid SSE JSON
2026-10-16 15:54:14 +08:00
zhayujie
e49cca27cf
Merge pull request #3716 from rudycelekli/fix/cow50-telegram-mention-username-boundary-20261012
...
fix(telegram): match complete bot usernames in group mentions
2026-10-16 15:54:08 +08:00
zhayujie
a685fc4d79
Merge pull request #3715 from rudycelekli/fix/cow50-edit-carriage-return-lines-20261012
...
fix(edit): preserve carriage-return line separators
2026-10-16 15:54:02 +08:00
zhayujie
f16958e231
Merge pull request #3689 from rudycelekli/fix/cow50-send-regular-file-20261012
...
fix(send): refuse directories and special files
2026-10-16 15:53:56 +08:00
zhayujie
79d13942b5
Merge pull request #3726 from rudycelekli/fix/cow50-vision-compression-mime-20261012
...
fix(vision): match compressed image bytes and MIME type
2026-10-16 15:53:50 +08:00
zhayujie
5c1d9860b6
Merge pull request #3706 from rudycelekli/fix/cow50-image-retry-routing
...
fix(openai): retain image endpoint overrides during retries
2026-10-16 15:53:43 +08:00
zhayujie
05480f018f
Merge pull request #3704 from rudycelekli/fix/cow50-model-catalog-copy
...
fix(models): detach capability lists returned by catalog readers
2026-10-16 15:53:36 +08:00
zhayujie
8ea8ab0b94
Merge pull request #3693 from rudycelekli/fix/cow50-minimax-stream-close
...
fix(models): close native provider streaming responses on every exit
2026-10-16 15:53:30 +08:00
zhayujie
c33ae954dc
Merge pull request #3692 from rudycelekli/fix/cow50-responses-incomplete-tools
...
fix(openai): report truncated Responses tool arguments as length
2026-10-16 15:53:24 +08:00
zhayujie
3933260ba4
Merge pull request #3691 from rudycelekli/fix/cow50-responses-refusal
...
fix(openai): preserve Responses refusal text
2026-10-16 15:53:19 +08:00
zhayujie
3a73f34cb4
Merge pull request #3688 from rudycelekli/fix/cow50-minimax-tts-response-cleanup-20261012
...
fix(voice): close MiniMax synthesis responses on every exit
2026-10-16 15:53:12 +08:00
zhayujie
00fe75e720
Merge pull request #3700 from rudycelekli/fix/cow50-google-asr-audio-file-errors-20261012
...
fix(voice): return error replies for unreadable Google ASR input
2026-10-16 15:53:07 +08:00
zhayujie
9441b7609a
Merge pull request #3720 from rudycelekli/fix/cow50-asr-text-contract-validation-20261012
...
fix(voice): reject non-string transcription payloads
2026-10-16 15:53:00 +08:00
zhayujie
887591dc46
Merge pull request #3708 from rudycelekli/fix/cow50-openai-voice-base-trailing-slash-20261012
...
fix(voice): normalize OpenAI audio endpoint trailing slashes
2026-10-16 15:52:54 +08:00
zhayujie and cowagent
e7e50255a2
fix: correct the restored context-usage comment and trim docstrings
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-16 12:44:49 +08:00
zhayujie
c10c882d10
Merge remote-tracking branch 'origin/master' into pr-3767
2026-10-16 12:36:59 +08:00
zhayujie and cowagent
f36005b9bd
fix: share the @mention boundary across matcher, stripping, web and desktop
...
Move address stripping into team_addressing.strip_address so the three
copies agree with the matcher, reuse addressed_agent_id in the web
channel, and mirror the boundary in the web console and desktop client.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-16 12:36:49 +08:00
zhayujie
48075563c3
Merge remote-tracking branch 'origin/master' into pr-3738
2026-10-16 12:30:59 +08:00
zhayujie and cowagent
4d6d42f02e
fix: only carry staged registry fields on skill confirm when the registry set them
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-16 12:28:49 +08:00
zhayujie
1b55d271d3
Merge remote-tracking branch 'origin/master' into pr-3760
2026-10-16 12:27:43 +08:00
zhayujie and cowagent
4ab738f463
fix: keep umask permissions on url-installed skills and drop replace locks
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-16 12:27:34 +08:00
zhayujie
dc6596aa89
Merge remote-tracking branch 'origin/master' into pr-3753
2026-10-16 12:26:33 +08:00
zhayujie and cowagent
13d489e1ce
fix: check discord attachment size in _parse_message to reuse its image detection
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-16 12:26:25 +08:00
zhayujie
8c439c9479
Merge remote-tracking branch 'origin/master' into pr-3764
2026-10-16 12:25:40 +08:00
zhayujie
d7c5c12a6e
Merge pull request #3752 from rudycelekli/fix/cow-net-new-special-file-targets-20261013
...
fix(tools): refuse special-file targets before reading or replacing them
2026-10-16 12:24:41 +08:00
zhayujie
65e9a4e287
Merge pull request #3751 from rudycelekli/fix/cow-net-new-openai-default-session-lock-20261013
...
fix(api): serialize equivalent default-agent conversation requests
2026-10-16 12:24:35 +08:00
zhayujie
dd6d221981
Merge pull request #3750 from rudycelekli/fix/cow-net-new-weixin-cdn-error-close-20261013
...
fix(weixin): close rejected CDN media responses
2026-10-16 12:24:29 +08:00
zhayujie
dab1063b4b
Merge pull request #3761 from c020627/fix-subagent-type-and-templates-robustness
...
fix(subagent): report a non-string type instead of crashing, and survive an unlistable templates dir
2026-10-16 12:24:22 +08:00
zhayujie
4b0d82f340
Merge pull request #3749 from rudycelekli/fix/cow-net-new-project-save-errors-20261013
...
fix(workspace): report failed project and session preference saves
2026-10-16 12:24:15 +08:00
zhayujie
ef8282c9ab
Merge pull request #3747 from rudycelekli/fix/cow-net-new-workspace-read-snapshot-20261013
...
fix(workspace): bind editor metadata to the content read
2026-10-16 12:24:08 +08:00
zhayujie
2498ccd935
Merge pull request #3765 from rudycelekli/fix/slack-skip-system-message-subtypes-20261014
...
fix(slack): do not answer workspace notices as user messages
2026-10-16 12:24:02 +08:00
zhayujie
692c7f81d3
Merge pull request #3763 from rudycelekli/fix/linkai-admin-exact-match-20261014
...
fix(linkai): match group admins by exact id, not substring
2026-10-16 12:23:52 +08:00
zhayujie
498925e083
Merge pull request #3759 from c020627/fix-chat-voice-to-text-guard
...
fix(chat): guard the speech-to-text call the way TTS is guarded
2026-10-16 12:23:47 +08:00
zhayujie
e7476b5c4a
Merge pull request #3755 from rudycelekli/fix/cow-knowledge-publication-20261013
...
fix(knowledge): stage document replacements before publication
2026-10-16 12:23:42 +08:00
zhayujie
f0011674c7
Merge pull request #3746 from rudycelekli/fix/cow-mutable-file-refresh-20261013
...
fix(web): revalidate regenerated workspace file responses
2026-10-16 12:23:36 +08:00
zhayujie
4a39757c49
Merge pull request #3745 from rudycelekli/fix/cow-net-new-scheduler-migration-commit-20261013
...
fix(scheduler): commit migrated reminders before retiring legacy stores
2026-10-16 12:23:30 +08:00
zhayujie
13b8d91bd4
Merge pull request #3762 from rudycelekli/fix/dingtalk-group-file-cache-per-sender-20261014
...
fix(dingtalk): keep group file uploads with the member who sent them
2026-10-16 12:23:25 +08:00
zhayujie and cowagent
99be4c16bf
fix: show sidebar nav scrollbar only on hover
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-15 15:01:44 +08:00
zhayujie and cowagent
396d226180
fix: run chat skill commands on the current agent's own skills
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 20:10:37 +08:00
zhayujie
31eaa80b7a
Merge pull request #3758 from zhayujie/docs-desc-fill
...
docs: fill in short page descriptions across zh, en and ja
2026-10-14 19:27:25 +08:00
zhayujie and cowagent
4823fd1fbd
docs: fill in short page descriptions across zh, en and ja
...
- Write descriptions for pages missed last time (wechat-kf, agent-mail,
chat-api, features, qwen, linkai, delegation)
- Summarize the main changes of each release instead of generic notes
- Bring all Japanese descriptions in line with the zh/en ones
- Trim descriptions that ran over the length limit
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 18:40:37 +08:00
zhayujie and cowagent
f2b6767ad7
fix: narrow subagent delegation and wrap up before timeout
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 18:30:09 +08:00
zhayujie and cowagent
14a1b36c65
feat: install skills from a product catalogue in the add dialog
...
- A product catalogue becomes the first tab of a larger install dialog
- Built-in skills lead the list with their own icons, then newest first
- Products may relabel built-in skills; display descriptions are shown
- The skill viewer shows the installed version
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 18:27:28 +08:00
zhayujie and cowagent
395892b7ff
feat: fall back to the default hub for unknown skills and keep display descriptions
...
- A skill the configured registry does not know is looked up on the default
hub, without the registry's key
- Installers may record a display_description shown in place of SKILL.md's;
the agent still reads SKILL.md
- New skills are stamped with installed_at
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 18:27:20 +08:00
zhayujie and cowagent
7d7012ee9e
docs: rewrite page descriptions to summarize each page
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 17:33:37 +08:00
zhayujie and cowagent
6d483bab52
feat: add skill market and skills-first seams to the desktop skills page
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 16:07:25 +08:00
zhayujie and cowagent
f72fae3371
feat: let a configured skill registry serve installs by name
...
Add skill_hub_url and skill_hub_api_key. When set, bare-name installs,
skill search and the remote listing go to that registry, with the key
sent as a bearer token to it only; provider installs and the default
setup are unchanged. Display fields returned by the registry, or passed
as install meta from the console, are recorded in skills_config.json.
Sensitive values are masked when remote config is logged.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 16:07:25 +08:00
zhayujie and cowagent
f88ac0d973
feat: keep display name, icon and version from skill installs in skills_config
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 12:13:48 +08:00
zhayujie and cowagent
65d58c2802
feat: show skill icon on the desktop skills page
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 12:13:23 +08:00
zhayujie and cowagent
42d0b97dba
docs: move token usage note under prompt caching in v2.2.1 notes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-14 12:03:06 +08:00
zhayujie and cowagent
61499724b1
docs: add chat API screenshot to v2.2.1 release notes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 21:43:24 +08:00
zhayujie and cowagent
a547c07f7b
feat: bump version to 2.2.1
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 21:40:02 +08:00
zhayujie and cowagent
21be66d893
docs: add v2.2.1 release notes (en/ja) and screenshots
...
- Add English and Japanese v2.2.1 release notes and overview entries
- Restructure the custom menu guide and add screenshots
- Add the chat API config screenshot and an Artifacts section to the web console guide
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 21:40:02 +08:00
zhayujie and cowagent
90e8c0a3e1
fix: reload a custom menu page on every visit
...
Clicking an entry already open, or coming back from another view, kept
the stale page because the redraw only ran when the entry itself
changed. The file or site behind it may have changed meanwhile.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 18:33:44 +08:00
zhayujie and cowagent
ba6d295c1f
docs: add v2.2.1 release notes (zh)
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 17:37:40 +08:00
zhayujie
db13054591
Merge pull request #3744 from handoing/fix/install-browser-sudo
...
fix: do not require sudo to run `cow install-browser`
2026-10-13 17:05:53 +08:00
zhayujie
f95f044b4a
Merge pull request #3743 from handoing/fix/browser-browsers-path
...
fix: honor PLAYWRIGHT_BROWSERS_PATH when locating Chromium
2026-10-13 17:05:47 +08:00
zhayujie and cowagent
76046ca860
fix: align the sidebar footer with the menu items
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 16:53:35 +08:00
zhayujie and cowagent
260b67cbda
feat: complete the OpenAI-compatible chat API
...
- Select the agent with agent_id and the model with model (defaults to the
agent's own model); add GET /v1/models
- Stateless requests by default, server-side history with conversation_id
- Report usage (with cached tokens), reasoning_content and tool_trace /
cow_event for tool and teammate activity
- Add the external_api_enabled switch; turning the API off keeps its key
- Web and desktop settings card with key management and request examples;
show a copyable agent ID on the agents page
- Docs for the chat API and the custom menu under Extensions
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 16:46:19 +08:00
zhayujie and cowagent
e58d0819e3
fix: restore missing shortcuts on a manual reinstall
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-13 11:58:49 +08:00
zhayujie
b6d50d13ef
Merge pull request #3732 from rudycelekli/fix/cow50-visible-turn-tool-history-scan-20261012
...
fix(memory): retain originating turns after long tool workflows
2026-10-13 10:24:04 +08:00
zhayujie
5898ca2ef5
Merge pull request #3728 from rudycelekli/fix/cow50-role-override-atomic-validation-20261012
...
fix(role): retain consistent tags when importing overrides
2026-10-13 10:23:59 +08:00
zhayujie
aa5f4c92cc
Merge pull request #3415 from aniruddhaadak80/fix/slack-discord-send-retry
...
fix(slack,discord): let a send failure reach the channel retry
2026-10-12 20:36:40 +08:00
zhayujie
083360327f
Merge pull request #3365 from aniruddhaadak80/fix/read-coerce-numeric-args
...
fix(read): accept a numeric string for offset and limit
2026-10-12 20:36:33 +08:00
zhayujie
70691d3627
Merge pull request #3359 from aniruddhaadak80/fix/scheduler-unknown-action-type
...
fix(scheduler): do not report an unknown action type as delivered
2026-10-12 20:36:24 +08:00
zhayujie and cowagent
a0b3564e3b
fix: only retry a Slack/Discord send when nothing went out
...
chat_channel._send re-sends the whole reply, so a failure after the
first chunk, or a Discord timeout that may still complete on the loop,
is logged instead of raised.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-12 20:26:11 +08:00
zhayujie
c3c37f9e24
Merge branch 'master' into pr-3415
2026-10-12 20:24:36 +08:00
zhayujie and cowagent
788607b5d6
fix: convert integer tool arguments once in BaseTool.execute_tool
...
Quoted integers like "offset": "2" are converted for every argument the
schema declares as an integer, so read drops its own helper and keeps
only its range check; memory_get refuses a non-positive num_lines.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-12 20:24:28 +08:00
zhayujie
1d1581eef6
Merge branch 'master' into pr-3365
2026-10-12 20:21:41 +08:00
zhayujie and cowagent
8d20697027
fix: keep an unknown action type out of the retry loop, record the run as error
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-12 20:21:31 +08:00
zhayujie
ad1c53d60c
Merge branch 'master' into pr-3359
2026-10-12 20:20:48 +08:00
zhayujie
254a5d435b
Merge pull request #3682 from c020627/fix-skill-frontmatter-quoting
...
fix(skills): keep YAML 1.1 keyword frontmatter values as strings
2026-10-12 20:20:10 +08:00
zhayujie and cowagent
c06e8c1a33
fix: drop the regex fallback, PyYAML is required and the fallback parser keeps strings
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-12 20:19:35 +08:00
zhayujie
7a53d89e88
Merge pull request #3684 from c020627/fix-chat-channel-tts-fallback
...
fix(chat): deliver the text answer when text-to-voice fails
2026-10-12 20:18:51 +08:00
zhayujie
5f98cae79d
Merge pull request #3683 from c020627/fix-scheduler-once-past-time
...
fix(scheduler): refuse once tasks whose run time has already passed
2026-10-12 20:18:44 +08:00
zhayujie
93d6a0fff8
Merge pull request #3681 from pratikgx/docs/ja-models-locale-links
...
docs: point Japanese models page links to Japanese pages
2026-10-12 20:18:39 +08:00
zhayujie
6ac5957fb7
Merge pull request #3441 from Harbor404/feat/3386-model-auto-discovery
...
feat(models): discover provider models automatically
2026-10-12 19:55:35 +08:00
zhayujie and cowagent
b36296c717
feat: refine model discovery and default sidebar groups
...
Stage discovered models behind a picker, skip non-chat types, and fill
default API bases. Desktop now shows Chat/Manage groups by default with
a hover menu editor; the web footer matches the desktop version kebab.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-12 19:55:17 +08:00
zhayujie
3ff0bfebb9
Merge branch 'pr-3441' into test-3441
2026-10-12 18:31:19 +08:00