v7.4.2
What's Changed
Server-only secrets stop leaking into the GUI apps the agent launches, the dependency lockfile is refreshed, and the package finally advertises itself as Production/Stable.
Security
- Server auth/VNC secrets scrubbed from launched app environments.
app_launchhanded every GUI child (firefox,mousepad, …) the full{**os.environ, ...}, soGHOSTDESK_AUTH_TOKEN(MCP bearer auth) andGHOSTDESK_VNC_PASSWORDwere inherited by processes that have no business seeing them — any code execution inside such a child (a malicious page, a rogue extension, a compromised binary) could read the server's credentials straight out of/proc/self/environand then authenticate to the MCP endpoint or the VNC console as the operator. A new_SCRUBBED_ENV_KEYSfrozenset is stripped by a_launch_env()helper before the child is spawned, while the extendedPATH(so Debian game basenames likegnome-chessstill resolve via/usr/games) is preserved untouched. The MCP server process itself keeps its environment intact — only spawned GUI children are scrubbed. Covered bytest_app_launch_scrubs_server_secrets_from_env.
Changed
- Package classifier
3 - Alpha→5 - Production/Stable. GhostDesk is deployed in production across multiple companies; the trove classifier inpyproject.tomlno longer reflected reality. - Locked dependencies refreshed via
uv lock --upgrade, within the existingpyprojectconstraints: cryptography47.0.0 → 48.0.1, starlette1.0.0 → 1.2.1, uvicorn0.46.0 → 0.49.0, typer0.25.1 → 0.26.7, mcp1.27.0 → 1.27.2, rpds-py0.30.0 → 2026.5.1(upstream switched to CalVer), pyjwt2.12.1 → 2.13.0, python-multipart0.0.27 → 0.0.32, plus minor bumps across certifi / click / coverage / idna / markdown-it-py / pydantic / pydantic-core / pydantic-settings / pytest-asyncio / sse-starlette. All transitive — GhostDesk imports none of them directly.pywaylandstays pinned>=0.4.18,<0.5by design (CFFI binding against the fixedzwlr_virtual_pointer_v1/zwp_virtual_keyboard_v1protocol versions). 228 tests pass.
New Contributors
- @sebastiondev made their first contribution in #18
Full Changelog: v7.4.1...v7.4.2