Repository analytics / build snapshot
Jarela project history
Line changes and accumulated net text lines, stacked by commit type.
LINE CHANGESAdded + deleted / not codebase size
COMMITS
ADDED / DELETED
NET CHANGEAdditions minus deletions
Click types to show/hide them. Hover, tap, or focus a bar for its breakdown. Narrow the date range to zoom.
Stacked changes / not cumulative
Bucket breakdown
Commits and changes are per bucket. Plotted total follows the selected metric (running net lines in accumulated mode); the CSV includes each commit-type contribution.
| Time / version | Commits | Added | Deleted | Net | Line changes | Plotted total | Top type (absolute contribution) |
|---|
Methodology & interpretation
- Scope: all commits reachable from the captured HEAD, across merged branches, excluding merge commits. No fetch was performed. Uncommitted work and unreachable branches are not included.
- Line changes = additions + deletions from Git numstat, with rename detection disabled. Renames therefore count as deleting the old file and adding the new one. Initial commits, generated files, vendored code, docs and tests are included. This measures churn, not productivity or unique lines of code.
- Accumulated LOC is the running sum of added minus deleted text lines from the start of this reachable non-merge history, not a source-only counter or a direct checkout measurement. It includes blank lines, comments, docs and generated text; binary files are excluded. Date zoom preserves the earlier baseline, while type and lockfile filters apply to both the baseline and visible changes. Type stacks attribute net changes to the commit type that made them, not ownership of current lines. Negative type balances stack below zero; the exact net total is in the tooltip and table. Summary cards remain changes within the selected date range.
- Commit types are parsed from Conventional Commit subjects, including scopes and breaking-change markers. Unrecognized or non-conventional subjects become other. Author details, file paths and commit messages are not embedded.
- Dates use commit timestamps, normalized to UTC. Weekly buckets start Monday; empty calendar buckets are retained. The time axis also shows release markers; crowded labels are thinned, while all releases remain available in version mode.
- Release mode uses reachable app tags matching vMAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH, excluding workspace-package and backup tags. A commit belongs to the first tagged release whose timestamp is at or after its timestamp. This is chronological attribution, not proof of ancestry or first inclusion in a release. Same-commit tag aliases are deduplicated. Later commits appear as Unreleased.
- Lockfile toggle removes recognized npm, Yarn, pnpm, Bun, Cargo, Poetry, uv and Pipenv lockfile line counts only. Commits still count, including commits with zero remaining textual changes. Binary file changes have no line counts and are excluded from line totals.
- Everything runs locally in this single HTML file. No CDN, external library, network requests or analytics. CSV exports use the current filters.