# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [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`).