Commit Graph
100 Commits
Author SHA1 Message Date
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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 99be4c16bf fix: show sidebar nav scrollbar only on hover
Co-authored-by: cowagent <cow@cowagent.ai>
2026-10-15 15:01:44 +08:00
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 7d7012ee9e docs: rewrite page descriptions to summarize each page
Co-authored-by: cowagent <cow@cowagent.ai>
2026-10-14 17:33:37 +08:00
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent a547c07f7b feat: bump version to 2.2.1
Co-authored-by: cowagent <cow@cowagent.ai>
2026-10-13 21:40:02 +08:00
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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
zhayujieandcowagent 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