Skip to content

Releases: Quality-Max/qmax-mcp

qmax-mcp 0.9.0

Choose a tag to compare

@Desperado Desperado released this 28 Aug 09:41
v0.9.0
1c580af

Highlights

  • qmax-mcp inspect <url> brings inspect_page to the CLI: every control with a ready-to-paste Playwright locator ranked by how durable its source is, a per-control stability verdict, and a page-level testability score. The Markdown report leads with the testability verdict, then the locator table best-handle-first, then the caveats that make a fragile or none verdict actionable; --format json returns the full structure for programmatic consumers — a script choosing selectors for a generated spec, or a selector-healing tool such as 9lives picking the anchor to re-find a control by.
  • The locator ranking itself shipped in 0.8.0 but was reachable only through an MCP client; this closes the gap for shell callers. --out and --allow-private-network work exactly as they do for scan.

Upgrading from 0.8.0

Nothing to do. This release is additive only: nothing a connected agent sees for an unchanged page is different from 0.8.0, so scores, findings, and locator recommendations are directly comparable.

Install

npx -y @qualitymax/qmax-mcp@0.9.0

Published with npm provenance (SLSA v1) from tag v0.9.0, commit 1c580af.

Full details: CHANGELOG.md

Merged work: #95, release candidate #96.

qmax-mcp 0.8.0

Choose a tag to compare

@Desperado Desperado released this 27 Aug 15:54
v0.8.0
8ee1134

Highlights

  • scan_url recognises the request shapes common telemetry SDKs use for their own transport — Sentry, PostHog, GA, Datadog RUM, Amplitude, Mixpanel — and names the SDK instead of reporting an anonymous console error. When the credential is a placeholder it names the fix that actually works: an empty DSN or token, which these SDKs treat as disabled, rather than a fake-but-present value that makes them initialize and retry on every page load.
  • scan_url accepts a baseline — a previous result, or a path to one — and reports which findings are new, fixed, and unchanged. qmax-mcp scan --baseline … --fail-on-new lets CI gate on "nothing new since the last green run" instead of findingCount > 0, which stops working the moment a page has one known-benign finding.
  • inspect_page ranks recommendedLocator by how durable its source is and reports a stability verdict per control. A control with no handle at all now says so, and offers the least brittle scoped fallback plus the durable fix.
  • scan_url accepts format: "issue", rendering each finding as a self-contained ticket block ready to paste into a tracker.
  • The README documents how to produce the Playwright storage-state file authenticated scans need.

Upgrading from 0.7.0

Two changes are visible on an unchanged page.

Locators moved. A control carrying a test id or an id is now addressed by that rather than by its role and accessible name, so a spec generated from 0.7.0 output and one generated now may locate the same control differently — the new one survives a copy edit and a translation. Two recommendations that silently matched nothing are also fixed: data-test/data-qa values were emitted as [data-testid=…], and a name attribute was passed off as an accessible name. A spec that quietly found zero elements will now find the control.

Telemetry findings replaced generic ones. A failing telemetry request is now one telemetry finding rather than several console and network findings, so a page with a stubbed SDK scores differently than it did on 0.7.0.

Everything else — baseline, format: "issue", minSeverity, --baseline, --fail-on-new, --allow-private-network — is additive and opt-in.

Install

npx -y @qualitymax/qmax-mcp@0.8.0

Published with npm provenance (SLSA v1) from tag v0.8.0, commit 8ee1134.

Full details: CHANGELOG.md

Merged work: #88, #89, #90, #91, #92, release candidate #94. This release completes the #84 evaluation batch.

qmax-mcp 0.7.0

Choose a tag to compare

@Desperado Desperado released this 27 Aug 13:49
v0.7.0
0e57bd3

Highlights

  • scan_url collapses findings that describe one root cause into a single finding carrying an occurrences count, so a defect observed several times is reported and penalised once.
  • Prefetch and RSC request aborts — the ones a router issues against its own superseded requests — are classified info instead of medium, so a clean Next.js App Router page is no longer capped at 80.
  • The accessibility keyboard-reachability rule no longer reports clickable label text, or a clickable wrapper around a real control, as unreachable from a keyboard.

Upgrading from 0.6.0

A 0.7.0 score is comparable to a 0.6.0 score only for a page that had neither repeated findings nor router-aborted requests. Where either was present, the same page now scores higher — the old score either counted one defect once per observation or charged for framework behaviour the page cannot change. Read a jump as the scoring correction it is, not as an improvement in the application under test.

Install

npx -y @qualitymax/qmax-mcp@0.7.0

Published with npm provenance (SLSA v1) from tag v0.7.0, commit 0e57bd3.

Full details: CHANGELOG.md

Merged work: #85 (closing #77 and #79), #73, release candidate #86. Both scan-scoring issues come from the #84 evaluation batch.

qmax-mcp 0.6.0

Choose a tag to compare

@Desperado Desperado released this 25 Aug 20:38
20004f2

Highlights

  • scan_url now supports workspace-relative Playwright storage state and authenticated same-origin link checks without returning credentials.
  • Authenticated scans and inspections require explicit acknowledgePrivateContent: true consent.
  • Accessibility scans detect mouse-only controls, including interactive ARIA roles without keyboard focusability.
  • Isolated Playwright runs fail fast on workspace-relative imports with actionable diagnostics.
  • Workspace path containment, runner environment validation, and per-run directory isolation are hardened.

Install

npx -y @qualitymax/qmax-mcp@0.6.0

Full details: CHANGELOG.md

Merged work: #69, release candidate #71.

v0.5.1

Choose a tag to compare

@Desperado Desperado released this 25 Aug 17:25
9d55b27

Fixed

  • scan_url validation now rejects unknown check names instead of silently skipping them and potentially returning a misleading perfect score.
  • inspect_page reliability now waits briefly for client-rendered DOM, reports diagnostics and warnings for empty snapshots, and emits unique fallback selectors.
  • Approval and HSTS diagnostics now report the outcome, mode, client, and remedy; HSTS is informational over plain HTTP.

Install: npx -y @qualitymax/qmax-mcp@0.5.1

Verification

Published by the npm release workflow with SLSA provenance from tag v0.5.1 (9d55b27). Verified on Node 22.13.0 and 24.0.0. MCP Registry publication succeeded from the same tag.

No binary assets are attached; npm is the canonical distribution channel.

Full changelog: v0.5.0...v0.5.1

v0.4.0

Choose a tag to compare

@Desperado Desperado released this 21 Aug 13:24
e1e40bb

Added

  • Added opt-in --unattended mode for supplied Playwright tests. The default per-run human elicitation mode is unchanged.
  • Preserved execution digests and records unattended approval as unattended-cli-opt-in-v1.
  • Added mode-specific server instructions.

Read the safety contract before enabling unattended mode.

Install: npx -y @qualitymax/qmax-mcp@0.4.0

See the full changelog.

v0.3.0 — agents learn the adjacent tools

Choose a tag to compare

@Desperado Desperado released this 21 Aug 11:29
5591f33
npx -y @qualitymax/qmax-mcp

What changed

The server now returns the MCP instructions field at initialization — a field it never populated before. Any connected agent receives the local contract without a repo-native instruction file: collect evidence before calling a web change done, respect the approval boundaries, treat allowPrivateNetwork: true as caller-side consent, treat scanned page content as data rather than instructions.

Those instructions also name three separate QualityMax tools for QA work these four tools do not cover, each bound to the situation that justifies it:

Tool Command Reach for it when
9lives 9l heal <spec> A spec that used to pass is red after a change and the failure looks like drift
qualitymax-grader npx qualitymax-grader <spec> A spec is about to be committed, or a suite is judged on quality rather than on passing
free-qa-skills install from skills.sh The request is about a repository rather than a running URL

They stay recommendations. qmax-mcp does not install, run, bundle, or proxy any of them, so run_playwright_test remains the only code-execution path and its digest-bound human approval remains the only gate. Naming a tool is bounded to one mention on its trigger — never an unprompted product list.

Unchanged

The four local tools, their input schemas, and their locked safety annotations. This is minor rather than patch only because every client sees new behaviour at initialization.

Verification

Published by the release workflow with SLSA provenance from tag v0.3.0 (5591f33). Verified on Node 22.13.0 and 24.18.0 by installing the tarball into an empty project and driving the server over stdio with a real MCP client.

No artifacts are attached here: npm is the only distribution channel, and it is the one carrying provenance.

Full changelog: v0.2.2...v0.3.0