Peter Steinberger
83f111839c
feat: add /config chat config updates
2026-01-10 03:01:27 +01:00
Peter Steinberger
be51d30a49
feat(cli): colorize gateway health + daemon output
2026-01-10 03:01:27 +01:00
Peter Steinberger
a5cb1a71b1
refactor: unify inline directives and media fetch
2026-01-10 03:01:04 +01:00
Peter Steinberger
97afcc1c2c
refactor: consolidate reply/media helpers
2026-01-10 02:41:16 +01:00
Peter Steinberger
579598a1ee
refactor: centralize WhatsApp target normalization
2026-01-10 02:39:52 +01:00
Peter Steinberger
04be6b7cf1
test(telegram): relax media group test timeouts
2026-01-10 02:37:59 +01:00
Peter Steinberger
0be43feb12
Merge pull request #631 from imfing/fix-normalize
...
fix(whatsapp): normalize targets for groups and E.164
2026-01-10 01:27:33 +00:00
Peter Steinberger
7ddb8375fb
fix: hide tui reasoning label when off
2026-01-10 01:25:15 +00:00
Peter Steinberger
d5755c9687
fix: signal own reactions match uuid + phone ( #632 ) (thanks @neist)
...
Co-authored-by: neist <1029724+neist@users.noreply.github.com>
2026-01-10 02:24:57 +01:00
Xin
97a216b77a
fix: normalize WhatsApp targets for groups and E.164 ( #631 ) (thanks @imfing)
2026-01-10 02:22:13 +01:00
Peter Steinberger
7b43021134
ci: use node 22.x
2026-01-10 02:20:20 +01:00
Peter Steinberger
c002c47ebf
ci: pin node to engine minimum
2026-01-10 02:17:59 +01:00
Peter Steinberger
b22f6c22e2
chore: sync pnpm patches after pull
2026-01-10 02:17:19 +01:00
Peter Steinberger
1c78b449bf
docs: document testing kit
2026-01-10 01:15:47 +00:00
Peter Steinberger
67d9582371
Merge pull request #633 from levifig/feat/remove-ack-after-reply
...
feat: add removeAckAfterReply option (Discord, Slack, Telegram)
2026-01-10 01:14:33 +00:00
Peter Steinberger
43ca0e19b3
fix: remove ack reactions after reply ( #633 ) (thanks @levifig)
2026-01-10 02:14:14 +01:00
Levi Figueira
d4b6af8d71
feat: add removeAckAfterReply option for Discord, Slack, and Telegram
...
Add `messages.removeAckAfterReply` config option to automatically remove
acknowledgment reactions after the bot sends a reply, reducing visual
clutter while still providing immediate feedback.
Platforms: Discord, Slack, Telegram
Implementation:
- Added removeAckAfterReply boolean field to MessagesConfig (default: false)
- Track ack reaction state in all three platform handlers
- Remove ack reaction after successful reply delivery
- Graceful error handling with verbose logging
Platform-specific:
- Discord: uses removeReactionDiscord()
- Slack: uses removeSlackReaction()
- Telegram: uses setMessageReaction() with empty array
Closes #627
2026-01-10 02:13:46 +01:00
Peter Steinberger
59007a144b
test(live): gateway smoke across profile-key models
2026-01-10 01:09:41 +00:00
Peter Steinberger
c94d67ac54
fix: sandbox browser CDP proxy
2026-01-10 01:09:41 +00:00
Peter Steinberger
0179ea19be
fix(pnpm): regenerate patchedDependencies
2026-01-10 01:09:41 +00:00
Peter Steinberger
959daf24c4
refactor: centralize session agent resolution
2026-01-10 01:57:54 +01:00
Peter Steinberger
f142bc229c
Merge pull request #490 from jarvis-medmatic/feat/audio-as-voice-tag
...
feat(telegram): `[[audio_as_voice]]` tag support
2026-01-10 00:52:02 +00:00
Peter Steinberger
eb20a7a476
fix: honor audio_as_voice streaming + parse tests ( #490 ) (thanks @jarvis-medmatic)
2026-01-10 01:50:33 +01:00
Peter Steinberger
63c96fba2e
ci: add clean install check
2026-01-10 01:50:32 +01:00
Peter Steinberger
f7e35ad84d
ci: enforce frozen pnpm install
2026-01-10 01:49:24 +01:00
Peter Steinberger
b0af8aba89
fix: refresh @buape/carbon patch
2026-01-10 01:48:42 +01:00
Peter Steinberger
4fb4184cea
fix(openai): avoid invalid reasoning replay
2026-01-10 00:45:10 +00:00
Jarvis
6899918bfa
chore: format audioAsVoice updates
...
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:44:57 +01:00
Jarvis
f954db76fa
fix(pi): preserve audio_as_voice tag
...
- Allow flag-only chunks so audio_as_voice propagates
- Keep reply item scan aware of empty audio tag blocks
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:43:51 +01:00
Peter Steinberger
0c85764db0
docs: improve Hetzner 24/7 VPS guide
2026-01-10 01:43:28 +01:00
Jarvis
e037a86921
refactor(telegram): centralize voice decisions
...
- Share voice compatibility decision logic across send + bot flows
- Keep voice fallback logging consistent
- Simplify voice handling in the audio send path
2026-01-10 01:43:23 +01:00
Jarvis
b6171c881c
fix(telegram): guard voice note sends
2026-01-10 01:43:01 +01:00
Jarvis
972e18996b
fix(audio): preserve audioAsVoice propagation
...
- Keep audioAsVoice-only payloads from being filtered out
- Allow empty payloads through when they carry the flag
- Remove temporary debug logs around audioAsVoice buffering
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:42:09 +01:00
Jarvis
4341a6870e
feat(telegram): buffer audio blocks for [[audio_as_voice]] tag support
...
- Add [[audio_as_voice]] detection to splitMediaFromOutput()
- Pass audioAsVoice through onBlockReply callback chain
- Buffer audio blocks during streaming, flush at end with correct flag
- Non-audio media still streams immediately
- Fix: emit payloads with audioAsVoice flag even if text is empty
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:41:18 +01:00
Peter Steinberger
0af7b27985
Merge pull request #630 from adam91holt/fix/heartbeat-default-agent-only
...
fix: only inject heartbeat prompt for default agent
2026-01-10 00:34:13 +00:00
Peter Steinberger
0fee5b5aed
fix: gate heartbeat prompt to default agent sessions ( #630 ) (thanks @adam91holt)
2026-01-10 01:32:58 +01:00
Adam Holt
829fe0630d
fix: only inject heartbeat prompt for default agent
...
The heartbeat prompt from agents.defaults.heartbeat.prompt was being
injected into the system prompt for ALL agents, causing non-default
agents to read the default agent's identity files and adopt its persona.
Now the heartbeat prompt is only included when the session's agent ID
matches the configured default agent. Other agents receive no heartbeat
section in their system prompt.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:32:30 +01:00
Peter Steinberger
27838f6865
fix: abort runs between tool calls
2026-01-10 01:26:25 +01:00
Peter Steinberger
1ed062e21b
docs: document OpenCode Zen config ( #623 )
2026-01-10 01:26:25 +01:00
Peter Steinberger
af7b8542af
refactor: centralize failover error parsing
2026-01-10 01:26:06 +01:00
Peter Steinberger
52ab884fe7
fix(web): show all WhatsApp shared contacts
2026-01-10 00:22:31 +00:00
Peter Steinberger
8ec51b6291
fix(agents): require raw for gateway config.apply ( #566 ) (thanks @sircrumpet)
2026-01-10 00:21:15 +00:00
Peter Steinberger
0c132f1103
Merge pull request #619 from rubyrunsstuff/fix/telegram-block-streaming
...
fix: enable block streaming for Telegram when streamMode is 'block'
2026-01-10 00:16:04 +00:00
Peter Steinberger
c468f539c3
fix: keep telegram streamMode draft-only ( #619 ) (thanks @rubyrunsstuff)
2026-01-10 01:14:40 +01:00
Peter Steinberger
498f5bb040
Merge pull request #544 from jeffersonwarrior/fix/cloud-code-assist-api-errors
...
Fix Cloud Code Assist API errors (429/400)
2026-01-10 00:13:46 +00:00
Peter Steinberger
def6f36439
refactor: unify contact list summaries
2026-01-10 01:13:38 +01:00
Peter Steinberger
f0f0226828
Merge pull request #623 from magimetal/feat/opencode-zen-provider
...
feat(onboard): add OpenCode Zen as model provider
2026-01-10 00:13:30 +00:00
Peter Steinberger
daebb2a93b
fix: harden Cloud Code Assist failover ( #544 ) (thanks @jeffersonwarrior)
2026-01-10 01:12:46 +01:00
Peter Steinberger
25752aa2b8
style: fix pi-embedded-runner formatting ( #623 ) (thanks @magimetal)
2026-01-10 01:12:22 +01:00
Ruby
b9cdf5b723
fix: enable block streaming for Telegram when streamMode is 'block'
...
- Fix disableBlockStreaming logic in telegram/bot.ts to properly enable
block streaming when telegram.streamMode is 'block' regardless of
blockStreamingDefault setting
- Set minChars default to 1 for Telegram block mode so chunks send
immediately on newlines/sentences instead of waiting for 800 chars
- Skip coalescing for Telegram block mode when not explicitly configured
to reduce chunk batching delays
- Fix newline preference to wait for actual newlines instead of breaking
on any whitespace when buffer is under maxChars
Fixes issue where all Telegram messages were batched into one message
at the end instead of streaming as separate messages during generation.
2026-01-10 01:11:41 +01:00