727 Commits

Author SHA1 Message Date
Vincent Koc
f505c84285 docs: typography hygiene across 7 high-traffic pages 2026-05-05 22:16:37 -07:00
Vincent Koc
1ded8de5a9 docs: audit and fix 3 pages (typography across help/channels) 2026-05-05 21:28:47 -07:00
Ayaan Zaidi
814b125f11 fix(telegram): separate progress drafts from final replies 2026-05-06 09:27:08 +05:30
Ayaan Zaidi
e27f179361 fix(telegram): verify final stream edit landed 2026-05-06 09:27:08 +05:30
Vincent Koc
4ee234f8ee docs: typography hygiene across 6 pages
Replaced 66 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/channels/mattermost.md: 12 chars
- docs/tools/plugin.md: 11 chars
- docs/providers/xai.md: 11 chars
- docs/plugins/building-plugins.md: 11 chars
- docs/concepts/streaming.md: 11 chars
- docs/concepts/model-providers.md: 11 chars
2026-05-05 20:45:39 -07:00
Vincent Koc
f4a63940cc docs: typography hygiene across 6 pages
Replaced 74 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/gateway/opentelemetry.md: 13 chars
- docs/channels/msteams.md: 13 chars
- docs/tools/skills.md: 12 chars
- docs/start/setup.md: 12 chars
- docs/nodes/location-command.md: 12 chars
- docs/concepts/context-engine.md: 12 chars
2026-05-05 20:34:37 -07:00
Vincent Koc
ae9f779e5f docs: typography hygiene + 1 in-body H1 removal across 6 pages
Replaced 84 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/gateway/tools-invoke-http-api.md: 14 chars; removed the
  duplicate '# Tools Invoke (HTTP)' H1 (Mintlify renders title from
  frontmatter; the in-body H1 with parens produced a brittle anchor).
- docs/tools/browser-control.md: 14 chars
- docs/security/formal-verification.md: 14 chars
- docs/gateway/configuration-reference.md: 14 chars
- docs/concepts/agent.md: 14 chars
- docs/channels/qa-channel.md: 14 chars
2026-05-05 20:26:16 -07:00
Vincent Koc
861a593921 docs: typography hygiene across 5 pages
Replaced 75 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/plugins/skill-workshop.md: 15 chars
- docs/gateway/pairing.md: 15 chars
- docs/gateway/configuration.md: 15 chars
- docs/concepts/oauth.md: 15 chars
- docs/channels/bluebubbles.md: 15 chars
2026-05-05 20:14:18 -07:00
Vincent Koc
7a39551685 docs: typography hygiene + 2 in-body H1 removals across 5 pages
Replaced 92 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/channels/feishu.md: 19 chars; removed the duplicate
  '# Feishu / Lark' H1 (Mintlify renders title from frontmatter; the
  in-body H1 with a slash produced a brittle anchor).
- docs/gateway/bonjour.md: 18 chars; removed the duplicate
  '# Bonjour / mDNS discovery' H1.
- docs/channels/matrix.md: 19 chars
- docs/tools/browser.md: 18 chars
- docs/automation/standing-orders.md: 18 chars
2026-05-05 19:54:53 -07:00
Vincent Koc
4395f1dd66 docs: typography hygiene + drop one in-body H1 across 5 pages
Replaced 98 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules.

- docs/plugins/sdk-migration.md: 20 chars
- docs/help/testing.md: 20 chars
- docs/automation/tasks.md: 20 chars
- docs/plugins/sdk-channel-plugins.md: 19 chars
- docs/channels/yuanbao.md: 19 chars; removed the duplicate '# Yuanbao'
  H1 (Mintlify renders title from frontmatter).
2026-05-05 19:46:32 -07:00
Vincent Koc
b9f711089a docs: typography hygiene + drop one in-body H1 across 5 pages
Replaced 138 typography characters (curly quotes, apostrophes, em/en
dashes, non-breaking hyphens) with ASCII equivalents per
docs/CLAUDE.md heading and content hygiene rules so grep, copy-paste,
and Mintlify search hit clean tokens.

- docs/reference/AGENTS.default.md: 29 chars, plus removed the
  duplicate '# AGENTS.md - OpenClaw Personal Assistant (default)' H1
  (Mintlify renders title from frontmatter; the in-body H1 with
  parens and a bare hyphen produced a brittle anchor).
- docs/help/testing-live.md: 29 chars
- docs/tools/image-generation.md: 28 chars
- docs/channels/index.md: 27 chars
- docs/tools/video-generation.md: 25 chars
2026-05-05 19:25:16 -07:00
Val Alexander
36df0d93b9 fix: repair iOS LAN pairing
Fix iOS LAN/setup-code pairing policy for #47887.

- Allow explicit private LAN and .local plaintext ws:// setup/manual connects where policy allows it.
- Keep public hosts, .ts.net, and Tailscale CGNAT plaintext fail-closed.
- Prefer explicit passwords over stale bootstrap tokens in Swift and TypeScript gateway clients.
- Update setup-code/device-pair coverage, docs, and changelog with source credit for #65185.

Verification:
- pnpm install
- git diff --check origin/main..HEAD
- pnpm exec oxfmt --check --threads=1 src/gateway/client.ts src/gateway/client.test.ts src/pairing/setup-code.ts src/pairing/setup-code.test.ts extensions/device-pair/index.ts extensions/device-pair/index.test.ts
- pnpm format:docs:check
- pnpm test src/gateway/client.test.ts src/pairing/setup-code.test.ts extensions/device-pair/index.test.ts
- cd apps/shared/OpenClawKit && swift test --filter 'DeepLinksSecurityTests|GatewayNodeSessionTests'
- pnpm lint:swift passes with the existing TalkModeRuntime.swift type-body-length warning

Blocked locally:
- iOS app-target xcodebuild tests require unavailable watchOS 26.4 runtime here.
- Testbox check:changed previously failed because the image lacks swiftlint; local swiftlint passes.
2026-05-05 21:07:19 -05:00
Peter Steinberger
ceca7fdfda docs: document channel message plugin api 2026-05-06 01:46:42 +01:00
hcl
d193d15f17 fix(plugins): explain source-only package diagnostics (#77835) (#77842) 2026-05-05 17:43:13 -07:00
Peter Steinberger
b31774749c docs: consolidate moved docs pages
Consolidate moved docs pages, add redirects, and update glossary labels.
2026-05-05 17:38:21 +01:00
Vincent Koc
5a0d6c7ad8 fix(gateway): keep reset and refresh paths responsive (#77701)
* fix(hooks): keep session memory slugging off reset hot path

* fix(hooks): run session memory capture asynchronously

* fix(cli): avoid stuck gateway command exits

* fix(gateway): cache empty read-only model catalog

* fix(doctor): stop stale TUI clients for WhatsApp responsiveness
2026-05-05 00:59:13 -07:00
Vincent Koc
e03fe1e289 fix(telegram): reuse preview for long text finals (#77658)
* fix(telegram): reuse preview for long text finals

* test(qa): cover long telegram finals

* fix(qa): satisfy extension lint

* fix(qa): keep telegram long final fixture to two chunks

* test(telegram): cover three chunk finals

* fix(telegram): force long final preview boundary
2026-05-04 21:19:44 -07:00
Peter Steinberger
a91c17c426 fix: explain missing git during plugin install 2026-05-05 05:14:09 +01:00
Vincent Koc
04b7e4894d docs(channels): add Socket vs HTTP comparison and explain shared URL fields
The Slack docs jumped straight from intro into the Quick Setup tabs
without telling readers when to pick each transport. Add a Choosing
Socket Mode or HTTP Request URLs section above Quick Setup with a
concern-by-concern table (public URL, outbound network, tokens, dev
laptops, scaling, multi-account, slash command transport, signing,
recovery) plus a Note pointing at the right default for each shape.

Also add an Info block under the HTTP Quick Setup manifest explaining
why the manifest carries three url fields (slash_commands[].url,
event_subscriptions.request_url, interactivity.request_url) — Slack's
manifest schema requires them spelled out separately even though
OpenClaw routes by payload type, and slash commands silently no-op
without their url field in HTTP mode.
2026-05-04 18:30:29 -07:00
Vincent Koc
b062bb670d docs(channels): inline Slack manifest into Quick Setup with Recommended/Minimal variants
The Quick Setup steps in docs/channels/slack.md previously sent users to
the `#manifest-and-scope-checklist` anchor lower on the page to copy the
manifest, breaking the copy-paste flow. Pull the manifest inline as a
Mintlify <CodeGroup> for both Socket Mode and HTTP Request URLs tabs and
add a Minimal variant for workspaces that restrict scopes (drops
files:*, reactions:*, pins:*, mpim:*, emoji:read, usergroups:read while
keeping DMs, channel/group history, mentions, App Home, and slash
commands). Recommended matches extensions/slack/src/setup-shared.ts.
Existing Manifest and scope checklist section stays as the canonical
per-scope reference.

Cross-link from docs/concepts/qa-e2e-automation.md so QA maintainers see
the production manifest reference, while keeping the QA Driver/SUT pair
of manifests inline (the lane intentionally needs two distinct apps so
its shape is different from a single-app production install).
2026-05-04 18:16:15 -07:00
Pavan Kumar Gondhi
ea75cd8971 Gate zalouser startup name matching [AI] (#77411)
* fix: gate zalouser startup name matching

* addressing codex review

* docs: add changelog entry for PR merge
2026-05-04 22:47:19 +05:30
Peter Steinberger
585ce38015 fix(telegram): stabilize topic dispatch runtime 2026-05-04 08:25:09 +01:00
Val Alexander
b2efd19648 fix(ios): harden gateway pairing setup
Harden iOS gateway setup-code pairing by rejecting non-loopback plaintext ws:// setup URLs before bootstrap token issuance, consolidating iOS setup parsing, and adding QR scan support from Settings.

Verification:
- pnpm test extensions/device-pair/index.test.ts
- swift test --package-path apps/shared/OpenClawKit --filter DeepLinksSecurityTests
- XcodeBuildMCP OpenClawLogicTests/DeepLinkParserTests
- targeted SwiftLint for touched iOS/OpenClawKit files
- pnpm exec oxfmt --check --threads=1 extensions/device-pair/index.ts extensions/device-pair/index.test.ts
- git diff --check origin/main...HEAD
- GitHub PR checks green on 58e5e60a5c
2026-05-04 02:11:47 -05:00
Peter Steinberger
fa689295c6 fix: resolve small triage issues 2026-05-04 07:38:42 +01:00
Val Alexander
21ac476904 fix(telegram): stabilize reply dispatch runtime
Summary:
- Add a stable provider-dispatcher dist entry and legacy alias coverage for stale reply-dispatch chunks.
- Make Telegram reasoning stream previews transient after final delivery and harden visible-send reasoning sanitization.
- Document transient /reasoning stream behavior and credit @BunsDev in the changelog.

Verification:
- pnpm test src/agents/tools/message-tool.test.ts src/infra/tsdown-config.test.ts test/scripts/runtime-postbuild.test.ts extensions/telegram/src/bot-message-dispatch.test.ts src/plugin-sdk/channel-streaming.test.ts src/plugin-sdk/channel-entry-contract.test.ts
- OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test src/channels/plugins/module-loader.test.ts src/plugin-sdk/channel-entry-contract.test.ts
- pnpm exec oxfmt --check --threads=1 <changed files>
- git diff --check
- pnpm build
- GitHub PR checks for b8b7a91834
2026-05-04 01:07:57 -05:00
Jesse Merhi
9c3b7b7b15 docs: clarify IRC managed proxy coverage (#76822)
Summary:
- The PR adds a changelog note plus IRC and network-proxy documentation stating that IRC raw TCP/TLS egress is outside operator-managed forward proxy routing and should be disabled unless direct egress is approved.
- Reproducibility: not applicable. for this docs-only PR. Source inspection establishes the documented premise ... kets while managed proxy routing covers normal HTTP/WebSocket paths and documents raw-socket bypass limits.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-7682…

Validation:
- ClawSweeper review passed for head 7dde35adb9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 7dde35adb9
Review: https://github.com/openclaw/openclaw/pull/76822#issuecomment-4366671907

Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-04 00:52:47 +00:00
Peter Steinberger
2493ab1978 docs: clarify tool-only Discord replies 2026-05-04 01:37:22 +01:00
Peter Steinberger
c3f5c20f2c fix(cli): retry admin device approval after ownership denial 2026-05-04 00:41:55 +01:00
Vincent Koc
0bf19f540d fix(docs): validate strict channel json fences 2026-05-03 15:44:44 -07:00
Vincent Koc
f275e9d4b9 fix(docs): make slack manifest snippets parseable 2026-05-03 15:28:27 -07:00
Vincent Koc
9ae93179e2 fix(docs): validate channel config snippets 2026-05-03 15:23:07 -07:00
Vincent Koc
d57b16ff81 fix(tlon): expose group invite allowlist 2026-05-03 15:15:58 -07:00
Vincent Koc
d3ee67b420 fix(googlechat): correct group setup example 2026-05-03 14:54:35 -07:00
Peter Steinberger
c33e578554 feat: add channel progress drafts
Adds unified progress-draft streaming for chat channels, with docs and per-channel regressions.
2026-05-03 22:01:08 +01:00
Vincent Koc
c5488ea577 fix(telegram): expose media group flush config 2026-05-03 12:12:53 -07:00
Peter Steinberger
52257fd05e docs: clarify Discord bot mentions 2026-05-03 20:11:55 +01:00
Vincent Koc
03e35b1d83 fix(feishu): honor block streaming config 2026-05-03 11:42:13 -07:00
Vincent Koc
fa98d01aa1 fix(discord): skip disabled native command cleanup 2026-05-03 11:03:02 -07:00
Peter Steinberger
2805bbd3d7 feat(commands): add side alias for btw 2026-05-03 18:22:20 +01:00
Peter Steinberger
6becfcb275 test(telegram): cover visible error fresh final 2026-05-03 16:53:06 +01:00
Peter Steinberger
e2c8db2cad fix(telegram): warn on selected quote tool progress 2026-05-03 16:24:38 +01:00
GodsBoy
b336efdd9c docs(telegram, streaming): note replyToMode and toolProgress mutual exclusion
Document that channels.telegram.streaming.preview.toolProgress requires
channels.telegram.replyToMode: 'off'. Quote-reply requires the final message
reference at send time, which is incompatible with preview-edit streaming, so
the two features are mutually exclusive on Telegram.

Adds:
- Note callout in docs/channels/telegram.md after the existing toolProgress
  guidance, explaining the exclusion and how to restore visibility.
- Cross-link bullet in docs/concepts/streaming.md pointing to the Telegram
  channel doc for the full note.

Surfaces a doc/runtime gap that has been silent since v2026.4.22.
2026-05-03 16:24:38 +01:00
Peter Steinberger
686585eccf docs(telegram): clarify polling startup network notes (#76768) 2026-05-03 16:21:41 +01:00
Ayaan Zaidi
5b94c4ce93 fix(telegram): start polling after webhook cleanup timeout (#76735)
Summary:
- The branch changes Telegram polling startup to reuse the successful probe `getMe` result as grammY `botInfo` ... es` after recoverable `deleteWebhook` failures, and updates Telegram docs, changelog, and regression tests.
- Reproducibility: yes. for the narrow PR bug: source inspection shows current main can block before polling o ... d timeout coverage that reaches `run()`. The full linked high-RTT report remains only partially reproduced.

Automerge notes:
- Ran the ClawSweeper repair loop before final review.
- Included post-review commit in the final squash: fix(telegram): start polling after webhook cleanup timeout
- Included post-review commit in the final squash: fix(telegram): extract bot info contract

Validation:
- ClawSweeper review passed for head c74bbdd1ff.
- Required merge gates passed before the squash merge.

Prepared head SHA: c74bbdd1ff
Review: https://github.com/openclaw/openclaw/pull/76735#issuecomment-4366417178

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-03 15:16:32 +00:00
Peter Steinberger
c850d1bb0d fix(qqbot): harden clientSecret SecretRefs 2026-05-03 12:25:08 +01:00
xialonglee
40f970a13d feat(qqbot): resolve clientSecret SecretRefs and add secret contract 2026-05-03 12:25:08 +01:00
scoootscooob
85e4ec1fb1 fix(doctor): persist group visible reply default (#76513) 2026-05-03 02:32:41 -07:00
openclaw-clownfish[bot]
22748b1c36 feat(whatsapp): support native outbound mentions (#73961)
Merged via squash.

Prepared head SHA: bb1df9e681
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
2026-05-02 23:50:54 -05:00
clawsweeper[bot]
e8df05ed4f fix(slack): enable preview streaming in flat DMs (replyToMode: off) (#76330)
Summary:
- The PR enables Slack draft preview streaming for flat DMs in all non-off modes, updates Slack streaming tests/docs/config metadata/changelog, and refreshes small guard baselines.
- Reproducibility: yes. source-reproducible on current main: the helper returns false for `mode: "partial"` in ...  current test asserts that disabled path. I did not run tests because this review was explicitly read-only.

Automerge notes:
- Ran the ClawSweeper repair loop before final review.
- Included post-review commit in the final squash: fix(slack): enable preview streaming in flat DMs (replyToMode: off)
- Included post-review commit in the final squash: fix(clawsweeper): address review for automerge-openclaw-openclaw-5654…

Validation:
- ClawSweeper review passed for head 52e5d74ef9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 52e5d74ef9
Review: https://github.com/openclaw/openclaw/pull/76330#issuecomment-4365017023

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: bob <637186+HangGlidersRule@users.noreply.github.com>
2026-05-03 01:30:36 +00:00
Vincent Koc
00ad13b599 fix(plugins): use default tags for official plugin installs 2026-05-02 14:47:53 -07:00