Commit graph

148 commits

Author SHA1 Message Date
MinaSaad1
be79eb94f3 fix: rebuild refresh icon with clean semicircular arcs 2026-04-02 17:07:25 +02:00
MinaSaad1
3f1f74f0f8 fix: enhance refresh icon in auto-sync SVG with cleaner arcs and larger arrows 2026-04-02 17:06:12 +02:00
MinaSaad1
ccdc9c618f feat: add 3 new report-layer SVGs (visual types grid, workflow, chat demo)
- 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
2026-04-02 17:05:21 +02:00
MinaSaad1
652428632a fix: move step card titles up in auto-sync SVG 2026-04-02 17:00:49 +02:00
MinaSaad1
fd574a46cd fix: move left card bullet points inside card border 2026-04-02 16:59:40 +02:00
MinaSaad1
8ae92a679d fix: narrow dual-layer cards from 390px to 340px to remove blank space 2026-04-02 16:58:46 +02:00
MinaSaad1
26d6fd645b fix: extend card height so skill badges sit inside the border 2026-04-02 16:57:29 +02:00
MinaSaad1
45303c68f2 fix: left-align commands and add spacing under skill badges 2026-04-02 16:56:43 +02:00
MinaSaad1
39516bb840 fix: increase card height and fix overlapping badges/footer in dual-layer SVG 2026-04-02 16:54:52 +02:00
MinaSaad1
f4130b45f4 fix: clean card headers in dual-layer SVG -- remove overlapping rects, use line separator 2026-04-02 16:53:12 +02:00
MinaSaad1
2636bd5aae fix: increase spacing between step badges and title labels in auto-sync SVG 2026-04-02 16:49:31 +02:00
MinaSaad1
32aad78e5d fix: redesign auto-sync SVG with centered equal-width cards and larger icons 2026-04-02 16:48:10 +02:00
MinaSaad1
9cfab6329d fix: redesign dual-layer SVG with header bars, larger icons, skill badges 2026-04-02 16:47:12 +02:00
MinaSaad1
b102d83af2 feat: add auto-sync workflow SVG showing the 4-step save-first pattern 2026-04-02 16:45:33 +02:00
MinaSaad1
2e85c4f15e fix: redesign report-layer SVG with large visual icons instead of heavy text 2026-04-02 16:43:31 +02:00
MinaSaad1
136f4d77f7 fix: redesign report-layer SVG as 2x2 grid to prevent text truncation 2026-04-02 16:39:04 +02:00
MinaSaad1
a788175862 fix: center text vertically in skills-hub card boxes 2026-04-02 16:36:52 +02:00
MinaSaad1
91293bdfd0 fix: reposition NEW badge in skills-hub SVG 2026-04-02 16:34:42 +02:00
MinaSaad1
06b86f488f fix: redesign skills-hub SVG with wider cards and better spacing 2026-04-02 16:32:52 +02:00
MinaSaad1
7a2797c839 fix: increase text sizes across all SVG assets for readability 2026-04-02 16:29:51 +02:00
MinaSaad1
6afc7d7a24 fix: banner SVG -- remove duplicate Modeling text, increase label font size 2026-04-02 16:28:18 +02:00
MinaSaad1
3a54f2d84c feat: new SVG assets and README for v3 dual-layer messaging
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.
2026-04-02 16:21:05 +02:00
MinaSaad1
22f75b1699 fix: use subprocess instead of os.startfile for cross-platform mypy compat 2026-04-02 16:03:09 +02:00
MinaSaad1
5acb3f33e3 fix: resolve CI failures (formatting, mypy, test import)
- 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
2026-04-02 15:59:49 +02:00
Mina Saad
3eb68c56d3
feat: v3.10.0 -- Report layer, 12 skills, Desktop auto-sync
feat: v3.10.0 -- Report layer, 12 skills, Desktop auto-sync
2026-04-02 15:51:30 +02:00
MinaSaad1
56ddacbfb1 chore: add missing v3 source and test files
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.
2026-04-02 15:37:19 +02:00
MinaSaad1
0bfacbbced fix: safe Desktop sync -- save first, then re-apply PBIR changes
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.
2026-04-02 15:33:58 +02:00
MinaSaad1
86ecaf6fc2 feat: auto-sync Desktop after report-layer writes
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
2026-04-02 15:24:16 +02:00
MinaSaad1
e757596945 fix: add --path option to bookmarks and format command groups
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.
2026-04-02 14:18:32 +02:00
MinaSaad1
f0504bcf51 feat: v3.10.0 -- audit fixes, 12 skills, README rewrite
- Fix 4 code bugs: TopN filter cross-table, theme_set corruption,
  visual_bind type annotation, tmdl_diff hierarchy pluralization
- Add missing VisualTypeError and ReportNotFoundError to errors.py
- Register 5 command groups in CLI (report, visual, filters, format, bookmarks)
- Split monolithic report skill into 5 focused skills (12 total):
  power-bi-report, power-bi-visuals, power-bi-pages, power-bi-themes,
  power-bi-filters
- Update CLAUDE.md snippet for 12 skills organised by layer
- Add diff-tmdl section to deployment skill
- Write CHANGELOG entries for v3.0.0 through v3.10.0
- Rewrite README.md and README.pypi.md for both model and report layers
- Add skill triggering test suite (19/19 passing)
- 488 tests passing, ruff clean
2026-04-02 00:07:52 +02:00
MinaSaad1
88cb644f64 feat: add pbi database diff-tmdl command (v3.9.0) 2026-04-01 22:31:51 +02:00
MinaSaad1
d5574d2e9a feat: add pbi database diff-tmdl command (v3.9.0)
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.
2026-04-01 22:27:57 +02:00
MinaSaad1
0afb44200c fix: update hardening test to use Values role for card (Fields -> Values fix) 2026-04-01 22:08:28 +02:00
MinaSaad1
090571ac09 chore: bump version to 3.8.0 2026-04-01 22:07:12 +02:00
MinaSaad1
e6085418b7 feat: surface pageBinding in page_get for drillthrough pages (v3.8.0)
Adds page_binding key to the page_get() return dict using data.get("pageBinding"),
returning None for regular pages and the full binding dict for drillthrough pages.
Two new tests in TestPageGet cover both the None and present cases.
2026-04-01 22:05:59 +02:00
MinaSaad1
ff295578ae feat: add azureMap visual type (v3.8.0)
Register azureMap in SUPPORTED_VISUAL_TYPES and VISUAL_TYPE_ALIASES
(azure_map, map), add Category+Size data roles and role aliases, default
size 500x400, renderer color/icon, and template. All 4 new tests pass.
2026-04-01 22:03:08 +02:00
MinaSaad1
bd7e3cd50a test: add bind integration tests for kpi TrendLine and gauge MaxValue roles 2026-04-01 21:59:58 +02:00
MinaSaad1
9f2a7b044e fix: add TrendLine to kpi and MaxValue to gauge queryState roles
Confirmed from Sales_Report.Report Desktop export: kpi visuals have a
third queryState key TrendLine (date/axis column for the sparkline), and
gauge visuals have a second queryState key MaxValue (a measure role).

- kpi.json template: add TrendLine projection slot
- gauge.json template: add MaxValue projection slot
- VISUAL_DATA_ROLES: updated kpi and gauge role lists
- ROLE_ALIASES: added trend_line/trend aliases for kpi, max/max_value/target for gauge
- MEASURE_ROLES: added MaxValue (TrendLine binds to Column, not Measure)
- tests: 6 new tests covering template structure and alias resolution
2026-04-01 21:52:50 +02:00
MinaSaad1
628a5fb758 fix: strengthen card/multiRowCard test assertions, comment Fields in MEASURE_ROLES
- Add isinstance(qs["Values"], dict) assertion to card and multiRowCard tests
- Add inline comment on "Fields" in MEASURE_ROLES clarifying it is used by cardNew only
2026-04-01 21:50:36 +02:00
MinaSaad1
407ce11ff6 fix: correct card and multiRowCard queryState role from Fields to Values
Real Power BI Desktop PBIR exports use "Values" as the queryState role key
for card and multiRowCard visuals. The previous "Fields" key was silently
ignored by Desktop, causing visual_bind to write bindings that had no effect.
Updated templates, VISUAL_DATA_ROLES, and ROLE_ALIASES accordingly. Added
two regression tests to lock in the correct role name.
2026-04-01 21:47:22 +02:00
MinaSaad1
d03b3cbcf8 chore: bump version to 3.7.0 2026-04-01 21:22:31 +02:00
MinaSaad1
8b0958eb10 feat: surface page_type, filter_config, visual_interactions in page read ops (v3.7.0) 2026-04-01 21:22:31 +02:00
MinaSaad1
65fd883489 chore: bump version to 3.6.0 2026-04-01 21:03:02 +02:00
MinaSaad1
316fafa675 feat: add advancedSlicerVisual (tile/image slicer) visual type (v3.6.0)
Registers advancedSlicerVisual with aliases advanced_slicer, adv_slicer,
and tile_slicer. Includes template with Values queryState, data roles,
role aliases, default size (280x280), renderer color/icon, and tests.
2026-04-01 21:02:24 +02:00
MinaSaad1
ba44ff814c feat: add image, shape, textbox, pageNavigator visual types (v3.6.0) 2026-04-01 21:00:25 +02:00
MinaSaad1
ff67b8a1fa chore: bump version to 3.5.0 2026-04-01 20:45:34 +02:00
MinaSaad1
8362335866 feat: add clusteredColumnChart, clusteredBarChart, textSlicer, listSlicer (v3.5.0) 2026-04-01 20:45:16 +02:00
MinaSaad1
489e8b2dbb fix: tag visualGroup containers as type group in visual_list
visual_list now detects visual.json files with a top-level "visualGroup"
key (real Power BI group containers) and returns visual_type "group"
instead of "unknown" for them.
2026-04-01 20:42:19 +02:00
MinaSaad1
eb75d5a198 fix: update visual container schema URL from 1.5.0 to 2.7.0
Update SCHEMA_VISUAL_CONTAINER constant and all 22 visual template JSON
files to use visualContainer/2.7.0/schema.json instead of 1.5.0.
2026-04-01 20:42:12 +02:00
MinaSaad1
a8272926f3 fix: address review issues -- validate color, guard KeyError, surface visibility, detect no-op, fix -g shorthand
- Guard missing 'visual' key in visual_set_container with PbiCliError
- Detect no-op in visual_set_container when no args are provided
- Remove -g shorthand from set-container --page option
- Add is_hidden field to page_list and page_get return dicts
- Validate hex color format in page_set_background before writing
- Add tests for all new validation and behaviour
2026-04-01 19:25:33 +02:00