Commit graph

148 commits

Author SHA1 Message Date
MinaSaad1
c39c049d6a chore: bump version to 3.4.0 2026-04-01 19:18:32 +02:00
MinaSaad1
24539335c5 feat: add visual_set_container and pbi visual set-container command
Implements Task 4: container-level property control for PBIR visuals.
visual_set_container() updates border/background show and title text in
visual.visualContainerObjects using immutable dict spreading. The CLI
command pbi visual set-container exposes all three options as optional
flags, leaving unspecified keys unchanged.
2026-04-01 19:16:17 +02:00
MinaSaad1
bd82712f64 feat: add page_set_visibility and pbi report set-visibility command
Implements Task 3: hidden pages write "visibility": "HiddenInViewMode"
to page.json; unhiding removes the key. Includes 4 tests covering hide,
show, idempotent-show, and missing-page error.
2026-04-01 19:11:10 +02:00
MinaSaad1
230b40ef61 feat: add page_set_background and pbi report set-background command
Implements immutable background-color writing into page.json objects dict,
preserving any existing object properties (e.g. outspace). Wires to the
`pbi report set-background <page_name> --color <hex>` CLI subcommand.
2026-04-01 18:47:25 +02:00
MinaSaad1
b783aa0f6b feat: add cardVisual and actionButton visual types (v3.4.0)
- Register cardVisual and actionButton in SUPPORTED_VISUAL_TYPES
- Add aliases: card_visual, modern_card -> cardVisual; action_button, button -> actionButton
- cardVisual template includes Data queryState role and sortDefinition (matches Desktop export)
- actionButton template omits query entirely and adds howCreated: InsertVisualButton
- Add Data to MEASURE_ROLES, update VISUAL_DATA_ROLES and ROLE_ALIASES accordingly
- Set default sizes from real Desktop export: cardVisual (217x87), actionButton (51x22)
- Add renderer colors and icons for both new types
- 4 new tests; all 398 tests pass, ruff clean
2026-04-01 18:40:03 +02:00
MinaSaad1
2f4bbdee6e fix: remove token cost image, add LinkedIn and Website badges 2026-03-27 18:27:49 +02:00
Mina Saad
8d7856be29
Remove token cost image from README
Removed token cost comparison image from README.
2026-03-27 18:23:52 +02:00
MinaSaad1
bde9b75c75 fix: correct spelling from "MODELLING" to "MODELING" in banner 2026-03-27 17:00:12 +02:00
MinaSaad1
f42d355e34 feat: v2.2.0 - add promotional SVG assets and redesign README
Add 12 new SVG graphics showcasing pbi-cli capabilities:
- banner, chat-demo, bulk-operations, dax-debugging
- backup-restore, model-health-check, rls-testing
- token-cost, before-after, skills-hub
- architecture-flow, feature-grid

Rewrite README to be image-driven, replacing verbose text sections
and mermaid diagrams with visual SVGs targeting Power BI developers.
2026-03-27 16:56:06 +02:00
MinaSaad1
bd5762bf6c chore: bump version to 2.1.1 2026-03-27 12:39:32 +02:00
MinaSaad1
e4fd958e13 feat: v2.1.0 - improve Claude skill triggering and CLAUDE.md auto-injection
- Update all 7 skill descriptions to be pushy with explicit trigger phrases
- Add DAX expression limitations section to power-bi-dax skill (VAR/RETURN workarounds)
- Add date/calendar table creation section to power-bi-modeling skill
- Add quick troubleshooting section to power-bi-diagnostics skill
- Auto-inject pbi-cli section into ~/.claude/CLAUDE.md on `pbi connect`
- Auto-remove pbi-cli section on `pbi skills uninstall`
- Extract claude_integration.py module to avoid circular imports
- Add 7 unit tests for CLAUDE.md snippet lifecycle
2026-03-27 12:00:41 +02:00
MinaSaad1
3f3fc7bdf1 fix: format remaining 6 files flagged by ruff format 2026-03-27 07:30:21 +02:00
MinaSaad1
58926221c2 fix: resolve CI failures (formatting, mypy, Windows-only tests)
- Run ruff format on all source files
- Fix mypy type: ignore comments for .NET imports (import-not-found)
- Add mypy overrides for pythonnet/clr/clr_loader (no type stubs)
- Fix trace_export return type (dict[str, Any] not dict[str, str])
- Restrict CI test matrix to Windows-only (Power BI Desktop requirement)
2026-03-27 07:28:44 +02:00
MinaSaad1
b777adec55 feat: v2.0.0 - replace MCP server with direct pythonnet/.NET TOM interop
Remove the MCP server binary dependency entirely. All 22 command groups now
connect directly to Power BI Desktop's Analysis Services engine via pythonnet
and bundled Microsoft.AnalysisServices DLLs (~20MB, in-process).

- Direct .NET TOM/ADOMD.NET interop for sub-second command execution
- 7 Claude Code skills (added Diagnostics and Partitions & Expressions)
- New commands: trace, transaction, calendar, expression, partition, advanced culture
- 91 tests passing, all skills updated, README/CHANGELOG rewritten
2026-03-27 07:19:21 +02:00
MinaSaad1
d9951aeecc fix: use server-assigned connection name instead of local name
The MCP server assigns connection names like "PBIDesktop-demo-57947"
but we were saving and reusing "localhost-57947", causing "connection
not found" errors on subsequent commands. Now _auto_reconnect extracts
the server-returned connectionName from the Connect response.
2026-03-26 23:03:23 +02:00
MinaSaad1
5f0361a682 chore: bump version to 1.0.5 2026-03-26 20:29:03 +02:00
MinaSaad1
fb5cea04d9 fix: auto-reconnect to saved connection on each command
Each non-REPL command starts a fresh MCP server process, so the
connection must be re-established. Commands now silently reconnect
using the saved connection info before running the actual tool call.
2026-03-26 20:28:45 +02:00
MinaSaad1
6411683632 chore: bump version to 1.0.4 2026-03-26 20:19:32 +02:00
MinaSaad1
084809c6d6 fix: resolve connectionName from store when no --connection flag
Commands now automatically use the last-used connection from
connections.json instead of requiring --connection or -c flag.
2026-03-26 20:17:42 +02:00
MinaSaad1
8632f901f6 chore: remove PyPI version badge 2026-03-26 20:03:07 +02:00
MinaSaad1
e19981d98c fix: apply ruff formatting to platform module and tests 2026-03-26 20:01:15 +02:00
MinaSaad1
dd4b0992a3 chore: bump version to 1.0.3 2026-03-26 19:59:32 +02:00
MinaSaad1
144222aa31 feat: support Microsoft Store PBI Desktop and update setup docs
- Add Store version path (~\Microsoft\Power BI Desktop Store App\)
  alongside MSI path for port auto-discovery
- Fix UTF-16 LE encoding when reading msmdsrv.port.txt
- Update all 5 skills to reflect new install flow (pipx + pbi connect)
- Update error messages, docstrings, and READMEs to mention pbi connect
  as the primary entry point instead of pbi setup
- Add tests for Store path discovery, encoding, and path candidates
2026-03-26 19:58:54 +02:00
MinaSaad1
453f31576e chore: bump version to 1.0.2 2026-03-26 19:30:51 +02:00
MinaSaad1
a3d2d5282a fix: separate README for GitHub (Mermaid) and PyPI (text art)
GitHub README.md uses Mermaid diagrams rendered natively.
PyPI README.pypi.md uses plain text diagrams for compatibility.
2026-03-26 19:29:35 +02:00
MinaSaad1
3398e03bbc chore: bump version to 1.0.1 for PyPI README fix 2026-03-26 16:55:21 +02:00
MinaSaad1
49c38dbb74 fix: make README render correctly on PyPI
Use absolute GitHub URL for SVG header and replace Mermaid diagrams
with plain text art since PyPI does not support either.
2026-03-26 16:53:39 +02:00
MinaSaad1
8f425b4dcb chore: bump version to 1.0.0 for stable release
- Update version in pyproject.toml and __init__.py (fixes prior mismatch)
- Change classifier from Alpha to Production/Stable
- Update SECURITY.md supported versions
- Consolidate CHANGELOG into single 1.0.0 release
2026-03-26 16:49:34 +02:00
MinaSaad1
bb1c225a20 test: add discover_pbi_port tests and fix binary_manager test isolation 2026-03-26 16:43:06 +02:00
MinaSaad1
6f0f1afa61 feat: auto-discover Power BI Desktop port, making -d optional on connect 2026-03-26 16:38:44 +02:00
MinaSaad1
62b2305909 fix: patch _ensure_ready in tests to prevent real downloads in CI 2026-03-26 16:31:34 +02:00
MinaSaad1
72f75f985c style: left-align README header, badges, and nav links 2026-03-26 16:27:57 +02:00
MinaSaad1
54157cd642 feat: auto-setup on first connect and fix connectionName MCP error
- Remove forbidden connectionName param from Connect/ConnectFabric requests
- Extract server-returned connectionName from response for local tracking
- Auto-download MCP binary if missing when running connect
- Auto-install Claude Code skills if missing when running connect
- Simplify README Get Started to two-command flow (pipx + connect)
2026-03-26 16:27:13 +02:00
MinaSaad1
a247d685ef docs: add Claude-assisted install option to Get Started section 2026-03-26 16:14:25 +02:00
MinaSaad1
b025124ba7 style: redesign header with figlet-style Unicode block art matching Claude Code aesthetic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 16:12:28 +02:00
MinaSaad1
f16160fd13 docs: add Windows PATH troubleshooting to Get Started section
pip installs to a user Scripts directory not on PATH by default,
causing "pbi is not recognized" errors. Added collapsible guide
with pipx and manual PATH fix options.
2026-03-26 16:03:31 +02:00
MinaSaad1
ec1d3a9609 style: redesign header as single-line PBI-CLI 3D block art matching Claude Code style 2026-03-26 15:23:52 +02:00
MinaSaad1
ad2431a1a7 style: redesign header SVG with 3D block pixel art in Power BI yellow 2026-03-26 15:15:44 +02:00
MinaSaad1
16819a15ff chore: bump version to 0.2.0 for release 2026-03-26 14:59:18 +02:00
MinaSaad1
ea726f8e48 style: apply ruff format to all source and test files 2026-03-26 14:55:44 +02:00
MinaSaad1
468b2a7214 docs: add CONTRIBUTING.md and SECURITY.md for GitHub repo tabs 2026-03-26 14:52:55 +02:00
MinaSaad1
11691c8d92 fix: resolve mypy and ruff CI errors across all source and test files
- Fix Traversable import with TYPE_CHECKING guard for Python 3.10-3.14 compat
- Add explicit dict[str, object] type annotations to all request dicts
- Fix unused variable and import warnings in connection.py and test files
- Break long lines to satisfy ruff E501 (100-char limit)
- Fix click.MultiCommand -> click.Group for mypy arg-type in repl.py
- Wrap binary_manager return in str() for mypy no-any-return
2026-03-26 14:51:35 +02:00
MinaSaad1
038e5b433c fix: CI workflow triggers on master branch, not main 2026-03-26 14:40:24 +02:00
MinaSaad1
015aaa1fa7 docs: restructure README around skills-first workflow
Skills section now sits right after Quick Start as the primary feature.
Each skill shows a plain-English prompt example with collapsible
behind-the-scenes commands. Removed heavy text, simplified architecture
and commands sections. Framed the whole project around the Claude Code
workflow: install, ask in English, Claude handles the rest.
2026-03-26 14:38:04 +02:00
MinaSaad1
e83bd70755 docs: redesign README with SVG header, mermaid diagrams, and visual hierarchy
- Custom SVG banner with animated terminal cursor
- Shield badges (PyPI, Python versions, CI, license)
- Mermaid architecture diagrams (data flow, REPL lifecycle, skills install)
- Organized command reference by category with collapsible extras
- ASCII token comparison chart
- AI Skills showcase section
- Simplified installation to 4 numbered steps
- Project structure and development sections
2026-03-26 14:16:28 +02:00
MinaSaad1
87b7a9cbe7 chore: rename PyPI package to pbi-cli-tool
The name pbi-cli was already taken on PyPI, and power-bi-cli was too
similar to the existing powerbi-cli package. The distribution name is
now pbi-cli-tool while the CLI command remains `pbi`.
2026-03-26 14:09:21 +02:00
MinaSaad1
51a23668a7 feat: add REPL mode, test suite, CI/CD, and Claude Skills (Sprints 6-8)
Sprint 6 - REPL Mode + Polish:
- Error hierarchy (PbiCliError, McpToolError, etc.) for clean REPL error handling
- Interactive REPL with prompt-toolkit (persistent MCP connection, command completion, history)
- REPL-aware run_tool() and connection commands that reuse shared client
- README.md and CHANGELOG.md

Sprint 7 - Tests + CI/CD:
- 120 tests across unit, command, and e2e test files (79% coverage)
- MockPbiMcpClient with canned responses for test isolation
- GitHub Actions CI (lint + typecheck + test matrix: 3 OS x 3 Python)
- GitHub Actions release workflow for PyPI trusted publishing

Sprint 8 - Claude Skills + Installer:
- 5 bundled SKILL.md files (modeling, dax, deployment, security, docs)
- `pbi skills install/list/uninstall` command for Claude Code discovery
- Skills packaged with wheel via setuptools package-data
2026-03-26 13:54:24 +02:00
MinaSaad1
170413cf22 feat: initial pbi-cli project with all 20+ command groups
Complete CLI framework for Power BI semantic models via MCP server:

- Core: MCP client (stdio via mcp SDK), binary manager (VSIX download),
  config, connection store, dual output (JSON + Rich)
- Commands: setup, connect, dax, measure, table, column, relationship,
  model, database, security-role, calc-group, partition, perspective,
  hierarchy, expression, calendar, trace, transaction, advanced
- Binary resolution: env var > managed > VS Code extension fallback
- Global --json flag for agent consumption
2026-03-26 13:05:53 +02:00