## Claude Code integration now fully opt-in (Fix 3)
- `pbi connect` no longer writes to ~/.claude/ automatically
- New `pbi-cli` entry point: `pbi-cli skills install/uninstall/list`
- `pbi-cli skills install` shows exact paths before writing and requires y/N confirmation
- `pbi connect` prints a one-line tip if skills are not yet installed
- `pbi skills` subgroup removed from the `pbi` entry point
## DLL licensing compliance (Fix 1)
- pyproject.toml updated to PEP 639 SPDX dual expression:
MIT AND LicenseRef-Microsoft-AS-Client-Libraries
- license-files declaration: LICENSE, THIRD_PARTY_LICENSES.md, NOTICE
- THIRD_PARTY_LICENSES.md: full verbatim MS Analysis Services Client Libraries EULA
- NOTICE: short-form attribution for wheel redistribution
- src/pbi_cli/dlls/README.md: in-directory sentinel for the MS DLLs
- setuptools requirement bumped to >=77.0 for PEP 639 support
## SECURITY.md rewrite (Fix 2)
- Supported versions table updated to 3.10.x
- Architecture section: no MCP server, no subprocess, direct pythonnet interop
- Global Configuration Modifications section updated to reflect opt-in model
- Bundled Binaries section references THIRD_PARTY_LICENSES.md
## Documentation
- README.md, README.pypi.md: corrected 3-step setup flow
- CHANGELOG.md: [3.10.3] entry
- CONTRIBUTING.md: pbi skills -> pbi-cli skills
- All 7 semantic model SKILL.md files: prerequisites updated to 3-step flow
- New SVG/PNG marketing and documentation assets
AI-generated ad-quality PNG for v3.10.1 release showing the evolution
from Vibe Modeling to VIBE BI with Claude Code, PBI-CLI, and Power BI
flow, stats, install CTA, and project URLs.
Print success message for skills and CLAUDE.md injection before
auto-discovery, so users see what succeeded even if Power BI Desktop
is not running. Bump version to 3.10.1.
Add 4 new SVG assets (layers, commands, stats, workflow) with drawn
icons, block art, and dark GitHub theme. Enhance banner and before-after
with visual redesigns. Update README to reference layers.svg and stats.svg.
- visual-types.svg: grid of 18 visual types with mini icons across 3 rows
(charts, cards/KPIs/tables, slicers/maps/decorative) + list of 14 more
- report-workflow.svg: 6-step flow (scaffold, pages, visuals, bind, theme, validate)
- chat-demo-report.svg: Claude chat example showing report commands in action
New SVGs:
- dual-layer.svg: hero graphic showing both Modeling + Report layers
- report-layer.svg: 4-column showcase of Visuals, Pages, Themes, Filters
Updated SVGs:
- banner.svg: "The First CLI for Both Power BI Modeling and Reporting"
- skills-hub.svg: 12 skills in two rows (7 modeling + 5 report) with stats bar
- architecture-flow.svg: dual-path showing TOM + PBIR backends
- before-after.svg: added report-layer pain points and solutions
README updated to feature new graphics.
- Run ruff format on all 26 unformatted files
- Fix mypy strict errors: add explicit typing for json.loads returns,
add pywin32/websockets to mypy ignore_missing_imports
- Remove yaml dependency from test_skill_triggering.py (use regex parser)
- Fix skill triggering test to handle both single-line and multi-line
description formats in YAML frontmatter
19 files from earlier v3 sessions were created on disk but never
staged/committed: 11 source modules (backends, preview, templates,
utils) and 8 test files (488 tests depend on these).
Without these files the package would be broken on install.
Found during pre-publish review.
Redesigned desktop_sync to use save-first-then-rewrite pattern:
1. Snapshot recently modified PBIR files (our changes)
2. Close Desktop WITH save (preserves user's unsaved modeling work)
3. Re-apply our PBIR snapshots (Desktop's save overwrote them)
4. Reopen Desktop
This is safe for users who have unsaved modeling-layer changes
(measures, relationships, etc.) in Desktop -- those are preserved
by the save step. Our report-layer changes survive via the snapshot
re-apply.
Power BI Desktop does not auto-detect PBIR file changes. When pbi-cli
writes to report JSON files while Desktop has the .pbip open, Desktop's
in-memory state overwrites CLI changes on save.
New desktop_sync module: after any report-layer write command (add visual,
set filter, apply theme, etc.), pbi-cli automatically closes Desktop
(dismissing the save dialog) and reopens the .pbip file so Desktop loads
the updated state.
Also fixes:
- Add --path option to bookmarks and format command groups
- Fix categorical filter literal types (integers use "L" suffix, not
string quotes) so filters work correctly in Desktop
Both groups were missing the --path/-p option that report, visual, and
filters already had, making them only work when CWD was inside the
.Report folder. Now all report-layer command groups consistently
support explicit path override.
Found during E2E testing with Power BI Desktop.
Pure-Python TMDL folder diff for CI/CD model change reporting.
No Power BI Desktop connection required. Handles direct and
SemanticModel folder layouts, strips lineageTags to avoid false
positives, and keys relationships by fromColumn->toColumn instead
of GUIDs. 18 tests covering all diff scenarios.