> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clickwheel.fm/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> clickwheel release history.

Releases are produced automatically by
[release-please](https://github.com/googleapis/release-please) from
[Conventional Commits](https://www.conventionalcommits.org/). Full notes also
live on [GitHub Releases](https://github.com/pdugan20/clickwheel/releases).

<Update label="0.19.1" description="2026-07-28">
  ### Bug Fixes

  * **ci:** derive release PR SHA from GitHub ([#133](https://github.com/pdugan20/clickwheel/issues/133)) ([580ed98](https://github.com/pdugan20/clickwheel/commit/580ed98d10e32130b4c134a3b4864405c4eb661f))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.19.0...v0.19.1)
</Update>

<Update label="0.19.0" description="2026-07-28">
  ### Features

  * **mcp:** migrate to protocol 2026-07-28 ([#130](https://github.com/pdugan20/clickwheel/issues/130)) ([2a98863](https://github.com/pdugan20/clickwheel/commit/2a98863108ce852d1f7a21eda197970eec104f31))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.18.3...v0.19.0)
</Update>

<Update label="0.18.3" description="2026-07-21">
  ### Documentation

  * sync the generated changelog page to 0.18.2 ([#86](https://github.com/pdugan20/clickwheel/issues/86)) ([bd9ace9](https://github.com/pdugan20/clickwheel/commit/bd9ace9eb111054f508ff8d217343ffebad35f8a))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.18.2...v0.18.3)
</Update>

<Update label="0.18.2" description="2026-07-02">
  ### Bug Fixes

  * **web:** mobile MCP card polish (hide derivable total, tighten wrapped subtext gap) ([#85](https://github.com/pdugan20/clickwheel/issues/85)) ([e592ba8](https://github.com/pdugan20/clickwheel/commit/e592ba87b4b30e1549ed47172e468dac7eff5850))

  ### Documentation

  * sync the generated changelog page to 0.18.1 ([#83](https://github.com/pdugan20/clickwheel/issues/83)) ([19475c1](https://github.com/pdugan20/clickwheel/commit/19475c11121153cad40bd074114ed5f9f593d38c))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.18.1...v0.18.2)
</Update>

<Update label="0.18.1" description="2026-07-02">
  ### Bug Fixes

  * **apex-worker:** serve CW wordmark favicon instead of iPod mark ([#79](https://github.com/pdugan20/clickwheel/issues/79)) ([2d756e3](https://github.com/pdugan20/clickwheel/commit/2d756e39a344e221d80be1083a5279a37ee958a7))
  * **web:** drop card radius + border on iOS so Claude doesn't clip the corners ([#82](https://github.com/pdugan20/clickwheel/issues/82)) ([196f3e8](https://github.com/pdugan20/clickwheel/commit/196f3e8bfdca27decb0965bd15547f653c2c1d86))

  ### Documentation

  * sync the generated changelog page to 0.18.0 ([#76](https://github.com/pdugan20/clickwheel/issues/76)) ([fec60e5](https://github.com/pdugan20/clickwheel/commit/fec60e514d6d3f5c20d89ab9b29fb8182a9a3818))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.18.0...v0.18.1)
</Update>

<Update label="0.18.0" description="2026-06-15">
  ### Features

  * add clickwheel convert (FLAC→MP3 for iPod) ([#75](https://github.com/pdugan20/clickwheel/issues/75)) ([fae92d0](https://github.com/pdugan20/clickwheel/commit/fae92d0fceac891342e52c2485e2d395aa3f55a5))
  * apex worker so Google caches the correct favicon (fixes black square) ([#74](https://github.com/pdugan20/clickwheel/issues/74)) ([b04bd6f](https://github.com/pdugan20/clickwheel/commit/b04bd6fc038ab4a7aeea034352b41867db11c721))

  ### Documentation

  * add gear icon to configuration page ([8c89cfa](https://github.com/pdugan20/clickwheel/commit/8c89cfaa6d4a6c84d999ed1684759b011672c654))
  * convert Apple Music and Plex command lists to tables ([e8572ee](https://github.com/pdugan20/clickwheel/commit/e8572eed73d79608ec5917878a1b0627252d26d9))
  * **mcp:** mark apex redirect + favicon-app cleanup done in tracker ([#72](https://github.com/pdugan20/clickwheel/issues/72)) ([070ef15](https://github.com/pdugan20/clickwheel/commit/070ef156a65a403be9a08e9ea4597e7b14450432))
  * **mcp:** mark connector re-auth on mcp.clickwheel.fm complete ([#72](https://github.com/pdugan20/clickwheel/issues/72)) ([8cc01ef](https://github.com/pdugan20/clickwheel/commit/8cc01efce7a3ce3754807d79c36a675e1fc34cd6))
  * **mcp:** move remote-MCP deploy docs to mcp.clickwheel.fm + apex redirect ([473fd79](https://github.com/pdugan20/clickwheel/commit/473fd79dd0eeaaa309eb89366563905a04da5cb6))
  * split Reference into top-level CLI and MCP tabs ([#68](https://github.com/pdugan20/clickwheel/issues/68)) ([ba60739](https://github.com/pdugan20/clickwheel/commit/ba607393d94359587a3e3921a275ab49b261145d))
  * sync the generated changelog page to 0.17.0 ([#65](https://github.com/pdugan20/clickwheel/issues/65)) ([f100bdd](https://github.com/pdugan20/clickwheel/commit/f100bdd7eb79d82195857fe929ced2fe4ecd54e3))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.17.0...v0.18.0)
</Update>

<Update label="0.17.0" description="2026-06-01">
  ### Features

  * auto-remount a dropped library share instead of hanging ([#61](https://github.com/pdugan20/clickwheel/issues/61)) ([9ed6916](https://github.com/pdugan20/clickwheel/commit/9ed6916ae848216de68f024b60e05e236e519151))
  * complete the mypy ratchet — full type coverage, zero exemptions ([#60](https://github.com/pdugan20/clickwheel/issues/60)) ([d5e8c86](https://github.com/pdugan20/clickwheel/commit/d5e8c8697d6a8023a54524d882a17350c7b3a8ea))
  * **playlist:** track-level add/remove for saved playlists ([31052be](https://github.com/pdugan20/clickwheel/commit/31052be1c0ee2226fe203af73d18bc04ea313666))
  * **playlist:** track-level add/remove for saved playlists ([f530e4a](https://github.com/pdugan20/clickwheel/commit/f530e4aab29c3bcfee8c4a7c259215240324bf70)), closes [#63](https://github.com/pdugan20/clickwheel/issues/63)

  ### Documentation

  * add sidebar icons, fix the logo flash, surface quickstart steps in the TOC ([143b635](https://github.com/pdugan20/clickwheel/commit/143b63579a65ba29184028938f05c5a60ad5f5b8))
  * **apple-music:** collapse 'From Claude' to a one-line cross-link ([ecb0a37](https://github.com/pdugan20/clickwheel/commit/ecb0a372c8d7a344d67a6afa9d6d64bc73041f78))
  * **architecture:** add autoscan.py to the module table ([c63e3b8](https://github.com/pdugan20/clickwheel/commit/c63e3b84dac519309eb84b95b029a9a220d98333))
  * deepen guides, add troubleshooting + requirements, automate changelog ([94b7c1b](https://github.com/pdugan20/clickwheel/commit/94b7c1b743fc8da9ddc71c3d00ffadbea26749b1))
  * **design:** shorten section headings, merge read-only principles, short sidebar title ([b9655ca](https://github.com/pdugan20/clickwheel/commit/b9655cabb18049e4218e629607badd935237d5a6))
  * drop drift-prone perf figures and hardcoded tool counts ([9e3b184](https://github.com/pdugan20/clickwheel/commit/9e3b1844deffd54b43ddaa7ad499b5c783513737))
  * **fix-metadata:** surface the Last.fm key prereq, fix the target arg, trim jargon ([b315435](https://github.com/pdugan20/clickwheel/commit/b3154351de1c98976e896febbc0424e5863612ee))
  * genericize remaining clickwheel.fm examples to mcp.example.com ([142ce06](https://github.com/pdugan20/clickwheel/commit/142ce064754745f8154a393428f957499e3e5977))
  * **integrations:** point 'From Claude' at the per-domain MCP tool reference ([bc3d856](https://github.com/pdugan20/clickwheel/commit/bc3d85632014e505721754a2f70571a28af7f716))
  * keep the changelog icon in gen-changelog so regeneration matches ([083088d](https://github.com/pdugan20/clickwheel/commit/083088d92d5a786a56e4147445e6e312be823a55))
  * **mcp-server:** fold gating reassurance into the behavior bullet, drop the orphaned snippet ([7fdf2bb](https://github.com/pdugan20/clickwheel/commit/7fdf2bbc113741bfb7b269d986978e7ec44cfc6d))
  * **mcp:** record the Managed-OAuth connector fix; mark remote access working ([#56](https://github.com/pdugan20/clickwheel/issues/56)) ([07bfcd7](https://github.com/pdugan20/clickwheel/commit/07bfcd77544dfea2214301ce8fe3b62e413066a8))
  * **og:** light social card on a subtle light-gray background ([8874034](https://github.com/pdugan20/clickwheel/commit/88740341938732f79045bf83a5dfc64e69dc0500))
  * **playbook:** capture the content/polish pass conventions, process, and Mintlify gotchas ([ad60938](https://github.com/pdugan20/clickwheel/commit/ad60938c5d0222f2e1790961149f28499b73b7e2))
  * **playlists:** align commands, shorten the track path, rework two-concepts ([61fc7e4](https://github.com/pdugan20/clickwheel/commit/61fc7e4577de4bc1565eb8d1e5286a4943b79cc5))
  * **plex:** inline the token env var, trim the token tip and push/pull prose ([2942d0e](https://github.com/pdugan20/clickwheel/commit/2942d0ef68ddc2776a863b53df41548b4ceb55f4))
  * **project:** correct docs-site status — holding on Mintlify, not pivoted ([#58](https://github.com/pdugan20/clickwheel/issues/58)) ([6a63635](https://github.com/pdugan20/clickwheel/commit/6a63635805e75bd75a52e50cb851642c84ce72c4))
  * **project:** mark feedback, examples, snippets, mermaid adopted in playbook ([246a292](https://github.com/pdugan20/clickwheel/commit/246a2929aa8e07570573c538ccf6201c369ad163))
  * pull the generic diagrams; park polished versions in DEFERRED ([cb9bb3f](https://github.com/pdugan20/clickwheel/commit/cb9bb3f7c493f9fe592c5102980ef814a92e0487))
  * **quickstart:** drop the eject Warning box (command still in the step) ([0cd0f38](https://github.com/pdugan20/clickwheel/commit/0cd0f382fa51e138f4ef78f029b2040f7d1fde2d))
  * **quickstart:** link the package name to PyPI on the install step ([005d71c](https://github.com/pdugan20/clickwheel/commit/005d71cdfa5f7406621f18038cfa3d1f09a72415))
  * **quickstart:** tighten the install path and trim chrome ([b03ad6d](https://github.com/pdugan20/clickwheel/commit/b03ad6d0da39ecaec2e17bffe2dd8a2fb43bfa06))
  * **readme:** point to the docs site, add docs badge, retire duplicated guides ([417fb3b](https://github.com/pdugan20/clickwheel/commit/417fb3b35e6402c8d5aaaf9bc51c0222430ec49b))
  * **reference:** add curated Examples to CLI commands ([703d8e8](https://github.com/pdugan20/clickwheel/commit/703d8e8a605d4d3da351995611b038d4267ddc61))
  * **reference:** align overview cards; pointer once per overview ([cbd9031](https://github.com/pdugan20/clickwheel/commit/cbd903173973b2a7144fd57b7579e5a98bdc284c))
  * **reference:** group CLI by service, recurse sub-apps, add synopses ([3d3e636](https://github.com/pdugan20/clickwheel/commit/3d3e6363a246269edff08a278739815346756855))
  * **reference:** MCP prompt examples, gating snippet, mermaid architecture ([50412c4](https://github.com/pdugan20/clickwheel/commit/50412c460a3207d1e16ad11c410690d89757dcb1))
  * **reference:** rebuild Configuration page ([b78d85b](https://github.com/pdugan20/clickwheel/commit/b78d85bac096918db57b28f3b3d85d65a13a74e9))
  * **reference:** render params as ParamField; strip em dashes from descriptions ([2c163d6](https://github.com/pdugan20/clickwheel/commit/2c163d61df8324c2fc995aade91b9425d23b7a87))
  * **reference:** split CLI reference into per-group pages ([1b2b430](https://github.com/pdugan20/clickwheel/commit/1b2b4303de6d25d0379e730b787922b4ead1f942))
  * **reference:** split MCP tools into per-domain pages ([7e0979a](https://github.com/pdugan20/clickwheel/commit/7e0979a687bb2c3319fb85bc2d81039a8df8a7cb))
  * **reference:** trim verbose CLI/MCP descriptions; refresh sample data ([fe94ef7](https://github.com/pdugan20/clickwheel/commit/fe94ef75a37a9ba5f3e72a55ed30d15111de0bf6))
  * reframe the Welcome page around the iPod ([4524221](https://github.com/pdugan20/clickwheel/commit/4524221dea816ceb408713fbaecf662092881f2d))
  * regroup the Guides nav by topic ([4c33fca](https://github.com/pdugan20/clickwheel/commit/4c33fca9dd388dd997159bbc9abab8ec9ddb425d))
  * **remote-mcp:** genericize the example domain to mcp.example.com ([6ace806](https://github.com/pdugan20/clickwheel/commit/6ace8068c87afeaedd5645ae4b44ae536262d53e))
  * rename remote-mcp 'Setup (summary)' to 'Setup'; clean up the deploy runbook ([6490f2e](https://github.com/pdugan20/clickwheel/commit/6490f2e3cb4fa8eb6441dd7456fc2b03fa75594c))
  * **requirements:** drop the Classic year, unbold Skipped, trim the Note and mount/capacity lines ([87b749a](https://github.com/pdugan20/clickwheel/commit/87b749ae6e665dc01f5d40bc8061f8515c50858b))
  * **requirements:** list supported iPods, trim, and shed non-requirements ([1d3ac38](https://github.com/pdugan20/clickwheel/commit/1d3ac38d8565921d0608f261dc0c083d2ec9d352))
  * **requirements:** make Optional integrations a what-it-needs table ([2b74de5](https://github.com/pdugan20/clickwheel/commit/2b74de5d5ba5ab382a18ad9cedcf393f2f8028d4))
  * **scrobbling:** tighten the lead, demote the shared-key note, collapse 'From Claude' ([dd45dd0](https://github.com/pdugan20/clickwheel/commit/dd45dd06abb4a2db40de3d8d553c055ed3a4e082))
  * **scrobbling:** use a blue Note for the re-sync caution (Warning reserved for irreversible) ([5e78949](https://github.com/pdugan20/clickwheel/commit/5e7894965693ef68b1d740cc37d9a87d8fd017a9))
  * **site:** enable contextual menu + feedback thumbs; track feature checklist ([bbfb75c](https://github.com/pdugan20/clickwheel/commit/bbfb75cfc39c1c0186bfcbdf2af6a0b804860279))
  * **site:** maple theme, branded logo + favicon, iPod accent, copy polish ([2f7a485](https://github.com/pdugan20/clickwheel/commit/2f7a485a695235c1b58026a9d4cb85e75dea8382))
  * **sync-to-ipod:** rewrite the lead and retire the Notes section ([b4a2dc9](https://github.com/pdugan20/clickwheel/commit/b4a2dc9da280e933c04f6ada6731ab0ba6da4b21))
  * title config and .env code blocks with their filenames ([153cefb](https://github.com/pdugan20/clickwheel/commit/153cefb697ceab61d039be887ad6d361a2166361))
  * **troubleshooting:** add an Integrations bucket pointing at the doctors ([02b0f01](https://github.com/pdugan20/clickwheel/commit/02b0f0107de1fd3fd51d21310e0eb0b5a1b1a70c))
  * **welcome:** add an iPod hero image with rounded corners ([06e02d6](https://github.com/pdugan20/clickwheel/commit/06e02d6800856f07a1ef429ab5d9c891ca5bb43c))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.16.0...v0.17.0)
</Update>

<Update label="0.16.0" description="2026-05-30">
  ### Features

  * **mcp:** remote access — streamable-http transport + favicon + runbook ([#48](https://github.com/pdugan20/clickwheel/issues/48)) ([489cb4f](https://github.com/pdugan20/clickwheel/commit/489cb4fbdd2fde89c37ac668580245bae920e8b7))

  ### Documentation

  * add mintlify docs site with generated, drift-checked reference ([#52](https://github.com/pdugan20/clickwheel/issues/52)) ([ddc5981](https://github.com/pdugan20/clickwheel/commit/ddc59815a2ea569714c23859baf2ea3af6cafa94))
  * bring trackers current after merging [#48](https://github.com/pdugan20/clickwheel/issues/48) + [#52](https://github.com/pdugan20/clickwheel/issues/52) ([#54](https://github.com/pdugan20/clickwheel/issues/54)) ([8ef174a](https://github.com/pdugan20/clickwheel/commit/8ef174a3c348eca0e27bdc6dff97efc7b0f7af48))
  * **project:** pause docs-site; record Mintlify→Starlight pivot ([#55](https://github.com/pdugan20/clickwheel/issues/55)) ([2ed4ef9](https://github.com/pdugan20/clickwheel/commit/2ed4ef9c66b8ceaf3166f35cc344c02fe3f7a3fa))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.15.1...v0.16.0)
</Update>

<Update label="0.15.1" description="2026-05-29">
  ### Bug Fixes

  * **fix:** escape LIKE wildcards in path prefix; tighten exception catches ([29e66be](https://github.com/pdugan20/clickwheel/commit/29e66be41b9a00d20d7949eb603b9c9c9cd3c5e1))
  * **fix:** skip writes for files that vanished between scan and write ([1d4a54c](https://github.com/pdugan20/clickwheel/commit/1d4a54ceb36b21a842042e691986ffcf04eb8df6))

  ### Documentation

  * reflect the native fix pipeline + metadata caches ([5810c5e](https://github.com/pdugan20/clickwheel/commit/5810c5e76f8b9461e1d257ff4a4135bd0de17d18))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.15.0...v0.15.1)
</Update>

<Update label="0.15.0" description="2026-05-22">
  ### Features

  * **scan:** summarise what each scan changed ([#45](https://github.com/pdugan20/clickwheel/issues/45)) ([274e037](https://github.com/pdugan20/clickwheel/commit/274e03706bb267939f145f4f2e2fb2809a041c65))

  ### Bug Fixes

  * **artwork:** retry transient MusicBrainz/Cover Art Archive failures ([#46](https://github.com/pdugan20/clickwheel/issues/46)) ([6168b71](https://github.com/pdugan20/clickwheel/commit/6168b711e59f6b18ca96414c118b58667e776a33))
  * **beets:** resolve `beet` next to the interpreter, not via PATH ([#44](https://github.com/pdugan20/clickwheel/issues/44)) ([f93baa2](https://github.com/pdugan20/clickwheel/commit/f93baa2e194db21bcb997260024a67ded91ff6dc))

  ### Documentation

  * slim README commands table; trust the per-integration docs ([#40](https://github.com/pdugan20/clickwheel/issues/40)) ([0f816e3](https://github.com/pdugan20/clickwheel/commit/0f816e3d046749ff783c65b3217e923fb16900ef))
  * stop enumerating tool names inline in README + MCP docs ([#43](https://github.com/pdugan20/clickwheel/issues/43)) ([6499161](https://github.com/pdugan20/clickwheel/commit/6499161da43570f546d0fbc68be2eff3ff04121e))
  * tighten integration docs and even out the README commands table ([#42](https://github.com/pdugan20/clickwheel/issues/42)) ([07c8df8](https://github.com/pdugan20/clickwheel/commit/07c8df803801536d9d9e92a81ebdb5b1956bd333))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.14.1...v0.15.0)
</Update>

<Update label="0.14.1" description="2026-05-21">
  ### Bug Fixes

  * **applemusic:** leave track\_count unknown in apple list view ([#38](https://github.com/pdugan20/clickwheel/issues/38)) ([be61289](https://github.com/pdugan20/clickwheel/commit/be612896028e846b2d8397439ccce06e9f39e4b8))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.14.0...v0.14.1)
</Update>

<Update label="0.14.0" description="2026-05-21">
  ### Features

  * **applemusic:** clickwheel apple delete via AppleScript ([#36](https://github.com/pdugan20/clickwheel/issues/36)) ([9114f78](https://github.com/pdugan20/clickwheel/commit/9114f78560418b8775a679bace5cb982cb867929))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.13.0...v0.14.0)
</Update>

<Update label="0.13.0" description="2026-05-21">
  ### Features

  * **applemusic:** pull + list playlists from Apple Music ([#34](https://github.com/pdugan20/clickwheel/issues/34)) ([27cf0ff](https://github.com/pdugan20/clickwheel/commit/27cf0ff63b78021f74f3706be068985992ecf4b9))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.12.0...v0.13.0)
</Update>

<Update label="0.12.0" description="2026-05-21">
  ### Features

  * **applemusic:** match + push playlists to Apple Music account ([#32](https://github.com/pdugan20/clickwheel/issues/32)) ([da34621](https://github.com/pdugan20/clickwheel/commit/da346215aa20bc807c50862b0f4077c326e8668d))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.11.0...v0.12.0)
</Update>

<Update label="0.11.0" description="2026-05-21">
  ### Features

  * **applemusic:** add auth + doctor for Apple Music API ([#29](https://github.com/pdugan20/clickwheel/issues/29)) ([2ef84d4](https://github.com/pdugan20/clickwheel/commit/2ef84d4fd0629fd3a56425bf11b54304c0e8bd62))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.10.0...v0.11.0)
</Update>

<Update label="0.10.0" description="2026-05-20">
  ### Features

  * **plex:** add playlist pull command for read-back recovery ([#27](https://github.com/pdugan20/clickwheel/issues/27)) ([e6fed7b](https://github.com/pdugan20/clickwheel/commit/e6fed7b64a3211cdb35fd0f6bf2a80977f9114e1))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.9.0...v0.10.0)
</Update>

<Update label="0.9.0" description="2026-05-19">
  ### Features

  * **fix:** fetch album art and release years from musicbrainz ([#25](https://github.com/pdugan20/clickwheel/issues/25)) ([2fb694a](https://github.com/pdugan20/clickwheel/commit/2fb694a72ead1fbfaec65d726def6c669d03d992))

  ### Bug Fixes

  * **cli:** keep beets metadata cleanup scoped to its target ([#23](https://github.com/pdugan20/clickwheel/issues/23)) ([597b4fe](https://github.com/pdugan20/clickwheel/commit/597b4fe371f7e64408e07c8b14513270b3d6308c))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.8.0...v0.9.0)
</Update>

<Update label="0.8.0" description="2026-05-16">
  ### Features

  * **playlist:** add playlist descriptions, synced to Plex ([#20](https://github.com/pdugan20/clickwheel/issues/20)) ([687c07b](https://github.com/pdugan20/clickwheel/commit/687c07b129b3929ef9d306ad50d5d9bbeb6872b0))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.7.0...v0.8.0)
</Update>

<Update label="0.7.0" description="2026-05-15">
  ### Features

  * **mcp:** add tool titles, server icon, and resource display titles ([#18](https://github.com/pdugan20/clickwheel/issues/18)) ([d9d53bd](https://github.com/pdugan20/clickwheel/commit/d9d53bd1edfc60f146e3336929cd9ca9e5fc6555))
  * **mcp:** emit output schemas for all tools via typed return models ([#19](https://github.com/pdugan20/clickwheel/issues/19)) ([16898f4](https://github.com/pdugan20/clickwheel/commit/16898f42cd85b31f55dc316e4ce209a762fc81be))
  * **plex:** add optional plex playlist sync ([#12](https://github.com/pdugan20/clickwheel/issues/12)) ([d8afd75](https://github.com/pdugan20/clickwheel/commit/d8afd75ea6dd4334a9cc7007cc75b6685b635fd0))
  * **plex:** mcp tools, doctor command, and docs ([#13](https://github.com/pdugan20/clickwheel/issues/13)) ([b7a9094](https://github.com/pdugan20/clickwheel/commit/b7a90946da822e7237e09954925bbaa5bbb4d749))

  ### Documentation

  * **plex:** drop design-rationale section ([#16](https://github.com/pdugan20/clickwheel/issues/16)) ([3d70d8d](https://github.com/pdugan20/clickwheel/commit/3d70d8d4d51600b9e3fbfa63107df252890044c6))
  * trim readme integrations, extract docs/lastfm.md ([#15](https://github.com/pdugan20/clickwheel/issues/15)) ([1277ffb](https://github.com/pdugan20/clickwheel/commit/1277ffba5e8d53128f25e2715e51be9b008f42d6))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.6.1...v0.7.0)
</Update>

<Update label="0.6.1" description="2026-05-12">
  ### Documentation

  * **mcp:** drop test plans, split bundles deep-dive into bundles.md ([51a1174](https://github.com/pdugan20/clickwheel/commit/51a117488fd631818872b6d629559beef42fa633))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.6.0...v0.6.1)
</Update>

<Update label="0.6.0" description="2026-05-12">
  ### Features

  * **mcp:** add\_tracks\_to\_ipod / add\_artist\_to\_ipod (no playlist required) ([13c37c6](https://github.com/pdugan20/clickwheel/commit/13c37c685277c8568a7a938d2c05c6dd473e1410))
  * **mcp:** compute sync-result detail subtitle server-side ([0413361](https://github.com/pdugan20/clickwheel/commit/0413361749ffc6efaa2a4e7887bcf10c716fc3d1))
  * **mcp:** library\_health bundle (status grid) ([d2b24d5](https://github.com/pdugan20/clickwheel/commit/d2b24d50005b784e73600928821d173b358b573a))
  * **mcp:** library\_stats bundle (overview dashboard) ([5bb5548](https://github.com/pdugan20/clickwheel/commit/5bb5548fcd56f9a1f22da3f73b8fe2224a6e662e))
  * **mcp:** live progress notifications for sync\_playlist\_to\_ipod ([a9c3b53](https://github.com/pdugan20/clickwheel/commit/a9c3b531826cc0512dc4a4e713c27e56e9caa602))
  * **mcp:** live progress polling in the sync-result iframe ([bd0638f](https://github.com/pdugan20/clickwheel/commit/bd0638f669b0bd927a55fb75d8ef342a12031df0))
  * **mcp:** mcp apps ui bundles with react + vite workbench ([afb3506](https://github.com/pdugan20/clickwheel/commit/afb350695519e4fe6f46975fcee7252bec80b4fe))
  * **mcp:** primary-artist rollup, host theme tokens, click-to-message ([770a08c](https://github.com/pdugan20/clickwheel/commit/770a08cb6cef84fb066c13b767d041cd2d7e95b3))
  * **mcp:** remove\_tracks / remove\_artist / remove\_ipod\_playlist (phase 4) ([2a37a4c](https://github.com/pdugan20/clickwheel/commit/2a37a4cd1f8605ca8331d75c65b74670cdf6120e))
  * **mcp:** sync creates the ipod playlist + new list\_ipod\_playlists tool ([a3575c7](https://github.com/pdugan20/clickwheel/commit/a3575c7c8fb4a8685e96ecb9e5c5058e30138ca7))
  * **mcp:** sync-result summary card iframe + preload experiment ([85e3e10](https://github.com/pdugan20/clickwheel/commit/85e3e10d76a6d19477bf10e057be887a6d115a32))
  * **web,mcp:** rewind card chrome + route artist-browse away from search\_tracks ([abe69f2](https://github.com/pdugan20/clickwheel/commit/abe69f254e0405216f96a503ce288163acc88e6b))
  * **web:** align ipod-capacity to library-stats header + tooltip pattern ([43bf893](https://github.com/pdugan20/clickwheel/commit/43bf8937b8e4b2a761f8c3e171722d7416f3d982))
  * **web:** balanced-5 categorical palette + workbench showcase ([a4a5c55](https://github.com/pdugan20/clickwheel/commit/a4a5c558364a6f81bdff1bd79b64ab0e01596e24))
  * **web:** finder-style library-stats + floating-ui tooltips ([21e02a7](https://github.com/pdugan20/clickwheel/commit/21e02a797af3496914ec05dfda8f4deaab974169))
  * **web:** static detail subtitle, inline status text, drop library-health + stats-showcase ([f8df644](https://github.com/pdugan20/clickwheel/commit/f8df644f39066afd1be896c1baeb24f7ad6e4846))
  * **web:** unified header + done-state progress bar + capacity legend cap ([6d42233](https://github.com/pdugan20/clickwheel/commit/6d42233878d43eaeee4d38a2ab7a62176b1c58a0))
  * **workbench:** live-progress simulation for sync-result preview ([faba9b3](https://github.com/pdugan20/clickwheel/commit/faba9b303804f126b381ff9068b49383bb427148))
  * **workbench:** viewport + theme toggles, transparent iframe bg, claude chat bg ([1de4536](https://github.com/pdugan20/clickwheel/commit/1de45366400ab4097e30b5ecb8c4d964f025d807))

  ### Bug Fixes

  * **ci:** exclude auto-generated \_ui\_bundles.py from ruff format check ([ab6b831](https://github.com/pdugan20/clickwheel/commit/ab6b8319bd7b93eb0ec4842ead541c53ea187926))
  * **mcp:** handle classic-ipod auto-disconnect gracefully ([b5effce](https://github.com/pdugan20/clickwheel/commit/b5effceb9890afdf9395068e62e82b50cc86ad65))
  * **mcp:** instruct the agent to check ipod state before curating a playlist for sync ([8efaafa](https://github.com/pdugan20/clickwheel/commit/8efaafa6fc22dc1933aa9bdbd2ee19d411eadd06))
  * **mcp:** primary\_artist now trusts album\_artist instead of parsing strings ([cae3b23](https://github.com/pdugan20/clickwheel/commit/cae3b230c34c3d8eecca24b908e06daf17af2cfe))
  * **mcp:** teach the model to stop fuzzy-searching n times for known tracks ([88cccd3](https://github.com/pdugan20/clickwheel/commit/88cccd3591641cde5df171623e31c548f92fe181))
  * **web:** register ontoolresult before app.connect() so initial fixture renders ([852130b](https://github.com/pdugan20/clickwheel/commit/852130b234cacc6c1f567dadcaa7f8a6e0d46416))
  * **web:** smooth out sync-result live progress + no end-of-sync flash ([d84c02c](https://github.com/pdugan20/clickwheel/commit/d84c02c283a64ca0cbf89ea5b1d6a1ae6bea39a9))
  * **web:** workbench drops first fixture on initial mount ([d44bd82](https://github.com/pdugan20/clickwheel/commit/d44bd82d096b41df777e064014c5d4644aff479d))

  ### Documentation

  * **mcp:** document inline ui bundles + web workspace workflow ([6b658e7](https://github.com/pdugan20/clickwheel/commit/6b658e7c7bbe39d5326466413e7e71e3ebfbdb9a))
  * **mcp:** manual test script for the playlist redesign ([4cb48a5](https://github.com/pdugan20/clickwheel/commit/4cb48a52ef570f1efc0311a60f239bea62ff3c8c))
  * **mcp:** refresh bundles + tool tables after recent feature work ([aea99b3](https://github.com/pdugan20/clickwheel/commit/aea99b33c7eea2a2d1e34a0fcabff4e952a282ef))
  * **web:** note that fixtures must match post-tool output, not raw tags ([4e3fefa](https://github.com/pdugan20/clickwheel/commit/4e3fefa89a52916b1a6524037908e1e605219db4))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.5.0...v0.6.0)
</Update>

<Update label="0.5.0" description="2026-05-07">
  ### Features

  * add build-playlist mcp prompt ([50c44e8](https://github.com/pdugan20/clickwheel/commit/50c44e8a588204b054da2cab0d60b287f18958a1))
  * add eject\_ipod tool and richer mcp tool descriptions ([6b82b32](https://github.com/pdugan20/clickwheel/commit/6b82b32bb8b41546328b8e6fb37663dff50ee8ab))
  * add mcp mutation tools ([1bba30d](https://github.com/pdugan20/clickwheel/commit/1bba30d06bc3596aba6014dc044c22651d17b6ab))
  * add read-only mcp server ([74ba924](https://github.com/pdugan20/clickwheel/commit/74ba924411361c83a4c7fbf7750c9a9520d6b23c))
  * dual-content mcp responses with text summaries ([6be17db](https://github.com/pdugan20/clickwheel/commit/6be17dbd32d8c53898452dea20f1808c2b89c6fe))

  ### Bug Fixes

  * clearer copy on the elicitation confirm field ([269433e](https://github.com/pdugan20/clickwheel/commit/269433e3fb69f0d67bde8a4118bd7e71106f0bd0))
  * drop server-side elicitation; rely on client gating ([99290de](https://github.com/pdugan20/clickwheel/commit/99290de8dc7c6ad83e76023864559367e78a5c11))
  * elicit\_confirm — accept = yes, no double-toggle required ([8509362](https://github.com/pdugan20/clickwheel/commit/850936214598060a5d7acb9cb033ab3b1046ab71))
  * filter missing tracks in library queries; preserve in playlist queries ([ae41f17](https://github.com/pdugan20/clickwheel/commit/ae41f17bd7bcaa65b6a2b69f80b964c664af1290))
  * **mcp:** dual-emit structured tool output for clients that hide it ([2a160e1](https://github.com/pdugan20/clickwheel/commit/2a160e1db0b46048a39dedc4ab3e8c4777279164))
  * paginate ipod and playlist tracks to fit the tool-result token cap ([8dbe9d3](https://github.com/pdugan20/clickwheel/commit/8dbe9d383d29565e43c30262e12a1ebdc5f7dea9))
  * pre-flight checks on sync + heal\_playlist for stale refs ([14eb218](https://github.com/pdugan20/clickwheel/commit/14eb2180c6002b57b8ed5f51a765a6b79588a0ad))
  * two-tier autoscan + mcp never autoscans ([180afb3](https://github.com/pdugan20/clickwheel/commit/180afb3c91cf26a1c197f794eda0ce392190f9c9))
  * write\_ipod\_db merges with existing itunesdb instead of clobbering ([d38830c](https://github.com/pdugan20/clickwheel/commit/d38830c78f5669e8c8bdbd973b1ee8ff971ec77a))

  ### Documentation

  * add autoscan-blocking-mcp-tool-calls to phase 5 findings ([53057a1](https://github.com/pdugan20/clickwheel/commit/53057a1eeb8c6558d66992ca97041af16cf2b89b))
  * add mcp integration project plan ([7e7c796](https://github.com/pdugan20/clickwheel/commit/7e7c796cfd255da3f4be6ec493ccd79543e89721))
  * capture phase 5 testing findings ([397b4c1](https://github.com/pdugan20/clickwheel/commit/397b4c1b1fcae9c7613b6a2873d4b017943ebbd2))
  * claude desktop install path, stale readme defaults, round 6 findings ([b269e15](https://github.com/pdugan20/clickwheel/commit/b269e15535ad19cea2d94b59095ddf55ff9f9158))
  * discourage emoji in mcp client output ([1a61e4c](https://github.com/pdugan20/clickwheel/commit/1a61e4c9aff112c2227818af539502c6ad5159ff))
  * document mcp server install and usage ([40f2fe5](https://github.com/pdugan20/clickwheel/commit/40f2fe5167bac0c3bc6d2be5f8476cab38f227e9))
  * refresh mcp test plan for phases 4.5a–d ([a0bac9c](https://github.com/pdugan20/clickwheel/commit/a0bac9cf4a0aafaf5730e47febb9310e87a9df98))
  * restructure as a two-surface project — slim readme, dedicated client/config guides ([8cf0339](https://github.com/pdugan20/clickwheel/commit/8cf0339cbde6afdeaa1b697b5331c3619b2253db))
  * restructure mcp test plan as a round-by-round walkthrough ([a7d8d44](https://github.com/pdugan20/clickwheel/commit/a7d8d442cb266b4dd78caac436ce626444a86bec))
  * round out readme — heal command, heal\_playlist tool, autoscan subsection ([d2c2ae0](https://github.com/pdugan20/clickwheel/commit/d2c2ae0a2cd0cc06a2c8ee0226a630ad1fb8cbc8))
  * scrub internal jargon from user-facing mcp copy ([586077e](https://github.com/pdugan20/clickwheel/commit/586077e5f0b13ef9f594a422c8bb8f7b73cf6539))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.4.1...v0.5.0)
</Update>

<Update label="0.4.1" description="2026-03-17">
  ### Features

  * modernize CLI UX with interactive prompts, spinners, and live displays ([5b12137](https://github.com/pdugan20/clickwheel/commit/5b12137f43e6939072a62bade6e28ddf47a26961))

  ### Bug Fixes

  * allow dashes and double blanks in markdownlint for release-please compat ([8575db8](https://github.com/pdugan20/clickwheel/commit/8575db84572f2a9ad51cdb0d166190af4ec5ed10))
  * standardize table styling across cli output ([52ef6f0](https://github.com/pdugan20/clickwheel/commit/52ef6f0d9940f92483c08d69bea0e28f92f18082))
  * resolve table title truncation in tests ([428a44e](https://github.com/pdugan20/clickwheel/commit/428a44e3dcf35980bb7a8f4b61a47e67a0a3e3f3))

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.4.0...v0.4.1)
</Update>

<Update label="0.4.0" description="2026-03-16">
  ### Features

  * add last.fm web auth flow for scrobbling ([0776e2e](https://github.com/pdugan20/clickwheel/commit/0776e2ea6941b363aef9c37e719686870eec3235))
  * auto-scan library before commands, incremental scan, fix improvements ([bb56ab2](https://github.com/pdugan20/clickwheel/commit/bb56ab20966db12c4f01dd74b5cbb140955006aa))

  ### Bug Fixes

  * lint issues — line length, table alignment, changelog headings ([3e8a9c7](https://github.com/pdugan20/clickwheel/commit/3e8a9c773899b58e193b98a3c73f0418ba8b8389))

  ### Documentation

  * update architecture, readme, and claude.md for new features ([b33eef0](https://github.com/pdugan20/clickwheel/commit/b33eef044da603ad0f690ad8d98037bf9f075e86))
  * update tracker with completed end-to-end testing ([054d5eb](https://github.com/pdugan20/clickwheel/commit/054d5eb7d0fb16f7905cf9d789d371a3952a571a))

  ## v0.3.0 (2026-03-15)

  ### Features

  * Non-interactive playlist editing: `clickwheel edit --add "Artist"` / `--remove "Artist"`
  * Live file counter during scan discovery phase (no more staring at a blank screen)
  * Scan progress indicator using tqdm for file discovery

  ### Fixes

  * Always use `~/.clickwheel/` for data dir instead of varying by working directory
  * Fix iPod sync: use `shutil.copy` instead of `copy2` to avoid FAT32 xattr errors
  * Fix sync error output: group failures by artist/album instead of per-file path noise
  * Fix vendored iPod imports: bare `from device_info` → `from clickwheel.ipod.device_info`
  * Fix iTunesDB reader to handle both flat and nested track list formats
  * Normalize capitalized track keys (Title/Artist/Album) from iTunesDB writer format

  ### Infrastructure

  * Add release-please for automated changelog and version management
  * 83 tests (6 new for non-interactive edit)

  ## v0.2.1 (2026-03-15)

  ### Fixes and Cleanup

  * Remove unused acoustid\_api\_key from config
  * Fix duplicate warn() in capacity bar
  * Fix README capacity default to match code (64 GB)
  * Rewrite README for end users (pipx install, clean config example)
  * Update all dependencies to latest versions
  * Add repo description, website, and topics on GitHub

  ## v0.2.0 (2026-03-15)

  ### Fixes

  * Move macOS platform guard to individual commands so `--help` works on any OS
  * Add test matrix job to CI (ubuntu + macos, Python 3.11-3.13)

  ## v0.1.0 (2026-03-15)

  ### Features

  * Core CLI with Typer: `scan`, `fix`, `select`, `playlist`, `diff`, `sync`, `ls`, `eject` commands
  * SQLite library index with metadata quality reporting
  * Interactive artist/album/genre picker with capacity tracking
  * iPod sync via vendored iOpenPodv2 (no libgpod dependency)
  * Last.fm scrobbling via `scrobble` command with play count caching
  * Playlist management: `edit`, `delete` commands
  * Centralized Rich output helpers with consistent formatting
  * macOS platform guard for clear error messaging
  * Optional `[artwork]` extra for album art embedding (Pillow/numpy)
  * Consumer-friendly CLI text throughout

  ### Infrastructure

  * Pre-commit hooks: ruff, shellcheck, shfmt, prettier, markdownlint, commitlint
  * 78 tests across 7 test modules (db, config, library, output, CLI helpers, scrobble, smoke)
  * CI workflow with lint, format, and test jobs (ubuntu + macos, Python 3.11-3.13)
  * Dynamic versioning via hatchling reading from `clickwheel/__init__.py`
  * PyPI-ready packaging with classifiers, URLs, and optional dependency extras

  [Compare on GitHub](https://github.com/pdugan20/clickwheel/compare/v0.3.0...v0.4.0)
</Update>
