Repository navigation
Releases: bgarcevic/ripbi
Release list
v0.11.1
Fixed
- Power Query parameters used inside a record are no longer reported as unused. A
name passed as a record value, such asSource{[Schema = SchemaParam, Item = "t"]}or
Headers = [Key = TokenParam], was skipped, so the expression it names was flagged as
unused even though removing it breaks refresh.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- fix(m): count names inside record literals as references by @bgarcevic in #197
- chore(release): prepare 0.11.1 by @github-actions[bot] in #198
Full Changelog: v0.11.0...v0.11.1
v0.11.0
Added
ripbi fetchdownloads a model and every report built on it. Point it at a
semantic model (a portal link,--workspace/--model, or type-to-filter pickers) and it
finds every downstream report across workspaces, skips org-app copies, and prints
which reports you can read before downloading anything — a scan that sees only some
of a model's reports flags whatever only the missing ones use as unused. An incomplete
set asks first on a terminal and refuses (exit2) in CI unless
--allow-incomplete. The model (TMDL) and the reports (PBIR) land in a folder with
aripbi.toml, soripbi scanruns there with no flags (--scandoes it for
you), and.ripbi/source.jsonrecords where everything came from and what is
missing. Signs in with the Azure CLI, an environment token, or a service principal;
--dry-runforecasts only,--verifycross-checks the beta relations API.scanwarns about an incomplete fetch. Scanning a fetched folder whose
source.jsonlists reports that could not be downloaded emits an
incomplete_report_setskip notice naming them, so--strictfails on it.
Changed
- Pickers filter as you type. On a terminal, the project picker (
scan,report,
anddepsin a folder with several projects) and thefetchworkspace and model
pickers are one shared list: type to filter, arrows to move, Enter to choose, Esc to
cancel. Piped input still gets the numbered list.
Fixed
- Legacy
.Reportfolders are read. A report folder with nodefinition/(saved
without the PBIR preview, or downloaded byfetchfrom a report the service stores
in the older format) keeps its layout in a rootreport.json. It was parsed as a
PBIR file:unknown_propertynotices forconfig,sectionsandtheme, and none
of its visuals counted, so fields only that report used were flagged unused. - Legacy layouts know every built-in visual. The matrix (
pivotTable), shapes,
KPIs, 100% stacked charts, buttons, navigators and the newer slicers and cards no
longer raiseunknown_objectnotices; their fields were already counted.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- feat(fetch): download a model and its downstream reports by @bgarcevic in #195
- chore(release): prepare 0.11.0 by @github-actions[bot] in #196
Full Changelog: v0.10.1...v0.11.0
v0.10.1
Fixed
scan --compare-rootno longer reports a model's existing findings as new when the
other checkout had no connected reports. Connecting a model's first report used to
compare against a skipped baseline as if it were clean, so every existing unused
object failed the gate. The comparison now records the baseline asskipped: unused
objects that already existed there are unverified (counted under the summary line,
unverified:records in--plain,compare.unverifiedin--json) and never gate,
while objects the change adds are still new.--jsonreports every baseline's
coverage ascompare.baseline(scanned,skipped, orunavailable); the Markdown
summary and SARIF note an incomplete baseline too.- Measures used only in a visual container's conditional formatting are no longer
reported unused. A PBIR background, border, or title rule driven by a measure
(visualContainerObjects) now binds that measure, like a rule in the visual's own
formatting. - A clean
scan --summaryno longer prints two blank lines above the verdict. The
blank line under the notes already separates them, so the summary adds its own only
when it has counts to separate from the verdict.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- fix(scan): drop the doubled blank line above a clean --summary verdict by @bgarcevic in #192
- fix: skipped --compare-root baselines and container conditional formatting by @bgarcevic in #194
- chore(release): prepare 0.10.1 by @github-actions[bot] in #193
Full Changelog: v0.10.0...v0.10.1
v0.10.0
Changed
scanoutput puts the verdict last and ranks its notes. The scan now opens with
the model's name and report count, lists its notes as indented!lines (they change
how to read the result: stale or partial stats, a by-name pairing) or dim·lines
(background), and closes with the verdict as the last line of the output:
✓ No unused objectsor✗ 56 unused objects, then74 of 130 reachable from 51 roots. Full paths, and the stats note when coverage is complete, appear only with
--verbose. The note that external consumers are invisible now appears only when there
are findings, as a hint under the verdict to check thin reports, Excel and XMLA
clients before removing anything. Skip notices print above the report instead of
after it.--json,--plain, SARIF and the Markdown summary are unchanged.reportanddepsshare the layout. Both open with the same model-name header
and tiered notes, and end with a closing line:reportwith✓ All bindings resolveor✗ 2 unresolved bindingsand what it read,depswith what the
selection uses and what uses it.depsdrops the every-run caveat that external
consumers are invisible; the hint now appears only under a view with an Impact
section. The stage ticker no longer prints a✓ scanned … in 1.4sline; the wall
time sits at the end of each command's closing line.stub-reportandupdateshare the layout too.stub-reportopens with the
model's name, lists its notes as!/·lines, and ends with✓ Created X.pbipand
the next step under it (✓ Saved …/.pbi/cache.abfunder--wait); the.pbippath
is still alone on stdout.updateends with✓ Updated ripbi 0.9.1 → v0.9.2or
✓ ripbi 0.9.1 is up to date, and the daily new-version notice is a dim·line.
Added
[scan].external_consumers = "none"inripbi.tomlsays nothing outside the
scanned reports reads the model, and drops the check-before-removing hint.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- feat(cli): shared information hierarchy across commands by @bgarcevic in #189
- docs(media): re-record demos for the shared output tiers by @bgarcevic in #191
- build(deps): bump the cargo-dependencies group with 2 updates by @dependabot[bot] in #188
- chore(release): prepare 0.10.0 by @github-actions[bot] in #190
Full Changelog: v0.9.1...v0.10.0
v0.9.1
Fixed
- Bridge tables are no longer reported unused. A table that nothing references but
that sits on the filter path between two live tables, such asBridgein a snowflake
Sales → Bridge → User, used to be reported unused, and deleting it broke the filter
fromUsertoSales. Such a table now stays live along with its partitions and
relationships, though its unreferenced columns are still reported. Filter direction
counts: an unused dimension shared by two live fact tables is still a finding unless a
relationship filters both ways. Every ingest format now reads cross-filter direction and
cardinality.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- docs: split the scan page and reorganize the book by task by @bgarcevic in #185
- fix(graph): keep bridge tables on a filter path between live tables by @bgarcevic in #186
- chore(release): prepare 0.9.1 by @github-actions[bot] in #187
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Added
scan --emit tx-rm: the findings as JSON Lines for tomix's batch removal, so
ripbi scan --emit tx-rm | tx rm --from - ./Model.SemanticModel --saveremoves every
unused model object, dead auto date/time tables included, as one change. Each line names
its object bytype,table, andname, with ripbi's id beside it; report measures and
bookmarks are comment lines. Needs atxwithrm --from.- Workspace-monitoring query logs (
--queries-from PATHonscananddeps, or
queries_frominripbi.toml): an export of Fabric workspace monitoring's
SemanticModelLogs(or Log Analytics'PowerBIDatasetsWorkspace)QueryEndevents
— CSV, JSON rows, a Kusto REST or Log Analytics query API response, plain,
gzipped, or zipped — makes every object a logged DAX or MDX
query names a reachability root, so what Excel pivots, thin reports, and XMLA
clients read stops being reported unused.ripbi deps --impactshows those objects
in aQueriedsection (how often, how many users, last seen, clients, reports) and
inqueriedplain records and a JSONqueriedarray;scan --jsoncounts them in
summary.queried. User names never reach the output. A workspace-wide export is
narrowed to the scanned model byItemName/ItemId(--queries-itemor
queries_itemwhen the service name differs), so another model's queries never
keep this one's objects alive; a log that does not identify the model is a
stale_stateskip notice, so--strictfails on it. A queried table keeps its
columns alive (a table expression returns every one), not its measures.
Changed
- Broken visual bindings name the visual and page as Power BI Desktop shows them:
the visual's type and literal title and the page's tab name, with the generated
IDs in parentheses —lineChart visual 'Sick leave %' (id '6caf…') on page 'Absence' (id 'b725…')instead of only the IDs. Human, Markdown and SARIF
output use the new phrase;scan --jsonadds it asbroken[].locationand
keepsprovenanceunchanged, so baselines still match. - Builds against
zip9. An archive member whose name cannot be read now fails
with an error instead of being skipped silently.
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- Add workspace-monitoring query logs as consumers (--queries-from) by @bgarcevic in #169
- Neutralize a test comment and fix Clippy 1.99 lints by @bgarcevic in #174
- ci: automate releases with a release PR by @bgarcevic in #175
- ci: give Dependabot PRs conventional titles by @bgarcevic in #179
- build(deps): bump source-map-js from 1.2.1 to 1.2.2 in /desktop by @dependabot[bot] in #178
- build(deps): bump rustls from 0.23.44 to 0.23.45 by @dependabot[bot] in #177
- test: add Excel OLAP pivot fixtures for the upcoming xlsx ingest by @bgarcevic in #170
- build(deps): bump cargo dependencies and adapt to zip 9 by @bgarcevic in #181
- build(deps): bump the cargo-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #182
- feat(scan): name visuals and pages as Power BI Desktop shows them in broken bindings by @bgarcevic in #183
- feat(scan): --emit tx-rm, findings as JSON Lines for tx rm --from by @bgarcevic in #184
- chore(release): prepare 0.9.0 by @github-actions[bot] in #176
New Contributors
- @github-actions[bot] made their first contribution in #176
Full Changelog: v0.8.1...v0.9.0
v0.8.1
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- Mirror the action with a deploy key instead of a token by @bgarcevic in #162
- Tag a fixed version of the action on each release by @bgarcevic in #163
- Upload the action's SARIF with codeql-action v4 (#143) by @bgarcevic in #165
- Point new unused findings under --compare-root at ripbi_keep (#151) by @bgarcevic in #166
- Prepare the v0.8.1 release by @bgarcevic in #167
- Fix sync_version.py: sync ripbi-xpress9, keep JSON formatting by @bgarcevic in #168
Full Changelog: v0.8.0...v0.8.1
v0.8.0
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- Honour a ripbi_keep model annotation for intentionally unused objects (#151) by @bgarcevic in #155
- Add
scan --sarifandscan --azure-devopsfor CI annotations (#142) by @bgarcevic in #156 - Add
scan --sarif-file/--json-file/--markdown-filefor CI (#143) by @bgarcevic in #157 - Add the ripbi GitHub Action with an end-to-end test (#143) by @bgarcevic in #158
- Add the Azure Pipelines template and a CI chapter (#143) by @bgarcevic in #160
- Prepare the v0.8.0 release by @bgarcevic in #161
Full Changelog: v0.7.0...v0.8.0
v0.7.0
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- Style the CLI and add a stage ticker to scan, report, and deps by @bgarcevic in #152
- Add
scan --compare-rootto gate only on new findings (#141) by @bgarcevic in #150 - Prepare the v0.7.0 release by @bgarcevic in #154
Full Changelog: v0.6.1...v0.7.0
v0.6.1
Downloads
- CLI: the
ripbi-<version>-<target>.zip/.tar.gzarchives containripbiandrib. - Desktop (experimental, Windows x64): use
ripbi-desktop-<version>-x86_64-pc-windows-msvc-setup.exefor the graphical interface. It shares this release's version and analysis engine.
The desktop installer is currently unsigned, so Windows may display an unknown-publisher or SmartScreen warning. It installs for the current user and downloads WebView2 if the runtime is missing (internet access required). Desktop updates are manual: download and run the installer from a newer release. ripbi update updates only the CLI.
sha256sums.txt covers both the CLI archives and desktop installer.
What's Changed
- Attach storage sizes to PBIP/TMDL models (#129) by @bgarcevic in #134
- Bump actions/setup-node from 6 to 7 in the actions group by @dependabot[bot] in #136
- Bump cc from 1.4.4 to 1.4.7 in the cargo-dependencies group by @dependabot[bot] in #135
- Add
ripbi stub-reportfor model-only PBIP projects (#130) by @bgarcevic in #139 - Prepare the v0.6.1 release by @bgarcevic in #140
Full Changelog: v0.6.0...v0.6.1