Binary file corruption: downloads and uploads previously forced utf8 encoding, corrupting any binary file (zips, images, etc.). Downloads now detect binary content and return it base64-encoded; uploads accept an optional encoding: "base64" parameter.
FTP connection leak: the FTP client leaked connections when an operation threw. Every operation now disconnects in a finally block (matching the SFTP client's behavior).
Temp file cleanup: downloaded temp files are now always removed, including on error.
build-windows.bat: removed the broken fallback that copied .ts files as .js when compilation failed; a failed build now exits with an error instead of producing a runtime-crashing "success".
Concurrent tool-call races: the MCP SDK dispatches tool calls concurrently, so parallel calls could race each other (concurrent edits silently lost updates in testing). All tool calls now run through an operation queue, making each operation atomic. Ordering between calls issued in parallel is still the client's responsibility — await each result before a dependent call.
Temp-file name collisions: temp files were named with Date.now(), so two operations in the same millisecond could share (and delete) each other's temp file. Names now use randomUUID().