Fix summary dedup not catching truncated summaries
Details
HasDistinctSummary was comparing the full summary (including trailing
"...") against the content via StartsWith. Since the content doesn't
contain "..." at the truncation point, the match always failed and
the redundant preamble kept showing.
Now strips trailing "..." from the summary before the prefix comparison.
Fix RSS feed fetch hanging due to IPv6 connect failure
Details
Root cause: .NET's HttpClient resolves DNS and tries connecting to the
first address returned (typically IPv6 AAAA record). When the network
cannot route to the IPv6 address, the connect attempt blocks for the
full request timeout (30-60s) before giving up — unlike curl which uses
Happy Eyeballs (RFC 8305) to try both protocols in parallel.
Confirmed by testing: IPv6 connect to privstack.io hangs indefinitely
while IPv4 connects in ~45ms. This affects any host that publishes
AAAA records not routable on the user's network.
Fix: replace the default SocketsHttpHandler with a custom ConnectCallback
that implements Happy Eyeballs — resolves all addresses (IPv4 + IPv6),
initiates connections to all in parallel, uses whichever succeeds first,
and cancels the rest. This brings feed fetch from timeout (30-60s) down
to ~350ms for affected hosts.
Also adds gzip/deflate decompression support to the handler.
Fix RSS feed fetch timeout and add progressive streaming
Details
- Use HttpCompletionOption.ResponseHeadersRead in FetchFeedAsync and
RefreshFeedAsync so the response streams immediately after headers
arrive, enabling progressive XML parsing instead of buffering the
entire body first
- Add OperationCanceledException catch clauses that distinguish between
HttpClient timeout (user-friendly "server may be slow or unreachable"
message) and explicit user cancellation
- Increase default HttpClient timeout from 30s to 60s since RSS feeds
from smaller servers can be slow, and streaming now provides visual
feedback during the wait
- Add CancellationTokenSource to AddFeedAsync in RssViewModel so users
can cancel a slow feed fetch via CancelAddFeedCommand
Add tasks.search_tasks intent for AI task discovery
Details
Adds a new search intent that allows the AI to actively search tasks by
title, description, tags, or status. Uses SDK search with fuzzy fallback
(Contains matching) to catch partial matches. Supports optional status
filter and configurable max results. Also updates PLUGIN_CONTEXT.md to
document all five task intents.
Improve list_events intent with keyword filter and month-grouped output
Details
- Update intent description and slot descriptions to guide the LLM:
forward-looking queries use 30-day lookahead without period clipping,
strict queries use calendar boundaries
- Group results by month in summary output so the AI can respond
naturally: "You have a lunch on the 27th, then in March you have..."
- Include day-of-week in event timestamps (e.g. "Thu Feb 27, 12:00 PM")
for more conversational responses
Get notified about new releases