ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MCP/Changes
Revision: 1.55
Committed: Thu Nov 5 03:33:15 2026 UTC (8 days, 13 hours ago) by root
Branch: MAIN
Changes since 1.54: +26 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.2 Revision history for AnyEvent::MCP
2    
3 root 1.55 0.81 (unreleased)
4     - keep OAuth2 tests working without optional Mail::IMAPTalk,
5     IO::Socket::SSL or Authen::SASL; skip only worker-specific checks.
6     - support optional `mount-try.SUFFIX = ro:/path` or `rw:/path` in
7     mcp-fs configuration. Pass these directly as bubblewrap
8     --ro-bind-try/--bind-try for each invocation, without startup path
9     checks, locally and remotely; required mount.* entries are unchanged.
10     - support one remote host per mcp-fs instance with -h/--host and
11     -e/--rsh; resolve remote workdirs and available tools in a single
12     startup probe, then execute existing workers through a binary-framed
13     remote Perl launcher without installing any MCP modules remotely.
14     - use canonical pathnames as compact workdir IDs across local and remote
15     hosts; qualify remote permission scopes independently. Named profiles
16     remain shared between instances. Report cached remote VCS
17     markers and remote umask.
18     - reserve -h for application-specific options; --help remains common.
19     - test remote workers, external GNU utilities, permission isolation,
20     shell argument quoting and startup probing using a mock remote shell
21     and bubblewrap, including unsandboxed/auto behavior. Verify matching
22     workdir IDs for identical canonical paths across local and remote
23     instances.
24     - make mock remote-agent tests independent of a local SSH_AUTH_SOCK
25     inherited from the test runner (including CPAN Testers).
26     - document --eager when starting mcp-webbrowser through multibroker;
27     defer possible downstream preferences for --eager and --hidden.
28    
29 root 1.53 0.8 Thu 05 Nov 2026 01:52:48 CET
30 root 1.49 - INCOMPATIBLE CHANGE: due to the added user management, existing
31     url tokens have been invalidated.
32 root 1.54 - limit distribution permission normalization to its staging
33     directory, and supply proper CPAN author and abstract metadata.
34 root 1.52 - give shared command-line switches their own reference in
35     Server::Simple; use individually indexed POD items for executable
36     options and application-specific shared-option behavior.
37 root 1.51 - refresh the introductory guide and mcp-imap/mcp-http manuals
38     with first-use workflows, OAuth2 setup, mailbox/search examples
39     and reverse-TLS troubleshooting; correct stale retry documentation.
40 root 1.50 - extend mcp-imap SEARCH filters with recursive AND/OR/NOT, header,
41     text/body, date, size and flag criteria; use explicitly quoted
42     IMAP arguments and bounded filter complexity.
43     - capture deliberately triggered connection errors in test assertions,
44     avoiding noisy successful test runs.
45 root 1.49 - expose IMAP LSUB to inspect subscribed mailboxes, alongside
46     subscribe/unsubscribe; return the same format as LIST.
47     - remove superseded IMAP OAuth provider and pagination prototypes
48     and their obsolete reference tests.
49 root 1.51 - defer outgoing mail submission research (mcp-smtp or mcp-imap)
50     in TODO.md.
51 root 1.48 - retry reverse connections only for TCP connection refusal and
52     unexpected disconnects; report and stop on other TCP errors or
53     TLS handshake/verification failures.
54     - force scalar context when checking Mail::IMAPTalk results;
55     list context truncated LIST responses and could corrupt SEARCH
56     results. Test with context-sensitive IMAP mocks.
57     - report HTTPS reverse-connection handshake failures rather than
58     silently retrying; send credentials only after verified TLS succeeds.
59     - omit pointless mailbox permission dimension for mcp-imap mailboxes.
60     - clarify expected OAuth redirect error page and account selection.
61     - implement mcp-imap OAuth2 authorization-code login with PKCE,
62     human-pasted headless browser redirect, HTTPS token exchange,
63     refresh-token persistence/rotation and IMAP SASL XOAUTH2.
64     Keep interactive credentials outside MCP tools and argv.
65     - omit unnecessary shell quotes in mcp-imap providers commands.
66     - expand mcp-imap providers with Thunderbird ISPDB domain search,
67     provider-hosted HTTPS autoconfig lookup and ISPDB fallback,
68     password-based IMAP alternatives and provider setup instructions;
69     continue printing optional OAuth configuration without saving it.
70 root 1.47 - add per-downstream --hidden to mcp-multibroker, omitting a
71     server's tools from normal discovery while retaining explicit
72     list-tools, discover-brokers and call-tool access.
73 root 1.46 - number the user management test consecutively as t/27_users.t.
74 root 1.45 - tidy Perl import grouping, internal comments and source layout
75     in the command-line tools and library modules.
76     - stop imposing an IMAP account file mode check; access is governed
77     by ordinary filesystem permissions.
78 root 1.44 - use the permission engine's literal matching convention for exact
79     user identities and test positive permission-scope validation.
80     - reject invalid browser WebSocket credentials via the documented
81     handshake exception interface, producing one specific warning.
82     - apply the same handshake rejection handling to Vim WebSocket
83     connections, including peer and invalid-token/path warnings.
84     - document user-management scopes and URL examples in command help.
85 root 1.43 - add scoped, revocable MCP users with HKDF-derived credentials,
86     an implicit global default user, and atomic user management;
87     list effective user URLs with --print-url[=USER], also accepting
88     --print-urls, without binding the advertised listener port.
89     - associate HTTP credentials with per-request users, bind user
90     identity to persistent permissions and permission continuations,
91     and delegate original users through trusted multibrokers.
92     - select the effective connect_user (default: default) for reverse
93     MCP, private Vim and browser connections, independently of normal
94     authenticated HTTP tool calls.
95 root 1.42 - treat empty directory paths as "." in mcp-fs list, find, grep and
96     VCS cwd, without accepting empty filenames.
97 root 1.41 - support opportunistic HTTP/HTTPS and reverse MCP connections on the
98     same listener, TLS certificate/key CLI options, and dual URL discovery;
99     support verified HTTPS for outgoing reverse connections.
100 root 1.39 - treat idle HTTP disconnects as normal EOF while retaining errors
101     for clients disconnecting during request headers or bodies.
102     - identify failing MCP connections by client name, remote address
103     and connection id, including modern per-request client metadata.
104 root 1.38 - trace local multibroker prompt starts, outcomes and cancellations
105     with elapsed time to diagnose disappearing permission dialogs.
106     - use an 8 MiB default MCP message size across JSONL and HTTP
107     clients and servers, allowing large base64 tool requests through
108     mcp-multibroker; log server transport errors at warn level
109     instead of silently closing connections.
110 root 1.37 - load AnyEvent::Log at compile time so its format_time call is parsed
111     as a function, fixing activity logging on Perl 5.10.
112    
113 root 1.36 0.71 Fri 30 Oct 2026 18:01:51 CET
114 root 1.35 - make multibroker-spawned children ask for permissions through MCP,
115     independently of the multibroker's own permission prompt mode.
116 root 1.36 - log VCS backend and a bounded, JSON-quoted preview of filenames for
117     vcs-diff, vcs-status and vcs-log.
118     - load only core modules in t/00_load.t; optional IMAP dependencies
119     are tested separately when available.
120     - let the fake bubblewrap test use the host temporary directory on
121     systems without /tmp (notably Termux).
122     - suppress Perl startup locale warnings in sandbox workers when
123     the requested C.UTF-8 locale is unavailable.
124     - canonicalize temporary test paths to match mcp-fs on systems with
125     symlinked temp directories; diagnose failing filesystem assertions.
126     - test SSE notification ordering at client delivery rather than
127     server enqueue time, avoiding a network scheduling race.
128     - diagnose failing multibroker HTTP integration tests with preflight
129     responses, RPC results and bounded server startup diagnostics.
130 root 1.35
131 root 1.34 0.7 Fri 30 Oct 2026 14:56:18 CET
132     - WARNING: mcp-imap is unfinished and has not been tested against a real IMAP server.
133     - INCOMPATIBLE CHANGE: rules have changed, old rules will be erased.
134     - declare the same license terms as Perl itself in distribution metadata.
135     - new mcp servers in this release: mcp-http
136     - accept optional dimension default matcher for persistent-rule prompts;
137 root 1.33 - clarify that mcp-fs exec has private /tmp by default; shared-tmp
138     exposes host /tmp and is not needed for ordinary temporary files or IPC.
139 root 1.32 - add mcp-fs vcs-log for Git, SVN, CVS and Mercurial, reusing bounded
140     output and dedicated permission actions; SVN log receives network
141     and SSH-agent grants alongside CVS operations.
142 root 1.31 mcp-webbrowser prefers any JavaScript in the current tab, while the
143     independent origin dimension remains scoped to the current origin.
144 root 1.30 - log mcp-http requests with their method and a sanitized URL preview;
145     identify mcp-http/$VERSION in User-Agent unless overridden by the caller.
146 root 1.31 Allow generic key=value context in the shared mcp_log_request formatter.
147 root 1.29 - silently treat invalid saved permission-rule files as empty, prompting
148     instead of aborting broker startup; subsequent saves replace the old file.
149 root 1.30 - add mcp-http for arbitrary HTTP methods with URL-scoped approvals,
150     caller-managed cookie jars, bounded bodies and text grep/regex/substitution.
151     Disable redirects, retries and proxies; verify HTTPS certificates.
152     - derive browser permission origins from reported URLs, not a new
153     userscript field; keep older browser clients able to execute with
154     origin-scoped permissions.
155     - accept compatible browser-protocol minor versions; return empty
156     operation discovery for 1.0 clients instead of disconnecting them.
157 root 1.29 Direct rule saves no longer perform semantic validation.
158 root 1.28 - replace special-case subject, origin and workdir permission scopes with
159     named dimensions: metadata-driven prompts, generic match.NAME rule keys,
160     and engine-enforced matcher choices. Reject old request and rule fields;
161     no conversion or backward-compatible rule loading.
162 root 1.27 - preserve selected origin scopes when external permission helpers
163     forward persistent decisions through native MCP elicitation.
164 root 1.26 - add origin-scoped MCP permission rules, selectable independently of
165 root 1.30 code/tab scopes; mcp-webbrowser derives browser origins for
166 root 1.26 JavaScript and tab operations, with exact, any-port and any-origin
167     choices. Existing rules without origins continue to match all origins.
168 root 1.25 - use POSIX::uname instead of nonportable hostname -f for the XPCSE
169     browser nickname, consistent with HTTP URL wildcard host selection.
170     - make form helper test run via explicit ./ path, avoid early HTTP
171     timer races, and test filesystem discovery with optional tools absent.
172 root 1.23 - report browser protocol rejections through bounded WebSocket close
173     reasons; show abnormal disconnects in the userscript console and toast.
174     - document browser wire-protocol minor-version compatibility: accept
175     compatible older and newer clients without breaking base functionality.
176     - remove the obsolete private stdio permission-result bridge from
177     mcp-multibroker; use ordinary form elicitation.
178 root 1.22 - add per-tab operation discovery and calls to mcp-webbrowser, with
179     per-tab routing, ordinary MCP permissions and browser protocol 1.1;
180     the userscript initially advertises no extra operations.
181     - make the unsandboxed-warning test tolerate diagnostic output from
182     non-GNU utility probes (FreeBSD and BusyBox).
183     - add mcp-imap with one named password-authenticated account per instance,
184     bounded UID search, MIME reads, explicit mailbox/message mutations,
185     UIDPLUS-only targeted expunge, forked worker and MCP permissions.
186 root 1.21 - propagate XPCSE save response ETags back to Vim session metadata;
187     make stale upload HTTP status an editor error.
188     - require GNU sed in worker tool discovery; report missing-Perl diagnostics in tests.
189 root 1.18 - xpcse: forward Vim's :write! flag through mcp-vim to browser
190     uploads, without changing upload behavior yet.
191 root 1.19 - recommend rather than require WebSocket modules: only mcp-vim and
192     mcp-webbrowser use them; mcp-vim loads them only for browser clients,
193     and tests skip optional WebSocket coverage when unavailable.
194 root 1.18
195 root 1.17 0.65 Fri 23 Oct 2026 22:41:32 CEST
196 root 1.14 - fix mcp-webbrowser userscript title indicator duplicating prefixes on empty titles.
197 root 1.17 - use built scripts in make test PATH, avoiding source shebangs and
198     accidentally installed helpers in rule management tests.
199 root 1.15 - clarify browser execute code wrapper and reject function/symbol return
200     values instead of silently converting them to null.
201 root 1.17 - fix many bugs in the testsuite.
202 root 1.13
203 root 1.12 0.62 Thu 22 Oct 2026 13:32:52 CEST
204 root 1.16 - INCOMPATIBLE API CHANGE: mcp_getoptions now returns a hash reference instead of
205     a key/value list.
206 root 1.11 - Simple accepts server_name/server_version independently of the local
207     instance name, leaving server_info as an unmodified protocol override.
208     - query multibroker children in parallel for tool and broker discovery,
209     preserving tool order and returning partial results after 15 seconds
210     instead of blocking on an unresponsive child.
211 root 1.8 - accept a missing trailing slash on HTTP MCP endpoint URLs, working
212 root 1.10 around Claude's MCP connector wrongly dropping it from the configured URL,
213 root 1.18 thus corrupting it.
214 root 1.7 - allow omitted ports in reverse extension URLs, defaulting to port 80.
215 root 1.9 - fix MCP client/server version fields serialized as JSON numbers in 0.61.
216 root 1.7
217 root 1.6 0.61 Thu 22 Oct 2026 08:57:42 CEST
218 root 1.5 - resolve bind hostnames via AnyEvent::Socket instead of Socket::getaddrinfo.
219 root 1.4 - honor user-selected file permissions and preserve them across replacements.
220     - fix permission test fixture grants.
221     - fix activity log timestamp formatting on older perl versions.
222     - correct multibroker test tool count (including meta-instructions).
223     - fix perl 5.12 syntax errors in mcp-fs and mcp-vim.
224    
225 root 1.3 0.6 Wed 21 Oct 2026 20:43:20 CEST
226 root 1.2 - 34k LOC of pure llm madness. but seems to work. yay.
227 root 1.1
228     0.0 Sat 03 Oct 2026 07:29:39 CEST
229     - original version, an AnyEvent::HTTP clone.