What's Fixed
Hardcoded server URLs in Windows management scripts
All 5 Windows PowerShell management scripts (manage_service.ps1, run_http_server_background.ps1, install_scheduled_task.ps1, uninstall_scheduled_task.ps1, update_and_restart.ps1) previously used a hardcoded http://127.0.0.1:8000 regardless of .env configuration. Health checks failed silently as soon as a user enabled HTTPS or changed the port.
Fix: Introduced scripts/service/windows/lib/server-config.ps1 - a shared helper that parses .env for MCP_HTTP_HOST, MCP_HTTP_PORT, and MCP_HTTPS_ENABLED and returns a BaseUrl/HealthUrl hashtable. All scripts now dot-source this helper. Fully backward-compatible (falls back to http://127.0.0.1:8000 if .env is absent or variables are unset).
Silent Python stdout/stderr dropout in background server wrapper
run_http_server_background.ps1 used .NET OutputDataReceived event handlers referencing $script:LogFile. This variable is not captured in the event handler runspace, so every line of Python stdout and stderr was silently discarded. When Python crashed during initialization, no error was ever surfaced in the log file.
Fix: Replaced with Start-Process -RedirectStandardOutput/-RedirectStandardError, which writes directly to http-server-python.log (stdout) and a .err sidecar (stderr). Stderr is appended to the main log with a ===== STDERR ===== marker on process exit.
Log overwrite destroys crash evidence in restart loop
Start-Process overwrites the redirect target file on each call. The previous size-based rotation (> 10MB) meant crash output from restart attempt N was silently destroyed by attempt N+1.
Fix: Log rotation is now unconditional at the start of each loop iteration - the current log is renamed to .old before Start-Process is called, preserving the most recent crash output for diagnosis.
Additional improvements (Gemini review feedback)
.envparser regex now strips trailing inline comments:MCP_HTTP_PORT=8001 # commentcorrectly parses as8001- TLS protocol set via
-borto add Tls12 additively, preserving TLS 1.3 if already enabled in the session
Test Evidence (manual verification)
manage_service.ps1 statusreportsHEALTHYonhttps://127.0.0.1:8001/after fix (previously:NOT RESPONDING)http-server-python.loggains 15 stdout lines + 174 stderr lines within seconds of startup (previously: always 0 lines, all output lost)- Post-reboot: Scheduled Task auto-starts, server listens on correct port, sync service active
- PowerShell parser validates all modified scripts (no syntax errors)
- Zero hardcoded
8000/http://127.0.0.1references remain inscripts/service/windows/
Classification
PATCH - zero Python code changes, zero API changes, zero test changes. Windows-only PowerShell scripts only.
1,537 tests passing.
Full Changelog
See CHANGELOG.md for the complete entry.