Skip to main content

CHANGELOG.md

# 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`).