Alexander Minges
085a311d4b
docs(matrix): clarify typing keepalive spec notes
2026-02-20 17:56:28 +01:00
Alexander Minges
8b3171ca2b
fix(matrix): include empty m.mentions in outgoing messages
2026-02-20 17:56:24 +01:00
Alexander Minges
ca66ddb0bf
feat(matrix): refresh typing indicator while processing
2026-02-20 17:56:15 +01:00
Alexander Minges
a482a89df6
feat(matrix): support inbound media attachments
2026-02-20 17:56:11 +01:00
Alexander Minges
7b2adf9d9d
docs(matrix): document raw html escaping in markdown renderer
2026-02-20 17:56:07 +01:00
Alexander Minges
6be7368a38
fix(matrix): sanitize formatted html with nh3
2026-02-20 17:55:59 +01:00
Alexander Minges
9b14869cb1
feat(matrix): support inline markdown html for url and super/subscript
2026-02-20 17:55:13 +01:00
Alexander Minges
cc5cfe6847
test(matrix): cover mention policy and sender filtering
2026-02-20 17:55:09 +01:00
Alexander Minges
fa2049fc60
feat(matrix): add group policy and strict mention gating
2026-02-20 17:55:05 +01:00
Alexander Minges
3200135f4b
test(matrix): cover formatted body and markdown fallback
2026-02-20 17:54:42 +01:00
Alexander Minges
e716c9caac
feat(matrix): send markdown as formatted html messages
2026-02-20 17:54:39 +01:00
Alexander Minges
840ef7363f
test(matrix): cover typing indicator lifecycle
2026-02-20 17:54:29 +01:00
Alexander Minges
45267b0730
feat(matrix): show typing while processing messages
2026-02-20 17:54:26 +01:00
Alexander Minges
ffac42f9e5
refactor(matrix): replace logging depth magic number
2026-02-20 17:52:37 +01:00
Alexander Minges
b294a682a8
chore(matrix): route matrix-nio logs through loguru
2026-02-20 17:52:36 +01:00
Alexander Minges
b721f9f37d
test(matrix): cover response callbacks and graceful shutdown
2026-02-20 17:52:34 +01:00
Alexander Minges
9d85393226
feat(matrix): add startup warnings and response error logging
2026-02-20 17:52:33 +01:00
Alexander Minges
7c33d3cbe2
feat(matrix): add configurable graceful sync shutdown
2026-02-20 17:52:32 +01:00
Re-bin
9a31571b6d
fix: don't append interim assistant message before retry to avoid prefill errors
2026-02-20 16:51:37 +00:00
Alexander Minges
988b75624c
test(matrix): add matrix channel behavior test
2026-02-20 17:48:16 +01:00
Alexander Minges
c926569033
fix(matrix): guard store load without device id and allow invites by default
2026-02-20 17:48:15 +01:00
djmaze
d3ddeb3067
fix: activate E2E and accept room invites in Matrix channels
2026-02-20 17:48:14 +01:00
Xubin Ren
21dd9e4112
Merge pull request #908 to route CLI interactive mode through message bus
...
refactor: route CLI interactive mode through message bus
2026-02-21 00:46:06 +08:00
Re-bin
7279ff0167
refactor: route CLI interactive mode through message bus for subagent support
2026-02-20 16:45:21 +00:00
Re-bin
f8ffff98a5
Merge PR #892 : fix MCP connection retry and concurrent connection guard
2026-02-20 16:09:13 +00:00
Re-bin
80b5e6cea0
Merge branch 'main' into pr-892
2026-02-20 16:06:17 +00:00
Re-bin
5ba3ee97a4
Merge PR #832 : avoid duplicate reply when message tool already sent
2026-02-20 15:56:13 +00:00
Re-bin
132807a3fb
refactor: simplify message tool turn tracking to a single boolean flag
2026-02-20 15:55:30 +00:00
Re-bin
c8682512c9
Merge branch 'main' into pr-832
2026-02-20 15:47:16 +00:00
Re-bin
b6610721f9
Merge PR #902 : store session key in JSONL metadata to avoid lossy filename reconstruction
2026-02-20 15:43:06 +00:00
Re-bin
d9cc144575
style: remove redundant comment in list_sessions
2026-02-20 15:42:24 +00:00
Re-bin
40867bff86
Merge branch 'main' into pr-902
2026-02-20 15:27:05 +00:00
Re-bin
5110b070dd
Merge PR #900 : split Discord messages exceeding 2000-character limit
2026-02-20 15:26:15 +00:00
Re-bin
b853222c87
style: trim _send_payload docstring
2026-02-20 15:26:12 +00:00
Re-bin
9643b477da
Merge branch 'main' into pr-900
2026-02-20 15:23:22 +00:00
Re-bin
44c2de2283
Merge PR #903 : convert remaining f-string logger calls to loguru native format
2026-02-20 15:21:43 +00:00
Re-bin
a33cb3e2dc
Merge branch 'main' into pr-903
2026-02-20 15:21:11 +00:00
Re-bin
ff0003de3f
Merge PR #904 : add media file upload support to Slack channel
2026-02-20 15:19:23 +00:00
Re-bin
6bcfbd9610
style: remove redundant comments and use loguru native format
2026-02-20 15:19:18 +00:00
Re-bin
fe089abe5b
Merge branch 'main' into pr-904
2026-02-20 15:17:04 +00:00
Re-bin
1d41dcd99a
Merge PR #905 : enable prompt caching for OpenRouter
2026-02-20 15:15:44 +00:00
Re-bin
cc04bc4dd1
fix: check gateway's supports_prompt_caching instead of always returning False
2026-02-20 15:14:45 +00:00
tercerapersona
b286457c85
add Openrouter prompt caching via cache_control
2026-02-20 11:34:50 -03:00
Nikolas de Hor
4cbd857250
fix: handle edge cases in message splitting and send failure
...
- _split_message: return empty list for empty/None content instead
of a list with one empty string (Discord rejects empty content)
- _split_message: use pos <= 0 fallback to prevent empty chunks
when content starts with a newline or space
- _send_payload: return bool to indicate success/failure
- send: abort remaining chunks when a chunk fails to send,
preventing partial/corrupted message delivery
2026-02-20 10:09:04 -03:00
Nikolas de Hor
f19baa8fc4
fix: convert remaining f-string logger calls to loguru native format
...
Follow-up to #864 . Three f-string logger calls in base.py and dingtalk.py
were missed in the original sweep. These can cause KeyError if interpolated
values contain curly braces, since loguru interprets them as format placeholders.
2026-02-20 10:01:38 -03:00
Alexander Minges
426ef71ce7
style(loop): drop formatting-only churn against upstream main
2026-02-20 13:57:39 +01:00
Nikolas de Hor
73530d51ac
fix: store session key in JSONL metadata to avoid lossy filename reconstruction
...
list_sessions() previously reconstructed the session key by replacing all
underscores in the filename with colons. This is lossy: a key like
'cli:user_name' became 'cli:user:name' after round-tripping.
Now the actual key is persisted in the metadata line during save() and read
back in list_sessions(). Legacy files without the key field fall back to
replacing only the first underscore, which handles the common channel:chat_id
pattern correctly.
Closes #899
2026-02-20 09:57:11 -03:00
Nikolas de Hor
4c75e1673f
fix: split Discord messages exceeding 2000-character limit
...
Discord's API rejects messages longer than 2000 characters with HTTP 400.
Previously, long agent responses were silently lost after retries exhausted.
Adds _split_message() (matching Telegram's approach) to chunk content at
line boundaries before sending. Only the first chunk carries the reply
reference. Retry logic extracted to _send_payload() for reuse across chunks.
Closes #898
2026-02-20 09:55:22 -03:00
Nikolas de Hor
37222f9c0a
fix: add connecting guard to prevent concurrent MCP connection attempts
...
Addresses Codex review: concurrent callers could both pass the
_mcp_connected guard and race through _connect_mcp(). Added
_mcp_connecting flag set immediately to serialize attempts.
2026-02-20 09:38:22 -03:00
Nikolas de Hor
45f33853cf
fix: only apply interim fallback when no tools were used
...
Addresses Codex review: if the model sent interim text then used tools,
the interim text should not be used as fallback for the final response.
2026-02-20 09:37:42 -03:00