@mohsinonxrm/pptb-commandbar-studio 0.8.0 → 0.9.0-beta.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 +472 -0
- package/README.md +71 -48
- package/dist/assets/BulkPublishModal-DzDZJg0U.js +36 -0
- package/dist/assets/CommandEditorPanel-DsCP9yG4.js +1 -0
- package/dist/assets/CommandPalette-ID3kRJ9l.js +1 -0
- package/dist/assets/CompareView-DGsrcdoN.js +7 -0
- package/dist/assets/CrmParameterEditor-C22QGWff.js +1 -0
- package/dist/assets/EditorDrawer-CvCe9WeO.js +2 -0
- package/dist/assets/HideInsteadOfDeleteModal-3j9g-E9l.js +1 -0
- package/dist/assets/IconPickerModal-BLoDLbLR.js +1 -0
- package/dist/assets/ImportXmlModal-BD-L1QzJ.js +1 -0
- package/dist/assets/{MonacoEditor-uzfuRCpJ.js → MonacoEditor-BMKRZv-g.js} +1 -1
- package/dist/assets/NewButtonModal-COYXwEyk.js +1 -0
- package/dist/assets/NewGroupModal-boP_t1fI.js +1 -0
- package/dist/assets/NewTabModal-BI4afbC5.js +1 -0
- package/dist/assets/RuleEditorPanel-l8QnRFj6.js +1 -0
- package/dist/assets/ScriptView-BVyCmRvD.js +1 -0
- package/dist/assets/TabDisplayRulesPanel-gORq6MO7.js +1 -0
- package/dist/assets/TranslationsView-DubBATog.js +1 -0
- package/dist/assets/WebResourceBrowser-BATScmTw.js +1 -0
- package/dist/assets/XmlView-Bn4KlTw3.js +2 -0
- package/dist/assets/dnd-C1w9VFfC.js +5 -0
- package/dist/assets/fluent-icons-CQEhzzaC.js +1 -0
- package/dist/assets/fluent-ui-BEjALNLO.js +59 -0
- package/dist/assets/index-6so8O90C.js +136 -0
- package/dist/assets/index-D5GCH8nj.css +1 -0
- package/dist/assets/ruleKinds-BKTUiZ1-.js +1 -0
- package/dist/assets/useReplaceWebResourceConfirm-DND-V0vw.js +1 -0
- package/dist/assets/useStableKeys-BkDn7til.js +1 -0
- package/dist/assets/{xmlValidator-BkeotXuB.js → xmlValidator-PbODaIQV.js} +1 -1
- package/dist/icons/icon.svg +7 -4
- package/dist/index.html +15 -9
- package/index.html +10 -4
- package/package.json +1 -1
- package/dist/assets/BulkPublishModal-mJ41AWew.js +0 -36
- package/dist/assets/CommandEditorPanel-BiP1kPHY.js +0 -1
- package/dist/assets/CommandPalette-q51_0qRZ.js +0 -1
- package/dist/assets/ConflictDrawer-CdWv_PbN.js +0 -1
- package/dist/assets/DiffViewer-BQP5f73U.js +0 -7
- package/dist/assets/HideInsteadOfDeleteModal-C9r6ah5p.js +0 -1
- package/dist/assets/IconPickerModal-B81Tnf5i.js +0 -1
- package/dist/assets/ImportXmlModal-C0cMaS59.js +0 -1
- package/dist/assets/LocalizationEditor-DniDtrZV.js +0 -1
- package/dist/assets/NewButtonModal-BXpX1Ld5.js +0 -1
- package/dist/assets/NewGroupModal-Bh7lXq52.js +0 -1
- package/dist/assets/NewTabModal-Pntdk3in.js +0 -1
- package/dist/assets/RuleEditorPanel-BUGKgc0N.js +0 -1
- package/dist/assets/ScalingEditorPanel-p3-Yw3CO.js +0 -1
- package/dist/assets/TabDisplayRulesPanel-CSNshwaw.js +0 -1
- package/dist/assets/UrlComposerModal-WKSTwUcW.js +0 -1
- package/dist/assets/WebResourceBrowser-BK-gVU2g.js +0 -1
- package/dist/assets/XmlDrawer-CQJElnD1.js +0 -2
- package/dist/assets/dnd-Cq8OftAq.js +0 -5
- package/dist/assets/fluent-icons-BqJj6rDi.js +0 -1
- package/dist/assets/fluent-ui-QADO660t.js +0 -43
- package/dist/assets/index-D9lerlVA.css +0 -1
- package/dist/assets/index-Di2_5czx.js +0 -136
- package/dist/assets/ruleKinds-B9hACGaq.js +0 -1
- package/dist/assets/useReplaceWebResourceConfirm-BUWBVNSC.js +0 -1
- package/dist/assets/useStableKeys-p2OkzZWO.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,478 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.9.0-beta.1] - 2026-11-01
|
|
13
|
+
|
|
14
|
+
The first beta of 0.9.0 (npm `beta`): the UX overhaul in Fluent 2, and Edit mode.
|
|
15
|
+
- **Edit mode:** a Structure tree of tabs, groups and buttons; group cards you can reorder;
|
|
16
|
+
"How users see it", a preview of the command bar; a Solution tab; a table picker in the top
|
|
17
|
+
bar; and a List view that fits and sorts.
|
|
18
|
+
- **One editor drawer** for commands, rules, scripts, XML, Compare and Translations, with Done and
|
|
19
|
+
one Undo step per drawer.
|
|
20
|
+
- **Properties:** sections by kind, read-only for buttons that aren't yours until you customise
|
|
21
|
+
them, with texts shown as the canvas shows them.
|
|
22
|
+
- **The publish dialog** says what will publish and why Publish is blocked.
|
|
23
|
+
- **Every dialog** uses one shell and opens on the right control.
|
|
24
|
+
- **A screen-based visual pass** at 1024 and 1920 px, in light and dark.
|
|
25
|
+
|
|
26
|
+
It includes everything in 0.8.0. Requires Power Platform ToolBox 1.2.7 or later, as 0.8 does.
|
|
27
|
+
|
|
28
|
+
### 🏗️ Technical
|
|
29
|
+
|
|
30
|
+
- **Formatting is enforced (#118, item 1).** The codebase is formatted with Prettier once, in its
|
|
31
|
+
own commit (146 files: line wrapping, indentation, trailing commas and parentheses; no behaviour
|
|
32
|
+
change). CI now runs `npm run format:check` after lint, so unformatted code fails the build.
|
|
33
|
+
This comes first in the UI/UX work (#193), so later diffs show only real changes.
|
|
34
|
+
- **Shared Fluent UI components (#190).** These are the pieces the UI/UX issues build on, so each
|
|
35
|
+
surface looks and behaves the same:
|
|
36
|
+
- `AppDialog`: one dialog shell in three widths (440 / 600 / 960 px). Only the content scrolls,
|
|
37
|
+
so the actions never leave the dialog. A close button, and `DangerButton` for destructive
|
|
38
|
+
actions.
|
|
39
|
+
- `PropertySection`: collapsible properties sections with one heading style. The open sections
|
|
40
|
+
are remembered.
|
|
41
|
+
- `IdField`: a long id shown read-only and truncated, with the full id in a tooltip and a copy
|
|
42
|
+
button.
|
|
43
|
+
- `LocationInfo`: "About this location", with an explanation of each ribbon location in Unified
|
|
44
|
+
Interface terms. It replaces permanent banners (#181).
|
|
45
|
+
- `MessageSlot`: one message bar at a time with "+n more". Dismissing is remembered until the
|
|
46
|
+
message changes.
|
|
47
|
+
- `RuleTag`: a bound rule, named by the part of its id that tells rules apart instead of
|
|
48
|
+
"EnableRule". Click to open, ✕ to unbind.
|
|
49
|
+
- **Lint guard:** components can't add raw `button`/`input`/`select`/`textarea`/`table`
|
|
50
|
+
elements, or text in an extra-small Badge. The files that still do are listed in
|
|
51
|
+
`eslint.config.js` and come off the list as their issues are fixed.
|
|
52
|
+
|
|
53
|
+
### 🔧 Changed
|
|
54
|
+
|
|
55
|
+
- **The top bar fits PPTB's widths (#179).** At about 1000–1200 px, the old top bar and sub-header
|
|
56
|
+
wrapped "Publish All" onto two lines. They also pushed View as, XML and Tab rules off-screen or
|
|
57
|
+
under the Properties pane. Now:
|
|
58
|
+
- **One top bar** replaces the sub-header row (36 px more for the canvas). It holds the
|
|
59
|
+
environment, solution, search, undo/redo, an **XML** menu (View XML, Import XML…, Compare with
|
|
60
|
+
published), **Open in Dynamics 365**, a **View** menu (Properties docked / floating / hidden,
|
|
61
|
+
the bottom panel) and Help.
|
|
62
|
+
- **Narrow windows:** tools that don't fit move into a **⋯** menu. **Publish** is never hidden.
|
|
63
|
+
- **Publish** says what it does ("Publish 2 changes"). With nothing to publish it's disabled,
|
|
64
|
+
and its tooltip says why.
|
|
65
|
+
- **Solution button:** shows just the solution's name. A warning icon appears when new ids would
|
|
66
|
+
use the org's default publisher prefix. The prefix, with an explanation, is in the picker.
|
|
67
|
+
- **Environment:** below 1200 px it shows just its type badge. The full URL is in a tooltip
|
|
68
|
+
you can reach with the keyboard.
|
|
69
|
+
- **Tool-wide messages** (connection changed, draft couldn't be saved) sit under the top bar
|
|
70
|
+
and push the panes down. They used to cover the left pane's tabs and the Properties header.
|
|
71
|
+
- **Below 1200 px wide,** the left pane becomes a rail that opens it as a drawer. Properties
|
|
72
|
+
opens as a drawer when you select something; the canvas stays usable behind it, so picking
|
|
73
|
+
another button updates it. At 1024 px the canvas went from about a third of the width to
|
|
74
|
+
nearly all of it.
|
|
75
|
+
- **The bottom panel starts collapsed** (new installs) and opens when you choose one of its
|
|
76
|
+
tabs.
|
|
77
|
+
- **The rows above the canvas fit and work from the keyboard (#180).** The location row was
|
|
78
|
+
hand-rolled tabs that the keyboard couldn't reach. The ribbon tab strip stacked each tab's label,
|
|
79
|
+
its full id and a delete button into 32 px, and pushed Add tab and Tab rules off-screen.
|
|
80
|
+
- **Locations use Unified Interface names:** Main grid · Main form · Sub-grid · Application. They
|
|
81
|
+
form a Fluent tab list (arrow keys, Enter) with a **More** menu when they don't fit.
|
|
82
|
+
- **About this location (ⓘ)** explains each location and shows its ribbon id.
|
|
83
|
+
- **App and View are compact menus** instead of 170 px drop-downs. The canvas's own XML button is
|
|
84
|
+
gone: the top bar's XML menu is the one entry point.
|
|
85
|
+
- **Ribbon tabs show their label only.** The id is in a tooltip. Double-click or F2 still renames.
|
|
86
|
+
**Tab options (⋯)** holds Rename…, Tab display rules…, **Move left / Move right** (the keyboard
|
|
87
|
+
way to reorder; dragging still works), and Delete tab….
|
|
88
|
+
- **Add tab and Tab rules** (with its rule count) stay reachable however many tabs there are.
|
|
89
|
+
When a rename isn't allowed, the reason is announced to screen readers.
|
|
90
|
+
- **Fewer, readable messages (#181).** Up to five permanent banners used to stack above the
|
|
91
|
+
canvas, and two or three more above a built-in button's properties. The long ones were clipped
|
|
92
|
+
to one line.
|
|
93
|
+
- **Gone from the canvas:** the Form, Sub-grid and Application notes are now in **About this
|
|
94
|
+
location**. A custom tab's Unified Interface note is behind an info button in the tab strip.
|
|
95
|
+
- **One message at a time, with "+n more":** things you need to act on share a single slot.
|
|
96
|
+
These are the unread-layer warning (with Retry), the Charts-tab warning, and the orphans
|
|
97
|
+
message (with Show). Dismissing the orphans message is remembered until their number changes.
|
|
98
|
+
- **Properties shows one notice for a button that isn't yours** (out of the box, managed, or
|
|
99
|
+
customized by several solutions). It comes with Customise button, Create override and View
|
|
100
|
+
solution layers. A modern command that replaces the button is the second notice.
|
|
101
|
+
- **Explanations became info buttons or hints:**
|
|
102
|
+
- "Disabled buttons are hidden in Unified Interface" in the rules sections;
|
|
103
|
+
- "enable rules allow fewer step types" in the rule editor;
|
|
104
|
+
- the ampersand note on a URL action's address.
|
|
105
|
+
- **Removed:** the developer note about "Monaco editing … integration path", and the "Your own
|
|
106
|
+
command." bar (its badge says it).
|
|
107
|
+
- **Clear empty, loading and error states (#195).**
|
|
108
|
+
- **Before a solution is chosen,** the canvas offered "This tab has no groups yet · Add
|
|
109
|
+
first group". Now it says **Choose a solution to start**, and its button opens the solution
|
|
110
|
+
picker.
|
|
111
|
+
- **With a solution but no table:** **Pick a table**. Choose table opens the tables drawer in
|
|
112
|
+
a narrow window, or puts you in the table search otherwise.
|
|
113
|
+
- **Loading** shows a progress bar, a skeleton in the shape of the canvas, and a status line
|
|
114
|
+
with the table and step.
|
|
115
|
+
- **A failed load** is a titled error with a plain-language cause (for example "Your
|
|
116
|
+
connection may have expired." for a 401) and Retry. The raw details are in a collapsible
|
|
117
|
+
section with Copy details.
|
|
118
|
+
- **Compare with nothing changed** says "No changes since the last publish", with **Show the
|
|
119
|
+
full XML anyway**, instead of a diff of identical XML.
|
|
120
|
+
- **Publish with nothing to publish** is disabled with a reason (see the top bar above).
|
|
121
|
+
- **Confirmation dialogs** use the shared dialog shell: 440 px wide, with the confirm button
|
|
122
|
+
red when it deletes or discards something.
|
|
123
|
+
- **Badges fit their text (#182).** Fluent's extra-small badge is a 10 px dot, so "NEW",
|
|
124
|
+
"Modern (migrated)", "Hidden by modern", control kinds and app names spilled over their
|
|
125
|
+
neighbours. Text badges are now the small size and never shrink below their text. On the
|
|
126
|
+
Modern command bar, buttons keep their full label and the row scrolls instead of squeezing
|
|
127
|
+
them. Your own Classic tiles are marked with a labelled dot ("Yours: added by your
|
|
128
|
+
customizations") instead of "NEW" text over the label.
|
|
129
|
+
- **One button menu everywhere (#182).** Right-clicking a button on the Classic or Modern canvas
|
|
130
|
+
opens the same menu with the same items in the same order:
|
|
131
|
+
- Edit properties, Change icon, Edit labels;
|
|
132
|
+
- Hide or Show, Create override, Customise;
|
|
133
|
+
- Duplicate, **Move to ▸** (a submenu of groups, not one item per group);
|
|
134
|
+
- **Delete…** last, in red, and it asks first.
|
|
135
|
+
|
|
136
|
+
It opens at the button, so Shift+F10 and the Menu key work too; it used to open at the top
|
|
137
|
+
left from the keyboard. Notes such as "Microsoft's global command bar buttons can't be
|
|
138
|
+
changed" are headings in the menu, not greyed-out items.
|
|
139
|
+
|
|
140
|
+
- **Properties says what is selected (#184).** A header stays at the top while you scroll: the
|
|
141
|
+
button's icon and label, whose it is (**Yours**, **Out of the box** or **Managed · solution**)
|
|
142
|
+
and its kind. Its close button clears the selection when docked, or closes the drawer in a
|
|
143
|
+
narrow window (where it replaces the drawer's own). The fields are in collapsible sections
|
|
144
|
+
that remember what you opened:
|
|
145
|
+
- **Appearance:** label, translations, tooltips, icon, Visible, and the **Button ID**;
|
|
146
|
+
- **Position:** the group and the order, with a hint;
|
|
147
|
+
- **Command:** the **Command ID** with **Edit command**;
|
|
148
|
+
- **Display rules** and **Enable rules**, with a count;
|
|
149
|
+
- **Scaling:** the tab it applies to, by name. A note says Unified Interface ignores it,
|
|
150
|
+
instead of a warning box on every button.
|
|
151
|
+
- **Advanced:** kind (now "Split button", not `splitButton`), template alias with a hint, and
|
|
152
|
+
the rest.
|
|
153
|
+
|
|
154
|
+
Both ids are read-only with a copy button and the full id in a tooltip. The doubled padding,
|
|
155
|
+
dividers and left border are gone.
|
|
156
|
+
- **Show on, rules and binding in Properties (#184).**
|
|
157
|
+
- **Show on** (in Appearance) is one choice, All clients / Unified Interface only / Classic web
|
|
158
|
+
client only, instead of three badges that each added a filter. It shows what the command's
|
|
159
|
+
display rules already say, or **Custom** when they don't match one choice. It names the other
|
|
160
|
+
buttons that use the same command, since they change too. On Microsoft's commands it's
|
|
161
|
+
read-only: customise the command first. Choosing Unified Interface only also removes
|
|
162
|
+
`Mscrm.HideOnModern` from your command, which together with it would hide the button
|
|
163
|
+
everywhere.
|
|
164
|
+
- **Bound rules** are tags: the name opens the rule, ✕ unbinds it. They work from the keyboard;
|
|
165
|
+
the old pills didn't.
|
|
166
|
+
- **Binding a rule or a command** uses a list you can filter by typing, instead of a long
|
|
167
|
+
drop-down. **Bind** stays disabled until you pick one.
|
|
168
|
+
- **Properties on Microsoft's buttons is read-only (#184).** Their Label, tooltips, order,
|
|
169
|
+
template alias, languages, icon and images can't be edited directly, and the fields now say so
|
|
170
|
+
("Customise this button, or create an override, to edit these fields.") instead of looking
|
|
171
|
+
editable. Your own buttons, and Microsoft's once customised or overridden, stay editable.
|
|
172
|
+
Also in Properties:
|
|
173
|
+
- The languages of a button's text are keyboard-reachable tags, and its Image16/32 are links.
|
|
174
|
+
Before, they were click-only badges and raw buttons.
|
|
175
|
+
- "ModernImage (auto)" is now **Modern image**, with a hint saying what it is.
|
|
176
|
+
- The record-open override (OpenRecordItem) and the form note explain themselves behind an
|
|
177
|
+
info button, instead of about 110 words of small text, internal XML paths and an issue
|
|
178
|
+
number. The raw "Tab:" id line is gone.
|
|
179
|
+
- Deleting an orphaned customization you published recently asks in a dialog with a red
|
|
180
|
+
**Delete anyway**, instead of a second inline button.
|
|
181
|
+
- The Hidden, Orphaned and read-only lists use one heading style.
|
|
182
|
+
- **Clearer dialogs (#187).**
|
|
183
|
+
- **Hiding a button that isn't yours** offers two plain choices:
|
|
184
|
+
- **Hide this button only:** you can show it again under Hidden by customizations.
|
|
185
|
+
- **Hide it with display rules on its command:** easy to undo, but it hides every button
|
|
186
|
+
that uses the command, and the dialog names them. A button on another location says
|
|
187
|
+
where, e.g. "Edit (main form)", in this dialog and under Show on.
|
|
188
|
+
|
|
189
|
+
Display rules are the default only when no other button uses the command. Before, the
|
|
190
|
+
permanent HideCustomAction was the default, and the text was full of jargon.
|
|
191
|
+
- **Discard** in the unpublished-changes and restore-draft dialogs is red and says **Discard
|
|
192
|
+
changes**; **Restore changes** says what it does.
|
|
193
|
+
- **New group** offers the platform's group templates, as Change template does. The made-up
|
|
194
|
+
"Layout3" is gone.
|
|
195
|
+
- **New tab** has one hint instead of two info bars. The id it will get is read-only with a
|
|
196
|
+
copy button, and the location is named in the title ("New tab on the home grid") instead of
|
|
197
|
+
"Location: HomepageGrid".
|
|
198
|
+
- New button, Rename group, Change template, New group, New tab and the two
|
|
199
|
+
unpublished-changes dialogs all use the shared dialog shell. Their actions never leave the
|
|
200
|
+
dialog, and titles are in sentence case. The dialogs' extra entrance animation is removed.
|
|
201
|
+
- **The publish dialog says what it publishes first (#188).**
|
|
202
|
+
- **One row per change**, in words, with a badge (New, Change, Move, Show, Hide, Delete):
|
|
203
|
+
"Add **Credit Check** to the main grid and main form", "Hide **Edit** on the main grid".
|
|
204
|
+
- **Same count everywhere:** the top bar's **Publish n changes** and the dialog's primary
|
|
205
|
+
button count these rows, not edits. Five edits of one label are one change.
|
|
206
|
+
- **When Publish is blocked, it says why**, above the changes: no solution, changes that can't
|
|
207
|
+
be published yet, problems the check found, nothing to publish, or publishing everything
|
|
208
|
+
without its confirmation. Problems opens by itself.
|
|
209
|
+
- **Folded away until needed:** Problems, Warnings, Good to know, and Options. Options holds
|
|
210
|
+
what else to publish, the solution version (the switch now comes before the field) and the
|
|
211
|
+
comment. "PublishAllXmlAsync" is no longer shown.
|
|
212
|
+
- **View XML** shows the complete RibbonDiffXml each import writes (your layer with the
|
|
213
|
+
changes merged in) inside the dialog. Going back keeps the comment and the confirmation;
|
|
214
|
+
before, it closed the dialog.
|
|
215
|
+
- **Progress in words** ("Publishing…", "Done", "Failed"). Afterwards it says "Published 2
|
|
216
|
+
changes to CBS Ribbon Test", and that Unified Interface can take up to about 25 minutes to
|
|
217
|
+
show it (Command Checker's **Regenerate ribbon metadata** shows it sooner).
|
|
218
|
+
- The title names what publishes ("Publish CBS Ribbon Test") instead of "Publish to Dataverse",
|
|
219
|
+
and the dialog uses the shared dialog shell.
|
|
220
|
+
- **One editor drawer (#186, part 1).** The command and rule editors are views of one drawer
|
|
221
|
+
instead of drawers stacked on drawers.
|
|
222
|
+
- **A rule opened from the command editor** replaces the view, with a **Back** button to the
|
|
223
|
+
command and a trail ("Edit command › Edit enable rule"). One backdrop, never two.
|
|
224
|
+
- **The header says what you're editing** ("Edit command", "Edit display rule"), with the id
|
|
225
|
+
read-only and a copy button. A command also shows whose it is: Yours, Your copy, or
|
|
226
|
+
Read-only.
|
|
227
|
+
- **One Done button**, with "Changes apply as you edit · Ctrl Z to undo". Closing it any way is
|
|
228
|
+
safe: changes already apply as you make them.
|
|
229
|
+
- **One undo step per drawer:** everything changed between opening the drawer and Done is
|
|
230
|
+
undone with a single Ctrl Z.
|
|
231
|
+
- The drawer's body is the only thing that scrolls; the editors' own padded scroll areas are
|
|
232
|
+
gone.
|
|
233
|
+
- **The command editor, redone (#186, part 2).**
|
|
234
|
+
- **Its tabs sit in the drawer's header**, so they never scroll away: Actions, Enable rules (n),
|
|
235
|
+
Display rules (n) and Used by (n). The tab you're on is kept while you look at a rule.
|
|
236
|
+
- **Out-of-the-box commands are read-only until you customise them.** Before, editing one
|
|
237
|
+
customised it without asking. The fields look read-only, one line says why, and
|
|
238
|
+
**Customise command** is next to it. Viewing the script and opening a rule still work.
|
|
239
|
+
- **One Add action menu** (Run JavaScript, Open a URL) instead of a dropdown and two buttons.
|
|
240
|
+
- **Each action is a card** with a drag handle, Move up / Move down in its ⋮ menu, and Remove.
|
|
241
|
+
- **View script / Edit script** open the script inside the drawer, filling its height, with
|
|
242
|
+
Back to the command. Edit script saves straight to Dataverse, and says so. The "Monaco"
|
|
243
|
+
wording and the "integration path" note are gone.
|
|
244
|
+
- **Pass parameters** is a labelled switch instead of a button reading "✓ PassParams ON".
|
|
245
|
+
- **Plain labels and hints:** Library, Function ("The function's full name, including its
|
|
246
|
+
namespace."), Parameters, in order; the address error is a field message.
|
|
247
|
+
- **Rename** is a pencil next to your own command's id, with the error under the field.
|
|
248
|
+
Settings and Versions are gone (History in the bottom panel covers the second).
|
|
249
|
+
- **Used by** names each button and where it is ("Main grid › Main › Management").
|
|
250
|
+
- **Rules are tags:** open one with a click, unbind it with its ×. **New enable rule** now also
|
|
251
|
+
adds the rule to the command.
|
|
252
|
+
- **Rules, tab display rules and scaling (#186, part 3).**
|
|
253
|
+
- **The editor drawer is 720 px wide for every view**, so it doesn't change width when you open a
|
|
254
|
+
rule from a command and go back. A rule's nested Or steps no longer scroll sideways: parameter
|
|
255
|
+
rows shrink and wrap instead of sizing themselves to their longest option.
|
|
256
|
+
- **The rule view** says "Passes when every step below is true." Steps are numbered, with a
|
|
257
|
+
drag handle and Move up / Move down in a ⋮ menu (the "Drag" text button is gone). The header
|
|
258
|
+
shows the rule's id with copy, **Rename** for a rule that isn't Microsoft's (errors under the
|
|
259
|
+
field; the "Apply ID change" row is gone) and how many commands use it. "In words" heads the
|
|
260
|
+
summary.
|
|
261
|
+
- **Tab display rules open in the editor drawer and apply as you edit.** Save and Cancel are
|
|
262
|
+
gone: Done, and one Ctrl Z undoes everything done there. Steps are numbered cards; on the
|
|
263
|
+
application ribbon Add step offers a table step or a page step. An empty page address is a
|
|
264
|
+
field error (and Publish's check still blocks it). A tab another solution adds says so and is
|
|
265
|
+
read-only.
|
|
266
|
+
- **Scaling is read-only for now (#165).** Changes to scaling could never be published, so the
|
|
267
|
+
Scaling editor is removed until #165 makes them publishable. Properties shows the tab's
|
|
268
|
+
groups and scaling steps, and says scaling only shapes the classic ribbon.
|
|
269
|
+
- **XML and Compare in the editor drawer (#186, part 4).**
|
|
270
|
+
- **The XML of your changes opens on the location you're looking at**, not always on the home
|
|
271
|
+
grid, with Unified Interface names on its tabs. Copy, Download, Format and Import this XML sit
|
|
272
|
+
in a toolbar. Import takes the drawer's place instead of opening a dialog over it.
|
|
273
|
+
- **Compare with published** fills the drawer's height; Side by side / Unified are tabs.
|
|
274
|
+
- **History's View diff shows what that change did.** Before, every entry showed everything
|
|
275
|
+
since the last publish while saying it showed the entry's change.
|
|
276
|
+
- **No more "View solution layers".** Its drawer listed every solution in the environment as
|
|
277
|
+
a "layer" of the button, and called the newest the winner, whatever the button was. Dataverse
|
|
278
|
+
layers ribbon customizations per table, not per button; the button's notice still names the
|
|
279
|
+
managed solution and publisher it comes from.
|
|
280
|
+
- **List view:** the buttons table no longer runs under the modern commands below it on a short
|
|
281
|
+
window. It's as tall as its rows, up to ten, and scrolls for more.
|
|
282
|
+
- **Import RibbonDiffXml in two columns (#187, part 2).**
|
|
283
|
+
- **The editor keeps its height.** Before, it shrank to almost nothing after a preview, as the
|
|
284
|
+
message bars piled up under it. The preview now sits beside it and scrolls on its own.
|
|
285
|
+
- **One line above the editor** ("From Ribbon Workbench or a solution's customizations.xml. Only
|
|
286
|
+
<table>'s part is used.") replaces the 70-word introduction.
|
|
287
|
+
- **The preview counts what it found** ("Preview · 2 changes, 1 problem"), lists each change with
|
|
288
|
+
an Add / Update / Hide badge, and lists every problem in one list instead of a message bar per
|
|
289
|
+
error. A problem with a line ("Line 3: …") moves the editor to that line.
|
|
290
|
+
- **Import says how many changes it brings** ("Import 2 changes") and is off while there are
|
|
291
|
+
errors. Preview becomes "Preview again". After the import there's one Close button.
|
|
292
|
+
- **XML parse errors read as the parser's message**, without the browser's "This page contains
|
|
293
|
+
the following errors" wrapper.
|
|
294
|
+
- The dialog uses the shared dialog shell at its large size.
|
|
295
|
+
- **Translations in the editor drawer, applied as you type (#187, part 3).**
|
|
296
|
+
- **No Save or Cancel:** a change applies as you type, and one Ctrl Z undoes the whole edit.
|
|
297
|
+
The base language is still the button's own text (#157) and can't be emptied ("A button needs
|
|
298
|
+
a label."). Other languages are written to the button's labels with the base text kept in
|
|
299
|
+
step; opening it writes nothing.
|
|
300
|
+
- **Languages by name** ("German · 1031") instead of emoji flags, which Windows showed as
|
|
301
|
+
letter pairs. Each language is a card of labelled fields ("Label (German)"), not a raw table
|
|
302
|
+
of browser inputs that turned into white boxes in dark theme.
|
|
303
|
+
- **Add a language** from a list, or by LCID; a language you add stores nothing until it has
|
|
304
|
+
text. Remove one with its delete button, which the keyboard reaches.
|
|
305
|
+
- **A line-break button** in each label field; the hint no longer garbles its own example.
|
|
306
|
+
- **A built-in or another solution's button is read-only here too**, as in Properties.
|
|
307
|
+
- **The icon picker, redone (#187, part 4).**
|
|
308
|
+
- **Icons are buttons** in one group the arrow keys move through; Enter picks one. Before they
|
|
309
|
+
were clickable boxes the keyboard couldn't reach.
|
|
310
|
+
- **Regular / Filled are two toggles** whose labels stay put; the switch's label flipped with
|
|
311
|
+
its state.
|
|
312
|
+
- **The selection names the icon** ("Edit · Filled") and the web resource it's saved as, instead
|
|
313
|
+
of a raw `ModernImage="$webresource:…"` string.
|
|
314
|
+
- **Web resources:** the first 300 show, and the count says so ("Showing 300 of 1,240 SVG web
|
|
315
|
+
resources. Search to find others."); before, the list stopped at 200 without a word. The rows
|
|
316
|
+
are buttons, and the field takes a plain name.
|
|
317
|
+
- **Upload SVG is a real drop zone** with a **Choose SVG…** button; before it said "Drag an SVG
|
|
318
|
+
here" and ignored the drop. A file that isn't an SVG is refused with a message.
|
|
319
|
+
- Errors and notes are message bars, and the dialog uses the shared dialog shell.
|
|
320
|
+
- **The command palette, redone (#189, part 1).**
|
|
321
|
+
- **A real dialog:** focus stays in it, and Escape or a click outside closes it. Its search box
|
|
322
|
+
is Fluent's, readable in dark theme and with a focus outline.
|
|
323
|
+
- **The highlighted result follows the arrow keys** (Home and End too), stays in view, and is
|
|
324
|
+
announced to screen readers. Enter chooses it.
|
|
325
|
+
- **Choosing a button selects it on the canvas**, on its location and tab; before, it only
|
|
326
|
+
closed the palette. Its line names where it is ("Main form › Main › Management") without raw
|
|
327
|
+
location names or `$LocLabels:` tokens.
|
|
328
|
+
- **Grouped results** (Actions, Buttons, Commands, Rules, Tables) with readable kinds, and a
|
|
329
|
+
count of what's left when a group is cut ("12 more: keep typing to narrow it down").
|
|
330
|
+
- **`/` shows only actions and `@` only tables**; `/` used to filter nothing.
|
|
331
|
+
- **Only actions that can run are listed:** Undo and Redo when there's something to undo or
|
|
332
|
+
redo, Translations for a selected button you can edit, New button when there's a group.
|
|
333
|
+
- **No theme toggle:** the theme follows Power Platform ToolBox's setting.
|
|
334
|
+
- **The shared editors, redone (#189, part 2).**
|
|
335
|
+
- **Parameter rows label every field** (Type, Name, Value) and use plain type names ("From the
|
|
336
|
+
context", "Text", "True or false", "Whole number", "Decimal number"). Context values are
|
|
337
|
+
grouped (Context, Record, Selection context, Grid selection, Org/User) instead of one list of
|
|
338
|
+
23. A URL parameter without a name says so under its field instead of showing a coloured dot,
|
|
339
|
+
and true / false is a switch.
|
|
340
|
+
- **Rule steps show friendly names** for the values the XML keeps ("Existing record", "Primary
|
|
341
|
+
table (the form or grid)", "Sub-grid", "User (Basic)", "One-to-many"…), use spin buttons for
|
|
342
|
+
counts and versions ("At least" / "At most"), and explain "If it can't be evaluated" and
|
|
343
|
+
"Invert result" on screen instead of in hover-only tooltips. Their fields wrap in a grid.
|
|
344
|
+
- **Kinds of step have plain names** ("Table privilege", "Your JavaScript", "Column value",
|
|
345
|
+
"Selected records"…), in groups such as Client and device, Form, Table and Your code. The
|
|
346
|
+
step picker searches with a Fluent search box and the arrow keys; the Quick action note is an
|
|
347
|
+
info button.
|
|
348
|
+
- **Provenance actions** (Customise, Uncustomise, Discard) sit in the message bar's actions area.
|
|
349
|
+
- **Tables are picked in the top bar (#194, step 1).** The left pane's Tables tab is replaced by a
|
|
350
|
+
Table combobox next to the solution, the first step of Edit mode.
|
|
351
|
+
- **The list** groups the solution's tables as Custom and Standard, with their logical names.
|
|
352
|
+
Typing filters by display or logical name. Alt+↓ opens it, and Escape closes it.
|
|
353
|
+
- **Markers:** the open table shows its number of unpublished changes. Another table with a
|
|
354
|
+
draft saved on this computer shows "Draft", and managed tables show a lock.
|
|
355
|
+
- **Switching** still asks first when there are unpublished changes.
|
|
356
|
+
- **"Choose table"** on the empty canvas opens the list, at any window width.
|
|
357
|
+
- **The left pane** shows Solution Elements only, until the Structure tree arrives (#194,
|
|
358
|
+
step 2).
|
|
359
|
+
- **The location's tabs, groups and buttons are a tree in the left pane (#194, step 2).** The left
|
|
360
|
+
pane has two tabs: **Structure** (the default) and **Solution**, which shows Solution Elements
|
|
361
|
+
as before. The ribbon tab strip above the canvas is gone.
|
|
362
|
+
- **The tree** shows tab › group › control for the location you're on. Groups show how many
|
|
363
|
+
controls they have, and controls show their Sequence or **Hidden**, a dot for yours, and are
|
|
364
|
+
listed in Sequence order.
|
|
365
|
+
- **Choosing a node** (click or Enter) shows that tab on the canvas, or selects the group or
|
|
366
|
+
control on the canvas and in Properties. A selection made on the canvas is shown in the tree,
|
|
367
|
+
with its group opened. The arrow keys move through the tree.
|
|
368
|
+
- **Each node has a menu:** right-click, Shift+F10, the Menu key, or its **⋯** button. A tab's
|
|
369
|
+
menu has Rename…, Tab display rules… (with the rule count), Add group…, Move up / Move down
|
|
370
|
+
and Delete tab…. Groups and controls have the same menus as on the Classic canvas; a group's
|
|
371
|
+
menu now also has **Add button…**. F2 renames a tab or group, or says why it can't be renamed.
|
|
372
|
+
- **Filter** by label or id: a match's tab and group stay open.
|
|
373
|
+
- **Add tab** is next to the filter. How Unified Interface shows a custom tab is behind an info
|
|
374
|
+
button in the location row.
|
|
375
|
+
- **Below 1200 px** the rail button opens Structure and Solution as a drawer. Choosing a group or
|
|
376
|
+
control closes it and opens Properties; a node's menu keeps it open.
|
|
377
|
+
- **Group cards (#194, step 3).** A new **Group cards** view, the default for anyone who hasn't
|
|
378
|
+
chosen a view: a card per group of the tab, with its template, and its buttons in Sequence order.
|
|
379
|
+
- **Rows** show the icon, the label, **Hidden** or **Yours**, and the Sequence. Click a row (or
|
|
380
|
+
Enter) to select it; right-click, Shift+F10 or the Menu key opens the button's menu.
|
|
381
|
+
- **Drag rows** to reorder them or move them to another card, with the pointer or the keyboard:
|
|
382
|
+
Space picks a row up, the arrow keys move it, Space or Enter drops it and Escape cancels. A
|
|
383
|
+
button that isn't yours moves as your copy, as on the Classic canvas (#26).
|
|
384
|
+
- **Each card's ⋮ menu** is the group menu: Add button…, Rename…, Duplicate group, Change
|
|
385
|
+
template…, **Move left / Move right** and Delete group. **+ Add button** is at the foot of the
|
|
386
|
+
card.
|
|
387
|
+
- **"How users see it" (#194, step 4).** Above the group cards, the tab's commands as the Unified
|
|
388
|
+
Interface command bar lists them: groups and buttons in Sequence order, without the ones your
|
|
389
|
+
customizations or a modern command hide, a button a migrated modern command replaces under that
|
|
390
|
+
command's name, and the visible modern commands among them. What doesn't fit goes into a **⋮ n**
|
|
391
|
+
menu, as in Unified Interface, and the selected command is always in view. Choosing a command
|
|
392
|
+
selects it on the cards, in the tree and in Properties. It's marked **Preview: rules not applied**:
|
|
393
|
+
display and enable rules are evaluated by Simulate mode (#191).
|
|
394
|
+
- **Visual pass, part 1 (#229).** From screenshots of CBS in PPTB Desktop at 1024 and 1920 px:
|
|
395
|
+
- **Properties of a button that isn't yours** shows its Label and tooltips as the canvas does
|
|
396
|
+
("Save And New", not `Ribbon.Form.MainTab.Save.SaveAndNew`), in fields that look read-only; the
|
|
397
|
+
key they come from is the field's hint.
|
|
398
|
+
- **Placeholders and resource keys read as words:** the application ribbon's
|
|
399
|
+
`{!EntityPluralDisplayName}` tabs show "‹table name, plural›", and keys such as
|
|
400
|
+
`WebResource_Tab_Caption` or `Mscrm_…_ToolTipTitle` show "Web Resource" or the button's name.
|
|
401
|
+
- **No content text below Caption 1 (12 px):** small text, badges and counters are a size up across
|
|
402
|
+
Edit mode, the panes, the bottom panel and the dialogs (the Classic canvas's tiles excepted).
|
|
403
|
+
- **The bottom panel's grids no longer scroll sideways** because of their own vertical scrollbar.
|
|
404
|
+
- **Visual pass, part 2 (#229):** every dialog, the editor drawer's views and the publish dialog,
|
|
405
|
+
from screenshots in PPTB Desktop at 1024 and 1920 px.
|
|
406
|
+
- **Dialogs open on the right control.** New button, New group, New tab and Rename start in their
|
|
407
|
+
name field, not on the close button. Unpublished changes from an earlier session start on
|
|
408
|
+
**Restore changes**, so Enter keeps your work instead of discarding it.
|
|
409
|
+
- **Small dialogs' buttons fit on one line** ("Create group", "Change template" no longer wrap).
|
|
410
|
+
- **Choose a web resource** (from Properties or a JavaScript action) uses the same dialog as the
|
|
411
|
+
rest of CBS. Its list fills the dialog at any window size, Enter chooses a row, and Cancel or Close
|
|
412
|
+
never delivers a choice later.
|
|
413
|
+
- **Below 1200 px, Properties opens under the top bar**, so Publish, Search and the tools stay in
|
|
414
|
+
reach while you edit.
|
|
415
|
+
- **The List view's header sticks to the top edge;** rows no longer show above it as you scroll.
|
|
416
|
+
- **Rule steps fit the drawer:** a step's dropdowns no longer run out of its box, and the step
|
|
417
|
+
list opens inside the drawer.
|
|
418
|
+
- **Translations:** Label, Tooltip title and Tooltip body line up at the top.
|
|
419
|
+
- **The publish dialog** shows **What Publish imports** wide, and Solution version at the size of
|
|
420
|
+
the fields around it.
|
|
421
|
+
- **Icon names wrap between words** ("Clipboard / Paste", not "ClipboardPast / e").
|
|
422
|
+
- **Help lists the shortcuts** one to a line. **Compare** shows a count of none in neutral, not
|
|
423
|
+
red. The bottom panel's grids say they fill in once the ribbon loads, instead of "No
|
|
424
|
+
commands." while it loads. One level into the editor drawer, the header no longer repeats the
|
|
425
|
+
Back button's name.
|
|
426
|
+
- **The URL Action Composer is gone.** Nothing opened it, and URL actions are edited in the command
|
|
427
|
+
editor.
|
|
428
|
+
- **Visual pass, dark theme (#229):** every view, the panes and the dialogs captured with PPTB in
|
|
429
|
+
dark.
|
|
430
|
+
- **Button images read in the dark theme.** Ribbon images are drawn for a light command bar, so dark
|
|
431
|
+
glyphs (Sequences, AI Builder) nearly vanished. An image whose visible pixels are dark is now
|
|
432
|
+
shown inverted, in every view including the Classic ribbon; coloured and light images (Power BI,
|
|
433
|
+
Launch playbook) are shown as drawn.
|
|
434
|
+
- **The List view's Modern badge stays in its column:** after a long label, it ran into Kind.
|
|
435
|
+
- **The bottom panel's Commands and rules are grids (#185).** Hundreds of rows stay quick
|
|
436
|
+
(virtualized), the header stays put while the rows scroll, and nothing scrolls sideways: ids are
|
|
437
|
+
cut to their column with the whole id in a tooltip.
|
|
438
|
+
- **A command's rules are tags** that show the part of the id that tells them apart
|
|
439
|
+
(`ExactlyOneSelected`, not `EnableRule`), and open that rule.
|
|
440
|
+
- **One target per row:** a click or Space marks the row, **Edit**, Enter or a double-click opens
|
|
441
|
+
the editor. The rules' constant Type column is gone.
|
|
442
|
+
- **Counts** are badges on the tabs; a tab opens a collapsed panel.
|
|
443
|
+
- **Used by** counts the same way as the Solution tab: a command by the tabs, groups and controls
|
|
444
|
+
that use it, a rule by the commands that list it, per kind.
|
|
445
|
+
- **Search fields are SearchBoxes (#185),** with a clear button: the bottom panel's filters and the web
|
|
446
|
+
resource browser's search.
|
|
447
|
+
- **The Solution tab's + makes a New enable rule or a New display rule (#185),** not always an enable
|
|
448
|
+
rule. Template rows are plain rows, and branch counts are badges.
|
|
449
|
+
- **The List view fits and sorts (#183).** The grid is as tall as its rows, so only the canvas
|
|
450
|
+
scrolls, with the header kept in view; nothing scrolls sideways at 1024 px.
|
|
451
|
+
- **Columns:** #, Label (with its icon, and the id in its tooltip), Kind (`Split button`, not
|
|
452
|
+
`splitButton`), Group, Visible and **⋯**. ID and Command are in the **Columns** menu.
|
|
453
|
+
- **Sorting** works on every column; rows start in the order the tab shows them.
|
|
454
|
+
- **Rows are selected** with a click or Enter, as everywhere else (no radio buttons); the row's
|
|
455
|
+
menu is the button menu (**⋯**, right-click, Shift+F10).
|
|
456
|
+
- **Modern commands** are a collapsible section below the grid, with columns that truncate
|
|
457
|
+
instead of scrolling sideways.
|
|
458
|
+
- **Menus no longer select what they're opened on,** in the List and on the group cards: in a
|
|
459
|
+
narrow window that opened Properties, which took the focus and closed the menu.
|
|
460
|
+
- **The Solution tab is one tree (#194, step 5).** Buttons, Commands, Rules and Templates are
|
|
461
|
+
branches with a count, searched together; a branch with matches opens. Each row shows the part of
|
|
462
|
+
its id that tells it apart (e.g. `ExactlyOneSelected`, not `EnableRule`), with the whole id as its
|
|
463
|
+
description, and how much it's used (`used 3×`, Enable / Display). A branch lists 100 rows at a
|
|
464
|
+
time (**Show n more**), so the 498 commands of a table open at once. Choosing a command or rule
|
|
465
|
+
opens its editor; a button is selected, and its menu (right-click, Shift+F10 or ⋯) has **Go to
|
|
466
|
+
button** and **Add to** each group of the open tab, which adds your copy of it there. **+** makes a
|
|
467
|
+
new command or rule.
|
|
468
|
+
- **Two rail buttons below 1200 px (#194).** **Structure** and **Solution** each open the left pane
|
|
469
|
+
as a drawer on that tab.
|
|
470
|
+
- **Groups can be moved within their tab (#194).** Like tabs (#163), a group your customizations add,
|
|
471
|
+
or a new one, gets a Sequence between its new neighbours and the publish writes it. Two other
|
|
472
|
+
groups can't change places, so Move left / Move right are off there and say why. In the Structure
|
|
473
|
+
tree they read **Move up / Move down**.
|
|
474
|
+
- **A moved button is placed in Sequence order (#194).** Dropping a button before another now
|
|
475
|
+
places it among the destination group's buttons in Sequence order, the order Unified Interface
|
|
476
|
+
shows, not the order the ribbon XML happened to list them in.
|
|
477
|
+
|
|
478
|
+
### 🔧 Fixed
|
|
479
|
+
|
|
480
|
+
- **Compare's XML diff is coloured (#195).** With a table open and a change pending, Compare
|
|
481
|
+
showed most of the XML without syntax colours: the editor painted before the colours were
|
|
482
|
+
ready and didn't repaint. It now repaints when they arrive.
|
|
483
|
+
|
|
12
484
|
## [0.8.0] - 2026-11-01
|
|
13
485
|
|
|
14
486
|
Publish correctness and load performance. Tables open faster, and built-in buttons show captions
|