@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.
- package/CHANGELOG.md +99 -0
- package/LICENSE +661 -0
- package/README.md +316 -0
- package/dist/assets/BulkPublishModal-_JCQ9G-Z.js +29 -0
- package/dist/assets/CommandEditorPanel-BfdeUs_f.js +1 -0
- package/dist/assets/CommandPalette-D2Kh5NZ1.js +1 -0
- package/dist/assets/ConflictDrawer-BLiuWHeb.js +1 -0
- package/dist/assets/DiffViewer-BVDCd534.js +7 -0
- package/dist/assets/IconPickerModal-BAiIRU4A.js +1 -0
- package/dist/assets/ImportXmlModal-D-Ns-mYi.js +3 -0
- package/dist/assets/LocalizationEditor-C-TZ2Vqd.js +1 -0
- package/dist/assets/MonacoEditor-5dvTziHE.js +2 -0
- package/dist/assets/NewButtonModal-DOTUaBiJ.js +1 -0
- package/dist/assets/NewGroupModal-CXy9X9y5.js +1 -0
- package/dist/assets/NewTabModal-DiGzXYTp.js +1 -0
- package/dist/assets/RuleEditorPanel-DT_uPW8s.js +1 -0
- package/dist/assets/ScalingEditorPanel-BFnC7t_K.js +1 -0
- package/dist/assets/TabDisplayRulesPanel-CdKjedy-.js +1 -0
- package/dist/assets/UrlComposerModal-DFtXdVW3.js +1 -0
- package/dist/assets/WebResourceBrowser-FvaNo4rt.js +1 -0
- package/dist/assets/XmlDrawer-BXAxH3A8.js +2 -0
- package/dist/assets/abap-DLDM7-KI.js +1 -0
- package/dist/assets/apex-DNDY2TF8.js +1 -0
- package/dist/assets/azcli-Y6nb8tq_.js +1 -0
- package/dist/assets/bat-BwHxbl9M.js +1 -0
- package/dist/assets/bicep-CFznDFnq.js +2 -0
- package/dist/assets/cameligo-Bf6VGUru.js +1 -0
- package/dist/assets/clojure-Dnu-v4kV.js +1 -0
- package/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/dist/assets/coffee-Bd8akH9Z.js +1 -0
- package/dist/assets/cpp-BbWJElDN.js +1 -0
- package/dist/assets/csharp-Co3qMtFm.js +1 -0
- package/dist/assets/csp-D-4FJmMZ.js +1 -0
- package/dist/assets/css-DdJfP1eB.js +3 -0
- package/dist/assets/css.worker-DBVD8oXr.js +93 -0
- package/dist/assets/cssMode-DFSY9yCW.js +1 -0
- package/dist/assets/cypher-cTPe9QuQ.js +1 -0
- package/dist/assets/dart-BOtBlQCF.js +1 -0
- package/dist/assets/dnd-DHB99ZH7.js +5 -0
- package/dist/assets/dockerfile-BG73LgW2.js +1 -0
- package/dist/assets/ecl-BEgZUVRK.js +1 -0
- package/dist/assets/elixir-BkW5O-1t.js +1 -0
- package/dist/assets/flow9-BeJ5waoc.js +1 -0
- package/dist/assets/fluent-icons-DiKr_qRE.js +1 -0
- package/dist/assets/fluent-ui-kUA2U4Gr.js +43 -0
- package/dist/assets/freemarker2-B8bME0pA.js +3 -0
- package/dist/assets/fsharp-PahG7c26.js +1 -0
- package/dist/assets/go-acbASCJo.js +1 -0
- package/dist/assets/graphql-BxJiqAUM.js +1 -0
- package/dist/assets/handlebars-zIyCxTW6.js +1 -0
- package/dist/assets/hcl-DtV1sZF8.js +1 -0
- package/dist/assets/html-B5hFqu3X.js +1 -0
- package/dist/assets/html.worker-CwpTb9lJ.js +470 -0
- package/dist/assets/htmlMode-BmPxEBms.js +1 -0
- package/dist/assets/index-D9lerlVA.css +1 -0
- package/dist/assets/index-G361fmC5.js +6 -0
- package/dist/assets/ini-Kd9XrMLS.js +1 -0
- package/dist/assets/java-CXBNlu9o.js +1 -0
- package/dist/assets/javascript-BQGsYMat.js +1 -0
- package/dist/assets/json.worker-BoL8UZqY.js +58 -0
- package/dist/assets/jsonMode-CR0b-9Un.js +7 -0
- package/dist/assets/julia-cl7-CwDS.js +1 -0
- package/dist/assets/kotlin-s7OhZKlX.js +1 -0
- package/dist/assets/less-9HpZscsL.js +2 -0
- package/dist/assets/lexon-OrD6JF1K.js +1 -0
- package/dist/assets/liquid-DLq8jbP8.js +1 -0
- package/dist/assets/lspLanguageFeatures-C3buAG32.js +4 -0
- package/dist/assets/lua-Cyyb5UIc.js +1 -0
- package/dist/assets/m3-B8OfTtLu.js +1 -0
- package/dist/assets/markdown-BFxVWTOG.js +1 -0
- package/dist/assets/mdx-5ni22WXY.js +1 -0
- package/dist/assets/mips-CiqrrVzr.js +1 -0
- package/dist/assets/monaco-BLZnQb2P.js +918 -0
- package/dist/assets/monaco-Dvl_Svmm.css +1 -0
- package/dist/assets/msdax-DmeGPVcC.js +1 -0
- package/dist/assets/mysql-C_tMU-Nz.js +1 -0
- package/dist/assets/objective-c-BDtDVThU.js +1 -0
- package/dist/assets/pascal-vHIfCaH5.js +1 -0
- package/dist/assets/pascaligo-DtZ0uQbO.js +1 -0
- package/dist/assets/perl-Ub6l9XKa.js +1 -0
- package/dist/assets/pgsql-BlNEE0v7.js +1 -0
- package/dist/assets/php-BBUBE1dy.js +1 -0
- package/dist/assets/pla-DSh2-awV.js +1 -0
- package/dist/assets/postiats-CocnycG-.js +1 -0
- package/dist/assets/powerquery-tScXyioY.js +1 -0
- package/dist/assets/powershell-COWaemsV.js +1 -0
- package/dist/assets/protobuf-Brw8urJB.js +2 -0
- package/dist/assets/pug-8SOpv6rk.js +1 -0
- package/dist/assets/python-F20Pd69B.js +1 -0
- package/dist/assets/qsharp-Bw9ernYp.js +1 -0
- package/dist/assets/r-j7ic8hl3.js +1 -0
- package/dist/assets/razor-3xmsG6cc.js +1 -0
- package/dist/assets/redis-Bu5POkcn.js +1 -0
- package/dist/assets/redshift-Bs9aos_-.js +1 -0
- package/dist/assets/restructuredtext-CqXO7rUv.js +1 -0
- package/dist/assets/ruby-zBfavPgS.js +1 -0
- package/dist/assets/rust-BzKRNQWT.js +1 -0
- package/dist/assets/sb-BBc9UKZt.js +1 -0
- package/dist/assets/scala-D9hQfWCl.js +1 -0
- package/dist/assets/scheme-BPhDTwHR.js +1 -0
- package/dist/assets/scss-CBJaRo0y.js +3 -0
- package/dist/assets/server.browser-DfdiBs1P.js +11 -0
- package/dist/assets/shell-DiJ1NA_G.js +1 -0
- package/dist/assets/solidity-Db0IVjzk.js +1 -0
- package/dist/assets/sophia-CnS9iZB_.js +1 -0
- package/dist/assets/sparql-CJmd_6j2.js +1 -0
- package/dist/assets/sql-ClhHkBeG.js +1 -0
- package/dist/assets/st-CHwy0fLd.js +1 -0
- package/dist/assets/swift-CnmFD0ga.js +1 -0
- package/dist/assets/systemverilog-Bs9z6M-B.js +1 -0
- package/dist/assets/tcl-Dm6ycUr_.js +1 -0
- package/dist/assets/ts.worker-BH9nVgjN.js +67718 -0
- package/dist/assets/tsMode-Cyusk9p4.js +11 -0
- package/dist/assets/twig-Csy3S7wG.js +1 -0
- package/dist/assets/typescript-BXT-ECX3.js +1 -0
- package/dist/assets/typespec-Btyra-wh.js +1 -0
- package/dist/assets/vb-Db0cS2oM.js +1 -0
- package/dist/assets/webResourceService-Ck07E3GN.js +1 -0
- package/dist/assets/wgsl-BTesnYfV.js +298 -0
- package/dist/assets/xml-Cwzeco8o.js +1 -0
- package/dist/assets/xmlGenerator-DEaVrfZJ.js +130 -0
- package/dist/assets/yaml-BHUePD-R.js +1 -0
- package/dist/index.html +18 -0
- package/dist/stats.html +4949 -0
- package/index.html +12 -0
- package/npm-shrinkwrap.json +13252 -0
- 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
|
+
|