Afonso Coutinho
2c73078290
fix: web search content blocks numbered by fetch completion order break citations ( #1672 )
2026-06-03 14:22:55 +09:00
Afonso Coutinho
c8133be9db
fix: re-importing an ICS file duplicates every tz-aware timed event ( #1683 )
2026-06-03 14:22:49 +09:00
Afonso Coutinho
117154d6fe
fix: visual report drops photos whose URL slug contains icon or logo ( #1685 )
2026-06-03 14:22:45 +09:00
Afonso Coutinho
2b327769df
fix: hwfit native quant labels miss the cost maps and over-estimate VRAM ( #1690 )
2026-06-03 14:22:42 +09:00
Afonso Coutinho
5a82f60d2d
fix: _parse_dt does not understand 'tonight' so event start/end breaks ( #1488 )
2026-06-03 14:14:41 +09:00
Afonso Coutinho
083d311da4
fix: context_compactor token helpers crash on non-string message text ( #1634 )
...
* fix: context_compactor token helpers crash on non-string message text
* fix: _truncate_text_to_token_budget returns an empty string for non-string text, not the raw value
2026-06-03 14:12:14 +09:00
Afonso Coutinho
e33c9ba609
fix: is_public_blocked_tool crashes on a truthy non-string tool name ( #1620 )
...
* fix: is_public_blocked_tool crashes on a truthy non-string tool name
* fix: is_public_blocked_tool fails closed (blocks) on a malformed non-string tool name
2026-06-03 14:11:14 +09:00
Afonso Coutinho
290a3ba714
fix: _lookup_bandwidth crashes on a truthy non-string gpu_name ( #1641 )
2026-06-03 14:11:10 +09:00
Afonso Coutinho
e9826b7989
fix: agent_tools._truncate crashes on non-string input ( #1624 )
...
* fix: agent_tools._truncate crashes on non-string input
* fix: agent_tools._truncate returns a string for non-string input, not the raw value
2026-06-03 14:06:39 +09:00
Afonso Coutinho
19cce9499c
fix: visual_report markdown helpers crash on a non-string input ( #1633 )
2026-06-03 14:06:35 +09:00
Afonso Coutinho
17532340a0
Parse standard Gmail quote attribution dates
...
Allow Gmail quote attribution parsing to handle standard US weekday/month/day/year comma patterns while preserving existing formats, with JS regression coverage.
2026-06-03 13:45:56 +09:00
Afonso Coutinho
cfdeec47a1
Decode email headers without injected spaces
...
Use email.header.make_header for MIME header decoding so adjacent encoded/plain header parts preserve RFC spacing, with regression coverage.
2026-06-03 13:45:33 +09:00
Afonso Coutinho
5a89b52698
Merge search analytics defaults in services copy
...
Make services.search.analytics tolerate missing counters in older or partial analytics files by merging loaded data over defaults, with regression coverage.
2026-06-03 13:45:07 +09:00
Afonso Coutinho
11e3967083
Normalize scheduled email offsets before storage
...
Normalize scheduled email send_at values with timezone offsets or Z suffixes to naive UTC before storing, matching the poller's lexicographic comparison format and preventing early/late sends.
2026-06-03 13:44:18 +09:00
Afonso Coutinho
acaba896dd
Treat non-string research summaries as low quality
...
Filter malformed non-string research summaries instead of letting the broad exception path classify them as usable, with regression coverage.
2026-06-03 13:42:24 +09:00
Afonso Coutinho
296ca6df6b
Skip malformed personal keyword index rows
...
Make personal keyword retrieval tolerate corrupted non-dict index entries and missing chunk lists, with regression coverage.
2026-06-03 13:42:05 +09:00
Afonso Coutinho
4646d672f4
fix: extract_youtube_id crashes on a non-string url instead of returning None ( #1689 )
2026-06-03 13:38:11 +09:00
Afonso Coutinho
1c822c2141
fix: memory entry validation crashes on a non-dict row from memory.json ( #1691 )
2026-06-03 13:38:02 +09:00
Afonso Coutinho
730dbb9fe5
fix: require_privilege 500s on a non-dict privileges blob from auth.json ( #1693 )
2026-06-03 13:37:54 +09:00
Afonso Coutinho
5bedfaa1d8
fix: updating a calendar event ignores user timezone and shifts the time ( #1695 )
2026-06-03 13:37:39 +09:00
Afonso Coutinho
c1b674c709
fix: reply-all Cc builder crashes on a non-string To or Cc field ( #1700 )
2026-06-03 13:37:22 +09:00
Afonso Coutinho
afbc0fa13c
fix: streaming drops providers that emit SSE data lines with no space ( #1701 )
2026-06-03 13:37:14 +09:00
Afonso Coutinho
99904eb7f5
fix: token usage dropped when it rides on a non-empty finish delta ( #1703 )
2026-06-03 13:36:57 +09:00
Afonso Coutinho
8dddc96944
fix: memory recall crashes on a non-dict row from the vector store ( #1705 )
2026-06-03 13:35:09 +09:00
Afonso Coutinho
42cb0d5429
fix: docs RAG query crashes on a non-dict row from the index ( #1706 )
2026-06-03 13:35:01 +09:00
Afonso Coutinho
7b7ae6f488
fix: archive browser model filter is suffix-only and drops matching models ( #1709 )
2026-06-03 13:34:54 +09:00
Afonso Coutinho
b08e8c66c8
fix: compacting a chat with image attachments destroys the attachment ( #1710 )
2026-06-03 13:34:47 +09:00
Afonso Coutinho
77e05cfd58
fix: research source extraction crashes on a non-dict finding ( #1714 )
2026-06-03 13:34:40 +09:00
Afonso Coutinho
94c943049b
fix: _resolve_user_upload_path crashes on a non-dict resolve_upload result ( #1715 )
2026-06-03 13:34:33 +09:00
Afonso Coutinho
dd4bb81fa0
fix: computeSnap throws when ctx.otherLayers is not an array ( #1716 )
2026-06-03 13:34:25 +09:00
Afonso Coutinho
7c0588492b
fix: evaluate_turn_regex crashes on a non-string agent_reply ( #1723 )
2026-06-03 13:31:26 +09:00
Afonso Coutinho
c9c1dbc7ab
fix: rewriting a message is lost on reload due to a non-existent DB column ( #1729 )
2026-06-03 13:31:19 +09:00
Afonso Coutinho
55b3537ce1
fix: odysseus-mail read crashes on an empty IMAP fetch payload ( #1730 )
2026-06-03 13:31:10 +09:00
Afonso Coutinho
122b1077b8
fix: _extract_entities crashes on a non-string query ( #1724 )
2026-06-03 13:30:28 +09:00
Afonso Coutinho
f4c1dad3c2
fix: search service crashes on a non-dict result row ( #1725 )
2026-06-03 13:30:19 +09:00
Afonso Coutinho
749480b2f9
fix: a non-dict finding silently drops all raw research findings ( #1739 )
2026-06-03 13:29:29 +09:00
Afonso Coutinho
babfb6cfa7
fix: langIcon throws on an explicit null opts argument ( #1740 )
2026-06-03 13:29:21 +09:00
Afonso Coutinho
b9b44f1cd5
fix: backup import drops a user's memory when its text matches another user's ( #1743 )
2026-06-03 13:29:14 +09:00
Afonso Coutinho
b9daae2578
fix: youtube transcript formatter crashes on a non-dict segment ( #1745 )
2026-06-03 13:29:08 +09:00
Afonso Coutinho
df8ce5a63b
fix: youtube (services) comment formatter crashes on a non-dict comment ( #1746 )
2026-06-03 13:29:01 +09:00
Afonso Coutinho
ad0cd0898c
fix: uploads with _ or - in the extension become permanently unreadable ( #1756 )
2026-06-03 13:28:45 +09:00
Afonso Coutinho
4b7e31a2c8
fix: document library language facet undercounts text documents ( #1758 )
2026-06-03 13:28:38 +09:00
Afonso Coutinho
099498c028
fix: chat memory extraction crashes on a non-dict message ( #1749 )
2026-06-03 13:25:48 +09:00
Afonso Coutinho
ed0f1869a1
fix: _derive_title crashes on non-string content instead of returning Untitled ( #1751 )
2026-06-03 13:25:41 +09:00
Afonso Coutinho
0d5250b861
fix: is_youtube_url crashes on a non-string url ( #1752 )
2026-06-03 13:24:33 +09:00
Afonso Coutinho
71f35f2595
fix: is_youtube_url (services) crashes on a non-string url ( #1753 )
2026-06-03 13:24:24 +09:00
Afonso Coutinho
913dc67384
fix: ui_control rejects the advertised rag toggle ( #1763 )
2026-06-03 13:24:00 +09:00
Afonso Coutinho
f332b8ea99
fix: disabling auth wipes all users' preferences on next pref save ( #1764 )
2026-06-03 13:23:50 +09:00
Afonso Coutinho
c375f83c44
fix: gallery tag filters and tag-cleanup are empty in single-user mode ( #1771 )
2026-06-03 13:23:08 +09:00
Afonso Coutinho
039095d748
fix: document tidy crashes on a duplicate with NULL timestamps ( #1772 )
2026-06-03 13:23:01 +09:00
Afonso Coutinho
d23fdb32ea
fix: signature learning never skips support@/info@/admin@ senders ( #1773 )
2026-06-03 13:22:52 +09:00
Afonso Coutinho
7c1a6bf02a
fix: signature delimiter fold misses self-closing <br/> breaks ( #1774 )
2026-06-03 13:22:46 +09:00
Afonso Coutinho
8bcb3c61f5
fix: is_markitdown_format crashes on a non-string path ( #1618 )
2026-06-03 09:00:10 +09:00
Afonso Coutinho
fcb1884154
fix: inside_base_dir raises TypeError on a non-string path instead of failing closed ( #1619 )
2026-06-03 09:00:04 +09:00
Afonso Coutinho
987fe6c0ee
fix: document_actions title/content helpers crash on non-string input ( #1621 )
2026-06-03 08:59:55 +09:00
Afonso Coutinho
b50a1bf0c7
fix: check_outbound_url crashes on a truthy non-string URL ( #1623 )
2026-06-03 08:59:49 +09:00
Afonso Coutinho
4b65376944
fix: tool-block parsing crashes on a non-string input ( #1628 )
2026-06-03 08:59:42 +09:00
Afonso Coutinho
88fd0f7e68
fix: _extract_skill_json crashes on a truthy non-string teacher response ( #1630 )
2026-06-03 08:59:36 +09:00
Afonso Coutinho
f588be4e73
fix: logs CLI _resolve crashes on a non-string name ( #1631 )
2026-06-03 08:59:30 +09:00
Afonso Coutinho
aa5462a4b6
fix: skill test-task / precision helpers crash on a non-dict skill ( #1638 )
2026-06-03 08:59:24 +09:00
Afonso Coutinho
9cd4778b65
fix: builtin_actions heuristics crash on a truthy non-string input ( #1639 )
2026-06-03 08:59:16 +09:00
Afonso Coutinho
51a53426e4
fix: split_chunks emits a duplicate trailing chunk for text over size-overlap ( #1573 )
2026-06-03 08:57:54 +09:00
Afonso Coutinho
fcb82dd7f6
fix: monthly schedule label shows 21th/22th/31th (ordinal suffix for days >20) ( #1577 )
2026-06-03 08:57:47 +09:00
Afonso Coutinho
dfdb8958b5
fix: skills CLI summary crashes on a non-string description ( #1595 )
2026-06-03 08:37:05 +09:00
Afonso Coutinho
4e4a9b0c22
fix: research CLI summary crashes on a non-string query ( #1596 )
2026-06-03 08:36:57 +09:00
Afonso Coutinho
cb7f381884
fix: gallery CLI image serialization crashes on a non-string prompt ( #1598 )
2026-06-03 08:36:51 +09:00
Afonso Coutinho
a8853cb8b1
fix: rag_server add/remove_directory crashes on a non-string directory arg ( #1614 )
2026-06-03 08:36:45 +09:00
Afonso Coutinho
b7d17d9beb
fix: search query helpers crash on a non-string query ( #1604 )
2026-06-03 08:36:01 +09:00
Afonso Coutinho
1a3179c0a2
fix: shared MCP truncate() crashes on None/non-string tool output ( #1605 )
2026-06-03 08:35:54 +09:00
Afonso Coutinho
158ebb6984
fix: _sanitize_export_filename crashes on a non-string session name ( #1607 )
2026-06-03 08:35:47 +09:00
Afonso Coutinho
7ad44a7731
fix: validate_caldav_url crashes with TypeError on a non-string URL ( #1608 )
2026-06-03 08:35:16 +09:00
Afonso Coutinho
6d2cb99f6f
fix: mcp CLI _serialize crashes when stored env JSON is a list ( #1609 )
2026-06-03 08:35:09 +09:00
Afonso Coutinho
7f88baee9a
fix: APIKeyManager.load crashes app startup on a corrupt/wrong-shape api_keys.json ( #1565 )
2026-06-03 08:11:37 +09:00
Afonso Coutinho
c495ec31f6
fix: rag add_directory records the dir so list/remove can see it ( #1369 )
2026-06-03 03:37:33 +09:00
Afonso Coutinho
48578fd05c
fix: systemd service should serve on port 7000 to match Docker/setup/README ( #1297 )
2026-06-03 02:04:37 +09:00
Afonso Coutinho
094f8198e5
fix: rag remove_directory expands ~ so it matches the indexed path ( #1305 )
2026-06-03 02:01:13 +09:00
Afonso Coutinho
ff2372f0f7
fix: agent_input_token_budget wrongly treated as a secret and unsettable from chat ( #1294 )
...
* fix: don't classify agent_input_token_budget as a secret (token must be a suffix)
* test: agent_input_token_budget is settable from chat
2026-06-03 01:53:47 +09:00
Afonso Coutinho
b281e0a681
fix: manage_tasks create handles an explicit null prompt without crashing ( #1290 )
2026-06-03 01:40:21 +09:00
Afonso Coutinho
e213aba2df
fix: claim_ownerless actually claims ownerless documents (was a no-op self-update) ( #1288 )
2026-06-03 01:38:38 +09:00
Afonso Coutinho
62d4ddf9be
fix: list_emails honors unresponded_only without requiring unread_only ( #1287 )
2026-06-03 01:35:00 +09:00
Afonso Coutinho
a571d1a834
fix: 2FA bypassed when enabled but TOTP secret is missing (fail-open) ( #1286 )
...
* fix: fail closed when 2FA is enabled but the TOTP secret is missing
* test: totp_verify fails closed when secret missing, passes when 2FA off
2026-06-03 01:26:47 +09:00
Afonso Coutinho
4751e14e0e
fix: merging consecutive user messages corrupts multimodal (image) content ( #1277 )
...
* fix: preserve multimodal content blocks when merging consecutive user messages
* test: consecutive user-message merge keeps multimodal image blocks
2026-06-03 01:21:57 +09:00
Afonso Coutinho
88c45dc197
fix: owner-less document query passes bare False to SQLAlchemy filter() ( #1281 )
...
* fix: use SQL false() for owner-less document query (filter(False) raises in SQLAlchemy 2.x)
* test: owner-less document query doesn't pass a bare False to filter
2026-06-03 01:20:43 +09:00
Afonso Coutinho
6854bc1a64
fix: uploaded files with no extension become permanently unresolvable ( #1275 )
...
* fix: accept extensionless upload ids so files like Dockerfile resolve
* test: upload id validation accepts extensionless ids
2026-06-03 01:16:30 +09:00
Afonso Coutinho
e863f21d98
fix: research query misclassifies 'whatsapp'/'however' as questions ( #1247 )
...
* fix: detect question words as whole words, not prefixes
* fix: same question-word prefix bug in the services search copy
* test: question-word detection rejects prefix lookalikes
2026-06-03 01:10:06 +09:00
Afonso Coutinho
86bc5d698b
fix: calendar check-in digest drops events 7-8 days out ( #1249 )
...
* fix: close 1-day gap in calendar digest windows (events ~7-8 days out)
* test: calendar digest windows are contiguous and cover 7-8 day events
2026-06-03 01:03:58 +09:00
Afonso Coutinho
336a468035
fix: Anthropic responses with multiple text blocks lose all but the first ( #1255 )
...
* fix: concatenate all Anthropic text blocks, not just the first
* test: Anthropic response parsing concatenates text blocks
2026-06-03 00:57:20 +09:00
Afonso Coutinho
a266935591
fix: email pre-retrieval ignores contacts (reads non-existent email/phone keys) ( #1241 )
...
* fix: match known email senders against the contact 'emails' list
* fix: build contact-match snippets from emails/phones lists
2026-06-03 00:39:31 +09:00