@sabrish/power-platform-solution-blueprint 1.0.1 → 1.1.1

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,58 @@ 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.1] - 2026-03-17
9
+
10
+ ### Added
11
+ - **Conditional debug logger** (`src/core/utils/debugLogger.ts`) — lightweight `debugLog(tag, msg, data?)` utility active only in dev server, `http:` origins, or when `localStorage.setItem('ppsb-debug', 'true')` is set; completely silent in production PPTB Desktop installs under `pptb-webview://`
12
+ - **Debug logging for flow scope labelling** — `[PPSB:flow-scope]` diagnostic logs added to `CrossEntityAnalyzer.ts` to surface real-world data for flows appearing as "Solution Flow (unscoped)"; opt-in via `ppsb-debug` localStorage flag
13
+ - **Debug logging for flow parse and discovery** — `[PPSB:flow-parse]` and `[PPSB:flow-discovery]` logs in `FlowDefinitionParser.ts` and `FlowDiscovery.ts`; aid diagnosis of trigger-entity resolution edge cases
14
+
15
+ ### Fixed
16
+ - **Business rules: full IF/THEN/ELSE structure** — `BusinessRuleParser` rewritten to produce `conditionGroups: ConditionGroup[]` (IF/ELSE IF blocks) and `elseActions: Action[]`; `BusinessRulesList` now renders IF / ELSE IF / THEN / ELSE labels correctly; HTML and Markdown exports updated to reflect full rule structure
17
+ - **Business rules: conditionCount in HTML and Markdown reporters** — was reading a stale flat `conditions` array; now correctly derived from `conditionGroups.reduce((sum, g) => sum + g.conditions.length, 0)`
18
+ - **Custom APIs row click conflict** — `onSelectAPI` removed from row `onClick`; clicking a row now only toggles expansion; the select action is no longer triggered on every expand
19
+ - **Environment Variables eye icon layout shift** — added dedicated 32 px grid column for the visibility toggle so the grid no longer reflows when the icon is clicked
20
+ - **CDS Default Solution filter** — `ScopeSelector` predicates extended to include `solution.friendlyname === 'Default Solution'` and `solution.friendlyname === 'CDS Default Solution'` alongside the existing `ismanaged === true` guard
21
+ - **HTML cross-entity export structure** — `HtmlTemplates.ts` updated to use pipeline-first layout (automation nodes at top level, entity children with `← inbound` badges) matching the v1.1.0 UI redesign
22
+ - **Missing `JSX.Element` return types** — explicit return type annotations added to `ResultsDashboard` and `BusinessRulesList` `renderRuleDetails` inner function
23
+
24
+ ### Changed
25
+ - **DRY/SOLID refactoring — shared utilities** — extracted `normalizeGuid`/`normalizeBatch` (`guid.ts`), `extractOwnershipMetadata` (`metadata.ts`), `resolveEntityName` (`entityName.ts`), `buildOrFilter` (`odata.ts`), and `calculateComplexityScore` (`complexity.ts`) from inline duplication across 80+ call-sites
26
+ - **DRY/SOLID refactoring — shared hooks** — `useExpandable` hook extracted; `IDiscoverer<T>` interface implemented on 11 discovery classes; all processors in `src/core/generators/processors/` call `discoverByIds()` via the interface
27
+ - **DRY/SOLID refactoring — component extraction** — `CrossEntityAutomation/` sub-components extracted from `CrossEntityAutomationView.tsx`; `ERDView/` utilities (constants, stylesheet, export, traversal) extracted
28
+
29
+ ---
30
+
31
+ ## [1.1.0] - 2026-03-12
32
+
33
+ ### Added
34
+ - **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)
35
+ - **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
36
+ - **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
37
+ - **"Default: entities with cross-entity writes or external API calls." filter note** — shown below the filter bar when the default filter is active
38
+
39
+ ### Changed
40
+ - **HTML export: entity headers** now show `⤷ External calls` badge alongside `→ cross-entity`; default filter includes `hasExternalInteraction` in addition to `hasCrossEntityOutput`
41
+ - **HTML export: step rows** now include external call badge, connector name badges, and external URL list
42
+ - **HTML export: Manual/On-Demand pipeline blocks** added to entity accordion bodies for entities with inbound cross-entity entry points
43
+ - **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
44
+ - **`gridTemplateColumns` token sweep** across all 20 list components — raw pixel values replaced with `tokens.spacingHorizontal*` equivalents
45
+ - **`htmlEscape` consolidation** — dual `escapeHtml`/`htmlEscape` methods unified into single `htmlEscape` with null guard; 139 callsites updated
46
+
47
+ ### Fixed
48
+ - **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`
49
+ - **AUDIT-009: raw `<div>` empty states** replaced with `<EmptyState>` in `FieldSecurityProfilesView` and `PluginPackagesList`
50
+ - **AUDIT-011: missing `transition`** added to `profileRow` in `FieldSecurityProfilesView`
51
+ - **Rules of Hooks violation** in `SecurityRolesView` — `useMemo` moved above early-return guard
52
+ - **`useCallback` missing** on toggle handlers across 12 list components
53
+ - **`mergeClasses` replacing template-literal** className concatenation in `FieldSecurityProfilesView` and `GlobalChoicesList`
54
+ - **`onSelectAPI` prop** in `CustomAPIsList` now destructured and wired to row click handler
55
+ - **`FilterGroup` missing `hasActiveFilters`/`onClear`** in `GlobalChoicesList`
56
+ - **Inline `marginTop` style** moved to `makeStyles` in `ScopeSelector`
57
+
58
+ ---
59
+
8
60
  ## [1.0.1] - 2026-03-11
9
61
 
10
62
  ### Fixed
@@ -535,6 +587,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
535
587
  - **No Telemetry**: No usage data collected or transmitted
536
588
 
537
589
 
590
+ [1.1.1]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v1.1.0...v1.1.1
591
+ [1.1.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v1.0.1...v1.1.0
538
592
  [1.0.1]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v1.0.0...v1.0.1
539
593
  [1.0.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v0.9.0...v1.0.0
540
594
  [0.9.0]: https://github.com/sabrish/power-platform-solution-blueprint/compare/v0.8.0...v0.9.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.1-blue)
5
+ ![Version](https://img.shields.io/badge/version-1.1.1-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.