@maggioli-design-system/magma-react 2.2.0 → 2.4.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 ADDED
@@ -0,0 +1,715 @@
1
+ # Changelog
2
+
3
+ Every release of `@maggioli-design-system/magma-react`, newest first. Each section is the body of the GitHub
4
+ release with the same tag, written by git-cliff from the conventional commits of the
5
+ package.
6
+
7
+ It is released together with `magma`, at the same version: the sections are the
8
+ releases of `magma`.
9
+
10
+ ## [magma@2.4.0] - 2026-10-20
11
+
12
+ ### Bug Fixes
13
+
14
+ - *(mds-accordion-timer,mds-accordion-timer-item)* Announce each selection once, keep the open one
15
+ - *(mds-accordion)* Announce every change of the open items, and only those
16
+ - *(mds-pref-mode,mds-pref-animation,mds-pref-consumption,mds-pref-contrast)* Announce a pick once
17
+ - *(mds-pref-theme)* Announce a theme or a corner shape once, not on every render
18
+ - *(mds-pref-language)* Select the item of a language set from code
19
+ - *(mds-toast)* Emit mdsToastClose once per dismissal and stop the countdown on hide
20
+ - *(mds-push-notification-item)* Send the id the close event declares
21
+ - *(mds-header)* Type the visibility detail as the string it carries
22
+ - *(mds-file)* Send the description the card shows
23
+ - *(mds-breadcrumb)* Name the item the back arrow selects as the caller
24
+ - *(mds-details)* Write the user's toggle into opened
25
+ - *(mds-calendar)* Put a backwards range in order
26
+ - *(mds-table,mds-table-row)* Follow a selection made from code, remove the scroll listener
27
+ - *(mds-notification)* Stop following the target when the badge leaves the page
28
+ - *(mds-label)* Wrap at the width the label is given with truncate none or all
29
+ - *(design-tokens,styles,magma)* The shadow ink stays dark in dark mode, no more light halo
30
+ - *(mds-dropdown)* A second click on the caller closes the panel
31
+ - *(mds-button-dropdown)* The link and the initial focus belong to the primary action
32
+ - *(mds-emoji)* The gaze follows the direction of the pointer, at any size
33
+ - *(mds-table)* Call setActions only on a header that has it
34
+ - *(mds-modal)* Open the dialog after the render that reflects position and animation
35
+ - *(mds-text)* Keep the accents of a truncated label or option text visible
36
+ - *(mds-chip)* Paint the ground with surface-overlay, not the grey wash
37
+ - *(mds-banner)* Paint the neutral ground with surface-overlay, not the card's surface-raised
38
+ - *(mds-input-otp,mds-pref-theme-item,mds-stepper-bar-item,stencil)* Import the FOUC sheets
39
+ - *(mds-text)* Import the animation preference sheet
40
+ - *(mds-tooltip)* Import the dark high-contrast shadow sheet
41
+ - *(mds-avatar,mds-avatar-stack)* Spell the pill on the corner axis
42
+ - *(mds-entity)* Take the radii and the shape of the corner axis
43
+ - *(mds-chip,mds-mention)* Spell the pills on the corner axis
44
+ - *(mds-hr,mds-separator)* Spell the rounded rule on the corner axis
45
+ - *(mds-input-switch,mds-input)* Spell the switch and the password dots as pills
46
+ - *(mds-notification,mds-radial-progress)* Spell the circles on the corner axis
47
+ - *(mds-paginator,mds-paginator-item)* Spell the pills on the corner axis
48
+ - *(mds-horizontal-scroll)* Spell the dots and the arrows as pills
49
+ - *(mds-breadcrumb-item)* Spell the pill of the button on the corner axis
50
+ - *(mds-filter,mds-filter-item)* Spell the pills on the corner axis
51
+ - *(mds-badge)* Spell the pill on the corner axis
52
+ - *(mds-stepper-bar-item)* Take the radii of the corner axis
53
+ - *(mds-push-notification-item)* Take the radii of the corner axis
54
+ - *(mds-tooltip,mds-text,mds-note)* Take the smallest step of the corner axis
55
+ - *(mds-accordion-item,mds-accordion-timer-item,mds-details)* Cap the corner of the header
56
+ - *(mds-bibliography)* Spell the pill of the link on the corner axis
57
+ - *(mds-price-table-list,mds-zero,mds-usage)* Take the radii of the corner axis
58
+ - *(mds-toast,mds-status-bar)* Take the radii of the corner axis
59
+ - *(mds-header)* Round the inline bar on the corner axis
60
+ - *(mds-policy-ai)* Take the radii of the corner axis
61
+ - *(mds-table-row)* Round the actions panel on the corner axis
62
+ - *(mds-url-view)* Round the window on the corner axis
63
+ - *(mds-tree,mds-tree-item)* Take the radii of the corner axis
64
+ - *(mds-button-dropdown)* Round the corners as mds-button does, on the corner axis
65
+ - *(mds-calendar,mds-calendar-cell)* Take the radii of the corner axis
66
+ - *(mds-input-select,mds-input-tip-item,mds-input-range,mds-input-upload)* Take the corner axis
67
+ - *(mds-keyboard,mds-keyboard-key)* Paint the keyboard with the washes of the active theme
68
+ - *(mds-pref-theme-item)* Take the wash of the active theme and the pill radius
69
+ - *(mds-input-select)* Take the radius of mds-input, on the host
70
+ - *(mds-accordion)* Keep the ids of the items
71
+ - *(mds-breadcrumb)* Keep the ids of the items
72
+ - *(mds-filter)* Keep the ids of the items
73
+ - *(mds-tab-bar)* Keep the ids of the items
74
+ - *(mds-tree,mds-tree-item)* The toggle takes its expanded colours and its gap
75
+ - *(mds-tab,mds-tab-item)* The items take the default and the hover shadow
76
+ - *(mds-progress,mds-stepper-bar-item)* --mds-progress-radius rounds the bar again
77
+ - *(mds-dropdown)* The backdrop takes the z-index and the duration set on the dropdown
78
+ - *(mds-label)* Name the delete button in Spanish
79
+ - *(mds-label)* Load a deletable label without an error
80
+ - *(mds-tab)* Leave a content panel past the last item hidden
81
+ - *(mds-pref-animation,mds-pref-consumption,mds-pref-contrast)* Ignore a mode outside the union
82
+ - *(mds-pref-language,mds-pref-language-item)* Take three-letter codes, ignore invalid ones
83
+ - *(mds-pref-theme,mds-pref-theme-item)* Ignore an invalid theme name, scheme or corner shape
84
+ - *(mds-emoji)* Ignore a name outside the dictionary
85
+ - *(mds-input-otp)* Submit a paste that fills the last cell instead of throwing
86
+ - *(mds-icon)* Decode a base64 icon with its padding, draw a saved SVG file inline
87
+ - *(mds-img)* Skip a srcset-consumption entry without its level
88
+ - *(mds-bibliography)* Describe author as a string, read an array per entry
89
+ - *(mds-avatar)* Give every pair of initials a variant
90
+ - *(mds-horizontal-scroll)* Measure the slotted elements, not the text between them
91
+ - *(mds-notification)* Describe the element the badge sits on with its count
92
+ - *(mds-kpi-item)* Build the accessible name from the parts that are there
93
+ - *(mds-price-table-list,mds-usage)* Drop the main landmark and the document-edit roles
94
+ - *(mds-progress,mds-benchmark-bar)* Keep the progressbar values valid and follow aria-hidden
95
+ - *(mds-toast)* Announce the toast as a status message
96
+ - *(mds-spinner,mds-video-wall,mds-emoji)* Follow the Magma animation preference
97
+ - *(mds-tree,mds-tree-item)* Give the tree a structure and the branches their state
98
+ - *(mds-button,mds-filter-item)* Click on Enter and Space as the pointer does, never while busy
99
+ - *(mds-input-otp)* Leave Tab, Backspace and the shortcuts to the keyboard
100
+ - *(mds-details)* Toggle on Space, and keep the closed content out of the tab order
101
+ - *(mds-file,mds-file-preview)* Make the download cards buttons the keyboard activates
102
+ - *(mds-tooltip,mds-help)* Show the tooltip on focus as on hover
103
+ - *(mds-tab-bar-item)* Reach and activate the items from the keyboard
104
+ - *(mds-paginator,mds-paginator-item)* Take the disabled arrows out of the tab order
105
+ - *(mds-breadcrumb,mds-breadcrumb-item)* Keep the current page selected under the keyboard
106
+ - *(mds-modal,mds-status-bar)* Let strict veto the swipe, and keep the status bar non-modal
107
+ - *(mds-radial-menu)* Close the open menu on an outside click and on Escape
108
+ - *(mds-details)* Keep an open details hidden inside a closed one
109
+ - *(mds-calendar,mds-calendar-cell)* The cell properties reach the cells, the day colour paints
110
+ - *(mds-price-table-list-item)* The supported icon takes its hover colour
111
+ - *(mds-table-cell,mds-table-row,mds-table)* The -alt colours paint the sorted column
112
+ - *(mds-header,mds-header-bar)* The icon colours of the header reach the hamburger
113
+ - *(mds-price-table-features,mds-price-table-features-cell)* The border colour reaches the cells
114
+ - *(mds-toast)* MdsToastClose waits for the exit transition, not for 1000 ms
115
+ - *(mds-tree-item)* MdsTreeItemCollapse waits for the branch transition, not for 1000 ms
116
+ - *(mds-keyboard-key)* The space key is wide again
117
+ - *(mds-paginator,mds-paginator-item)* The item properties reach the items from the paginator
118
+ - *(mds-push-notification-item)* Style only the tones its type accepts
119
+ - *(mds-card)* Read the layout from the slots, again when the content changes
120
+ - *(mds-table)* Show the batch bar for buttons added after load
121
+ - *(mds-price-table-list)* Show the items rendered after load
122
+ - *(mds-tree,mds-tree-item)* Open on load, hand the props to the items that arrive later
123
+ - *(mds-calendar)* Show the preselection area for the content of its slot
124
+ - *(mds-pref,mds-pref-language,mds-pref-theme)* Size on load, follow the items added later
125
+ - *(mds-avatar-stack)* Count the avatars added after load
126
+ - *(mds-img)* Follow the consumption preference the page applies
127
+ - *(storybook)* Turn off the boolean controls of the form-associated components
128
+ - *(mds-tree-item)* Round the corners of the folder toggle again
129
+ - *(mds-input-switch)* Round the focus ring of the checkbox and radio again
130
+ - *(mds-avatar)* Show the sources in one order, never an empty avatar
131
+ - *(mds-bibliography)* Keep every first name, link the title only with a url
132
+ - *(mds-button-dropdown)* Pass truncate to the label of the primary action
133
+ - *(mds-calendar-cell)* Paint selection none as no selection, deprecate weekend
134
+ - *(mds-input-date-range-preselection)* Keep the author's slot, let the click through
135
+ - *(mds-dropdown,mds-tooltip,mds-help)* Keep the placement while it has room
136
+ - *(mds-emoji)* Keep the mouse tracking off once stopFollowMouse is called
137
+ - *(mds-file,mds-file-preview)* Show no extension for a filename without one
138
+ - *(mds-header)* Hide the hamburger of the bar without a menu slot
139
+ - *(mds-header-bar)* Open and close the menu of the header with setOpened
140
+ - *(mds-notification)* Hide a dismissed badge with the disabled strategy too
141
+ - *(mds-pref)* Show the reload notice in the visible panel
142
+ - *(mds-pref-theme)* Keep a name, scheme or corner shape set after load
143
+ - *(mds-pref-contrast)* Stop querying the contrast of the system on each pick
144
+ - *(mds-push-notification)* Hide once the last item goes, label the clear button
145
+ - *(mds-stepper-bar)* Hide the other panels with the hidden attribute
146
+ - *(mds-keyboard)* Accept the keys of a shortcut in any order
147
+ - *(mds-note)* Turn Enter into a click only while the note is deletable
148
+ - *(mds-calendar-cell)* Let the start and end of a selection keep their colours
149
+ - *(mds-pref-mode)* Stop forcing Safari to light mode
150
+ - *(magma)* Export CHANGELOG.md from magma, magma-react and magma-angular
151
+ - *(mds-benchmark-bar)* Announce the value as shown when there is no alias
152
+ - *(mds-input-switch)* Cast the shadow of the knob again
153
+ - *(mds-file,mds-filter-item,mds-input-range,mds-input-switch,mds-input-upload)* Use magma eases
154
+ - *(magma)* Fix: .claude to .gitignore
155
+ - *(mds-table-header)* Paint the select-all cell with the header colour
156
+ - *(mds-table)* Paint every row with a full colour, and the scroll area with the sunken surface
157
+ - *(mds-table)* Draw the frame with border-muted, like the grid
158
+ - *(mds-modal)* Slide the window in when its content has a focusable element
159
+
160
+ ### Build
161
+
162
+ - *(magma)* Drop the unused changelog scripts and the deprecated conventional-changelog-cli
163
+ - *(magma)* Print the BREAKING CHANGE footer under breaking entries
164
+
165
+ ### Documentation
166
+
167
+ - *(magma)* Merge every pull request into dev through the merge queue
168
+ - *(styles,magma)* A pill that casts a shadow takes surface-overlay, not a wash
169
+ - *(mds-accordion-timer-item)* Describe progress as the 0 to 1 the timer writes
170
+ - *(mds-breadcrumb-item)* Describe the button part
171
+ - *(mds-button)* Describe the label part
172
+ - *(mds-button-dropdown)* Describe the dropdown part
173
+ - *(mds-card-media)* Describe the content part
174
+ - *(mds-details)* Name the slots the content part wraps
175
+ - *(mds-emoji)* Put the description of the methods before their tags
176
+ - *(mds-file-preview)* Describe the card part
177
+ - *(mds-header-bar)* Describe the content part
178
+ - *(mds-help)* Describe the icon part
179
+ - *(mds-horizontal-scroll)* Describe the content part
180
+ - *(mds-img)* Describe the media part
181
+ - *(mds-input)* Attach the part docs to the class, put the icon on the left
182
+ - *(mds-input-date)* Describe the input-date part
183
+ - *(mds-input-date-range-preselection)* Say the slot takes the label text
184
+ - *(mds-input-field)* Name the controls the field validates, describe the content part
185
+ - *(mds-input-tip)* Say active moves the tip, not the items
186
+ - *(mds-input-tip-item)* List all ten variants in the Storybook controls
187
+ - *(mds-label)* Drop the doc of a slot the label does not render
188
+ - *(mds-list-item)* Describe the icon and text parts
189
+ - *(mds-mention)* Give size its own description
190
+ - *(mds-modal)* Say mdsModalOpen emits on open, describe the dialog part
191
+ - *(mds-notification)* Say a value of 0 shows an empty dot
192
+ - *(mds-pref)* List mds-pref-theme among the children
193
+ - *(mds-price-table-list-item)* Describe the icon part
194
+ - *(mds-push-notification)* Describe behavior as shipped
195
+ - *(mds-radial-menu)* Describe the radial-menu part
196
+ - *(mds-stepper-bar)* Describe itemsDone by what it sets, fix the slot tag name
197
+ - *(mds-stepper-bar-item)* Describe value without an event that does not exist
198
+ - *(mds-tab-item)* Describe the button part
199
+ - *(mds-table)* Say what mdsTableSelectionChange emits, describe the batch bar part
200
+ - *(mds-table-footer)* Say the footer takes cells
201
+ - *(mds-table-header)* Say the header takes header cells, describe the actions part
202
+ - *(mds-table-header-cell)* Describe the action and label parts
203
+ - *(mds-toast)* Say when mdsToastClose emits
204
+ - *(mds-tooltip)* Describe the text part
205
+ - *(mds-tree-item)* Describe async and the two events by what they do
206
+ - *(mds-url-view)* Give icon its own description
207
+ - *(mds-usage)* Describe the header, icon and label parts
208
+ - *(mds-button,mds-button-dropdown,mds-input-date)* Deprecate three properties nothing reads
209
+ - *(mds-button,mds-input,mds-input-field)* Three custom property descriptions match the code
210
+ - *(magma)* Explain that "false" turns on the booleans of form-associated components
211
+ - *(magma)* Describe when the preferences announce a change, and the hidden step panels
212
+ - *(magma)* Ask breaking commits to say what to change in their footer
213
+ - *(stencil)* Give an @example to the props whose value has a format
214
+ - *(magma)* List mds-toast-region and count 115 components
215
+ - *(magma)* Document the icons package and fix the scope lists
216
+
217
+ ### Features
218
+
219
+ - *(mds-stepper-bar,mds-stepper-bar-item)* Let the user ask to go back to a done step
220
+ - *(mds-button)* --mds-button-label-transform keeps a label as written
221
+ - *(mds-table,mds-table-header,mds-table-row)* The Actions column follows rows added after load
222
+ - *(mds-policy-ai)* Part chip selects the chip, the wrapper gets part chip-wrapper
223
+ - *(mds-push-notification-item)* Document the avatar part, drop the icon part
224
+ - *(mds-tree)* Deprecate async, which the tree never reads
225
+ - *(mds-img)* Let an empty alt mark the image as decorative
226
+ - *(mds-chip)* Reflect disabled, which now blocks the keyboard as well as the pointer
227
+ - *(mds-breadcrumb)* The selected colours and the disabled back button take their properties
228
+ - *(mds-modal)* --mds-modal-transition-timing-function, the misspelled name kept as an alias
229
+ - *(mds-radial-progress,mds-pref-mode,mds-accordion,mds-note)* Document the properties they read
230
+ - *(mds-card)* --mds-card-background paints the card too
231
+ - *(mds-radial-menu)* A stylesheet can set the radius and the angles
232
+ - *(mds-img)* Set crossorigin and referrerpolicy on the image, with no default
233
+ - *(mds-table-footer,mds-table)* Line the footer cells up with the rows
234
+ - *(mds-usage)* Reflect variant, which the styles read from the host attribute
235
+ - *(mds-table)* Draw the lines inside the table with their own separator colour
236
+ - *(mds-toast)* Add a hide arrow and hold the countdown while the toast is in use
237
+ - *(mds-toast,mds-toast-region)* Line up the toasts shown at once in a region
238
+
239
+ ### Refactor
240
+
241
+ - *(mds-mention)* Drop the .badge rules, which match no element
242
+
243
+ ### Styling
244
+
245
+ - *(mds-dropdown)* A deeper drop shadow in dark, three times the light alphas
246
+
247
+ ## [magma@2.3.0] - 2026-10-15
248
+
249
+ ### Bug Fixes
250
+
251
+ - *(mds-text)* Read the animation custom properties when the reveal starts
252
+ - *(mds-text)* Paint the revealed text as text, never as html
253
+ - *(magma)* Keep the HTMLElement shim of the loader in consumer bundles
254
+ - *(mds-input-switch)* Give the off knob of a switch a light colour in dark mode
255
+ - *(mds-input-select)* Keep the hover and focus ring in dark mode and with more contrast
256
+ - *(magma)* Keep the icon lists of the story controls out of the published collection
257
+ - *(mds-table)* Paint the scroll area of an interactive table like its rows while hovered
258
+ - *(mds-pref-theme-item)* Show the color preview next to the label
259
+ - *(mds-pref-theme)* Show the label of the selected item in the trigger
260
+ - *(mds-tab,mds-input-switch)* Animate the slider and the knob only on a change of state
261
+ - *(mds-button)* Give back the icon slug title when another element names the button
262
+ - *(mds-pref)* Keep the document flag and the listeners across a move in the DOM
263
+ - *(mds-button)* Leave a button with an icon given as markup without a role again
264
+ - *(magma)* Lay out the label and the tab of every mds-pref-* control alike
265
+ - *(magma)* Cap the radius of buttons, tabs and fields at a part of their height
266
+ - *(mds-file)* Show the downloaded indicator again and drop crypto-js
267
+ - *(magma)* Name the icon-only buttons inside the components and give every mds-button its role
268
+ - *(mds-filter,mds-filter-item)* Announce the selected state and the count, name the reset button
269
+ - *(mds-filter)* Follow the selection the application sets on the items
270
+ - *(mds-list-item)* Take the text colour of the container instead of painting the items muted
271
+
272
+ ### Build
273
+
274
+ - *(magma)* Prepend the release notes to each package's CHANGELOG.md in the release commit
275
+ - *(design-tokens,identity,styles,svg-icons,icons,magma)* Ship CHANGELOG.md in every package
276
+
277
+ ### Documentation
278
+
279
+ - *(magma)* Say in the agent guides that hydrated.css keeps the box of the components
280
+ - *(magma)* Point the no-bundler loader example of the readme at a real file
281
+ - *(magma)* Document icon routes that serve every slug where mds-icon fetches it
282
+ - *(mds-text)* Regenerate the readme with the usage docs of the yugop fix
283
+ - *(magma)* Set up editor autocomplete in the agent guides, tokens and classes
284
+ - *(magma)* Link the shipped component docs from the agent guides, never plain text
285
+ - *(magma)* Say in the agent guides what the semantic utilities paint without semantic.css
286
+ - *(stencil)* Drop the hand-written sections of the component readmes
287
+ - *(magma)* Lead the icon path setup with IconsSetService and link the mds-icon pattern
288
+ - *(magma)* Have a reporting agent propose the origin label its project lacks
289
+ - *(magma)* Point the agent guides to the identity manifest
290
+ - *(stencil)* Say every mds-pref-* control also works on its own
291
+ - *(magma)* Point to the changelogs in AGENTS.md and in the commit convention
292
+ - *(mds-tab,mds-input-switch)* Regenerate the readmes from the usage docs
293
+
294
+ ### Features
295
+
296
+ - *(mds-input,mds-input-select,mds-input-date,mds-input-date-range)* Add size (sm, md, lg)
297
+ - *(mds-tooltip)* Name the caller with relation="label"
298
+ - *(mds-usage)* Give each variant its own header icon and add an icon prop
299
+ - *(mds-table,mds-table-header-cell)* Emit mdsTableHeaderCellSort, let the back end sort the rows
300
+
301
+ ### Performance
302
+
303
+ - *(mds-button)* Render the spinner only to await, the label without mds-text
304
+ - *(mds-button)* Write each tone once, over the tokens each variant names
305
+ - *(magma)* Prefix the component CSS for the supported browsers, not for IE 11
306
+ - *(magma)* Drop the fallback links that can never resolve
307
+
308
+ ## [magma@2.2.0] - 2026-10-14
309
+
310
+ ### Bug Fixes
311
+
312
+ - *(mds-table-row)* Show the actions of rows revealed by a streamed ssr boundary
313
+
314
+ ### Build
315
+
316
+ - *(magma)* Pin typescript to 5.8.3, the version the lockfile installs
317
+ - *(magma)* Move to typescript 5.9.3 with typescript-eslint 8.71.2
318
+
319
+ ### Documentation
320
+
321
+ - *(magma)* Label issues by the project they come from
322
+ - *(magma)* Never merge a branch with a red pipeline into dev
323
+ - *(magma)* Tell consumer-project agents how to report a Magma problem
324
+
325
+ ### Features
326
+
327
+ - *(magma)* Render href as a real link and route it through NavigationService
328
+
329
+ ### Refactor
330
+
331
+ - *(mds-table-row)* Compare sizerWidth with undefined for the actions margin
332
+
333
+ ## [magma@2.1.0] - 2026-10-10
334
+
335
+ ### Bug Fixes
336
+
337
+ - *(styles,magma)* Require internal dependencies as caret ranges
338
+ - *(magma)* Ship the agent docs in the magma and magma-react tarballs
339
+ - *(stencil)* Apply the mds-pref-* preference once on load, then mirror the shared store
340
+ - *(mds-pref)* Keep data-magma-pref on <html> until the last instance unmounts
341
+ - *(mds-input)* Rebuild the validators when a rule changes after load
342
+ - *(mds-input-date)* Validate again when required, min or max change after load
343
+ - *(mds-input-select)* Show the required tip red when the value is null
344
+ - *(mds-input)* Report the validity to the form, so that required stops the submit
345
+ - *(mds-input-date)* Report the validity to the form
346
+ - *(mds-input-select)* Report a required select left empty to the form
347
+ - *(mds-input-upload)* Submit the files to the form, like a native file input
348
+ - *(mds-input)* Bring back the value of load on a form reset
349
+ - *(mds-input)* Check pattern like a native input, and stop overwriting it
350
+ - *(mds-input)* Emit mdsInputKeydown on keydown, with the KeyboardEvent
351
+ - *(mds-input)* Keep the value when the browser has no Speech API
352
+ - *(mds-input)* Check the format of email and url like the native types
353
+ - *(mds-input)* Check the format of piva and cc
354
+ - *(mds-input-date)* Honour readonly, load pristine and bring back the value on reset
355
+ - *(mds-input-select)* Make multiple work, bring back the selection on reset
356
+ - *(mds-input-switch)* Keep one value per radio group, bring back checked on reset
357
+ - *(mds-input-otp)* Fill the cells from value, bring back the code on reset
358
+ - *(mds-input-range)* Fall back to step 1 like a native input, bring back the value on reset
359
+ - *(mds-input-date-range)* Bound the slotted fields, keep presets in order and in sync at load
360
+ - *(mds-input)* Disable it in a disabled fieldset, like a native input
361
+ - *(mds-input-date)* Disable it in a disabled fieldset, like a native date input
362
+ - *(mds-input-range)* Disable it in a disabled fieldset, like a native range input
363
+ - *(mds-input-select)* Disable it in a disabled fieldset, like a native select
364
+ - *(mds-input-switch)* Disable it in a disabled fieldset, like a native checkbox
365
+ - *(mds-input)* Stop the mic and the steppers on a field the user cannot change
366
+ - *(mds-button-dropdown,mds-button)* Disable the buttons in a disabled fieldset
367
+
368
+ ### Build
369
+
370
+ - *(magma)* Pin internal dependencies as caret ranges
371
+ - *(stencil)* Write the public API snapshot magma.api.txt from the docs JSON
372
+ - *(stencil)* Compute the review level and the release check of a PR
373
+ - *(stencil)* Rate an event detail that extends the old one as minor
374
+ - *(stencil)* Record the disabled prop of three form inputs in magma.api.txt
375
+ - *(stencil)* Record the API changes of the button family in magma.api.txt
376
+ - *(stencil)* Declare a break no consumer can tell apart with API-Compatible
377
+
378
+ ### Documentation
379
+
380
+ - *(storybook)* Render the usage docs in the components' Docs pages
381
+ - *(storybook)* Scroll the docs pages to the heading clicked in the table of contents (#834)
382
+ - *(storybook)* Move the Magma preferences to a toolbar menu
383
+ - *(magma,styles,design-tokens)* Rewrite the color docs on the semantic layer
384
+ - *(magma,styles,design-tokens)* Align the styles and design-tokens docs with the build
385
+ - *(magma,stencil)* Align the agent and component docs with the code
386
+ - *(magma,stencil)* Align the 342 component usage docs with the code
387
+ - *(stencil)* Tell how to place mds-table so it scrolls by itself
388
+ - *(magma)* Document how the form components report their validity
389
+ - *(magma)* Document how the form components submit, reset and report validity
390
+ - *(magma)* Say what disabled and a disabled fieldset do to the form components
391
+ - *(magma)* Every form input follows disabled and a disabled fieldset
392
+ - *(stencil)* Document the API snapshot in SPEC.md, AGENTS.md and the PR template
393
+ - *(magma)* Document the review levels and the release check
394
+ - *(stencil)* Put the form reset JSDoc back on formResetCallback
395
+ - *(mds-button)* Let the controls of the Await story drive it
396
+ - *(magma)* Say how the buttons submit a form and tell the actions apart
397
+
398
+ ### Features
399
+
400
+ - *(magma)* Ship the agent docs as topic fragments and per-component docs
401
+ - *(mds-input-otp)* Add disabled, and disable it in a disabled fieldset
402
+ - *(mds-input-upload)* Add disabled, and disable it in a disabled fieldset
403
+ - *(mds-input-date-range)* Add disabled, and disable it in a disabled fieldset
404
+ - *(mds-input-upload,mds-input-select)* Record name and the selected values in magma.api.txt
405
+ - *(mds-button)* Send name and value to the form it submits, like a native submit button
406
+ - *(mds-button-dropdown,mds-button)* Submit a form from the primary action, with name and value
407
+ - *(mds-button-dropdown)* Emit mdsButtonDropdownClick from the primary action only
408
+
409
+ ### Refactor
410
+
411
+ - *(magma)* Move the release scope matching to commit-scopes.mjs
412
+
413
+ ## [magma@2.0.1] - 2026-10-05
414
+
415
+ ### Bug Fixes
416
+
417
+ - *(mds-icon)* Bump idb-keyval to 6.3.0 so the icon cache reopens a closed IndexedDB connection
418
+ - *(mds-icon)* Keep the whole svg path instead of truncating it
419
+ - *(mds-icon)* Render nothing without a name and stop listening once removed from the page
420
+ - *(stencil)* Treat null and missing props as not set again
421
+
422
+ ### Documentation
423
+
424
+ - *(storybook)* Resolve the story assets relative to the storybook base
425
+ - *(storybook)* Link the published storybook
426
+
427
+ ### Performance
428
+
429
+ - *(mds-icon)* Check the memory cache before reading IndexedDB
430
+
431
+ ## [magma@2.0.0] - 2026-09-30
432
+
433
+ ### Bug Fixes
434
+
435
+ - *(mds-modal)* Fix bug animation display
436
+ - *(magma)* Generate agent docs before stencil build
437
+ - *(mds-keyboard,mds-filter-item,mds-paginator-item,mds-url-view)* Typo disconnectedCallback
438
+ - *(stencil)* Set private function
439
+ - *(stencil)* Resolve eslint doc warning
440
+ - *(mds-keyboard)* Remove redundant .bind on test button onClick
441
+ - *(stencil)* Remove .bind in JSX props flagged by react/jsx-no-bind
442
+ - *(stencil)* Resolve react/jsx-no-bind warnings
443
+ - *(stencil)* Avoid top-level call expression in mds-push-notification-item
444
+ - *(mds-icon)* Remove duplicated method
445
+ - *(storybook)* Use accordion disable-close in color-scale
446
+ - *(stencil)* Dedupe repeated @layer order statements in component CSS
447
+ - *(stencil)* Guard preference observer when MutationObserver is missing
448
+ - *(mds-modal)* Correct backdrop click-through selector
449
+ - *(mds-pref-language-item)* Tolerate unset code prop on first render
450
+ - *(mds-video-wall)* [**breaking**] Rename --mds-video-wall-noise-fitler to --mds-video-wall-noise-filter
451
+ - *(mds-file)* [**breaking**] Rename --mds-file-preview-icon-bacground to --mds-file-preview-icon-background
452
+ - *(mds-img)* Tolerate undefined src without crashing
453
+ - *(stencil)* Stop inline components stretching in grid/flex parents
454
+ - *(stencil)* Fall back to the default theme value, not the dark one
455
+ - *(mds-table)* Tolerate lifecycle races on slotted elements
456
+ - *(stencil)* Give the status icons a role, and the contrast that comes with it
457
+ - *(stencil)* Replace :scope selectors with SSR-safe direct-child queries
458
+ - *(stencil)* Guard browser-only APIs for the hydrate/SSR runtime
459
+ - *(stencil)* Declare pre-hydration host geometry
460
+ - *(mds-usage)* Paint the header with its own background token
461
+ - *(stencil)* Point the dead rings at the republished family, and the shadows at the role
462
+ - *(mds-text)* Guard unknown typography against the default variant
463
+ - *(mds-button)* Guard unknown size against the md typography
464
+ - *(stencil,styles)* Close the escape hatch of #624, and repair the registration snapshots
465
+ - *(mds-paginator)* Scroll on item focus only for keyboard navigation so clicks are not lost
466
+ - *(mds-calendar)* Keep the intrinsic width within --mds-calendar-max-width
467
+ - *(mds-input-date)* Give the dropdown calendar a definite width
468
+ - *(stencil)* Center the calendar day numbers and the input date icons
469
+ - *(mds-input-upload)* Widen the infos column and lay the main actions in a row
470
+ - *(mds-file-preview)* Show the extension fallback icon when the icon prop is unset
471
+ - *(mds-input-upload)* Move the width cap from the infos column to the progress bar
472
+ - *(stencil)* Correct the @Element types of three components
473
+ - *(mds-calendar)* Ignore invalid start-date and end-date instead of throwing
474
+ - *(mds-calendar)* Redraw the range and preview the hover without a parent
475
+ - *(mds-input)* Keep the password mask inside the rounded field
476
+ - *(stencil)* Wire the mds-chip selected state to the tokens the docs promise
477
+ - *(mds-emoji)* Keep the thinking pose centred and let expressions take the face over
478
+ - *(mds-emoji)* Keep the prerender out of the browser only pose restore
479
+ - *(mds-input-date-range)* Repair the :host() selector that voided the slotted color
480
+ - *(stencil)* Write the registered <number> opacities as numbers, not percentages
481
+ - *(stencil)* Delete the ten custom properties nothing ever reads
482
+ - *(stencil)* Drop the two dead properties the codemod manifest flagged
483
+ - *(mds-chip)* Expose the selected state to assistive technology
484
+ - *(stencil)* Remove the seven documented APIs that do not exist at all
485
+ - *(stencil)* Close the mechanical dead chains the full sweep found
486
+ - *(stencil)* Apply the two v1 renames we ship to consumers
487
+ - *(mds-table)* Raise the table background to the overlay surface
488
+ - *(mds-tooltip)* Describe the caller as a tooltip, not as a menu it controls
489
+ - *(mds-input-switch)* Make the native input the focusable, labelled control
490
+ - *(mds-tab-item)* Name icon-only tabs after the host title
491
+ - *(mds-keyboard)* Label the combination checker with aria-label
492
+ - *(mds-progress)* Expose the progress value and hide the nested radial gauge
493
+ - *(mds-details)* Expose the header as a disclosure button, not a banner
494
+ - *(mds-file-preview)* Drop the footer landmark from the infos row
495
+ - *(mds-input-field)* Validate the input that emitted inside the slotted element
496
+ - *(stencil)* Spell the pill one way, on the generated radius scale
497
+ - *(stencil)* Put the hand written radii back on the generated scale
498
+ - *(stencil)* Wire the button corner shape, drop the dead tab style queries
499
+ - *(mds-banner)* Show the actions slotted after the first render
500
+ - *(stencil)* Show the slotted content added after the first render
501
+ - *(mds-dropdown)* Leave the ARIA wiring off a caller that delegates its role
502
+ - *(mds-pref-theme-variant)* Drop the caption that never had a string
503
+ - *(mds-label)* Put the tag back on the pill it was drawn as
504
+ - *(mds-label)* Give the close button one state that shows
505
+ - *(storybook)* Emit the icons named only in the stories
506
+ - *(mds-modal)* Release the body scroll lock when the modal closes
507
+ - *(storybook)* Wrap the body tokens in rgb()
508
+ - *(mds-modal)* Let the page colour through the dialog
509
+ - *(mds-modal)* Measure the bars when the dialog becomes visible
510
+ - *(storybook)* Let the header do what it does on a page
511
+ - *(mds-button-group)* Decide the joined edges among the members of the group
512
+ - *(stencil)* Open a floating panel from its arrow, not from its middle
513
+ - *(mds-dropdown,mds-tooltip)* Place a panel that mounts already visible
514
+ - *(mds-filter)* Centre the selected item wherever the filter sits on the page
515
+ - *(mds-stepper-bar-item)* Number the steps by position, not by child node
516
+ - *(stencil)* Position a floating panel only once it has a box to measure
517
+ - *(mds-dropdown)* Give the panel its outro back
518
+ - *(mds-input-select)* Draw the arrow the way mds-input-date draws its icon
519
+ - *(mds-input-select)* Stop the dark block from repainting the arrow
520
+ - *(mds-mention)* Give the remove button a switch and an event
521
+ - *(mds-table)* Count the selected rows in the batch actions badge
522
+ - *(mds-table-header)* Resolve the select-all switch before ticking it
523
+ - *(storybook)* Key the lists the stories build, and lint for it
524
+ - *(mds-button)* Keep the box of an icon-only button while it awaits
525
+ - *(mds-kpi-item)* Hold the line open while the value is still to come
526
+ - *(stencil)* Animate the text at its full length, from the first frame
527
+ - *(stencil)* Paint the two label variants that four components were missing
528
+ - *(mds-toast)* Park a toast that is not visible outside the screen
529
+ - *(stencil)* Hold back every transition under the animation preference
530
+ - *(stencil)* Let the animations written in JS read the preference too
531
+ - *(mds-tree-item)* End the branch on the icon that covers it
532
+ - *(mds-tree-item)* Give the shorter branch to the first child only
533
+ - *(mds-tree)* Stack the items, not the whitespace between them
534
+ - *(stencil)* Give the entries of a dropdown menu the role of entries
535
+ - *(mds-policy-ai)* Declare the chip panel a group, not a menu
536
+ - *(mds-modal)* Name the dialog, and leave only one of them
537
+ - *(mds-dropdown)* Wire the caller and the panel with references that resolve
538
+ - *(mds-dropdown)* Name the entries of the menu from the panel that declares it
539
+ - *(mds-tooltip)* Let the text of the tip reach the caller it describes
540
+ - *(mds-tab-item)* Let the tab tell whether the popup it opens is showing
541
+ - *(mds-dropdown)* Let go of the caller the target no longer names
542
+ - *(stencil)* Take the escape listener off window when it is detached
543
+ - *(mds-pref-theme)* Write the mode as --magma-pref-theme
544
+ - *(stencil)* Inject the global token fallbacks instead of writing them by hand
545
+ - *(storybook)* Align the chrome and the preview on one color scheme
546
+ - *(mds-badge)* Never fill the outline tone
547
+ - *(mds-progress)* Fill the status bars with the hue, not its ink
548
+ - *(mds-modal)* Keep the close icon visible on the scrim in dark
549
+ - *(mds-file)* Split the name from the extension at the last dot
550
+
551
+ ### Build
552
+
553
+ - *(magma)* Cache agent docs as stencil build outputs
554
+ - *(magma)* Add all target building every project in dependency order
555
+ - *(magma)* Exclude storybook stories and test files from the stencil build
556
+ - *(magma)* Replace yarn with npm as the package manager
557
+ - *(magma)* Drop the @mdi/svg override in favor of @iconsauce/mdi-svg 1.1.0
558
+ - *(magma)* Update dependencies to fix npm audit vulnerabilities
559
+ - *(magma)* Update nx to 23.1.3
560
+ - *(magma)* Make clean-modules remove all nested node_modules and lockfiles
561
+ - *(magma)* Add the root lint configs to the lint target inputs
562
+ - *(magma)* Add @stencil/vitest and align vitest to 4.1.11
563
+ - *(storybook)* Move to the vite builder and run the stories with the vitest addon
564
+ - *(magma)* Declare each dependency in the project that uses it
565
+ - *(magma)* Resolve svg-icons from the workspace and make the Nx graph analysis explicit
566
+ - *(magma)* Pin the remaining dependency ranges
567
+
568
+ ### Changes
569
+
570
+ - *(stencil)* Name the mode mode and the named theme theme
571
+ - *(mds-pref-mode)* Drop theme from the visible label
572
+
573
+ ### Documentation
574
+
575
+ - *(magma)* Add module install instructions for agents
576
+ - *(stencil)* Update property descriptions and types across multiple components
577
+ - *(magma)* Rename install->agents, add usage guide + component catalogue
578
+ - *(stencil)* Update components readme
579
+ - *(stencil)* Update components.d.ts
580
+ - *(mds-accordion-item)* Align docs with disableClose rename
581
+ - *(mds-card-content)* Regenerate component docs
582
+ - *(mds-card-media)* Regenerate component docs
583
+ - *(magma)* Enhance issue templates with new fields and labels
584
+ - *(magma)* Add agentic git governance rules and PR template
585
+ - *(magma)* Require linking work branches to their github issue
586
+ - *(stencil)* Clarify the quiet tone migration mapping
587
+ - *(magma)* Require merge commits when promoting dev into main
588
+ - *(magma)* Detail repo structure in README
589
+ - *(magma)* Require PRs to list every resolved issue with a closing keyword
590
+ - *(stencil)* Add the Semantic roles reference story
591
+ - *(stencil)* Allinea la reference story al ruolo inverse-surface
592
+ - *(mds-usage)* Restate why the dark header overrides stay removed
593
+ - *(mds-paginator)* Clarify that the focus auto-scroll follows keyboard navigation only
594
+ - *(mds-calendar)* Document and register --mds-calendar-max-width
595
+ - *(magma)* Point contributor docs at npm instead of yarn
596
+ - *(magma)* Document the lint gate in CI
597
+ - *(magma)* Document the vitest based stencil tests
598
+ - *(mds-input)* Recommend autocomplete tokens on login fields
599
+ - *(mds-chip)* Regenerate the readme after the selected-state rewiring
600
+ - *(mds-emoji)* Restore the css custom properties table dropped by the rewiring
601
+ - *(magma)* Require a covering test for every behaviour change
602
+ - *(magma)* Point the test docs at the vitest storybook project
603
+ - *(styles,magma)* Document the corner axis, and stop recommending the hatch
604
+ - *(mds-dropdown)* Write down the roles of the panel, and point the examples at an id
605
+ - *(magma)* Let agents open pull requests into dev, still never merge them
606
+ - *(stencil)* Customize the entity and tree stories with semantic roles
607
+ - *(mds-badge)* Regenerate the readme for the outline note
608
+ - *(magma)* Document the wrapper tests
609
+ - *(magma)* Document the tag-only beta releases
610
+ - *(styles,magma)* Update the compatibility table for magma 2 stable
611
+
612
+ ### Features
613
+
614
+ - *(mds-modal)* Update component properties and styles for improved functionality and consistency
615
+ - *(mds-modal)* Refine animation styles and transitions for improved modal behavior
616
+ - *(magma)* Add .browserslistrc for modern CSS support and update package dependencies
617
+ - *(mds-icon)* Expose IconsSetService to set the SVG path without sessionStorage
618
+ - *(mds-calendar,mds-input-date,mds-input-date-range)* Port magma 1.12 from support/v1.x
619
+ - *(stencil)* Inline the semantic layer as var() fallbacks
620
+ - *(stencil)* Adopt --magma-surface-* in surface components
621
+ - *(mds-table)* Consume semantic surfaces and flip text with the theme
622
+ - *(stencil)* Add the semantic surfaces Storybook cheat-sheet
623
+ - *(stencil)* Wire named themes into storybook and fix the variant components
624
+ - *(stencil)* Coordinate lock-dark between the pref theme lanes
625
+ - *(design-tokens,stencil,styles)* Collapse accent roles to {accent, ai}
626
+ - *(stencil)* [**breaking**] Make the published packages tree-shakeable
627
+ - *(design-tokens,styles,stencil)* Publish the hue role scales and promote them under pref-contrast-more
628
+ - *(styles,stencil)* Register the component custom properties from globals.css
629
+ - *(design-tokens,styles,stencil)* Retint the raw ramp with the theme via --magma-scale-*
630
+ - *(stencil)* Enable SSR with declarative shadow DOM
631
+ - *(stencil)* Add check.ssr guard for SSR regressions
632
+ - *(design-tokens,styles,stencil)* Give the colored hues the emphasis band states
633
+ - *(design-tokens,styles,stencil)* A shadow ink role, the ring family back, and a guard
634
+ - *(stencil)* Add hide-today to mds-calendar and the date inputs
635
+ - *(styles,stencil)* Emit the corner axis, shape and scale in one block
636
+ - *(stencil)* Point the shaped components at the shape-aware scale
637
+ - *(stencil)* Let mds-pref-theme-variant drive the corner axis
638
+ - *(stencil)* Forward an accessible name to the native controls of the inputs
639
+ - *(mds-dropdown)* Walk the menu with the keyboard, and close it back on the caller
640
+
641
+ ### Refactor
642
+
643
+ - *(mds-modal)* Replace @apply with direct gap property for consistency
644
+ - *(mds-avatar-stack)* Drive slotted item size from parent, drop :host-context
645
+ - *(stencil)* Drive slotted child styling from parent, drop :host-context
646
+ - *(stencil)* Drop precautionary safari :host-context in size container queries
647
+ - *(stencil)* Remove ineffective safari :host-context gates
648
+ - *(mds-tab)* Propagate direction/animation to items, drop :host-context
649
+ - *(mds-table)* Propagate selection to rows, drop :host-context
650
+ - *(mds-tree)* Propagate toggle-position/appearance to items, drop :host-context
651
+ - *(mds-tree)* Resolve effective actions in JS, drop last :host-context
652
+ - *(stencil)* Respect strict boolean condition
653
+ - *(mds-accordion)* Rename closable to disableClose
654
+ - *(mds-banner)* Rename cockade to hideCockade
655
+ - *(mds-breadcrumb)* Rename back to hideBack
656
+ - *(mds-card)* Rename autoGrid to disableAutoGrid
657
+ - *(mds-dropdown)* Rename arrow/autoPlacement/shift/smooth to negative props
658
+ - *(mds-file)* Rename showDownloadedIcon to hideDownloadedIcon
659
+ - *(mds-header)* Rename backdrop to hideBackdrop
660
+ - *(mds-help)* Rename autoPlacement to disableAutoPlacement
661
+ - *(mds-input-date)* Use disable-auto-placement on dropdown
662
+ - *(mds-input-date-range)* Use disable-auto-placement on dropdown
663
+ - *(mds-modal)* Rename backdrop to hideBackdrop
664
+ - *(mds-notification)* Rename visible to dismissed
665
+ - *(mds-pref-language)* Drop autoPlacement on dropdown
666
+ - *(mds-pref-theme-variant)* Drop autoPlacement on dropdown
667
+ - *(mds-push-notification-item)* Default deletable to false
668
+ - *(mds-radial-menu-item)* Use disableAutoPlacement on tooltip
669
+ - *(mds-status-bar)* Use hideBackdrop on modal
670
+ - *(mds-tooltip)* Rename arrow/autoPlacement/shift to negative props
671
+ - *(stencil)* Align floating controller with negative floating props
672
+ - *(stencil)* [**breaking**] Drive language and preferences through a shared reactive store
673
+ - *(storybook)* Sync preview preferences through the addon channel
674
+ - *(mds-pref-language-item)* Use explicit comparisons in code validation
675
+ - *(stencil,styles)* [**breaking**] Migrate --tone-*(bare) usages to --tone-*-seed (#572)
676
+ - *(magma)* Move semantic.config into design-tokens to break the build cycle
677
+ - *(mds-toast)* Consuma il ruolo --magma-surface-inverse
678
+ - *(stencil)* Replace stale bare tone utilities in stories
679
+ - *(stencil)* Read the staged semantic layer from styles build dir
680
+ - *(stencil)* Migrate accent variant partials to semantic accent roles
681
+ - *(design-tokens,styles,stencil)* Name the hue background levels wash-*, not surface-*
682
+ - *(stencil)* Adopt semantic color roles in components
683
+ - *(stencil)* Adopt the semantic status roles where the value is identical
684
+ - *(stencil)* Give the step-04 inks a role, split by what they sit on
685
+ - *(stencil)* Put the status fills on the emphasis band
686
+ - *(stencil)* Adopt the neutral wash band for the pill backgrounds
687
+ - *(stencil)* Give the step-02 inks a role, by what they sit on
688
+ - *(stencil)* Give the status borders a role, strong where the border is the affordance
689
+ - *(magma)* Move the react and angular wrappers out of projects/stencil
690
+ - *(stencil)* [**breaking**] Invert the mds-calendar boolean props to their negative form
691
+ - *(mds-stepper-bar)* Scroll the strip from the boxes
692
+ - *(stencil)* Move the neutral seed backgrounds onto the surface roles
693
+ - *(stencil)* Give the remaining neutral seed grounds a role
694
+ - *(stencil)* Let the contrast layer paint the paper ground
695
+ - *(mds-badge)* Drop the leftovers of the text tone
696
+ - *(stencil)* Move the accent residues onto the accent roles
697
+ - *(stencil)* Move the raw status steps onto the hue roles
698
+ - *(stencil)* Move the ramp-step borders onto the border roles
699
+ - *(stencil)* Retire the ramp steps from the *-pref-* sheets
700
+ - *(stencil)* Move the dark variants onto the inverse roles
701
+ - *(stencil)* Move the step 02 inks onto text-default
702
+ - *(stencil)* Move the step 06 inks onto the text and border roles
703
+ - *(stencil)* Move the step 07 inks onto the text and border roles
704
+ - *(stencil)* Move the step 06/07 grounds onto the wash and border roles
705
+ - *(mds-input)* Align the commented counter hover with wash-base
706
+ - *(stencil)* Move the --magma-scale-NN uses with an identical role onto it
707
+
708
+ ### Styling
709
+
710
+ - *(stencil)* Update accessibility feature with supported browser specs
711
+ - *(stencil)* Move apply tokens to custom proerty based tokens
712
+ - *(stencil)* Replace pref :host-context with dedicated attributes
713
+ - *(stencil)* Replace pref :host-context in variant files with attributes
714
+ - *(stencil)* Various component styles fixes
715
+ - *(stencil)* Quieter unchecked switch track in dark