@sabrish/power-platform-solution-blueprint 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,50 @@ All notable changes to Power Platform Solution Blueprint will be documented in t
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.0] - 2026-03-12
9
+
10
+ ### Added
11
+ - **Pipeline-first Cross-Entity Automation view** — switched from trace-first to pipeline-first layout; Create/Update/Delete/Manual pipelines shown per entity with inbound entry points as context; steps triggered by an inbound cross-entity write are marked with a `← inbound` badge (hover tooltip shows source automation and entity name)
12
+ - **External API call detection on flow steps** — connector names (non-Dataverse) shown as badges; external HTTP call URLs listed below each flow step; `⤷ External calls` badge on entity headers when any step makes external calls
13
+ - **Entities with external calls in default view** — entities that make external API calls but receive no cross-entity writes now appear in the default (filtered) view alongside cross-entity entities
14
+ - **"Default: entities with cross-entity writes or external API calls." filter note** — shown below the filter bar when the default filter is active
15
+
16
+ ### Changed
17
+ - **HTML export: entity headers** now show `⤷ External calls` badge alongside `→ cross-entity`; default filter includes `hasExternalInteraction` in addition to `hasCrossEntityOutput`
18
+ - **HTML export: step rows** now include external call badge, connector name badges, and external URL list
19
+ - **HTML export: Manual/On-Demand pipeline blocks** added to entity accordion bodies for entities with inbound cross-entity entry points
20
+ - **Markdown export: Pipeline Traces section** now includes entities with external calls (no inbound cross-entity writes); connector and external URL details added to flow step output
21
+ - **`gridTemplateColumns` token sweep** across all 20 list components — raw pixel values replaced with `tokens.spacingHorizontal*` equivalents
22
+ - **`htmlEscape` consolidation** — dual `escapeHtml`/`htmlEscape` methods unified into single `htmlEscape` with null guard; 139 callsites updated
23
+
24
+ ### Fixed
25
+ - **Flows using only Dataverse connectors incorrectly tagged as making external calls** — `hasExternalCalls` now only set when `externalCalls` array is non-empty; `shared_commondataservices*` and `dynamicscrm*` connector names filtered from `connectionReferences`
26
+ - **AUDIT-009: raw `<div>` empty states** replaced with `<EmptyState>` in `FieldSecurityProfilesView` and `PluginPackagesList`
27
+ - **AUDIT-011: missing `transition`** added to `profileRow` in `FieldSecurityProfilesView`
28
+ - **Rules of Hooks violation** in `SecurityRolesView` — `useMemo` moved above early-return guard
29
+ - **`useCallback` missing** on toggle handlers across 12 list components
30
+ - **`mergeClasses` replacing template-literal** className concatenation in `FieldSecurityProfilesView` and `GlobalChoicesList`
31
+ - **`onSelectAPI` prop** in `CustomAPIsList` now destructured and wired to row click handler
32
+ - **`FilterGroup` missing `hasActiveFilters`/`onClear`** in `GlobalChoicesList`
33
+ - **Inline `marginTop` style** moved to `makeStyles` in `ScopeSelector`
34
+
35
+ ---
36
+
37
+ ## [1.0.1] - 2026-03-11
38
+
39
+ ### Fixed
40
+ - **Custom API / Connection Reference / Custom Connector not discovered in solution-scoped mode** — `SolutionComponentDiscovery` now uses `queryAll()` with `@odata.nextLink` cursor-based pagination for `buildSolutionComponentMap` and for the objectid-intersection queries (Custom APIs, Connection References, Custom Connectors); previously only the first page of results was retrieved, silently dropping components in solutions with large component lists
41
+ - **Publishers missing when environment has only managed solutions** — `PublisherDiscovery` now derives publishers from the solutions list via `$expand` rather than querying the `publishers` table directly with `isreadonly eq false`; the `isreadonly` filter excluded publishers of managed solutions, causing the publisher filter and scope selector to show no entries for environments that import but do not develop solutions
42
+ - **`$skip` pagination error 0x80060888** — replaced `$skip`/`$top` offset pagination in `queryAll()` with `@odata.nextLink` cursor-based pagination; several Dataverse entity types (including `customapis`) return error `0x80060888 Skip Clause is not supported` when `$skip` is used; cursor pagination is universally supported and eliminates this class of failure
43
+ - **Intersection query failures aborting all component discovery** — each objectid-intersection query (Custom APIs, Connection References, Custom Connectors) is now isolated in its own `try/catch` per PATTERN-012; a failure for one component type no longer aborts discovery of the remaining types
44
+
45
+ ### Security
46
+ - **OData injection guards on entity logical name inputs** — `BusinessRuleDiscovery`, `SchemaDiscovery`, and `FieldSecurityProfileDiscovery` now validate entity logical names against `/^[a-z][a-z0-9_]*$/` before interpolating them into OData `$filter` strings; the guard is placed before any `try/catch` so a `TypeError` propagates cleanly to callers on invalid input
47
+ - **Workflow GUID normalisation before batching** — `BusinessRuleDiscovery.getBusinessRulesByIds` normalises and validates all workflow GUIDs before constructing batched OData queries, preventing malformed GUIDs from reaching the API
48
+ - **`FieldSecurityProfileDiscovery` refactored to structured `QueryOptions`** — replaced raw OData URL string construction with structured `QueryOptions`; eliminates a category of injection risk from manual string interpolation in field security profile queries
49
+
50
+ ---
51
+
8
52
  ## [1.0.0] - 2026-03-11
9
53
 
10
54
  ### Added
@@ -520,6 +564,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
520
564
  - **No Telemetry**: No usage data collected or transmitted
521
565
 
522
566
 
567
+ [1.1.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v1.0.1...v1.1.0
568
+ [1.0.1]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v1.0.0...v1.0.1
523
569
  [1.0.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v0.9.0...v1.0.0
524
570
  [0.9.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v0.8.0...v0.9.0
525
571
  [0.8.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v0.7.2...v0.8.0
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Complete architectural blueprints for your Power Platform solutions.
4
4
 
5
- ![Version](https://img.shields.io/badge/version-1.0.0-blue)
5
+ ![Version](https://img.shields.io/badge/version-1.1.0-blue)
6
6
  ![Status](https://img.shields.io/badge/status-stable-green)
7
7
 
8
8
  Generate comprehensive technical documentation for Dataverse and Power Platform solutions with automated discovery, analysis, and export capabilities.