Commit Graph

8397 Commits

Author SHA1 Message Date
Mario Zechner 4b1956ab49 chore: add .pi folder 2026-01-31 04:20:12 +01:00
Mario Zechner 9cb5e22861 docs: add pi and pi-dev documentation 2026-01-31 04:20:12 +01:00
Mario Zechner aa6b9e3a20 CLI: fix tui:dev port resolution 2026-01-31 04:20:12 +01:00
Evan Otero c67df653b6
fix(security): restrict local path extraction in media parser to prevent LFI (#4880)
* Media: restrict local path extraction to prevent LFI

* Lint: remove unused variable hasValidMediaOnLine
2026-01-31 03:44:11 +01:00
Mariano Belinky b17e6fdd07 iOS: align node permissions and notifications 2026-01-31 02:28:48 +01:00
Yuri Chukhlib 65dedef65b
fix(bluebubbles): debounce by messageId to preserve attachments in text+image messages (#4984)
* fix(bluebubbles): debounce by messageId to preserve attachments in text+image messages

BlueBubbles fires multiple webhook events for a single message - first
without attachment metadata, then ~350ms later with it. Previously,
messages with attachments bypassed debouncing and were processed
immediately, while the text-only version was also queued.

Now the debouncer uses messageId as the key when available, coalescing
all webhook events for the same message. The existing combineDebounceEntries
function merges attachments from all events.

Closes #4848

* fix: increase debounce and handle balloon messages

- Increase DEFAULT_INBOUND_DEBOUNCE_MS from 350ms to 500ms
- Update buildKey to use associatedMessageGuid for balloon messages
- Add regression test for debouncing behavior

Fixes issues identified in code review.

---------

Co-authored-by: Yurii Chukhlib <yurii.chukhlib@viber.com>
Co-authored-by: Tyler Yust <TYTYYUST@YAHOO.COM>
2026-01-30 15:53:14 -08:00
Tyler Yust 57248a7ca1
fix: prefer requesterOrigin over stale session entry in subagent announce routing (#4957)
* fix: prefer requesterOrigin over stale session entry in subagent announce routing

When a subagent finishes and announces results back, resolveAnnounceOrigin
merged the session entry (primary) with requesterOrigin (fallback). If the
session store had a stale lastChannel (e.g. whatsapp) from a previous
interaction but the user was now on a different channel (e.g. bluebubbles),
the announce would route to the wrong channel.

Swap the merge order so requesterOrigin (captured at spawn time, reflecting
the actual current channel) takes priority, with the session entry as
fallback for any missing fields.

Error before fix:
  Delivery failed (whatsapp to bluebubbles:chat_guid:...): Unknown channel: whatsapp

Adds regression test for the stale-channel scenario.

* fix: match test to exact failure scenario and improve reliability (#4957) (thanks @tyler6204)

- Remove lastTo from stale session store to match the exact mismatch scenario described in the PR
- Replace 5ms setTimeout sleeps with expect.poll for better test reliability
- Prevents flakiness on slower CI machines
2026-01-30 15:52:19 -08:00
Mario Zechner 6a978aa1bc
Merge pull request #5021 from mitsuhiko/patch-3
Fix typo from 'p-mono' to 'pi-mono' in agent.md
2026-01-31 00:27:14 +01:00
Armin Ronacher 97895a0239
Fix typo from 'p-mono' to 'pi-mono' in agent.md 2026-01-31 00:23:45 +01:00
Tyler Yust 57c34a324c UI: introduce active minutes constant for chat sessions and enhance session display names 2026-01-30 14:59:08 -08:00
Tyler Yust 0b7aa8cf1d feat(ui): refresh session list after chat commands in Web UI 2026-01-30 14:29:04 -08:00
Gustavo Madeira Santana 34bdbdb405 fix: resolve Control UI assets for global installs (#4909) (thanks @YuriNachos)
Co-authored-by: YuriNachos <YuriNachos@users.noreply.github.com>
2026-01-30 17:08:40 -05:00
Yurii Chukhlib aa3a8ea869 fix(infra): resolve control-ui assets on npm global install (#4855) 2026-01-30 17:06:58 -05:00
Vignesh 2f0592dbc6
Update deployment link in railway documentation 2026-01-30 14:06:12 -08:00
Gustavo Madeira Santana 39eb0b7bc0 fix: prevent undefined gateway token defaults (#4873) (thanks @Hisleren)
Co-authored-by: Hisleren <Hisleren@users.noreply.github.com>
2026-01-30 16:16:35 -05:00
Gustavo Madeira Santana e5a95b5b66 fix: local updates for PR #4873
Co-authored-by: Hisleren <Hisleren@users.noreply.github.com>
2026-01-30 16:16:35 -05:00
Hisleren 201d7fa956 fix(security): prevent gateway token from defaulting to 'undefined' string 2026-01-30 16:16:35 -05:00
Glucksberg 0175cedf0e docs: update remaining clawdbot/moltbot references to openclaw
- .pre-commit-config.yaml: update comment header
- AGENTS.md: update plugin-sdk import path and state directory paths
- skills/bluebubbles/SKILL.md: update plugin-sdk import reference
- skills/discord/SKILL.md: update example sticker name
2026-01-30 16:05:22 -05:00
Ubuntu 7c96bde3b3 docs: fix GitHub branding capitalization 2026-01-30 15:52:21 -05:00
Amit Biswal 9334dd8017 docs: Internal linking of channel pages 2026-01-30 15:52:06 -05:00
Peter Steinberger 2cdfecdde3 docs: clarify security scope 2026-01-30 21:51:28 +01:00
Ubuntu 49a3e3795a docs: fix missing apostrophes in FAQ headers 2026-01-30 15:50:42 -05:00
Ubuntu 23f0efbf09 docs: use straight quotes for code terms in installer guide 2026-01-30 15:50:10 -05:00
Arnav Gupta 9a1b440968 Fix typo in agent.md from p-mono to pi-mono 2026-01-30 15:48:29 -05:00
Gustavo Madeira Santana daf27dd37e fix: add per-agent models status (#4780) (thanks @jlowin) 2026-01-30 15:47:05 -05:00
Gustavo Madeira Santana f24e3cdae5 fix: local updates for PR #4780
Co-authored-by: jlowin <jlowin@users.noreply.github.com>
2026-01-30 15:47:05 -05:00
Jeremiah Lowin dd4715a2c4 CLI: add --agent flag to models status 2026-01-30 15:47:05 -05:00
Peter Steinberger 192a6ee870 chore: remove legacy clawdhub files 2026-01-30 21:03:12 +01:00
Peter Steinberger fd00d5688a chore: update openclaw naming 2026-01-30 21:03:11 +01:00
Josh Palmer 6522de6ce0 Tests: use agents_list in tools invoke gateway test
What: swap sessions_list for agents_list in /tools/invoke tests
Why: avoid nested gateway calls that can hang under CI; still validates tool invocation + allowlist
Tests: not run (CI should cover)
2026-01-30 18:17:12 +01:00
Shakker 09be5d45d5
Merge pull request #4651 from yuting0624/fix/status-command-line-crash
fix(line): resolve TypeError in status command when LINE is enabled
2026-01-30 15:41:40 +00:00
Yuting Lin 3fbf99d725 fix(line): resolve TypeError in status command 2026-01-30 15:41:22 +00:00
Ayush Ojha 37e295fc02
fix: don't warn about expired OAuth tokens with valid refresh tokens (#4593)
OAuth credentials with a refresh token auto-renew on first API call,
so the doctor should not warn about access token expiration when a
refresh token is present. This avoids unnecessary "expired" warnings
that prompt users to re-auth when no action is needed.

Fixes #3032

Co-authored-by: Ayush Ojha <ayushozha@outlook.com>
2026-01-30 15:39:17 +00:00
Ayaan Zaidi da71eaebd2 fix: correct telegram html nesting (#4578) (thanks @ThanhNguyxn) 2026-01-30 16:53:39 +05:30
ThanhNguyxn 8e5a684445 style: format test file 2026-01-30 16:53:39 +05:30
ThanhNguyxn b05d57964b fix(telegram): properly nest overlapping HTML tags (#4071)
Unify style and link closing in render.ts to use LIFO order across
both element types, fixing cases where bold/italic spans containing
autolinks produced invalid HTML like <b><a></b></a>.
2026-01-30 16:53:39 +05:30
Ayaan Zaidi fa9ec6e854 fix: add docker ui install changelog entry (#4584) (thanks @obviyus) 2026-01-30 16:25:24 +05:30
Ayaan Zaidi 1168f59890 perf: skip redundant ui install in Dockerfile 2026-01-30 16:25:24 +05:30
Ayaan Zaidi bc432d8435 fix: accept numeric Telegram react ids (#4533) (thanks @Ayush10) 2026-01-30 15:01:18 +05:30
Ayush Ojha f760aa302c fix(telegram): react action accepts numeric messageId and chatId
The react action used readStringParam for messageId and chatId, which
rejected numeric values with a misleading "messageId required" error.
Switched to readStringOrNumberParam to match the delete/edit actions.

Closes #1459

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:56:53 +05:30
Ayaan Zaidi 3a85cb1833 fix: honor Telegram proxy dispatcher (#4456) (thanks @spiceoogway) 2026-01-30 14:38:39 +05:30
spiceoogway 7150268f84 fix(telegram): use undici fetch for proxy to fix dispatcher option
Fixes #4038

The global fetch in Node.js doesn't support undici's dispatcher option,
which is required for ProxyAgent to work. This fix imports fetch from
undici directly to enable proper proxy support for Telegram API calls.

Root cause: makeProxyFetch() was using global fetch with { dispatcher: agent },
but Node.js's global fetch ignores the dispatcher option. Using undici.fetch
ensures the ProxyAgent dispatcher is properly respected.

Tested: Build passes, TypeScript compilation successful.
2026-01-30 14:37:47 +05:30
Peter Steinberger 6af205a13a docs: update lore with final form 2026-01-30 07:26:07 +00:00
Ayaan Zaidi 9025da2296 fix: scope telegram skill commands per bot (#4360) (thanks @robhparker) 2026-01-30 12:00:29 +05:30
robhparker c6ddc95fc0 fix(telegram): scope skill commands to bound agent per bot
registerTelegramNativeCommands() calls listSkillCommandsForAgents()
without passing agentIds, causing ALL agents' skill commands to be
registered on EVERY Telegram bot. When multiple agents share skill
names (e.g. two agents both have a "butler" skill), the shared `used`
Set in listSkillCommandsForAgents causes de-duplication suffixes
(_2, _3) and all commands appear on every bot regardless of agent
binding.

This fix uses the existing resolveAgentRoute() (already imported) to
find the bound agent for the current Telegram accountId, then passes
that agentId to listSkillCommandsForAgents(). The function already
accepts an optional agentIds parameter — it just wasn't wired from
the Telegram registration path.

Before: All agents' skill commands registered on every Telegram bot,
causing /butler_2, /housekeeper_2 dedup suffixes and potential
BOT_COMMANDS_TOO_MUCH errors when total exceeds 100.

After: Each Telegram bot only registers skill commands for its own
bound agent. No cross-agent dedup, no command limit overflow.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:58:23 +05:30
Nate 28f8d00e9f fix: update install URLs from clawd.bot to openclaw.ai 2026-01-30 00:19:20 -06:00
Manik Vahsith 5e635c9656
feat: add Kimi K2.5 model to synthetic catalog (#4407)
* feat: add Kimi K2.5 model to synthetic catalog

Add hf:moonshotai/Kimi-K2.5 to the synthetic model catalog.
This model is available via dev.synthetic.new API.

- 256k context window
- 8192 max tokens
- Supports reasoning

* chore: fix formatting in onboard-helpers.ts

* fix: update config candidate ordering test (#4407) (thanks @manikv12)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-30 07:17:42 +01:00
Peter Steinberger 87267fad4f docs: move WhatsApp image below dashboard 2026-01-30 06:55:15 +01:00
Gustavo Madeira Santana 613724c26e Update index.md 2026-01-30 00:33:06 -05:00
Peter Steinberger 77e703c69b chore: update appcast for 2026.1.29 2026-01-30 06:25:45 +01:00