Skip to content

Release Notes

2.0.6 - February 14, 2026

Bug Fixes

  • ui: Fixed custom sanitize/validation configuration being lost on page refresh or report change.

2.0.5 - February 14, 2026

Bug Fixes

  • sanitize: Fixed remove_unused_bookmarks incorrectly removing bookmarks from Navigator visuals configured to show "All" bookmarks.
    • Now correctly identifies navigators with missing or empty bookmarkGroup properties as using all bookmarks.

2.0.4 - January 20, 2026

Features

  • ui: Added "Select All" checkbox for Expression Rules in validation panel
    • Consistent with Actions panel UX pattern
    • Supports indeterminate state when some rules are selected

Improvements

  • cli: Validation summary separator line now dynamically matches text width
  • api: Refactored /validate/run and /validate/run/stream endpoints to use single validate_report call instead of two separate calls
    • Eliminates duplicate count calculation logic

2.0.3 - January 17, 2026

Features

  • sanitize: Added exclude_types parameter to page display option actions
    • Allows excluding specific page types (e.g., "Tooltip") when setting display options like "Fit to Page"
    • Default configuration now excludes Tooltip pages from display option changes
  • api: Added failed_rules property to ValidationResult for easy access to unique failed rule names as {rule_id: rule_name}

Bug Fixes

  • api:
    • Fixed ValidationResult to count unique failed rules by severity, not violation instances. str(result) now shows accurate rule-level counts (e.g., "3 warnings" = 3 rules failed, not 38 violation instances)
    • Fixed issue where sanitizer actions were running in validation stream even when excluded (e.g. via UI checkbox)

2.0.2 - January 17, 2026

Features

  • ui: New web-based UI client (pbir-utils ui or pbir-utils serve)
    • Report browser for navigating and selecting .Report folders
    • Full wireframe visualization with all existing features
    • Execute sanitize actions with real-time progress streaming (SSE)
    • Run expression rules + sanitize action checks with popup summary
    • Export metadata (CSV) and wireframe (HTML) (respects search, field filters, visibility toggles)
    • Auto-reload wireframe after successful actions
    • Persistent toast notifications and dirty state indicators
  • validate: New report validation command
    • Runs sanitizer checks (dry-run) + expression rules by default
    • --source all|sanitize|rules to filter which checks to run
    • --actions to cherry-pick specific sanitizer actions
    • --rules to cherry-pick specific expression rules
    • --rules-config and --sanitize-config for custom YAML configs
    • --strict mode exits with code 1 on violations (for CI/CD)
    • --format json for machine-readable output
    • Output grouped by [Sanitizer Checks] and [Expression Rules] sections
  • sanitize: Added severity field to action definitions
    • Actions can now specify severity: error|warning|info in pbir-sanitize.yaml
    • Enables per-action violation levels when used with validate command
  • extract-metadata: Simplified filter arguments
    • Added explicit --pages, --reports, --tables, --visual-types, and --visual-ids arguments
    • Aligned filter syntax with other CLI commands for bette r ergonomics
    • Updated Python API (export_pbir_metadata_to_csv) with explicit keyword-only parameters
    • Maintained backward compatibility for legacy JSON-based --filters

2.0.1 - January 17, 2026

Features

  • ui: New web-based UI client (pbir-utils ui or pbir-utils serve)
    • Report browser for navigating and selecting .Report folders
    • Full wireframe visualization with all existing features
    • Execute sanitize actions with real-time progress streaming (SSE)
    • Run expression rules + sanitize action checks with popup summary
    • Export metadata (CSV) and wireframe (HTML) (respects search, field filters, visibility toggles)
    • Auto-reload wireframe after successful actions
    • Persistent toast notifications and dirty state indicators
  • validate: New report validation command
    • Runs sanitizer checks (dry-run) + expression rules by default
    • --source all|sanitize|rules to filter which checks to run
    • --actions to cherry-pick specific sanitizer actions
    • --rules to cherry-pick specific expression rules
    • --rules-config and --sanitize-config for custom YAML configs
    • --strict mode exits with code 1 on violations (for CI/CD)
    • --format json for machine-readable output
    • Output grouped by [Sanitizer Checks] and [Expression Rules] sections
  • sanitize: Added severity field to action definitions
    • Actions can now specify severity: error|warning|info in pbir-sanitize.yaml
    • Enables per-action violation levels when used with validate command
  • extract-metadata: Simplified filter arguments
    • Added explicit --pages, --reports, --tables, --visual-types, and --visual-ids arguments
    • Aligned filter syntax with other CLI commands for bette r ergonomics
    • Updated Python API (export_pbir_metadata_to_csv) with explicit keyword-only parameters
    • Maintained backward compatibility for legacy JSON-based --filters

1.9.0 - January 03, 2026

Features

  • wireframe: Major UX overhaul and enhancements
    • Added Fields Pane with comprehensive data model exploration (tables, columns, measures)
    • Added table tooltips showing field counts, visual usage, and page breakdown
    • Wireframe now opens on the active page instead of first page
    • Page changes tracked in undo stack; reset returns to original active page
    • Enhanced Field usage counts to include fields from Bookmarks, Page-level Filters, and Report-level Filters
    • Added filter toggles to show/hide visible or hidden visuals
    • Implemented universal Reset/Undo functionality
    • Visual improvements for toggle buttons and filter states
    • Modernized UI with glassmorphism, Inter font, and improved interactions
    • Implemented visual layering (Z-index) based on Power BI visual order
  • extract-metadata: Added "Attribute Type" (Column/Measure) to the metadata CSV output

Bug Fixes

  • sanitize: Improved summary mode messaging
    • Fixed message grammar for single-report scenarios
    • Actions now show appropriate INFO messages when no changes are needed
  • extract-metadata: Fixed duplicate rows and missing table names in metadata extraction
    • Skip redundant queryRef, nativeQueryRef, metadata, and Subquery keys
    • Prevents duplicate entries from qualified name references
    • Prevents orphan rows from filter subqueries with unresolved table aliases

1.8.0 - January 01, 2026

CLI Features

  • visualize: Major overhaul to static HTML generation (removed Dash server)
    • Lightweight, portable HTML output
    • Interactive Features:
      • Search/Filter visuals by ID, Type, or Page Name
      • Copy Visual ID (left-click)
      • Hide/Unhide visuals (right-click) with Undo/Reset
      • Hide/Unhide pages (right-click tabs) with restore pill
    • UI Enhancements:
      • 🌙 Dark mode toggle with preference persistence
      • 🔍 Zoom controls (25%-200%) for large reports
      • 📊 Visual count badges on page tabs
      • 📏 Dimension tooltips (page size, visual size/position)
      • Page tooltips with visual type breakdown on hover
      • Visual indicators for hidden pages/visuals
      • Refined Fluent-like styling

1.7.1 - December 31, 2025

CLI Features

  • batch-update: Added --summary flag to display aggregated output instead of per-file messages

Documentation

  • UI Improvements
    • Enhanced documentation site with instant navigation (SPA-like), sticky Table of Contents, and navigation tracking
    • Modernized UI with custom CSS: bold/underlined active tabs, refined fonts (Inter/JetBrains Mono), and smoother transitions
    • Updated README.md and documentation home page with improved formatting and emoji indicators for better readability
    • Hidden left navigation sidebar on all pages for more content space
  • Release Notes
    • Added auto-generated Release Notes page that fetches full release history from GitHub Releases API

1.7.0 - December 24, 2025

Added

  • Visual Metadata Extraction
    • Added --visuals-only flag to extract-metadata command for visual-level metadata export
    • Exports Visual Type, Visual ID, Parent Group ID, and Is Hidden status
    • Made output path optional - defaults to metadata.csv or visuals.csv in the report folder

Documentation

  • CI/CD Guide
    • Added GitHub Actions workflow example alongside Azure DevOps
    • Made validation script platform-agnostic (auto-detects CI environment)
  • Examples Cleanup
    • Removed deprecated examples/example_usage.ipynb notebook as all examples are fully covered in the official documentation
    • Cleansed references to the notebook from README.md and documentation files

1.6.7 - December 21, 2025

Added

  • Project Identity
    • Added official project logo to README and Documentation.
    • Added ASCII art startup banner to CLI for better user experience.

Documentation

  • CI/CD Integration
    • Added new "CI/CD Integration" guide covering Azure DevOps pipeline setup
    • Added comprehensive validation script example with blocking rules configuration
    • Included strict validation strategy (fail build vs warn) guidance

1.6.6 - December 20, 2025

Performance

  • High-Impact Optimizations:
    • Bookmark Usage Check: Drastically improved speed of checking for unused bookmarks by scanning visuals in a single efficient pass.
    • Invalid Bookmark Cleanup: Significantly faster cleanup process by pre-loading valid visual data instead of repeated file checks.
    • Hidden Visuals Removal: Reduced file operations by 50% by merging duplicate scanning processes.
    • Metadata Extraction: Exponential speedup for large reports by optimizing how metadata expressions are matched and deduplicated.

Changed

  • CLI: All commands now consistently support auto-detection of report path when running from inside a .Report folder (batch-update and update-filters were updated)

Documentation

  • CLI Reference
    • Added comprehensive "Available Actions" table documenting all 22 sanitization actions with descriptions
    • Added "Default" column to action table showing which actions run by default vs. opt-in with --include
    • Added tips for config auto-discovery and report path auto-detection

1.6.5 - December 20, 2025

Performance

  • Remove Measures: Significantly improved performance for reports with many measures by pre-computing visual usage and dependency graphs in a single pass instead of walking the file system for each measure

Fixed

  • Sanitize Command: Now raises an error when --config path doesn't exist, instead of silently falling back to defaults
  • Visualize Command: Fixed crash when a page has no visuals (empty legend labels) and prevented duplicate startup messages

Removed

  • CLI: Removed the redundant --error-on-change option from all commands (functionality can be achieved by checking --dry-run output)

1.6.1 - December 13, 2025

Updated

  • Clear Filters
  • Added --summary option for concise count-based output
  • Improved slicer detection to match all slicer types

1.6.0 - December 13, 2025

Added

  • Set Display Option Command: New set-display-option CLI command and set_page_display_option() Python API to set page display options in Power BI reports.
  • Supports three display options: ActualSize, FitToPage, FitToWidth
  • Target specific pages by displayName or internal name
  • Apply to all pages when no filter specified
  • Sanitize actions: set_display_option_fit_to_page, set_display_option_fit_to_width, set_display_option_actual_size
  • Clear Filters Command: New clear-filters CLI command and clear_filters() Python API to inspect and clear filter conditions from Power BI reports.
  • Supports report, page, and visual level filters (including slicers)
  • Filter targeting with --page, --visual options
  • Field filtering with --table, --column, --field (supports wildcards like Date*, *Amount)
  • Dry-run mode (--dry-run) for inspecting filters without modifying files
  • Configurable via pbir-sanitizer.yaml for use in sanitization pipelines

1.5.7 - December 09, 2025

Performance

  • CLI Startup Optimization: Reduced --help command time from ~10 seconds to under 1 second (~15x faster) by implementing lazy imports for heavy dependencies and deferring module loading until commands are executed.

Fixed

  • Wireframe Visualizer Coordinate Parsing: Fixed TypeError and ValueError in display_report_wireframes caused by coordinates being stored as strings or with @@__PRESERVE_FLOAT__@@ prefixes.

1.5.6 - December 08, 2025

Fixed

  • Missing Log for Hide Pages Action: hide_pages_by_type now prints an info message when no pages of the specified type are found.

Changed

  • Refactor: Removed redundant wrapper functions hide_tooltip_pages, hide_drillthrough_pages, and hide_tooltip_drillthrough_pages. Use hide_pages_by_type directly or via YAML configuration.

1.5.5 - December 08, 2025

Fixed

  • Missing Log for Hide Pages Action: hide_pages_by_type now prints an info message when no pages of the specified type are found.

Changed

  • Refactor: Removed redundant wrapper functions hide_tooltip_pages, hide_drillthrough_pages, and hide_tooltip_drillthrough_pages. Use hide_pages_by_type directly or via YAML configuration.

1.5.4 - December 07, 2025

Fixed

  • Float Precision Loss During Sanitization
  • JSON round-trips now preserve high-precision floats (e.g., 268.57142857142861) to prevent spurious git diffs

1.5.3 - December 07, 2025

Fixed

  • Unknown Action Warning for Parameterized Actions
  • Relaxed get_available_actions to allow functions with required parameters