Skip to content

GDD

v1.8.0 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

Published 9d MCP Developer Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-agent automation avalonia browser-testing chrome-devtools-protocol claude-code
+8 more
cross-platform .net linux macos mcp playwright webview2 wpf

Affected surfaces

auth rbac breaking_upgrade

ReleasePort's take

Light signal
editorial:auto 9d

GDD v1.8.0 introduces several new commands and flags while altering the behavior of `gdd_type`. Notably, `maxlength` enforcement now applies to typed inputs.

Why it matters: Severity 70 breaking changes affect `gdd_type`; maxlength is enforced for all inputs starting in this release.

Summary

AI summary

Updates Breaking, phone/card/date, and DEPLOY-RAILWAY.md across a mixed release.

Changes in this release

Breaking High

`gdd_type` no longer dispatches a manual `change` event; change now fires on blur.

`gdd_type` no longer dispatches a manual `change` event; change now fires on blur.

Source: llm_adapter@2026-07-17

Confidence: high

Breaking High

`maxlength` attribute is now enforced for `gdd_type` input.

`maxlength` attribute is now enforced for `gdd_type` input.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`gdd_type` now presses actual keys via CDP `Input.dispatchKeyEvent`.

`gdd_type` now presses actual keys via CDP `Input.dispatchKeyEvent`.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`gdd_press` tool added for single keys and shortcuts.

`gdd_press` tool added for single keys and shortcuts.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`gdd_set_headers` tool added for response header rewriting.

`gdd_set_headers` tool added for response header rewriting.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`--stealth-max` flag adds enhanced headless/datacenter evasions.

`--stealth-max` flag adds enhanced headless/datacenter evasions.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`--stealth` flag and `GDD_STEALTH` env variable now configurable at runtime.

`--stealth` flag and `GDD_STEALTH` env variable now configurable at runtime.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`GDD_PROXY`, `GDD_PROXY_USER`, and `GDD_PROXY_PASS` variables route all traffic through an upstream proxy.

`GDD_PROXY`, `GDD_PROXY_USER`, and `GDD_PROXY_PASS` variables route all traffic through an upstream proxy.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

`GDD_CHROME_CHANNEL` variable launches a real Chrome build when installed.

`GDD_CHROME_CHANNEL` variable launches a real Chrome build when installed.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Low

Railway deployment recipe (`Dockerfile.railway`) added for remote MCP server hosting.

Railway deployment recipe (`Dockerfile.railway`) added for remote MCP server hosting.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Low

Fixed `gdd_set_location` failure under `--stealth-max` when timezone already set.

Fixed `gdd_set_location` failure under `--stealth-max` when timezone already set.

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

CDP events outside the built‑in list now fire on Playwright engines.

CDP events outside the built‑in list now fire on Playwright engines.

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Bugfix Low

`ICdpEventSubscription.Dispose()` now properly detaches handlers on Playwright engines.

`ICdpEventSubscription.Dispose()` now properly detaches handlers on Playwright engines.

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Full changelog

Added

  • Real keyboard input — gdd_type now presses actual keys — typing goes through CDP Input.dispatchKeyEvent instead of the native value setter, so every character produces a trusted event (isTrusted: true) and the full keydown → keypress → beforeinput → input → keyup chain. Input masks (phone/card/date), autocomplete/combobox widgets (react-select, downshift, MUI) and maxlength now behave exactly as they do for a real user, and contenteditable editors (ProseMirror, Slate, Quill, TipTap) — which the old path silently never typed into — work. New options: humanize (per-key jitter), delay (fixed per-key ms), and paste (one-shot Input.insertText for bulk text or emoji). Clearing an already-empty field is now a no-op, so no spurious delete event fires
  • gdd_press — single key & keyboard shortcuts (39th tool) — press a named key (Enter, Tab, Escape, Backspace, Delete, ArrowUp/Down/Left/Right, Home, End, PageUp, PageDown, Insert, Space, F1F12) or a single character, optionally with modifiers (Control, Alt, Shift, Meta) and a repeat count. For submitting forms, triggering shortcuts (e.g. Ctrl+A), tab navigation and dismissing dialogs. Real trusted keystrokes on all three editions
  • gdd_set_headers — response header rewriting (38th tool)allow_framing=true strips X-Frame-Options and the CSP frame-ancestors directive, so a site that refuses to be embedded can be loaded in an iframe (the rest of its CSP is left alone). Also takes strip_response / set_response for arbitrary header edits, scoped by url_pattern. Only document responses are intercepted, so media and XHR are untouched; a failure lets the request through rather than leaving it hanging. Works on all three editions
  • --stealth-max / GDD_STEALTH_MAX — everything --stealth does plus the headless/datacenter evasions: coherent UA client-hints metadata over CDP (which also fixes the HeadlessChrome user-agent leaking from worker contexts), a plausible WebGL vendor/renderer instead of SwiftShader, realistic core/memory counts, non-empty media devices, WebRTC non-proxied-UDP blocking, and no --enable-automation switch. On a headless container this halved CreepJS's headless score (67% → 33%)
  • --stealth flag and GDD_STEALTH env — stealth was config-file-only before, which containers can't set
  • GDD_PROXY (+ GDD_PROXY_USER / GDD_PROXY_PASS) — route every player through an upstream proxy
  • GDD_CHROME_CHANNEL — launch a real Chrome build instead of bundled Chromium when one is installed
  • Railway deployment recipeDockerfile.railway runs GDD.Headless behind a Caddy bearer-token proxy so it can be hosted as a remote MCP server; see DEPLOY-RAILWAY.md

Breaking

  • gdd_type no longer dispatches a manual change event. The old path fired change inline right after input; real keystrokes let the browser fire change on blur, as it does for a human. Code that relied on change firing without the field losing focus must now move focus away (e.g. gdd_press(Tab) or focusing another element) to trigger it
  • maxlength is now enforced. Because typing presses real keys, a field with maxlength="5" accepts at most 5 characters — the old native-setter path bypassed the limit and could leave a longer string in the field. Tests that asserted on an over-length value were passing on state a real user could never produce and will now see the truncated value

Fixed

  • gdd_set_location failed under --stealth-max — the stealth context set a timezone of its own, and Chromium rejects a second timezone override with "already in effect", so matching a player's geo to a proxy exit silently errored
  • CDP events outside the built-in list never fired on the Playwright enginesSubscribeToCdpEvent only mapped six hand-picked names onto Playwright's own page events; everything else returned a subscription that stayed silent forever. Unmapped events now reach the real CDP session, so any domain is usable
  • ICdpEventSubscription.Dispose() did nothing on the Playwright engines — it now detaches the handler

Breaking Changes

  • `gdd_type` no longer dispatches a manual `change` event; change now fires on blur only.
  • `maxlength` attribute is enforced for fields typed with `gdd_type`.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track GDD

Get notified when new releases ship.

Sign up free

Related context

Earlier breaking changes

  • v1.7.1 Archive names changed; `gdd_update` cannot locate new files requiring manual download for upgrades from v1.6.0 or earlier.
  • v1.5.0 Changed the schema for user profiles to include new required fields.

Beta — feedback welcome: [email protected]