All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.7] - 2026-06-02

Fixed

  • Fix stray spaces in module names caused by <wbr /> line-break hints in ExDoc HTML.
  • Fix Dash/Zeal qualified lookups by indexing function, type, callback, and macro entries with fully-qualified names (Module.member/arity).

Changed

  • Update doctor to ~> 0.23 and decimal to ~> 3.1 to resolve a moderate DoS vulnerability (GHSA-rhv4-8758-jx7v).

[0.1.6] - 2026-03-14

Added

  • Add --extra-package so docsets can be generated for Hex packages that are not declared in the target project's mix.exs.
  • Support versioned extra package specs such as phoenix_live_view@1.1.16.

Changed

  • Change --extra-package to build only the explicitly requested extra packages when no --package filter is given.
  • Resolve the latest stable Hex.pm version automatically when --extra-package is given without an explicit version.
  • Update CLI output and documentation to reflect extra package support.
  • Show textual progress updates while resolving, downloading, building, and installing docsets.
  • Clarify the floki setup requirement and the new --extra-package behavior in the README examples.

Fixed

  • Continue generating docsets when a crawled HTML page returns 404 but is not a required entry page.

[0.1.4] - 2026-03-14

Fixed

  • Correct the published documentation examples so the dependency snippet points to the current release and the supported :dev/:test environments.

[0.1.3] - 2026-03-14

Fixed

  • Correctly reuse the current Mix project context when mix zeal.docs runs from inside the target project.
  • Start :exqlite before indexing docsets so the task works reliably inside consuming projects.
  • Finalize the supported integration model as a Mix development dependency executed from the target project root.

Changed

  • Document the supported workflow as mix zeal.docs . from inside the target project.
  • Clarify the floki environment requirement when the consuming project restricts it to :test only.

[0.1.2] - 2026-03-14

Fixed

  • Remove the incorrect global-installation guidance and document the supported usage as a Mix development dependency.

Changed

  • Stop documenting escript and Mix archive as supported distribution formats.
  • Document mix zeal.docs as a task provided by adding zeal_docsets to a target project's development dependencies.

[0.1.1] - 2026-03-14

Changed

  • Detect the default Zeal docsets directory by platform.
  • Build temporary workspace files outside the project repository by default.
  • Improve CLI ergonomics by allowing the Zeal path argument to be optional.
  • Summarize missing custom icons at the end of a run instead of printing one warning per package.
  • Move Dialyzer PLTs to .dialyzer/ instead of priv/.
  • Replace Sobelow with a quality toolchain tailored to this CLI/library project.

Fixed

  • Escape values written to Info.plist and meta.json.
  • Handle missing URI paths defensively in the HexDocs crawler.
  • Keep test output clean by capturing CLI report output correctly.
  • Align HexDocs and inline documentation with the current CLI behavior.

Added

  • Simple retry logic for transient HTTP failures.
  • Additional CLI and runner test coverage.
  • mix quality alias combining formatting, compilation, tests, linting, auditing, documentation checks, and duplication checks.

[0.1.0] - 2026-03-14

Added

  • Initial release.
  • Read direct Hex dependencies from mix.exs and exact versions from mix.lock.
  • Mirror HTML documentation from hexdocs.pm using a BFS crawler (pure Elixir, no external tools required).
  • Generate Zeal/Dash-compatible .docset bundles with:
    • Contents/Info.plist (Apple plist format)
    • Contents/Resources/docSet.dsidx (SQLite search index)
    • Contents/Resources/Documents/docs/{package}/ (mirrored HTML)
    • icon.png / icon@2x.png (package logo when available)
    • meta.json (name, title, version)
  • Search index covers Modules, Commands (Mix tasks), Functions, Types, Callbacks, Macros, and Guides.
  • Skip regeneration when the installed version already matches the locked version (with --force to override).
  • Parallel docset generation via Task.async_stream.
  • --dev and --test flags to include non-production dependencies.
  • --package flag (repeatable) to build only specific packages.
  • Available both as a standalone escript (zeal_docsets) and as a Mix task (mix zeal.docs).