Skip to content

v2.17.0

Choose a tag to compare

@SanderMuller SanderMuller released this 03 Jul 23:32
· 21 commits to main since this release
Immutable release. Only release title and notes can be modified.

Added

  • A shipped eye-verify harness (frontend-quality/scripts/, emitted as boost-core 1.3
    companion assets). Three framework-agnostic tools so a project stops rebuilding the plumbing:
    • screenshot.mjs — navigate a running app, optionally crop to a --selector with ≥15px
      padding (clamped to the page), save a PNG.
    • console.mjs — record console errors/warnings, uncaught page errors, and failed requests;
      --text-pattern scans rendered text for a project-supplied leak regex (e.g. untranslated-key
      markers); --fail-on-error gates.
    • auth-capture.mjs — the portable auth seam: open a headed browser, log in by hand, save a
      Playwright storageState the other two reuse via --storage-state. Knows nothing about any
      login form, so it works for any app.
      Playwright is a project prerequisite (npm i -D playwright && npx playwright install chromium);
      each tool fails fast with that hint if it's absent. What stays per-app is only genuinely
      app-specific glue (programmatic SSO login, data seeding, domain drivers).
  • Catalog-consistency CI gate (.github/validate-catalog.php). The format validator never
    checked that the catalog's own tables agree with what ships; the new gate enforces README
    Skills/Guidelines tags vs each skill's metadata.boost-tags, skill/guideline inventory,
    the guideline tag sidecar, the documented tag vocabulary, boost:conv tokens vs real
    conventions-schema.json slots, and schema-required vs conv usage.
  • On-demand design-verification reference (frontend-quality/references/design-verification.md).
    The full per-element scoring rubric — attributes incl. shadow/elevation, line-height,
    letter-spacing, tap-area; the "undocumented difference is a finding, not a deviation" rule;
    image-sampling to the nearest project token when there's no token spec; and a ✓/✗ scoring table.

Changed

  • codex-review replaced the plugin path with a bounded native-CLI wrapper. The Codex
    plugin's companion awaited a turn/completed event with no timeout and hung on stale broker
    sessions. The skill now ships scripts/run-codex-review.mjs (a companion asset) that runs the
    bare codex CLI under a hard timeout — it cannot hang and cannot read a stale prior run's
    output. The wrapper adds an env-configurable timeout (CODEX_REVIEW_TIMEOUT_MS, floor 1000ms;
    --timeout-ms wins) and a no-flag target fallback that infers the review target from the repo's
    default branch. codex.invocation_mode is deprecated and ignored (retained in the schema so
    existing configs keep validating).
  • Eye-verify woven deeper. frontend-quality gained a "seed the off-by-default state before
    capturing" step and points at the shipped harness as the primary capture path; pull-requests
    documents private-repo image embedding (a committed PNG's ?raw=true blob URL renders inline
    for authenticated members; a browser drag-drop user-attachments URL is the no-file fallback;
    data: URIs are stripped by GitHub). The javascript guideline was slimmed to the always-on
    principle plus a pointer, so the detailed rubric lives on-demand rather than in every project's
    CLAUDE.md.

Fixed

  • README tag/inventory drift, surfaced by the new gate: pre-release now documents its
    release-automation tag (a consumer declaring only php+github would not have received it);
    jira-updates drops a github tag it never carried in frontmatter; and the shipped
    signed-commits guideline gets its missing row in the Guidelines inventory.

Internal

Repository-only; none ship to consumers (all under export-ignored paths or dev config):

  • CI composer install runs --no-scripts --no-plugins on the fork-exposed pull_request job.
  • Dependabot now watches the composer ecosystem, not just GitHub Actions.
  • stolt/skill-validator pinned exactly (0.0.1; the ^0.0.1 caret resolved to the same version).
  • Removed a dead .mcp.json pointing at a vendor/bin/testbench boost:mcp command this package
    does not provide.

The codex, eye-verify, and design-verification work was sourced from the upstream catalog and
production adoption feedback, then dogfooded through this repository's own evaluate and
codex-review flow before shipping.

Full Changelog: 2.16.1...2.17.0