Repository navigation
Releases: axean/sundgren
Releases · axean/sundgren
Release list
v2.0.0
Immutable
release. Only release title and notes can be modified.
Changed
sundgren graphdraws where branches stand against a base branch: a vertical map, newest on top, routed like a circuit board, with the base as the reference line and local and remote refs as twin lanes. It printssundgren.graph/3JSON, or Unicode with--format text. It replacessundgren.graph/1and theREVand-narguments.- VS Code: sundgren: Show History shows that map, and opens from Containment with its base and target.
Added
sundgren graphpicks branches with--show local|recent|mine|like,--branches,--pinand--hide, and the page with--commits,--sinceand--until.- VS Code History panel: a time axis, short hashes, whole commit messages on hover, a branch list to tick, author and date (calendar) filters, folded runs of commits, and Load older.
v1.1.1
Immutable
release. Only release title and notes can be modified.
Added
- The VS Code extension is on the Marketplace, as a preview.
Fixed
- Code in the panels and the docs shows as typed: the fonts' ligatures no longer draw
->as an arrow or>=as ≥.
v1.1.0
Immutable
release. Only release title and notes can be modified.
Added
sundgren contain A B --base REV(prototype) measures how much of the work each branch added since it left the base is in the other, by content: exact and edited (fuzzy) lines. Lines that are only a comment are left out (--comments countkeeps them);--lineslists every line and where it was found.- In Python, Rust and C files, sundgren reads the code: containment per function and class, with where each went in the other branch.
sundgren outline FILEshows what it reads. - VS Code: sundgren: Show Containment compares every branch with a target, with sync, worktree and uncommitted-changes badges; Inspect shows a branch's edited and missing lines next to the target's; sundgren: Show Outline shows a file as sundgren reads it.
- Docs: Features and Containment pages; the demos work like the panels, on data the docs build makes with the current sundgren.
Changed
- One look for the panels and the docs site (
style/), with the Inter and JetBrains Mono fonts.
v1.0.0
Immutable
release. Only release title and notes can be modified.
Changed
- sundgren is now a git history visualizer. The coverage delta tool (
sundgren run,diff,presets,ingest) and the extension's "pluck a test" are removed.
Added
sundgren graph [REV]prints the history of a revision laid out as a graph, assundgren.graph/1JSON.- VS Code: sundgren: Show History shows a branch's history as a graph in a panel.
- Docs: a History graph page with a live demo, and a Development menu listing the previews of
mainand of every open pull request.
v0.3.0
Immutable
release. Only release title and notes can be modified.
Added
- A VS Code extension: sundgren: pluck this test above each Rust and pytest test skips it in a temporary patch and shows what that does to coverage. It checks everything before running, refuses with a reason instead of guessing, and its Cancel stops the run at once. Each release has a
.vsixper platform with sundgren inside; the docs site has a page on it. (#17) sundgren run --checkchecks that a run can start without running any tests: the repository and base, uncommitted changes, whether the patch applies, the preset, the selected tests and the preset's tool checks. With pytest it also catches tests that would import the project from your checkout instead of the temporary one (an editable install with asrc/layout), which made both runs measure the same code. It printssundgren.check/1JSON, or a summary with--format text, with a one-sentence message per problem, and leaves nothing behind. (#17)- Presets can have
checks: commands that must succeed for--checkto pass. The built-in presets check that coverage.py and pytest import, or that cargo-llvm-cov or cargo-tarpaulin is installed. (#17) --all-testsruns every test, ignoring the preset's selection. (#17)sundgren runprints its progress to stderr: the base, patch and preset, which tests run, and each test run's start and duration.--silentturns this off. (#17)sundgren runwithout--patchruns the whole test suite on two checkouts of the base and compares them, to check that the tests run and give the same coverage twice. (#18)
Changed
- Ctrl-C or SIGTERM now stops a run cleanly at any point: sundgren stops the test commands, removes its worktrees and exits with 130 or 143. Before, worktrees and test processes could be left behind. (#17)
- Rust function names in reports are demangled (
mycrate::divideinstead of_RNv…6divide), and the instances of a generic function are reported once. (#17)
v0.2.2
Immutable
release. Only release title and notes can be modified.
Added
- An examples page on the docs site with common cases in Python and Rust: a patch that only touches tests, one that changes source code, one that changes a fixture or test helper, running only some tests with
--tests(down to one case of a parametrized pytest test), and your own commands with placeholders. (#8) - The docs site's header shows the release it documents, with links to it on GitHub and PyPI. (#9)
- Docs for
main, with changes that aren't released yet, at https://axean.github.io/sundgren/main/. A banner marks them as a preview and links the commit they were built from. (#11)
Changed
- The docs site's home page is now a short overview, with links to the other pages. (#8)
v0.2.1
Immutable
release. Only release title and notes can be modified.
Added
- Two pages on the docs site: "How it works", and a reference of every option, preset key, placeholder, exit code and warning.
Changed
- sundgren is now a self-contained program.
uv tool install sundgren(or pipx) installs a compiled binary for Linux and macOS (x86_64 and arm64), and running it no longer needs Python. Building from source needs Rust 1.88 or newer. - Error and warning messages are worded differently.
- The JSON report writes non-ASCII text as UTF-8 instead of
\uescapes. - Command-line arguments, paths and lcov files must be valid UTF-8, and lcov numbers must be plain ASCII digits.
v0.1.2
Added
- Logo: the README shows it instead of the title. The docs site shows it at the top of the page, with the round icon in the header and as the favicon. Light and dark variants.
- Changelog page on the docs site, linked from the header.
- Line coverage of sundgren's own code in CI: measured in-process over everything outside
tests/anddocs/examples/, with a summary table, an HTML report artifact and a README badge.
Changed
- The docs site uses the logo's colours: an orange accent (darker in light mode for contrast) and warm greys, in light and dark mode. Note callouts use the accent instead of blue.
v0.1.1
Added
- Docs site at https://axean.github.io/sundgren/ with a Python and a Rust example: skipping
test_divide, or marking it#[ignore], makesdividego dark. Each shows its project, patch and command, a graphic drawn from the recorded JSON report, and the text and JSON reports. - Docs examples in
docs/examples/: a project, a patch, the exact commands and their recorded output. The docs tests rerun them in CI (the Python example on 3.11–3.14, the Rust one with thecargo-tarpaulinpreset on rustc 1.99.1 and cargo-tarpaulin 0.37.5) and fail on any difference;tools/docs_examples.py --updatere-records. - A docs test that fails if a docs page has a code block that isn't an include of a tested example file.
- Docs workflow: the docs tests and a strict Sphinx build run on every push and PR.
- This changelog, and a versioning policy in the README: before 1.0, a breaking change to the CLI, the report schema, the preset format or the built-in preset names bumps the minor version.
- README badges for CI, PyPI, Python versions, license, docs, Ruff, Black style and mypy.
Changed
- The version is set in
pyproject.toml(uv version --bump patch);sundgren.__version__reads the installed package metadata. - Stricter release checks (
tools/release.py): the tag must bevX.Y.Zand equal thepyproject.tomlversion, and the changelog must have a section for it and an empty## Unreleased. The GitHub release notes are that section. - The PyPI publish waits for the docs tests and a strict docs build; the site deploys to GitHub Pages after the publish.
v0.1.0
Note
First release. This entry was written after the release.
Added
sundgren run: runs a coverage command on the base tree and on the patched tree (git worktrees), diffs the two lcov files with line numbers mapped through the patch, and reports what the patch did to lines, branches, functions and test outcomes.sundgren difffor two existing lcov files,sundgren ingest(a normalized lcov snapshot as JSON) andsundgren presets.- Built-in presets
pytest(coverage.py + pytest, selecting the test files the patch touches),cargo-llvm-covandcargo-tarpaulin. Custom presets go insundgren.tomlor[tool.sundgren.presets]; any tool that writes lcov works through--cmdand--lcov. - JSON report with schema
sundgren.delta/1: line categories (lost,gained,new_hit, ...), branch categories, function status (went_dark,lit_up, ...), JUnit test outcomes, a per-directorytreerollup and warnings.--format textprints a summary. --repeat Nreports lines whose status varies across runs asflaky.--fullkeeps unchanged entries,--countsadds hit-count changes.- Exit codes: 0 ok, 1 tool or run failure, 2 usage error, 3 patch doesn't apply.