@mohsinonxrm/pptb-commandbar-studio 0.5.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.
Files changed (127) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/LICENSE +661 -0
  3. package/README.md +316 -0
  4. package/dist/assets/BulkPublishModal-_JCQ9G-Z.js +29 -0
  5. package/dist/assets/CommandEditorPanel-BfdeUs_f.js +1 -0
  6. package/dist/assets/CommandPalette-D2Kh5NZ1.js +1 -0
  7. package/dist/assets/ConflictDrawer-BLiuWHeb.js +1 -0
  8. package/dist/assets/DiffViewer-BVDCd534.js +7 -0
  9. package/dist/assets/IconPickerModal-BAiIRU4A.js +1 -0
  10. package/dist/assets/ImportXmlModal-D-Ns-mYi.js +3 -0
  11. package/dist/assets/LocalizationEditor-C-TZ2Vqd.js +1 -0
  12. package/dist/assets/MonacoEditor-5dvTziHE.js +2 -0
  13. package/dist/assets/NewButtonModal-DOTUaBiJ.js +1 -0
  14. package/dist/assets/NewGroupModal-CXy9X9y5.js +1 -0
  15. package/dist/assets/NewTabModal-DiGzXYTp.js +1 -0
  16. package/dist/assets/RuleEditorPanel-DT_uPW8s.js +1 -0
  17. package/dist/assets/ScalingEditorPanel-BFnC7t_K.js +1 -0
  18. package/dist/assets/TabDisplayRulesPanel-CdKjedy-.js +1 -0
  19. package/dist/assets/UrlComposerModal-DFtXdVW3.js +1 -0
  20. package/dist/assets/WebResourceBrowser-FvaNo4rt.js +1 -0
  21. package/dist/assets/XmlDrawer-BXAxH3A8.js +2 -0
  22. package/dist/assets/abap-DLDM7-KI.js +1 -0
  23. package/dist/assets/apex-DNDY2TF8.js +1 -0
  24. package/dist/assets/azcli-Y6nb8tq_.js +1 -0
  25. package/dist/assets/bat-BwHxbl9M.js +1 -0
  26. package/dist/assets/bicep-CFznDFnq.js +2 -0
  27. package/dist/assets/cameligo-Bf6VGUru.js +1 -0
  28. package/dist/assets/clojure-Dnu-v4kV.js +1 -0
  29. package/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  30. package/dist/assets/coffee-Bd8akH9Z.js +1 -0
  31. package/dist/assets/cpp-BbWJElDN.js +1 -0
  32. package/dist/assets/csharp-Co3qMtFm.js +1 -0
  33. package/dist/assets/csp-D-4FJmMZ.js +1 -0
  34. package/dist/assets/css-DdJfP1eB.js +3 -0
  35. package/dist/assets/css.worker-DBVD8oXr.js +93 -0
  36. package/dist/assets/cssMode-DFSY9yCW.js +1 -0
  37. package/dist/assets/cypher-cTPe9QuQ.js +1 -0
  38. package/dist/assets/dart-BOtBlQCF.js +1 -0
  39. package/dist/assets/dnd-DHB99ZH7.js +5 -0
  40. package/dist/assets/dockerfile-BG73LgW2.js +1 -0
  41. package/dist/assets/ecl-BEgZUVRK.js +1 -0
  42. package/dist/assets/elixir-BkW5O-1t.js +1 -0
  43. package/dist/assets/flow9-BeJ5waoc.js +1 -0
  44. package/dist/assets/fluent-icons-DiKr_qRE.js +1 -0
  45. package/dist/assets/fluent-ui-kUA2U4Gr.js +43 -0
  46. package/dist/assets/freemarker2-B8bME0pA.js +3 -0
  47. package/dist/assets/fsharp-PahG7c26.js +1 -0
  48. package/dist/assets/go-acbASCJo.js +1 -0
  49. package/dist/assets/graphql-BxJiqAUM.js +1 -0
  50. package/dist/assets/handlebars-zIyCxTW6.js +1 -0
  51. package/dist/assets/hcl-DtV1sZF8.js +1 -0
  52. package/dist/assets/html-B5hFqu3X.js +1 -0
  53. package/dist/assets/html.worker-CwpTb9lJ.js +470 -0
  54. package/dist/assets/htmlMode-BmPxEBms.js +1 -0
  55. package/dist/assets/index-D9lerlVA.css +1 -0
  56. package/dist/assets/index-G361fmC5.js +6 -0
  57. package/dist/assets/ini-Kd9XrMLS.js +1 -0
  58. package/dist/assets/java-CXBNlu9o.js +1 -0
  59. package/dist/assets/javascript-BQGsYMat.js +1 -0
  60. package/dist/assets/json.worker-BoL8UZqY.js +58 -0
  61. package/dist/assets/jsonMode-CR0b-9Un.js +7 -0
  62. package/dist/assets/julia-cl7-CwDS.js +1 -0
  63. package/dist/assets/kotlin-s7OhZKlX.js +1 -0
  64. package/dist/assets/less-9HpZscsL.js +2 -0
  65. package/dist/assets/lexon-OrD6JF1K.js +1 -0
  66. package/dist/assets/liquid-DLq8jbP8.js +1 -0
  67. package/dist/assets/lspLanguageFeatures-C3buAG32.js +4 -0
  68. package/dist/assets/lua-Cyyb5UIc.js +1 -0
  69. package/dist/assets/m3-B8OfTtLu.js +1 -0
  70. package/dist/assets/markdown-BFxVWTOG.js +1 -0
  71. package/dist/assets/mdx-5ni22WXY.js +1 -0
  72. package/dist/assets/mips-CiqrrVzr.js +1 -0
  73. package/dist/assets/monaco-BLZnQb2P.js +918 -0
  74. package/dist/assets/monaco-Dvl_Svmm.css +1 -0
  75. package/dist/assets/msdax-DmeGPVcC.js +1 -0
  76. package/dist/assets/mysql-C_tMU-Nz.js +1 -0
  77. package/dist/assets/objective-c-BDtDVThU.js +1 -0
  78. package/dist/assets/pascal-vHIfCaH5.js +1 -0
  79. package/dist/assets/pascaligo-DtZ0uQbO.js +1 -0
  80. package/dist/assets/perl-Ub6l9XKa.js +1 -0
  81. package/dist/assets/pgsql-BlNEE0v7.js +1 -0
  82. package/dist/assets/php-BBUBE1dy.js +1 -0
  83. package/dist/assets/pla-DSh2-awV.js +1 -0
  84. package/dist/assets/postiats-CocnycG-.js +1 -0
  85. package/dist/assets/powerquery-tScXyioY.js +1 -0
  86. package/dist/assets/powershell-COWaemsV.js +1 -0
  87. package/dist/assets/protobuf-Brw8urJB.js +2 -0
  88. package/dist/assets/pug-8SOpv6rk.js +1 -0
  89. package/dist/assets/python-F20Pd69B.js +1 -0
  90. package/dist/assets/qsharp-Bw9ernYp.js +1 -0
  91. package/dist/assets/r-j7ic8hl3.js +1 -0
  92. package/dist/assets/razor-3xmsG6cc.js +1 -0
  93. package/dist/assets/redis-Bu5POkcn.js +1 -0
  94. package/dist/assets/redshift-Bs9aos_-.js +1 -0
  95. package/dist/assets/restructuredtext-CqXO7rUv.js +1 -0
  96. package/dist/assets/ruby-zBfavPgS.js +1 -0
  97. package/dist/assets/rust-BzKRNQWT.js +1 -0
  98. package/dist/assets/sb-BBc9UKZt.js +1 -0
  99. package/dist/assets/scala-D9hQfWCl.js +1 -0
  100. package/dist/assets/scheme-BPhDTwHR.js +1 -0
  101. package/dist/assets/scss-CBJaRo0y.js +3 -0
  102. package/dist/assets/server.browser-DfdiBs1P.js +11 -0
  103. package/dist/assets/shell-DiJ1NA_G.js +1 -0
  104. package/dist/assets/solidity-Db0IVjzk.js +1 -0
  105. package/dist/assets/sophia-CnS9iZB_.js +1 -0
  106. package/dist/assets/sparql-CJmd_6j2.js +1 -0
  107. package/dist/assets/sql-ClhHkBeG.js +1 -0
  108. package/dist/assets/st-CHwy0fLd.js +1 -0
  109. package/dist/assets/swift-CnmFD0ga.js +1 -0
  110. package/dist/assets/systemverilog-Bs9z6M-B.js +1 -0
  111. package/dist/assets/tcl-Dm6ycUr_.js +1 -0
  112. package/dist/assets/ts.worker-BH9nVgjN.js +67718 -0
  113. package/dist/assets/tsMode-Cyusk9p4.js +11 -0
  114. package/dist/assets/twig-Csy3S7wG.js +1 -0
  115. package/dist/assets/typescript-BXT-ECX3.js +1 -0
  116. package/dist/assets/typespec-Btyra-wh.js +1 -0
  117. package/dist/assets/vb-Db0cS2oM.js +1 -0
  118. package/dist/assets/webResourceService-Ck07E3GN.js +1 -0
  119. package/dist/assets/wgsl-BTesnYfV.js +298 -0
  120. package/dist/assets/xml-Cwzeco8o.js +1 -0
  121. package/dist/assets/xmlGenerator-DEaVrfZJ.js +130 -0
  122. package/dist/assets/yaml-BHUePD-R.js +1 -0
  123. package/dist/index.html +18 -0
  124. package/dist/stats.html +4949 -0
  125. package/index.html +12 -0
  126. package/npm-shrinkwrap.json +13252 -0
  127. package/package.json +104 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,99 @@
1
+ # Command Bar Studio β€” Changelog
2
+
3
+ All notable changes to Command Bar Studio will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ---
9
+
10
+ ## [0.5.0] - 2026-07-16
11
+
12
+ ### πŸŽ‰ First Beta Release
13
+
14
+ Command Bar Studio 0.5.0-beta β€” a fully featured visual designer for Dataverse
15
+ classic ribbon / command bar customizations, running inside Power Platform ToolBox.
16
+
17
+ #### ✨ Features
18
+
19
+ - **Visual ribbon canvas** β€” Classic (tabbed groups + large icon tiles), Modern
20
+ (flat command bar), and List (data grid) views for all 4 ribbon locations
21
+ (HomepageGrid, SubGrid, Form, Application)
22
+ - **Classic ribbon drag-and-drop** β€” Migrated from HTML5 native drag to **@dnd-kit**
23
+ with a styled `DragOverlay` ghost tile (brand border, box-shadow, `grabbing` cursor).
24
+ `DroppableSlot` zones between buttons show a 2 px animated drop-line indicator.
25
+ `DroppableGroupContainer` highlights the target group. `PointerSensor` with 5 px
26
+ activation constraint so ordinary clicks still select buttons. Keyboard sensor
27
+ retained for accessibility.
28
+ - **Properties pane** β€” Label/tooltip/icon/kind/sequence/templateAlias editing;
29
+ locale chip row; command binding; display/enable rule pills; scaling summary;
30
+ advanced section (form scope, OpenRecordItem override, client-type filter)
31
+ - **Command editor** β€” JavaScript (library Browse… to Web Resource Browser), URL (PassParams,
32
+ WinMode, named params), **Power Fx** (inline Monaco editor β€” syntax-highlighted,
33
+ word wrap, no line numbers β€” with variable hints and async-rule note), Custom API;
34
+ References tab with button breadcrumbs; Versions tab
35
+ - **Rule editor** β€” All 30 `RuleStep` kinds from `RibbonTypes.xsd`; drag-to-reorder;
36
+ OrRule nesting with nested β€œAdd step”; InvertResult + Default toggles;
37
+ plain-English `summarizeRule()` output
38
+ - **Localization editor** β€” Multi-LCID label / tooltip title / tooltip body;
39
+ 20 built-in LCIDs; line-break insertion (`​​`)
40
+ - **Icon picker** β€” Fluent icons (auto-uploaded as SVG web resource), web resource
41
+ browser, custom SVG upload
42
+ - **Scaling editor** β€” MaxSize / Scale step sequence management per MS docs
43
+ - **Tab display rules editor** β€” EntityRule (all 4 contexts) + PageRule
44
+ - **Web Resource Browser** β€” Virtualized; upload; edit JS/CSS/XML in Monaco;
45
+ callback registry so selection propagates back to caller (Image16/32, library field)
46
+ - **URL Action Composer** β€” PassParams table, CrmParameter querystring keys, live preview
47
+ - **XML Drawer** β€” Per-location RibbonDiffXml in Monaco; Format XML; CBS completions
48
+ - **Diff / Compare Viewer** β€” Monaco `DiffEditor` baseline comparison
49
+ - **Bulk Publish dialog** β€” Per-entity change counts; progress overlay; ribbonmetadatasettoprocess monitoring
50
+ - **Solution Conflict Drawer** β€” `msdyn_componentlayer` provenance; managed-solution
51
+ banner in properties pane auto-populated after ribbon load
52
+ - **Command Palette** (Ctrl+K) β€” buttons, commands, rules, entities, actions
53
+ - **Undo/Redo** β€” 80-entry history stack; `mutationsSincePublish` counter
54
+ - **localStorage persistence** β€” Auto-save + restore banner on startup
55
+
56
+ #### πŸ—οΈ Architecture
57
+
58
+ - **Delta-only `RibbonDiffXml`** β€” only changed elements emitted; system `Mscrm.*`
59
+ commands/rules never re-emitted; OOB commands with JS actions (e.g.
60
+ `Mscrm.OpenRecordItem`) correctly emitted as overrides
61
+ - **Correct `behavior=2` (shell-only)** entity root component β€” does not drag in
62
+ every attribute / form / view on import
63
+ - **ImportJobId required** β€” supplied to every `deploySolution` call; 5-minute poll
64
+ with progress beats
65
+ - **Post-publish observability** β€” `ribbonmetadatasettoprocess` polling after
66
+ `publishCustomizations()` surfaces silent ribbon-compile failures
67
+ - **Parser: all 30 rule kinds** β€” `EntityPrivilegeRule`, `RecordPrivilegeRule`,
68
+ `ShowOnGridRule`, `DeviceTypeRule`, `RelationshipTypeRule`, and 14 more;
69
+ previously these were silently dropped, risking security-rule corruption on republish
70
+ - **TabDisplayRules DOM scope** β€” read from document-level `RuleDefinitions > TabDisplayRules`,
71
+ not from inside `<Tab>` elements (parser bug that caused tab rules to always appear empty)
72
+ - **Group selector fixed** β€” `:scope > Groups > Group` (dropped rogue `, Group` clause
73
+ that matched groups inside `CustomAction > CommandUIDefinition`, creating phantom groups)
74
+ - **`getWebResourceContent` uses `api.retrieve`** instead of `queryData` with key
75
+ predicate β€” correct single-record fetch that works reliably with PPTB's `dataverseAPI`
76
+ - **Web resource browser callback registry** β€” module-level one-shot callback
77
+ so Image16/32 and Command Editor library-field Browse selections propagate correctly
78
+ (previously selecting a resource in the browser did nothing β€” the `onSelect` prop
79
+ was never wired through the global Layout overlay)
80
+ - **`@dnd-kit` DragOverlay** β€” ClassicRibbon button drag fully migrated from HTML5
81
+ native drag to `@dnd-kit` (`useDraggable`, `useDroppable`, `DragOverlay`)
82
+ - **`@pptb/types` 1.2.3** β€” latest Power Platform ToolBox host API types
83
+
84
+ #### πŸ§ͺ Tests
85
+
86
+ - **148 / 148 passing** across 8 Vitest suites
87
+ - `all-rule-kinds.xml` fixture β€” covers every `RuleStep` kind in a round-trip
88
+ parse β†’ generate β†’ re-parse test; regression guard for the 18 formerly-missing
89
+ parser kinds, TabDisplayRules DOM scope, and group selector
90
+
91
+ ---
92
+
93
+ ## [0.1.0] - 2025-01-01
94
+
95
+ ### Initial scaffold
96
+
97
+ - Project initialization with Vite + React 18 + TypeScript 5 + Fluent UI v9
98
+ - Shell layout, ribbon canvas stubs, Zustand stores, XML generator/parser scaffolding
99
+