All notable changes to this project are documented here. The format follows Keep a Changelog, and the project adheres to Semantic Versioning.
dp checkcommand — reports whether the README or any docstrings are stale and exits non-zero if so, with no model calls or configuration required, so it can run as a pre-commit hook.dp initruns the same report at the end of setup.- Welcome banner —
dp initopens with an ASCII banner showing the version and issue link; the same banner heads the project README. dp readmecommand and README pipeline: a LangGraph agent scopes a directory, maps its source with a fast analysis model, then drafts or refreshes aREADME.mdfor side-by-side review before writing.- Shared
ChangeManifestbacking both pipelines — semantic-hash change detection with a stat-stamp fast-skip, keyed per pipeline. DocstringGeneratorprotocol so the docs pipeline depends on a generator interface rather than the concreteLLMDocstringGenerator.py.typedmarker — the package now ships its type information to consumers.- Persistent run timer: a single elapsed counter ticks for the whole
docsandreadmerun, stepping aside only for interactive prompts. - Status message while the docs review reruns docstrings, so the regeneration step is no longer silent.
- PyPI publishing metadata — SPDX license, classifiers, keywords, and project URLs.
- Shared
confirm_or_skiphelper backs the docs and readme pre-run prompts, so both gate model calls the same way. - Docs run summary formats elapsed time with
format_duration, matching the readme summary and the live timer.
mypymoved from runtime dependencies to the dev group — it was never imported at runtime and shipping it added ~50 MB to every install.- Dead, test-only helpers:
GitReader.is_repo/last_commit_touching/commits_sinceand theBatchPlancount properties.
ConfigErrorconstruction routed through named factory methods (conflicting_flags,no_runs_to_resume) instead of inline strings.
dpCLI withinit,docs,cleanup, andconfigcommands.- Docs pipeline: scout undocumented code, generate Google-style docstrings in batched LLM calls, and insert them without disturbing surrounding source.
- Anthropic, OpenAI, and Gemini providers with
fast/balanced/bestmodel tiers. - Anti-LLM-ese retries, transient-failure retries, and on-exhaustion model switching.
- Checkpointed runs with
--resume, plus a per-run manifest of counts, tokens, and cost. - Fast-skip cache so already-documented, unchanged files are not re-sent.
- Interactive review panel for accepting, rejecting, or rerunning generated docstrings.
- Layered config (defaults < global < repo) with masked API keys and an error hierarchy carrying actionable hints.