You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge duplicate sections, remove test-only entries, deduplicate
the logging-set-level fix, and reorder entries by importance
within each category.
https://claude.ai/code/session_01STkPizj5hkX1e12YWw6dkG
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+36-53Lines changed: 36 additions & 53 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,79 +7,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
### Fixed
10
+
### Changed
11
11
12
-
-Session restart now auto-detects the `default` OAuth profile created after the session was established, fixing the `login` then `restart` flow for unauthorized sessions
12
+
-**Breaking:** CLI syntax redesigned to command-first style. All commands now start with a verb; MCP operations require a named session.
Direct one-shot URL access (e.g. `mcpc mcp.apify.com tools-list`) is removed; create a session first with `mcpc connect`.
15
24
16
25
- Renamed `--async` flag to `--task` in `tools-call` for consistency with MCP specification; `--detach` now implies `--task`
17
-
-`[async]` annotation in `tools-list` and `tools-get` replaced with `[task:optional]`, `[task:required]`, or `[task:forbidden]`
26
+
-Revised session states: auth failures (401/403) now show as `unauthorized` (separate from `expired` which is for session ID expiry), with actionable login guidance; new `disconnected` state surfaces when bridge is alive but server has been unreachable for >2 minutes
18
27
- When `--profile` is not specified, only the `default` profile is used; non-default profiles require an explicit `--profile` flag
19
-
- Revised session states: auth failures (401/403) now show as `unauthorized` (separate from `expired` which is for session ID expiry), with actionable login guidance; new `disconnected` display state surfaces when bridge is alive but server has been unreachable for >2 minutes
20
-
-`DISCONNECTED_THRESHOLD_MS` is now derived from `KEEPALIVE_INTERVAL_MS` (2× ping interval + 5s buffer) via shared constants, eliminating duplicate magic numbers
21
-
- Tools cache now fetches all pages (not just the first) on startup and on `tools/list_changed` notifications
22
-
-`listAllTools` now uses bridge cache by default (no server call), with `refreshCache` option to bypass; replaces separate `getCachedTools` method
23
-
-`tools-get` uses cached tools list first and only re-fetches from server if the tool is not found
24
-
-`x402 sign` now takes the PAYMENT-REQUIRED header as a positional argument instead of `-r` flag (e.g. `mcpc x402 sign <base64>` instead of `mcpc x402 sign -r <base64>`)
28
+
-`@napi-rs/keyring` native addon is now loaded lazily: `mcpc` starts and works normally even when `libsecret` (Linux) or the addon itself is missing; a one-time warning is emitted and credentials fall back to `~/.mcpc/credentials.json` (mode 0600)
29
+
-`x402 sign` now takes the PAYMENT-REQUIRED header as a positional argument instead of `-r` flag (e.g. `mcpc x402 sign <base64>`)
30
+
-`tools-list` and `tools-get` now show `[task:optional]`, `[task:required]`, or `[task:forbidden]` instead of `[async]`
31
+
- Tools cache now fetches all pages on startup and on `tools/list_changed` notifications; `tools-get` uses cached list first and only re-fetches if the tool is not found
32
+
-`--header` / `-H` option is now specific to the `connect` command instead of being shown as a global option
25
33
26
34
### Added
27
35
28
-
-`tools-list` now shows inline parameter signatures (e.g. `read_file(path: string, +4 optional)`) for quick scanning without `--full`
29
-
-`mcpc @session` now shows available tools list from bridge cache (no extra server call)
30
-
- x402 payments are now also sent via the MCP `_meta["x402/payment"]` field on `tools/call` requests, in addition to the existing HTTP `PAYMENT-SIGNATURE` header — servers can choose which mechanism to consume
31
-
-`_meta` parameter threaded through the full tool call chain (`IMcpClient`, `SessionClient`, bridge IPC, `McpClient`) for forward compatibility
32
-
-`mcpc login` now falls back to accepting a pasted callback URL when the browser cannot be opened (e.g. headless servers, containers)
33
-
-`--task` flag for `tools-call` to opt-in to task execution (experimental) with a progress spinner showing elapsed time, server status messages, and progress notification messages in human mode
34
-
-`--detach` flag for `tools-call` to start a task and return the task ID immediately without waiting for completion (implies `--task`)
35
-
- Press ESC during `--task` task execution to detach on the fly — the task continues in the background and the task ID is printed, same as `--detach`
36
36
- New `tasks-list`, `tasks-get`, `tasks-cancel` commands for managing async tasks on the server
37
-
- Task capability and `execution.taskSupport` displayed in `tools-get` and server info
38
-
- E2E test server now includes a `slow-task` tool that supports task execution
39
-
- E2E tests for task execution, detached mode, task management (list/get/cancel), and synchronous fallback
40
-
-`[task:optional|required|forbidden]` indicator in `tools-list` output for tools with task support
37
+
-`--task` flag for `tools-call` to opt-in to task execution with a progress spinner showing elapsed time, server status messages, and progress notifications in human mode
38
+
-`--detach` flag for `tools-call` to start a task and return the task ID immediately without waiting for completion (implies `--task`)
39
+
- Press ESC during `--task` execution to detach on the fly — the task continues in the background and the task ID is printed
41
40
-`--insecure` global option to skip TLS certificate verification, for MCP servers with self-signed certificates
42
-
- E2E test for `--insecure` flag using a self-signed HTTPS test server wrapper
43
41
-`--client-id` and `--client-secret` options for `mcpc login` command, for servers that don't support dynamic client registration
44
-
-`mcpc close @session`, `mcpc restart @session`, and `mcpc shell @session` command-first syntax as alternatives to `mcpc @session close/restart/shell`
45
-
- E2E tests now run under the Bun runtime (in addition to Node.js); use `./test/e2e/run.sh --runtime bun` or `npm run test:e2e:bun`
46
42
-`--no-profile` option for `connect` command to skip OAuth profile auto-detection and connect anonymously
43
+
-`mcpc close @session`, `mcpc restart @session`, and `mcpc shell @session` command-first syntax as alternatives to `mcpc @session close/restart/shell`
44
+
-`mcpc login` now falls back to accepting a pasted callback URL when the browser cannot be opened (e.g. headless servers, containers)
45
+
-`tools-list` now shows inline parameter signatures (e.g. `read_file(path: string, +4 optional)`) for quick scanning without `--full`
46
+
-`mcpc @session` now shows available tools list from bridge cache (no extra server call)
47
+
- Task capability and `execution.taskSupport` displayed in `tools-get` and server info
48
+
- x402 payments are now also sent via the MCP `_meta["x402/payment"]` field on `tools/call` requests, in addition to the existing HTTP header
47
49
48
50
### Fixed
49
51
50
-
-`--task` and `--detach` tool calls now correctly send task creation parameters to the server, fixing "task stream ended without creating a task" errors
51
-
- File lock retries now use randomized exponential backoff to reduce contention when multiple processes compete for the same lock
52
52
- Explicit `--header "Authorization: Bearer ..."` is no longer silently ignored when a default OAuth profile exists for the same server; explicit CLI headers now take precedence over auto-detected profiles
53
53
- Combining `--profile` with `--header "Authorization: ..."` now returns a clear error instead of silently stripping the header
54
-
-`logTarget` no longer prints a misleading `[→ @name (HTTP)]` prefix when a session doesn't exist; only the error message is shown
55
-
-`logging-set-level` JSON output no longer includes a `success` field; output is now `{"level":"<level>"}` consistent with the project's convention of indicating errors via exit codes
56
-
-`--header` / `-H` option is now specific to the `connect` command instead of being shown as a global option in `mcpc --help`
57
-
- Bridge now forwards `logging/message` notifications from the MCP server to connected clients, so `logging-set-level` actually takes effect in interactive shell sessions
58
-
- IPC buffer between CLI and bridge process is now capped at 10 MB; sockets are destroyed if the limit is exceeded, preventing unbounded memory growth
59
-
-`validateOptions()` no longer includes subcommand-specific options (`--full`, `--x402`, `--proxy`, etc.) in global known-options list; misplaced flags now produce clear "Unknown option" errors instead of confusing Commander rejections
54
+
- Session restart now auto-detects the `default` OAuth profile created after the session was established, fixing the `login` then `restart` flow for unauthorized sessions
60
55
- Sessions requiring authentication now correctly show as `expired` instead of `live` when the server rejects unauthenticated connections
61
56
- Auth errors wrapped in `NetworkError` by bridge IPC are now detected on first health check, avoiding unnecessary bridge restart
62
-
- Fixed flaky E2E invariant check that failed when `lastSeenAt` changed between `--json` and `--json --verbose` calls
63
57
-`--timeout` flag now correctly propagates to MCP requests via session bridge
64
-
-`parseServerArg()` now handles well Windows drive-letter config paths as well as other ambiguous cases
65
-
-`logging-set-level` JSON output no longer includes redundant `success` field
66
-
67
-
### Changed
68
-
69
-
-**Breaking:** CLI syntax redesigned to command-first style. All commands now start with a verb; MCP operations require a named session.
Direct one-shot URL access (e.g. `mcpc mcp.apify.com tools-list`) is removed; create a session first with `mcpc connect`.
81
-
82
-
-`@napi-rs/keyring` native addon is now loaded lazily: `mcpc` starts and works normally even when `libsecret` (Linux) or the addon itself is missing; a one-time warning is emitted and credentials fall back to `~/.mcpc/credentials.json` (mode 0600)
58
+
-`--task` and `--detach` tool calls now correctly send task creation parameters to the server
59
+
- Bridge now forwards `logging/message` notifications from the MCP server to connected clients, so `logging-set-level` actually takes effect in interactive shell sessions
60
+
- IPC buffer between CLI and bridge process is now capped at 10 MB, preventing unbounded memory growth
61
+
-`parseServerArg()` now handles Windows drive-letter config paths and other ambiguous cases
62
+
- Misplaced subcommand-specific flags (e.g. `--full`, `--proxy`) now produce clear "Unknown option" errors instead of confusing rejections
63
+
-`logging-set-level` JSON output no longer includes a redundant `success` field
64
+
-`logTarget` no longer prints a misleading prefix when a session doesn't exist
65
+
- File lock retries now use randomized exponential backoff to reduce contention
0 commit comments