What's Changed
- Add example for release analytics features by @wdm0006 in #26
- docs theme by @wdm0006 in #27
- Fix bus_factor(by='repository') dropping ignore_globs by @wdm0006 in #31
- Guard Project.blame()/file_detail() against AttributeError when all repos fail by @wdm0006 in #33
- Test the supported Python range in CI by @wdm0006 in #32
- Fix @multicache keys ignoring positional args and blame's ignore_globs typo by @wdm0006 in #37
- ci: efficiency + hygiene tuning by @wdm0006 in #38
- Fix multi-repository blame aggregation by @wdm0006 in #39
- Preserve cached method signatures for reflection by @wdm0006 in #43
- Return empty DataFrame when projects have no tagged commits by @wdm0006 in #45
- Fix first-commit hours allowance by @wdm0006 in #51
- Stop punchcard from mutating the cached commit_history DataFrame by @wdm0006 in #50
- Fix warm cache key consistency by @wdm0006 in #49
- Preserve DataFrame indexes in MCP results without mutation by @wdm0006 in #56
- Make file_owner honour the committer flag by @wdm0006 in #61
- Add exact rev-to-rev regression coverage by @wdm0006 in #60
- Paginate GitHub profile repository discovery by @wdm0006 in #57
- Keep repository in ProjectDirectory.blame(by="file") grouping by @wdm0006 in #64
- Fix empty ProjectDirectory punchcards by @wdm0006 in #63
- Fix file change history churn counts by @wdm0006 in #65
- Fix duplicate rows in cumulative blame by @wdm0006 in #69
- Stop cumulative_blame from mutating cached DataFrames by @wdm0006 in #70
- Fix per-repository default branch detection by @wdm0006 in #72
- Fix targeted repository cache invalidation by @wdm0006 in #71
- Walk commit history in commits_in_tags by @wdm0006 in #73
- [autopilot] release v2.5.0 by @wdm0006 in #74
Full Changelog: v2.4.0...v2.5.0