Repository navigation
0.5.0 — security and release readiness
Status: released and deployed after owner-authorized merge and successful validation. Residual upstream OS and native-library advisories remain disclosed in issue #11; no scan exclusions were added.
Changes
- Refresh the locked dependency graph and enforce patched minimums. Retain the
MCP 1.x API and remove the unpatched DiskCache dependency. - Store cached values as validated JSON in SQLite, with TTL, LRU eviction,
statistics, and concurrent process support. Never deserialize pickle. - Require an admin token for dashboard and API access. Reject cross-origin
browser mutations, malformed headers, and invalid or oversized JSON. - Mask proxy URLs and preserve existing credentials when masked configuration
values are saved back. Apply valid configuration updates atomically. - Verify TLS certificates by default and bind the local CLI and Compose host
ports to loopback. Keep results fetched without certificate verification
separate from verified cache entries. - Escape dashboard attributes and reject unsafe citation URL schemes.
- Update the image installer, remove unused bootstrap pip, apply available OS updates, and
remove unused native build dependencies. Keep application code and installed
dependencies owned by root while the service runs as an unprivileged user. - Enforce lint, formatting, typing, tests, dependency auditing, package builds,
and Python code scanning. Group routine dependency updates. - Validate release provenance from merged
main, matching versions, and a
container smoke test before image publication. Historical tags cannot move
the productionlatestimage backwards.
This release also includes the previously merged OpenRouter backend and locked
Docker build, which were not present in the last recorded published image.
Upgrade
- Inject
SCRAPER_ADMIN_TOKENif administration is needed. Browser sign-in uses
usernameadminand the token as password; APIs use Bearer authentication.
With no token, admin/dashboard routes are disabled with HTTP 503. - Keep MCP access restricted to trusted clients. The admin token does not
authenticate MCP requests. Use an authenticated gateway for remote clients. - Use HTTPS for remote administration. If a reverse proxy changes the scheme
or host, configure its exact public origin inSCRAPER_ADMIN_ALLOWED_ORIGINS. - Configure trusted CA certificates for private or intercepted TLS. Scraping
no longer silently accepts invalid certificates by default. - Expect a cold cache. The new
cache-v1.sqlite3never opens oldcache.dbor
pickle value files. Those old files remain untouched. Cache size metrics now
measure encoded keys and values, excluding SQLite overhead. - Update custom scripts that access the dashboard or
/api/*to authenticate
and sendContent-Type: application/jsonon mutations. When saving config,
omit unchanged secrets or retain their returned mask;""clears a value.
The supplied Compose files publish 127.0.0.1:8000:8000. A container still binds
internally to 0.0.0.0:8000. Explicitly configure a trusted interface if remote
connectivity is required.
Publication and rollback
Follow RELEASE.md. Publish v0.5.0 from merged main, verify
the multi-architecture image digest, and deploy by an immutable digest or version.
The preparation branch must not be tagged or published as production.
Retain the previously deployed image digest and configuration for rollback.
The prior image can read its original cache files because this upgrade does not
modify them. Rolling back also restores the older security behavior; use it only
as a temporary operational measure with network access restricted.
Publication and live verification
Publication workflow passed all quality checks and container smoke tests. Both Docker Hub and GHCR publish 0.5.0 for amd64 and arm64 with SBOMs and provenance.
Immutable digest: sha256:a49d0758342fc4649d5668ecd498958baa40641d28af161d30b4ac7c117c84b7.
The existing production service is healthy on that digest. Live agent-browser desktop/mobile, configuration, authentication, MCP, static/Chromium scraping, cache, and Sonar checks passed. A verified rollback container uses the previous image and preserved settings; legacy cache files remain intact. See the attached verification addendum for the correction to the initial container-retention record.
The attached verification record and complete architecture-specific image scans describe the residual findings. The wheel and source archive were built by the successful release workflow; checksum files are attached. OpenRouter account behavior was not live-tested without an injected credential.