Releases: Jhacarreiro/ai-server-commander
Releases · Jhacarreiro/ai-server-commander
Release list
v1.0.9
What's Changed
- fix: friendly message when the listen port is taken by @Zauberio in #54
- fix: clear -32602 for array/primitive MCP tool arguments by @Zauberio in #49
- fix: honor all query options as POST fallbacks, not just command by @Zauberio in #48
- fix: accept UTF-8 BOM in config.json by @Zauberio in #37
- fix: MCP conformance - server protocolVersion, empty-batch error by @Zauberio in #31
- chore: remove dead api/firebase.js by @Zauberio in #24
- fix: accept Authorization Bearer for MCP pre-shared token by @Zauberio in #15
- fix: answer CORS preflights before auth so browser clients work by @Zauberio in #12
- fix: return correct message class for 400 body-parse errors by @Zauberio in #10
New Contributors
Full Changelog: v1.0.8...v1.0.9
AI Server Commander v1.0.8
OAuth persistence
- Persistent OAuth clients and token state through
OAUTH_STATE_PATH - Atomic state replacement with mode
600 - Client secrets, authorization codes, access tokens and refresh tokens stored only as SHA-256 hashes
- Access and refresh tokens survive normal restarts
- Refresh-token rotation and
/oauth/revoke - Public PKCE and confidential-client compatibility
- Fail-closed behavior for malformed or symlinked state
- Exact loopback redirect validation
Dependency modernization
- Removed LocalTunnel and its pinned vulnerable Axios chain
- Removed Inquirer in favor of Node's built-in readline setup
- Upgraded Firebase Admin to the latest Node 20-compatible v13 release
- Reduced runtime audit from 15 findings / 3 high to 8 moderate / 0 high / 0 critical
- CI now fails on high or critical runtime audit findings
Migration
- Existing LocalTunnel users must move to a maintained reverse proxy or tunnel and set
productionDomain - Deployments upgrading from v1.0.7 or earlier require one new MCP authorization because previous OAuth state was memory-only
- Preserve the same
OAUTH_STATE_PATHacross future releases to retain client authorization
Validation
- CI passed on Node 20 and Node 22
- Clean install and full suite passed in the OpenClaw container
- Clean install and full suite passed on the TOS host with Node 20
- Restart, rotation, revocation, public-client, confidential-client, corrupted-state and raw-token persistence tests passed
AI Server Commander v1.0.7
MCP and ChatGPT readiness
- Adds a human-readable tool title and exact
outputSchema - Adds accurate
readOnlyHint,destructiveHint,openWorldHintandidempotentHintannotations - Declares OAuth security schemes with a compatibility mirror in
_meta - Returns
structuredContentwhile retaining the existing text content for Claude and older clients - Makes MCP identity, OAuth metadata and authorization copy deployment-neutral
- Adds OAuth challenge and structured-result regression coverage
Open-source project readiness
- Rewritten README with quick start, ChatGPT Action setup, MCP/OAuth setup, examples, configuration, safety model, testing and troubleshooting
- New architecture and production deployment guides
- New contribution, security, support, conduct and attribution files
- CI for Node 20 and Node 22, Dependabot, issue forms, CODEOWNERS and PR template
- Clean package metadata, config/environment examples and npm package hygiene
- Removed tracked IDE, macOS and obsolete scratch artifacts
Validation
- CI passed on Node 20 and Node 22
- Full suite passed in a clean TOS/Node 20 installation
- Markdown links, GitHub YAML, package contents and private deployment markers validated
- Existing REST/OpenAPI and MCP input contracts remain compatible
AI Server Commander v1.0.6
Highlights
- Shared bounded executor for REST and Claude/MCP
- MCP multi-line script mode with timeout, output and SAFE_MODE parity
- Per-command activity IDs and targeted interruption for concurrent commands
- Strict working-directory validation and fixed GET execution options
- Process-group termination for timeout/interruption on POSIX hosts
- Safer config/error logging and request-size alignment
- Compatible dependency refresh: 46 vulnerabilities / 4 critical reduced to 15 / 0 critical
See CHANGELOG.md for the full list and migration details.
v1.0.5
[1.0.5] - 2026-07-09
Added
- Added bounded
POST /api/runTerminalScriptsupport for JSON command execution requests. - Added
POST /v1/commands/executeas a versioned command execution endpoint with the same request/response contract. - Added
mode: "script"for multi-line shell scripts, nested quoting, JSON/YAML edits and other commands that are fragile as one-line query strings. - Added executor, route and OpenAPI smoke tests covering legacy GET, POST inline mode, script mode, non-zero exit codes and timeout behavior.
Changed
- Fixed first-run setup so the configured public server URL is saved in
config.json. - Aligned package metadata with the MIT license file.
- Centralized terminal execution through a bounded executor that preserves exit code, timeout state, output truncation metadata and notices.
- Expanded the public OpenAPI schema with command request/response objects for GET, POST and versioned command execution.
- Updated README command execution examples and safety notes for script mode and bounded execution.
Security
- Script bodies are size-limited and executed through temporary files that are cleaned up after the command finishes.
- Activity logging records command/script metadata such as hash, byte length and preview rather than storing full script bodies.
- Command execution remains bounded by timeout and output-size limits.
v1.0.4
- Repair main by merging the validated MCP/OAuth branch.\n- Replace the broken terminal handler from 46a98fe with a functional implementation.\n- Keep configurable MAX_OUTPUT_CHARS, COMMAND_TIMEOUT_MS and SAFE_MODE support.\n- Bump package version to 1.0.4.
v1.0.3
- Add OAuth discovery, dynamic client registration, authorization code + PKCE, token and refresh token endpoints for Claude remote MCP.\n- Protect /mcp with OAuth Bearer tokens and advertise protected-resource metadata via WWW-Authenticate.\n- Keep legacy /api/runTerminalScript behaviour unchanged.\n- Add form-urlencoded parser required by OAuth token exchange.
v1.0.2
- Add Streamable HTTP MCP endpoint at /mcp.\n- Expose run_terminal_command tool over MCP.\n- Allow /mcp authentication via query token while redacting token in auth logs.\n- Preserve existing /api/runTerminalScript GET and POST compatibility.
v1.0.1
- Accept command from POST JSON body via command field.\n- Preserve existing GET/query-string command compatibility.\n- Bump package version to 1.0.1.
v1.0.0
Changes
- Add POST support for
/api/runTerminalScriptwhile preserving the existing GET route. - This keeps the Custom GPT GET flow working and allows MCP-style web adapters to call the same terminal handler via POST.
Validation
node --check serverModules/apiRoutes.jsnode --check api/terminal.jsgit diff --check- Verified route registration includes both GET and POST for
/api/runTerminalScriptusingterminalHandler.