Scraper debug output goes to stderr which is invisible in MCP stdio mode.
Add capture_logs context manager that attaches a StringIO handler to the
schwab_scraper logger during tool execution, then includes captured logs
in the response envelope when debug=True or on failure.
Applied to login() and refresh_session() which are the critical paths
for authentication diagnostics.
actions/checkout@v3's Basic auth header pattern fails with 403 when
accessing a different private repository. Switch to a plain git clone
with the CRT_READ_ONLY token embedded in the HTTPS URL.
Patch RequestResponder.respond() and cancel() at startup to handle
the race where a notifications/cancelled arrives between handler
return and respond(), which crashes the session with
"AssertionError: Request already responded to".
Also improve build.sh to handle registry push failures gracefully
and auto-restart the container after building.
- Dockerfile now installs schwab-scraper from vendor/ dir (no git needed)
- Upgrade playwright to latest to match browserless chromium container
- CI workflow checks out schwab-scraper into vendor/ before build
- Add scripts/build.sh for local builds via docker-test
- Add curl to runtime image for compose healthcheck
- Increase memory limit to 512M for large account position scraping
- Update schwab-scraper to f52774b (optimized lot extraction polling,
faster account switching with selector-based waits)
- Install curl in Docker image so compose healthcheck works
- Remove bundled schwab_scraper/ source (now installed via git dep)
- Increase memory limit to 512M for large account position scraping