{
  "slug": "bw-dev",
  "name": "BW Dev",
  "version": "1.12.1",
  "download_url": "https://plugins.bowden.works/wp-content/uploads/plugin-updates/bw-dev-1.12.1.zip",
  "download_hash": "sha256:7926187f2d1e357fd97ad2bb20f356e49d698c13127f7a62a6b5636e46c3f3f1",
  "download_size": 445402,
  "requires": "6.0",
  "tested": "",
  "requires_php": "7.4",
  "last_updated": "2026-05-27",
  "homepage": "https://plugins.bowden.works/bw-dev/",
  "author": "Bowden Works",
  "description": "Bowden Works dev toolkit — admin columns, favicon, sticky elements, post-link blocks, YouTube embed, menu visibility, SVG uploads, admin notes, and Flywheel auto-update support in one actively-maintained plugin. Required for several site features. See Settings → BW Dev → About.",
  "changelog": "## [1.12.1] - 2026-05-27\n\n### Changed\n- **Image Optimizer preview: button-triggered instead of auto-on-change.** The Phase 3 \"live preview re-renders on every field change\" behavior worked fine on the dev site but turned out to be too slow on real client hosts (Imagick on Flywheel can take several seconds per render). Replaced with an explicit **Update preview** button so the user controls when processing happens. Button shows a spinner + \"Processing…\" label while the AJAX call is in flight, then \"Done in N.Ns\" with the elapsed time after success. Any change to a profile field marks the preview as **stale** — the After image gets a dashed yellow outline and a status message (\"settings changed — click Update preview\") so the user knows the preview isn't current. Initial render still fires once on page load (so the saved settings are visible without a click), and picking a new sample image still triggers an immediate render (since that's an explicit user action)."
}
