7b1d7be5d7
Claude Desktop times out tool calls after ~4 minutes. The previous implementation read the first SSE chunk before returning, which could block for the entire image-pull duration. Now: send the GET request, wait for HTTP response headers (status check only), close the connection immediately — never read SSE events. DSM starts the build on receipt of the request and continues server-side. ReadTimeout on headers is caught and ignored (request already sent). Removes the _json import added in 0.2.5. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.1 KiB
6.1 KiB
Changelog
All notable changes to this project will be documented in this file.
[0.2.6] - 2026-04-21
Fixed
DsmClient.trigger_build_stream: Claude Desktop aborts tool calls after ~4 minutes. The previous implementation read the first SSE chunk before returning, which could block for the entire duration of an image pull. Fixed by making the call truly fire-and-forget: the HTTP request is sent, response headers are received (HTTP status check only), then the connection is closed immediately without reading any SSE events. DSM continues the build server-side regardless. The_jsonimport added in 0.2.5 is removed.
[0.2.5] - 2026-04-21
Changed
redeploy_project: Replaced the delete-before-start image workaround withSYNO.Docker.Project/build_stream— the programmatic equivalent of the DSM "Erstellen" (Build) button, confirmed via browser DevTools capture. New 3-step flow for all project states:- Stop (skipped for STOPPED; error-suppressed for BUILD_FAILED)
build_stream— DSM pulls updated images and starts the project via SSE- Poll for RUNNING (timeout raised from 30 s to 5 min to accommodate image pulls)
build_streamerrors are now fatal (abort the redeploy with a clear message).
Added
DsmClient.trigger_build_stream(project_id)— fires a streaming GET toSYNO.Docker.Project/build_stream, reads the first SSE chunk to confirm DSM accepted the request, then closes the connection. The build continues server-side. Handles immediate JSON error responses; swallowsReadTimeout(stream still open = build running).
[0.2.4] - 2026-04-21
Changed
redeploy_project: Replaced brokenSYNO.Docker.Image/pullwith a delete-before-start workaround. The tool now reads image tags from the project's compose file via FileStation, deletes each cached image before callingstart(so DSM auto-pulls the latest version), then polls forRUNNING. Image deletion is non-fatal — if it fails the project still starts. Unified 4-step flow for all project states (RUNNING, STOPPED, BUILD_FAILED).
Added
update_image_tag: Auto-updates environment variables whose value equals the numeric version prefix of the old tag when the new tag shares the same<digits>-<suffix>pattern. For example, changing2.558-jdk21→2.560-jdk21automatically updatesJENKINS_VERSION=2.558toJENKINS_VERSION=2.560. The preview (unconfirmed call) now lists which env vars will be updated. Only triggers when the variable exists and the pattern matches; no change for plain tags likelatest.
[0.2.3] - 2026-04-21
Changed
CLAUDE.mdrewritten: removed all operator-specific infrastructure details (hostnames, container names, image tags, personal notes). Kept DSM API quirks, implementation rules, and tool inventory.
[0.2.2] - 2026-04-21
Fixed
redeploy_project(BUILD_FAILED): Pull errors are no longer silently suppressed. If the image pull fails (e.g. the tag in compose.yaml does not exist on the registry), redeploy aborts immediately with a clear message pointing toupdate_image_tag.
[0.2.1] - 2026-04-21
Fixed
redeploy_project: After issuingstart, the tool now polls the project status every 2 seconds for up to 30 seconds until the project reachesRUNNING. Previously DSM returned immediately while containers were still starting, causing the project to appear asexitedwhen checked right after redeploy. On timeout a warning is returned instead of an error.delete_image: Now distinguishes between running and stopped container references. A stopped container holding the image produces a clear hint to usedelete_containerorsystem_pruneinstead of a generic "in use" error.redeploy_project(BUILD_FAILED path): Added explicit image pull step before restart (stop → pull → start). Previously the old cached image could be reused.
Added
delete_container— delete a stopped container by name; refuses if container is still running; requiresconfirmed=True.
[0.2.0] - 2026-04-14
Added
Images
list_images— list local images sorted by size; marks images in use and with available updatesdelete_image— delete image byname:tagor hash; refuses if image is used by a container
Container
container_stats— live CPU %, RAM used/limit, network I/O, block I/O
System
system_df— Docker disk usage: image count/size, running/stopped containers, reclaimable spacesystem_prune— remove dangling images, stopped containers, and unused networks
Networks
list_networks— list all Docker networks with driver, subnet, gateway, attached containerscreate_network— create a new bridge (or other driver) networkdelete_network— delete a network; refuses if any container is still attached
Fixed
get_container_statusnow reads the correct DSM response fields (details.Statefor status/running,profile.imagefor image name) and displays IP addresses, port bindings, and mountsredeploy_projectis now status-aware: RUNNING → stop + start; STOPPED → start directly; BUILD_FAILED → force-stop + start; unknown status returns a clear error with workaround hint- Container names with hash prefix (e.g.
f93cb8b504f7_jenkins) are now transparently stripped inlist_containers,container_stats,get_container_status,get_container_logs, andexec_in_container
Changed
DsmClientgained apost_request()method for form-encoded POST operations required by image delete, network create/delete
[0.1.0] - 2026-04-13
Added
- Initial implementation
- Projects:
list_projects,get_project_status,start_project,stop_project,redeploy_project - Containers:
list_containers,get_container_status,get_container_logs,exec_in_container - Compose:
read_compose,update_compose,update_image_tag,update_env_var - Images:
check_image_updates - DSM session management with auto re-authentication on session timeout
- OS keyring integration for secure credential storage
- 2FA / device token support
- Interactive
setupwizard andcheckconnectivity command