Revision history for AnyEvent::MCP

0.7   Fri 30 Oct 2026 14:56:18 CET
	- WARNING: mcp-imap is unfinished and has not been tested against a real IMAP server.
	- INCOMPATIBLE CHANGE: rules have changed, old rules will be erased.
	- declare the same license terms as Perl itself in distribution metadata.
        - new mcp servers in this release: mcp-http
	- accept optional dimension default matcher for persistent-rule prompts;
	- clarify that mcp-fs exec has private /tmp by default; shared-tmp
	  exposes host /tmp and is not needed for ordinary temporary files or IPC.
	- add mcp-fs vcs-log for Git, SVN, CVS and Mercurial, reusing bounded
	  output and dedicated permission actions; SVN log receives network
	  and SSH-agent grants alongside CVS operations.
	  mcp-webbrowser prefers any JavaScript in the current tab, while the
	  independent origin dimension remains scoped to the current origin.
	- log mcp-http requests with their method and a sanitized URL preview;
	  identify mcp-http/$VERSION in User-Agent unless overridden by the caller.
	  Allow generic key=value context in the shared mcp_log_request formatter.
	- silently treat invalid saved permission-rule files as empty, prompting
	  instead of aborting broker startup; subsequent saves replace the old file.
	- add mcp-http for arbitrary HTTP methods with URL-scoped approvals,
	  caller-managed cookie jars, bounded bodies and text grep/regex/substitution.
	  Disable redirects, retries and proxies; verify HTTPS certificates.
	- derive browser permission origins from reported URLs, not a new
	  userscript field; keep older browser clients able to execute with
	  origin-scoped permissions.
	- accept compatible browser-protocol minor versions; return empty
	  operation discovery for 1.0 clients instead of disconnecting them.
	  Direct rule saves no longer perform semantic validation.
	- replace special-case subject, origin and workdir permission scopes with
	  named dimensions: metadata-driven prompts, generic match.NAME rule keys,
	  and engine-enforced matcher choices. Reject old request and rule fields;
	  no conversion or backward-compatible rule loading.
	- preserve selected origin scopes when external permission helpers
	  forward persistent decisions through native MCP elicitation.
	- add origin-scoped MCP permission rules, selectable independently of
	  code/tab scopes; mcp-webbrowser derives browser origins for
	  JavaScript and tab operations, with exact, any-port and any-origin
	  choices. Existing rules without origins continue to match all origins.
	- use POSIX::uname instead of nonportable hostname -f for the XPCSE
	  browser nickname, consistent with HTTP URL wildcard host selection.
	- make form helper test run via explicit ./ path, avoid early HTTP
	  timer races, and test filesystem discovery with optional tools absent.
	- report browser protocol rejections through bounded WebSocket close
	  reasons; show abnormal disconnects in the userscript console and toast.
	- document browser wire-protocol minor-version compatibility: accept
	  compatible older and newer clients without breaking base functionality.
	- remove the obsolete private stdio permission-result bridge from
	  mcp-multibroker; use ordinary form elicitation.
	- add per-tab operation discovery and calls to mcp-webbrowser, with
	  per-tab routing, ordinary MCP permissions and browser protocol 1.1;
	  the userscript initially advertises no extra operations.
	- make the unsandboxed-warning test tolerate diagnostic output from
	  non-GNU utility probes (FreeBSD and BusyBox).
	- add mcp-imap with one named password-authenticated account per instance,
	  bounded UID search, MIME reads, explicit mailbox/message mutations,
	  UIDPLUS-only targeted expunge, forked worker and MCP permissions.
	- propagate XPCSE save response ETags back to Vim session metadata;
	  make stale upload HTTP status an editor error.
	- require GNU sed in worker tool discovery; report missing-Perl diagnostics in tests.
	- xpcse: forward Vim's :write! flag through mcp-vim to browser
	  uploads, without changing upload behavior yet.
	- recommend rather than require WebSocket modules: only mcp-vim and
	  mcp-webbrowser use them; mcp-vim loads them only for browser clients,
	  and tests skip optional WebSocket coverage when unavailable.

0.65  Fri 23 Oct 2026 22:41:32 CEST
	- fix mcp-webbrowser userscript title indicator duplicating prefixes on empty titles.
	- use built scripts in make test PATH, avoiding source shebangs and
	  accidentally installed helpers in rule management tests.
	- clarify browser execute code wrapper and reject function/symbol return
	  values instead of silently converting them to null.
        - fix many bugs in the testsuite.

0.62  Thu 22 Oct 2026 13:32:52 CEST
	- INCOMPATIBLE API CHANGE: mcp_getoptions now returns a hash reference instead of
          a key/value list.
	- Simple accepts server_name/server_version independently of the local
	  instance name, leaving server_info as an unmodified protocol override.
	- query multibroker children in parallel for tool and broker discovery,
	  preserving tool order and returning partial results after 15 seconds
	  instead of blocking on an unresponsive child.
	- accept a missing trailing slash on HTTP MCP endpoint URLs, working
	  around Claude's MCP connector wrongly dropping it from the configured URL,
	  thus corrupting it.
	- allow omitted ports in reverse extension URLs, defaulting to port 80.
	- fix MCP client/server version fields serialized as JSON numbers in 0.61.

0.61  Thu 22 Oct 2026 08:57:42 CEST
	- resolve bind hostnames via AnyEvent::Socket instead of Socket::getaddrinfo.
	- honor user-selected file permissions and preserve them across replacements.
	- fix permission test fixture grants.
	- fix activity log timestamp formatting on older perl versions.
	- correct multibroker test tool count (including meta-instructions).
	- fix perl 5.12 syntax errors in mcp-fs and mcp-vim.

0.6  Wed 21 Oct 2026 20:43:20 CEST
	- 34k LOC of pure llm madness. but seems to work. yay.

0.0  Sat 03 Oct 2026 07:29:39 CEST
	- original version, an AnyEvent::HTTP clone.
