mirror of
https://github.com/MinaSaad1/pbi-cli
synced 2026-04-21 13:37:19 +00:00
- visual bind: remove legacy Commands/SemanticQueryDataShapeCommand block
(PBIR 2.7.0 uses additionalProperties:false -- Commands is a hard schema error)
- visual bind: add active:true to column (category/row/detail) projections
so Desktop treats the field as the active axis
- visual add: remove empty "objects:{}" from all 32 visual templates
(noisy and rejected by strict schema validators)
- visual add: write position coordinates as integers not floats
(Desktop normalises to int; 320.0 vs 320 caused inconsistency)
- report set-background: always write transparency:0 alongside color
(Desktop defaults missing transparency to 100 = fully invisible)
- report validate: drop false-positive layoutOptimization required error
(real Microsoft 3.2.0 schema does not require this field)
- all write commands: add --no-sync flag to report/visual/filters/bookmarks
groups to suppress per-command Desktop reload during scripted builds;
use pbi report reload for a single sync at the end
12 KiB
12 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[3.10.6] - 2026-04-07
Fixed
visual bindno longer writes the legacyCommandsblock (SemanticQueryDataShapeCommand) tovisual.json. PBIR 2.7.0 usesadditionalProperties: falseon the query object, so theCommandsfield is a hard schema violation. OnlyqueryStateprojections are now written.pbi report validateand the full PBIR validator no longer flag a missinglayoutOptimizationfield as an error. The real Microsoft schema does not list it as required; the previous check was against a stale internal schema.pbi report set-backgroundnow always writestransparency: 0alongside the color. Power BI Desktop defaults a missingtransparencyproperty to 100 (fully invisible), making the color silently unrendered. The new--transparencyflag (0-100, default 0) lets callers override for semi-transparent backgrounds.
Added
--no-syncflag onreport,visual,filters, andbookmarkscommand groups. Suppresses the per-command Desktop auto-sync for scripted multi-step builds. Usepbi report reloadfor a single explicit sync at the end of the script.
[3.10.5] - 2026-04-06
Fixed
- ASCII banner: replaced incorrect hand-crafted art with the official design from
assets/banner.svg. TheIin PBI is now correctly narrow, and a small███╗/╚══╝block serves as the visible-separator between PBI and CLI.
[3.10.4] - 2026-04-06
Added
- ASCII banner displayed in terminal when
pbiis invoked with no subcommand. Renders in Power BI yellow on color terminals, plain text fallback on legacy terminals without Unicode support. Skipped when--jsonflag is used.
[3.10.3] - 2026-04-05
Changed
- Claude Code integration is now fully opt-in.
pbi connectno longer writes to~/.claude/. Runpbi-cli skills installexplicitly to register skills with Claude Code. See SECURITY.md for full details. pbi-cliis now a dedicated management entry point (pbi-cli skills install/uninstall/list). Skills subcommands have been removed from thepbientry point.
Fixed
- DLL licensing: Microsoft Analysis Services client library DLLs bundled in
src/pbi_cli/dlls/are now correctly attributed under the Microsoft Software License Terms, not sublicensed under MIT. Full EULA text inTHIRD_PARTY_LICENSES.md. pyproject.tomlupdated to PEP 639 dual SPDX expression (MIT AND LicenseRef-Microsoft-AS-Client-Libraries) withlicense-filesdeclaration.- README.md and README.pypi.md updated to reflect the correct 3-step setup flow:
pipx install→pbi-cli skills install→pbi connect.
[3.10.0] - 2026-04-02
Added
- Split
power-bi-reportskill into 5 focused skills:power-bi-report(overview),power-bi-visuals,power-bi-pages,power-bi-themes,power-bi-filters(12 skills total) - CLAUDE.md snippet now organises skills by layer (Semantic Model vs Report Layer)
- Skill triggering test suite (19 prompts, 12 skills)
Fixed
filter_add_topninner subquery now correctly references category table when it differs from order-by tabletheme_setresourcePackages structure now matches Desktop format (flatitemsarray)visual_bindtype annotation corrected tolist[dict[str, Any]]tmdl_diffhierarchy changes reported ashierarchies_*instead of falling toother_*- Missing
VisualTypeErrorandReportNotFoundErrorclasses added toerrors.py report,visual,filters,format,bookmarkscommand groups registered in CLI
Changed
- README rewritten to cover both semantic model and report layers, 12 skills, 27 command groups, 32 visual types
[3.9.0] - 2026-04-01
Added
pbi database diff-tmdlcommand: compare two TMDL export folders offline, summarise changes (tables, measures, columns, relationships, model properties); lineageTag-only changes are stripped to avoid false positives
Fixed
filter_add_topninner subquery now correctly references the category table when it differs from the order-by table (cross-table TopN filters)theme_setresourcePackages structure now matches Desktop format (flatitems, not nestedresourcePackage)visual_bindtype annotation corrected fromlist[dict[str, str]]tolist[dict[str, Any]]tmdl_diffhierarchy changes now reported ashierarchies_*instead of falling through toother_*- Missing
VisualTypeErrorandReportNotFoundErrorerror classes added toerrors.py report,visual,filters,format,bookmarkscommand groups registered in CLI (were implemented but inaccessible)
[3.8.0] - 2026-04-01
Added
azureMapvisual type (Azure Maps) with Category and Size rolespageBindingfield surfaced inpage_get()for drillthrough pages
Fixed
cardandmultiRowCardqueryState role corrected fromFieldstoValues(matches Desktop)kpitemplate: addedTrendLinequeryState key (date/axis column for sparkline)gaugetemplate: addedMaxValuequeryState key (target/max measure)MaxValueadded toMEASURE_ROLES- kpi role aliases:
--trend,--trend_line - gauge role aliases:
--max,--max_value,--target
[3.7.0] - 2026-04-01
Added
page_type,filter_config, andvisual_interactionsfields in page read operations (page_get,page_list)
[3.6.0] - 2026-04-01
Added
imagevisual type (static images, no data binding)shapevisual type (decorative shapes)textboxvisual type (rich text)pageNavigatorvisual type (page navigation buttons)advancedSlicerVisualvisual type (tile/image slicer)
[3.5.0] - 2026-04-01
Added
clusteredColumnChartvisual type with aliasesclustered_columnclusteredBarChartvisual type with aliasesclustered_bartextSlicervisual type with aliastext_slicerlistSlicervisual type with aliaslist_slicer
[3.4.0] - 2026-03-31
Added
cardVisual(modern card) visual type withDatarole and aliasescard_visual,modern_cardactionButtonvisual type with aliasaction_button,buttonpbi report set-backgroundcommand to set page background colourpbi report set-visibilitycommand to hide/show pagespbi visual set-containercommand for border, background, and title on visual containers
Fixed
- Visual container schema URL updated from 1.5.0 to 2.7.0
visualGroupcontainers tagged as typegroupinvisual_list- Colour validation, KeyError guards, visibility surfacing, no-op detection
[3.0.0] - 2026-03-31
Added
- PBIR report layer:
pbi reportcommand group (create, info, validate, list-pages, add-page, delete-page, get-page, set-theme, get-theme, diff-theme, preview, reload, convert) - Visual CRUD:
pbi visualcommand group (add, get, list, update, delete, bind, where, bulk-bind, bulk-update, bulk-delete, calc-add, calc-list, calc-delete, set-container) - Filters:
pbi filterscommand group (list, add-categorical, add-topn, add-relative-date, remove, clear) - Formatting:
pbi formatcommand group (get, clear, background-gradient, background-conditional, background-measure) - Bookmarks:
pbi bookmarkscommand group (list, get, add, delete, set-visibility) - 20 visual type templates (barChart, lineChart, card, tableEx, pivotTable, slicer, kpi, gauge, donutChart, columnChart, areaChart, ribbonChart, waterfallChart, scatterChart, funnelChart, multiRowCard, treemap, cardNew, stackedBarChart, lineStackedColumnComboChart)
- HTML preview server (
pbi report preview) with live reload - Power BI Desktop reload trigger (
pbi report reload) - PBIR path auto-detection (walk-up from CWD,
.pbipsibling detection) power-bi-reportClaude Code skill (8th skill)- Visual data binding with
Table[Column]notation and role aliases - Visual calculations (calc-add, calc-list, calc-delete)
- Bulk operations for mass visual updates across pages
Changed
- Architecture: pbi-cli now covers both semantic model layer (via .NET TOM) and report layer (via PBIR JSON files)
[2.2.0] - 2026-03-27
Added
- Promotional SVG assets and redesigned README
[2.0.0] - 2026-03-27
Breaking
- Removed MCP server dependency entirely (no more
powerbi-modeling-mcpbinary) - Removed
connect-fabriccommand (future work) - Removed per-object TMDL export (
table export-tmdl,measure export-tmdl, etc.) -- usepbi database export-tmdl - Removed
model refreshcommand - Removed
security-role export-tmdl-- usepbi database export-tmdl
Added
- Direct pythonnet/.NET TOM interop (in-process, sub-second commands)
- Bundled Microsoft Analysis Services DLLs (~20MB, no external download needed)
- 2 new Claude Code skills: Diagnostics and Partitions & Expressions (7 total)
- New commands:
trace start/stop/fetch/export,transaction begin/commit/rollback,calendar list/mark,expression list/get/create/delete,partition list/create/delete/refresh,advanced culture list/get connections lastcommand to show last-used connectionpbi connectnow auto-installs skills (no separatepbi skills installneeded)
Changed
pbi setupnow verifies pythonnet + bundled DLLs (no longer downloads a binary)- Architecture: Click CLI -> tom_backend/adomd_backend -> pythonnet -> .NET TOM (in-process)
- All 7 skills updated to reflect v2 commands and architecture
- README rewritten for v2 architecture
Removed
- MCP client/server architecture
- Binary manager and auto-download from VS Code Marketplace
$PBI_MCP_BINARYenvironment variable~/.pbi-cli/bin/binary directory
[1.0.6] - 2026-03-26
Fixed
- Use server-assigned connection name for subsequent commands (fixes "connection not found" mismatch)
[1.0.5] - 2026-03-26
Fixed
- Auto-reconnect to saved connection on each command (each invocation starts a fresh MCP server)
[1.0.4] - 2026-03-26
Fixed
- Commands now auto-resolve last-used connection from store (no --connection flag needed)
[1.0.3] - 2026-03-26
Added
- Support Microsoft Store version of Power BI Desktop for port auto-discovery
Fixed
- UTF-16 LE encoding when reading Power BI port file
- Updated all 5 skills, error messages, and docs to reflect new install flow
[1.0.2] - 2026-03-26
Fixed
- Separate README for GitHub (Mermaid diagrams) and PyPI (text art)
[1.0.1] - 2026-03-26
Fixed
- README SVG header and diagrams now render correctly on PyPI
[1.0.0] - 2026-03-26
Added
- Auto-discovery of running Power BI Desktop instances (
pbi connectwithout-d) - Auto-setup on first connect: downloads MCP binary and installs Claude Code skills automatically
- 5 Claude Code skills: Modeling, DAX, Deployment, Security, Documentation
- Skill installer (
pbi skills install/list/uninstall) - Interactive REPL mode (
pbi repl) with persistent MCP connection, tab completion, command history - Error hierarchy (
PbiCliError,McpToolError,BinaryNotFoundError,ConnectionRequiredError) - 22 command groups covering all Power BI MCP tool operations
- Binary manager: download Power BI MCP binary from VS Code Marketplace
- Connection management with named connections and persistence
- DAX query execution, validation, and cache clearing
- Full CRUD for measures, tables, columns, relationships
- Model metadata, statistics, and refresh operations
- Database import/export (TMDL and TMSL formats)
- Security role management (row-level security)
- Calculation groups, partitions, perspectives, hierarchies
- Named expressions, calendar tables, diagnostic traces
- Transaction management (begin/commit/rollback)
- Advanced operations: cultures, translations, functions, query groups
- Dual output mode:
--jsonfor agents, Rich tables for humans - Named connection support with
--connection/-cflag - Binary resolution chain: env var, managed binary, VS Code extension fallback
- Cross-platform support: Windows, macOS, Linux (x64 and ARM64)
- CI/CD with GitHub Actions (lint, typecheck, test matrix)
- PyPI publishing via trusted OIDC publisher