@mastra/playground-ui 27.0.0-alpha.8 → 27.0.1-alpha.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 +651 -0
- package/dist/index.cjs.js +878 -447
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.css +279 -88
- package/dist/index.es.js +864 -442
- package/dist/index.es.js.map +1 -1
- package/dist/src/domains/traces/components/format-hierarchical-spans.d.ts +7 -1
- package/dist/src/domains/traces/components/index.d.ts +1 -0
- package/dist/src/domains/traces/components/span-data-panel-view.d.ts +7 -1
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
- package/dist/src/domains/traces/components/traces-list-mode-toggle.d.ts +12 -0
- package/dist/src/domains/traces/components/traces-list-view.d.ts +8 -1
- package/dist/src/domains/traces/components/traces-toolbar.d.ts +5 -1
- package/dist/src/domains/traces/hooks/index.d.ts +2 -0
- package/dist/src/domains/traces/hooks/use-branch.d.ts +52 -0
- package/dist/src/domains/traces/hooks/use-trace-list-navigation.d.ts +7 -2
- package/dist/src/domains/traces/hooks/use-trace-or-branch-spans.d.ts +25 -0
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +12 -1
- package/dist/src/domains/traces/trace-filters.d.ts +3 -0
- package/dist/src/ds/components/Button/Button.d.ts +1 -1
- package/dist/src/ds/components/ButtonsGroup/buttons-group.d.ts +30 -5
- package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +5 -0
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +19 -11
- package/dist/src/ds/components/Combobox/combobox.d.ts +3 -3
- package/dist/src/ds/components/Combobox/combobox.stories.d.ts +1 -0
- package/dist/src/ds/components/Combobox/index.d.ts +1 -0
- package/dist/src/ds/components/Command/command.d.ts +1 -1
- package/dist/src/ds/components/Input/input.d.ts +2 -2
- package/dist/src/ds/components/InputGroup/index.d.ts +1 -0
- package/dist/src/ds/components/InputGroup/input-group.d.ts +44 -0
- package/dist/src/ds/components/InputGroup/input-group.stories.d.ts +17 -0
- package/dist/src/ds/components/PropertyFilter/property-filter-applied.d.ts +11 -1
- package/dist/src/ds/components/PropertyFilter/property-filter-creator.d.ts +7 -1
- package/dist/src/ds/components/ScrollArea/scroll-area.d.ts +28 -7
- package/dist/src/ds/components/ScrollArea/scroll-area.stories.d.ts +4 -0
- package/dist/src/ds/components/StatusBadge/StatusBadge.d.ts +1 -1
- package/dist/src/ds/components/Tabs/tabs-list.d.ts +8 -2
- package/dist/src/ds/components/Tabs/tabs.stories.d.ts +2 -0
- package/dist/src/ds/components/Textarea/textarea.d.ts +2 -2
- package/dist/src/index.d.ts +1 -1
- package/package.json +7 -8
- package/dist/src/ds/components/Threads/index.d.ts +0 -1
- package/dist/src/ds/components/Threads/threads.d.ts +0 -28
- package/dist/src/ds/components/Threads/threads.stories.d.ts +0 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,656 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 27.0.1-alpha.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`6ba46dc`](https://github.com/mastra-ai/mastra/commit/6ba46dc1ac04af635d0f59377d7384ca6af44cd1)]:
|
|
8
|
+
- @mastra/core@1.33.1-alpha.0
|
|
9
|
+
- @mastra/client-js@1.18.1-alpha.0
|
|
10
|
+
- @mastra/react@0.3.1-alpha.0
|
|
11
|
+
|
|
12
|
+
## 27.0.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- **Updated agent traces tab to use the rich observability traces UI** ([#16405](https://github.com/mastra-ai/mastra/pull/16405))
|
|
17
|
+
|
|
18
|
+
The agent traces tab now shows the dense 7-column trace list with a side-panel detail view featuring colored timeline spans (Agent/Workflow/Model/Scorer), expandable nested spans, Evaluate Trace, and Save as Dataset Item.
|
|
19
|
+
|
|
20
|
+
**Locked scope filter pills**
|
|
21
|
+
|
|
22
|
+
When viewing agent-scoped traces, the Primitive Type and Primitive ID filter pills are now read-only — they display the agent context, show a lock icon and tooltip, and cannot be edited or removed. The Add Filter dropdown no longer lists scope-controlled fields so users cannot accidentally override the active scope.
|
|
23
|
+
|
|
24
|
+
`PropertyFilterApplied` accepts a new `lockedFieldIds` (and optional `lockedTooltipContent`) prop. `PropertyFilterCreator` accepts a new `hiddenFieldIds` prop. Both are opt-in and unset by default, so existing usages are unaffected.
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
// Before
|
|
28
|
+
<PropertyFilterApplied fields={fields} tokens={tokens} onTokensChange={setTokens} />
|
|
29
|
+
|
|
30
|
+
// After — pills for the listed fields render locked with a tooltip
|
|
31
|
+
<PropertyFilterApplied
|
|
32
|
+
fields={fields}
|
|
33
|
+
tokens={tokens}
|
|
34
|
+
onTokensChange={setTokens}
|
|
35
|
+
lockedFieldIds={['rootEntityType', 'entityId']}
|
|
36
|
+
lockedTooltipContent="This filter is set by the current context."
|
|
37
|
+
/>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- Added CodeBlock component with select/tabs switcher, optional shiki syntax highlighting, and Notion-style hover-only copy button (always visible on touch devices via media query). ([#16202](https://github.com/mastra-ai/mastra/pull/16202))
|
|
41
|
+
|
|
42
|
+
- Improved `ScrollArea` to use Base UI internally and added a richer mask API. Edges now fade by default based on `orientation` (top/bottom for vertical, left/right for horizontal, all four for both), so most scrollers get the polished fade-out automatically. ([#16415](https://github.com/mastra-ai/mastra/pull/16415))
|
|
43
|
+
|
|
44
|
+
**Heads up — default behavior change:** `ScrollArea` previously rendered without any edge fade unless `showMask` was passed. It now fades the edges that match `orientation` by default. Pass `mask={false}` on the callsites where you want to keep the old hard edges.
|
|
45
|
+
|
|
46
|
+
**New `mask` prop.** Accepts a boolean (`false` disables the fade entirely) or an object to override individual sides. The `x` and `y` keys are shorthands for the matching axis.
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
// Default — fades follow `orientation`
|
|
50
|
+
<ScrollArea>...</ScrollArea>
|
|
51
|
+
|
|
52
|
+
// Opt out entirely
|
|
53
|
+
<ScrollArea mask={false}>...</ScrollArea>
|
|
54
|
+
|
|
55
|
+
// Keep only the top fade
|
|
56
|
+
<ScrollArea mask={{ bottom: false }}>...</ScrollArea>
|
|
57
|
+
|
|
58
|
+
// Vertical fades only on a two-axis scroller
|
|
59
|
+
<ScrollArea orientation="both" mask={{ x: false }}>...</ScrollArea>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Migrating from `showMask`.** The `showMask` boolean is now deprecated but still works — `mask` wins when both are set.
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
// Before
|
|
66
|
+
<ScrollArea showMask>...</ScrollArea>
|
|
67
|
+
<ScrollArea showMask={false}>...</ScrollArea>
|
|
68
|
+
|
|
69
|
+
// After
|
|
70
|
+
<ScrollArea>...</ScrollArea> // default fade matches orientation
|
|
71
|
+
<ScrollArea mask={false}>...</ScrollArea> // explicitly disable
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- Added an "All traces, nested too" mode to the Observability → Traces page. ([#16479](https://github.com/mastra-ai/mastra/pull/16479))
|
|
75
|
+
|
|
76
|
+
The traces list now has a switcher in the toolbar to toggle between two views:
|
|
77
|
+
- **Top-level traces only** (default) — one row per top-level run, the existing behavior.
|
|
78
|
+
- **All traces, nested too** — one row per invocation, including every agent, workflow, tool, processor, scorer, and RAG ingestion that ran nested inside another run.
|
|
79
|
+
|
|
80
|
+
This makes it possible to find every invocation of a given entity (e.g. "every run of `recipe-maker` workflow") regardless of how it was triggered. Selecting a row in the new mode opens a detail panel showing just that branch's subtree.
|
|
81
|
+
|
|
82
|
+
**New hooks** for consumers building their own observability UIs:
|
|
83
|
+
- `useBranch({ traceId, spanId, depth? })` — fetches the span subtree rooted at an anchor span.
|
|
84
|
+
- `useTraceOrBranchSpans({ traceId, spanId, listMode })` — returns trace spans or a branch subtree depending on the active mode.
|
|
85
|
+
|
|
86
|
+
- Added opt-in interactivity and per-page filter persistence support for observability UI components. ([#15747](https://github.com/mastra-ai/mastra/pull/15747))
|
|
87
|
+
- `MetricsLineChart` accepts an `onPointClick` callback so chart points can drive drilldowns.
|
|
88
|
+
- `HorizontalBars` accepts row-level and segment-level hrefs for linked metric bars without nested anchors.
|
|
89
|
+
- `MetricsDataTable` accepts `getRowHref(row)` for linked rows with consistent hover and focus styling.
|
|
90
|
+
- `MetricsCard` exposes an `Actions` slot in the top bar for contextual icon links.
|
|
91
|
+
- Observability filter helpers for Metrics, Traces, and Logs each keep their own saved-filters storage key so pages remember filters independently.
|
|
92
|
+
|
|
93
|
+
All additions are optional, so existing consumers continue to render the same way unless they pass the new props.
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
<MetricsLineChart
|
|
97
|
+
data={points}
|
|
98
|
+
series={series}
|
|
99
|
+
onPointClick={point => navigate(`/observability?dateFrom=${point.from}&dateTo=${point.to}`)}
|
|
100
|
+
/>
|
|
101
|
+
|
|
102
|
+
<HorizontalBars data={[{ name: 'agent-a', values: [42, 3], href: '/observability?filterEntityName=agent-a' }]} />
|
|
103
|
+
|
|
104
|
+
<MetricsDataTable columns={cols} data={rows} getRowHref={row => `/observability?filterThreadId=${row.threadId}`} />
|
|
105
|
+
|
|
106
|
+
<MetricsCard>
|
|
107
|
+
<MetricsCard.TopBar>
|
|
108
|
+
<MetricsCard.TitleAndDescription title="Latency" />
|
|
109
|
+
<MetricsCard.Actions>
|
|
110
|
+
<IconButton href="/observability" />
|
|
111
|
+
</MetricsCard.Actions>
|
|
112
|
+
</MetricsCard.TopBar>
|
|
113
|
+
</MetricsCard>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- Added a new `pill` variant on `TabList` with an animated background indicator that slides behind the active trigger. The default `line` variant now animates its underline smoothly between tabs as well. Implemented by migrating the underlying Tabs component from Radix UI to Base UI. ([#16414](https://github.com/mastra-ai/mastra/pull/16414))
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
// Before — only the line (underline) style was available
|
|
120
|
+
<Tabs defaultTab="overview">
|
|
121
|
+
<TabList>
|
|
122
|
+
<Tab value="overview">Overview</Tab>
|
|
123
|
+
<Tab value="projects">Projects</Tab>
|
|
124
|
+
</TabList>
|
|
125
|
+
</Tabs>
|
|
126
|
+
|
|
127
|
+
// After — opt into the new pill style via the `variant` prop on TabList
|
|
128
|
+
<Tabs defaultTab="overview">
|
|
129
|
+
<TabList variant="pill">
|
|
130
|
+
<Tab value="overview">Overview</Tab>
|
|
131
|
+
<Tab value="projects">Projects</Tab>
|
|
132
|
+
</TabList>
|
|
133
|
+
</Tabs>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The public API (`Tabs`, `TabList`, `Tab`, `TabContent`) is unchanged; existing call-sites keep the default `line` variant.
|
|
137
|
+
|
|
138
|
+
- **Added** new `pill-ghost` variant on `Tabs` and `sticky` prop on `TabList` for sticky tab headers. ([#16433](https://github.com/mastra-ai/mastra/pull/16433))
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
<Tabs defaultTab="overview">
|
|
142
|
+
<TabList variant="pill-ghost" sticky>
|
|
143
|
+
<Tab value="overview">Overview</Tab>
|
|
144
|
+
<Tab value="settings">Settings</Tab>
|
|
145
|
+
</TabList>
|
|
146
|
+
</Tabs>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Added** `variant` prop on `Combobox` (`default`, `ghost`, `link`) for flexible trigger styling. Note: this prop existed previously but was a no-op; it now actually drives the trigger appearance, so callers passing `variant` will see updated styles.
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
// Bordered form input (default)
|
|
153
|
+
<Combobox options={options} value={value} onValueChange={setValue} />
|
|
154
|
+
|
|
155
|
+
// Borderless, hover-only surface
|
|
156
|
+
<Combobox options={options} value={value} onValueChange={setValue} variant="ghost" />
|
|
157
|
+
|
|
158
|
+
// Text-only trigger
|
|
159
|
+
<Combobox options={options} value={value} onValueChange={setValue} variant="link" />
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Improved** `EntityHeader` layout — title and children now share a single row with wrapping, and padding is tighter for denser headers.
|
|
163
|
+
|
|
164
|
+
**Improved** `ScrollArea` to handle vertical/horizontal orientation correctly, preventing forced horizontal scroll when only vertical is needed.
|
|
165
|
+
|
|
166
|
+
**Improved** `PanelSeparator` with a pill-shaped handle that grows on hover/active for a clearer affordance.
|
|
167
|
+
|
|
168
|
+
**Removed** `Threads`, `ThreadList`, `ThreadItem`, `ThreadLink`, `ThreadDeleteButton` exports. These had no consumers outside this repository. Downstream users relying on these exports should compose an equivalent list locally using the underlying DS primitives (`Button`, `Icon`, `Txt`) — the `playground` package now contains a reference implementation under `src/components/thread-list`.
|
|
169
|
+
|
|
170
|
+
```diff
|
|
171
|
+
- import { Threads, ThreadList, ThreadItem, ThreadLink, ThreadDeleteButton } from '@mastra/playground-ui';
|
|
172
|
+
+ // Compose locally with @mastra/playground-ui primitives (Button, Icon, Txt)
|
|
173
|
+
+ // or copy the reference implementation from the playground package.
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- **Added** `MainSidebar.NavLabel` — collapse-aware label slot for `asChild` nav items. When the sidebar collapses to icon-only mode, the label hides via `VisuallyHidden` (still announced by screen readers) instead of leaking outside the 36px icon rail. The default `link={...}` path was already collapse-aware; `asChild` consumers now have a matching primitive. ([#16167](https://github.com/mastra-ai/mastra/pull/16167))
|
|
177
|
+
|
|
178
|
+
```tsx
|
|
179
|
+
// Before: text leaked visually when the sidebar collapsed
|
|
180
|
+
<MainSidebar.NavLink asChild>
|
|
181
|
+
<button>
|
|
182
|
+
<Bot />
|
|
183
|
+
Agents
|
|
184
|
+
</button>
|
|
185
|
+
</MainSidebar.NavLink>
|
|
186
|
+
|
|
187
|
+
// After: wrap labels in MainSidebar.NavLabel
|
|
188
|
+
<MainSidebar.NavLink asChild>
|
|
189
|
+
<button>
|
|
190
|
+
<Bot />
|
|
191
|
+
<MainSidebar.NavLabel>Agents</MainSidebar.NavLabel>
|
|
192
|
+
</button>
|
|
193
|
+
</MainSidebar.NavLink>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Improved** truncation handling for nav items and section headers. Long labels now clip with a single-line ellipsis instead of wrapping to a second line during the collapse/expand transition, eliminating layout jumps at narrow widths.
|
|
197
|
+
|
|
198
|
+
- Added SettingsRow primitive for label/description + control rows in settings pages. Markup mirrors the existing platform settings row pattern (flex justify-between with title + optional description on the left, control on the right) so consumers can adopt it without visual regressions. ([#16150](https://github.com/mastra-ai/mastra/pull/16150))
|
|
199
|
+
|
|
200
|
+
Removed the redundant SelectField wrapper. Its only internal consumer (Studio settings) was migrated to SettingsRow + Select primitives. For form fields use SelectFieldBlock; for settings rows use SettingsRow.
|
|
201
|
+
|
|
202
|
+
**Before**
|
|
203
|
+
|
|
204
|
+
```tsx
|
|
205
|
+
<SelectField name="theme" label="Theme mode" value={theme} onValueChange={setTheme} options={THEME_OPTIONS} />
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**After**
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
<SettingsRow label="Theme mode" htmlFor="theme">
|
|
212
|
+
<Select value={theme} onValueChange={setTheme}>
|
|
213
|
+
<SelectTrigger id="theme" className="w-full sm:w-48">
|
|
214
|
+
<SelectValue />
|
|
215
|
+
</SelectTrigger>
|
|
216
|
+
<SelectContent>{/* items */}</SelectContent>
|
|
217
|
+
</Select>
|
|
218
|
+
</SettingsRow>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
- Added `InputGroup` and extended `ButtonsGroup` in playground-ui design system. ([#16417](https://github.com/mastra-ai/mastra/pull/16417))
|
|
222
|
+
|
|
223
|
+
**New `InputGroup` component**
|
|
224
|
+
|
|
225
|
+
Compose inputs with leading or trailing icons, buttons, text labels, and keyboard hints. Supports inline (left/right) and block (top/bottom) addon alignment, and works with both inputs and textareas.
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupButton } from '@mastra/playground-ui';
|
|
229
|
+
import { SearchIcon, XIcon } from 'lucide-react';
|
|
230
|
+
|
|
231
|
+
<InputGroup>
|
|
232
|
+
<InputGroupAddon>
|
|
233
|
+
<SearchIcon />
|
|
234
|
+
</InputGroupAddon>
|
|
235
|
+
<InputGroupInput placeholder="Search..." />
|
|
236
|
+
<InputGroupAddon align="inline-end">
|
|
237
|
+
<InputGroupButton aria-label="Clear">
|
|
238
|
+
<XIcon />
|
|
239
|
+
</InputGroupButton>
|
|
240
|
+
</InputGroupAddon>
|
|
241
|
+
</InputGroup>;
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Extended `ButtonsGroup`**
|
|
245
|
+
|
|
246
|
+
Added `orientation` (`horizontal` | `vertical`), and new `ButtonsGroupSeparator` and `ButtonsGroupText` slots. Existing API unchanged.
|
|
247
|
+
|
|
248
|
+
```tsx
|
|
249
|
+
<ButtonsGroup spacing="close">
|
|
250
|
+
<Button variant="outline">−</Button>
|
|
251
|
+
<ButtonsGroupText>42</ButtonsGroupText>
|
|
252
|
+
<Button variant="outline">+</Button>
|
|
253
|
+
</ButtonsGroup>
|
|
254
|
+
|
|
255
|
+
<ButtonsGroup orientation="vertical">
|
|
256
|
+
<Button variant="ghost">Copy</Button>
|
|
257
|
+
<ButtonsGroupSeparator />
|
|
258
|
+
<Button variant="ghost">Cut</Button>
|
|
259
|
+
</ButtonsGroup>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Tweaked `Button` ghost variant**
|
|
263
|
+
|
|
264
|
+
Aligned hover/active progression with the outline variant (`surface3` → `surface4`) so click feedback is perceptible on transparent backgrounds. Existing ghost buttons throughout the playground will appear one shade lighter on hover and active.
|
|
265
|
+
|
|
266
|
+
### Patch Changes
|
|
267
|
+
|
|
268
|
+
- Improved Studio's Traces page to scale smoothly to many traces. The list now renders only the visible window, so scrolling stays responsive and memory usage stays bounded regardless of how many traces are loaded. ([#16262](https://github.com/mastra-ai/mastra/pull/16262))
|
|
269
|
+
|
|
270
|
+
- Filter pills (`PropertyFilterApplied`) now match the rest of the design system — single 1px border, consistent rounded segments, no custom styling. Labels stay on one line and no longer compress when long values are present. ([#16426](https://github.com/mastra-ai/mastra/pull/16426))
|
|
271
|
+
|
|
272
|
+
`ButtonsGroupText` segments also no longer wrap to multiple lines or shrink under flex pressure, which makes them safer to drop into any tight layout.
|
|
273
|
+
|
|
274
|
+
- Fixed three issues on the Logs and Traces pages: ([#16306](https://github.com/mastra-ai/mastra/pull/16306))
|
|
275
|
+
- Column widths now stay stable while scrolling — they no longer jump as different rows scroll into view.
|
|
276
|
+
- Scrolling far down the Logs list no longer scrambles rows (duplicates, gaps, or empty rows after additional pages load).
|
|
277
|
+
- Changing a filter or the date range now scrolls the list back to the top, instead of leaving an empty band above the new data until you nudge the scroll. Logs and Traces now behave the same way on filter changes.
|
|
278
|
+
|
|
279
|
+
- Added `NoTracesInfo` component that informs the user there are no traces for the active date range. ([#16303](https://github.com/mastra-ai/mastra/pull/16303))
|
|
280
|
+
|
|
281
|
+
- Refreshed the visual style of form controls and popups for a softer, more consistent look: ([#16150](https://github.com/mastra-ai/mastra/pull/16150))
|
|
282
|
+
- **Button:** thinner border (`border` instead of `border-2`); text-mode buttons use `rounded-full`; icon-mode buttons are circular.
|
|
283
|
+
- **Combobox / Select / DropdownMenu / Command:** triggers and items aligned on the form-input look — `rounded-lg` border, transparent background, soft hover/open states, consistent `text-ui-smd` typography.
|
|
284
|
+
- **Popups (Popover / Tooltip / Select / Dropdown content):** `rounded-xl` containers with `shadow-dialog`; inner items `rounded-lg` inside `p-1`.
|
|
285
|
+
- **Tokens:** bumped the radius scale (`sm` 2→4px, `md` 4→6px, `lg` 6→10px, `xl` 12→14px); replaced `--shadow-dialog`'s outer 1px ring with an inset top gloss so the dialog shadow stops doubling up with each consumer's own border.
|
|
286
|
+
|
|
287
|
+
- **Polished Combobox dropdown items** ([#16411](https://github.com/mastra-ai/mastra/pull/16411))
|
|
288
|
+
- Moved the selection check to the right of each item so unselected rows no longer carry an awkward left padding gap and the whole list aligns consistently.
|
|
289
|
+
- Tightened popup search/empty padding and softened the trigger hover for a calmer command-palette feel.
|
|
290
|
+
|
|
291
|
+
**Added `ComboboxPrimitive` export for advanced compositions**
|
|
292
|
+
|
|
293
|
+
Re-exports the raw `@base-ui/react/combobox` parts (Root, Trigger, Input, List, Item, Chips, etc.) so callers needing virtualization, async status, chips, or creatable patterns can compose them directly with the shared `comboboxStyles` tokens — without growing the monolithic `<Combobox>` prop surface.
|
|
294
|
+
|
|
295
|
+
```tsx
|
|
296
|
+
import { ComboboxPrimitive, comboboxStyles } from '@mastra/playground-ui';
|
|
297
|
+
|
|
298
|
+
<ComboboxPrimitive.Root items={items}>
|
|
299
|
+
<ComboboxPrimitive.Input className={comboboxStyles.searchInput} />
|
|
300
|
+
<ComboboxPrimitive.Portal>
|
|
301
|
+
<ComboboxPrimitive.Positioner>
|
|
302
|
+
<ComboboxPrimitive.Popup className={comboboxStyles.popup}>
|
|
303
|
+
<ComboboxPrimitive.List className={comboboxStyles.list}>
|
|
304
|
+
{item => (
|
|
305
|
+
<ComboboxPrimitive.Item value={item} className={comboboxStyles.item}>
|
|
306
|
+
{item.label}
|
|
307
|
+
</ComboboxPrimitive.Item>
|
|
308
|
+
)}
|
|
309
|
+
</ComboboxPrimitive.List>
|
|
310
|
+
</ComboboxPrimitive.Popup>
|
|
311
|
+
</ComboboxPrimitive.Positioner>
|
|
312
|
+
</ComboboxPrimitive.Portal>
|
|
313
|
+
</ComboboxPrimitive.Root>;
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
- Aligned Badge variant colors with the Notice and Toast palette so the design system uses one consistent set of semantic colors. Default badges keep their neutral surface, while success, error, info and warning variants now use the same notice tokens as Notices and Toasts. Icons inside badges are sized down to match the badge height. ([#16215](https://github.com/mastra-ai/mastra/pull/16215))
|
|
317
|
+
|
|
318
|
+
- Improved Studio's Logs page to scale smoothly to many log records. The list now renders only the visible window, so scrolling stays responsive and memory usage stays bounded regardless of how many logs are loaded. ([#16263](https://github.com/mastra-ai/mastra/pull/16263))
|
|
319
|
+
|
|
320
|
+
- Fixed Studio streaming render behavior for interleaved reasoning and improved chat autoscroll during rapid output. ([#16331](https://github.com/mastra-ai/mastra/pull/16331))
|
|
321
|
+
|
|
322
|
+
- Restored auto-refresh on the traces list page, polling every 10 seconds. Polling is paused while the request is forbidden (HTTP 403) to avoid flicker. ([#16204](https://github.com/mastra-ai/mastra/pull/16204))
|
|
323
|
+
|
|
324
|
+
- Refined Combobox and Select trigger interactions with an active state and fixed value truncation when a leading badge is rendered. Refreshed PanelSeparator with a clearer hover/active affordance, an enlarged hit area, and a focus-visible accent. Removed the default `bg-surface2` background from `Threads` so consumers can control the surface color. ([#16269](https://github.com/mastra-ai/mastra/pull/16269))
|
|
325
|
+
|
|
326
|
+
- Changed the default Observability list mode to branches (all traces, including nested). The query logic still recognizes `?listMode=traces` to opt back into the top-level-only view. ([#16493](https://github.com/mastra-ai/mastra/pull/16493))
|
|
327
|
+
|
|
328
|
+
**Before**
|
|
329
|
+
|
|
330
|
+
`/observability` → top-level traces only
|
|
331
|
+
|
|
332
|
+
**After**
|
|
333
|
+
|
|
334
|
+
`/observability` → branches (all traces, nested too)
|
|
335
|
+
`/observability?listMode=traces` → top-level traces only
|
|
336
|
+
|
|
337
|
+
- Fixed Notice component alignment with action: button now stays at default sm size, vertically aligns to first text line via negative margin compensation, and stacks below the message as a full-width button on narrow containers. ([#16150](https://github.com/mastra-ai/mastra/pull/16150))
|
|
338
|
+
|
|
339
|
+
- Updated dependencies [[`9f17410`](https://github.com/mastra-ai/mastra/commit/9f1741080def23d42ee50b39887a385ae316a3c6), [`7ad5585`](https://github.com/mastra-ai/mastra/commit/7ad55856406f1de398dc713f6a9eaa78b2784bb6), [`ac47842`](https://github.com/mastra-ai/mastra/commit/ac478427aa7a5f5fdaed633a911218689b438c60), [`cc189cc`](https://github.com/mastra-ai/mastra/commit/cc189cc0128eb7af233476b5e421ec6888bffde7), [`d1fdbd0`](https://github.com/mastra-ai/mastra/commit/d1fdbd012add5623cb7e6b7f882b605ab358bbb4), [`210ea7a`](https://github.com/mastra-ai/mastra/commit/210ea7af559791b73a44fc9c12179908aaa3183f), [`7c275a8`](https://github.com/mastra-ai/mastra/commit/7c275a810595e1a6c41ccc39720531ab65734700), [`bae019e`](https://github.com/mastra-ai/mastra/commit/bae019ecb6694da96909f7ec7b9eb3a0a33aa887), [`890b24c`](https://github.com/mastra-ai/mastra/commit/890b24cc7d32ed6aa4dfe253e54dc6bf4099f690), [`c6eb39e`](https://github.com/mastra-ai/mastra/commit/c6eb39ea6dca381c6563cb240237fbe608e02f93), [`f984b4d`](https://github.com/mastra-ai/mastra/commit/f984b4d6c60bf2ae2a9b156f0e8c35a66fe96c91), [`6742347`](https://github.com/mastra-ai/mastra/commit/6742347d71955d7639adc9ddf6ff8282de7ee3ba), [`b59316f`](https://github.com/mastra-ai/mastra/commit/b59316ffa0f7688165b0f9c81ccdf85da461e5b2), [`0f48ebf`](https://github.com/mastra-ai/mastra/commit/0f48ebfc7ac7897b2092a189f45751924cf56d1c), [`37c0dc5`](https://github.com/mastra-ai/mastra/commit/37c0dc5697d343db98628bf867bf71ce6deec6d7), [`087e413`](https://github.com/mastra-ai/mastra/commit/087e4133e5d6efa36619e9556c16750e4179c047), [`83218c8`](https://github.com/mastra-ai/mastra/commit/83218c88b37773c9424fbe733b37be556e55e94d), [`ef6b584`](https://github.com/mastra-ai/mastra/commit/ef6b5847ac33c0a7e80af3a86e8801e2933dd3ee), [`c6eb39e`](https://github.com/mastra-ai/mastra/commit/c6eb39ea6dca381c6563cb240237fbe608e02f93), [`7b0ad1f`](https://github.com/mastra-ai/mastra/commit/7b0ad1f5c53dc118c6da12ae82ae2587037dc2b8), [`d91ebe2`](https://github.com/mastra-ai/mastra/commit/d91ebe28ee065d8f2ed6df741c3c07f58d359529), [`62666c3`](https://github.com/mastra-ai/mastra/commit/62666c367eaeac3941ead454b1d38810cc855721), [`33f5061`](https://github.com/mastra-ai/mastra/commit/33f5061cd1c0335020c3faae61ce96de822854fa), [`4af2160`](https://github.com/mastra-ai/mastra/commit/4af2160322f4718cac421930cce85641e9512389), [`087e413`](https://github.com/mastra-ai/mastra/commit/087e4133e5d6efa36619e9556c16750e4179c047), [`265ec9f`](https://github.com/mastra-ai/mastra/commit/265ec9f887b5c81255c873a76ff7796f16e4f99b), [`ce01024`](https://github.com/mastra-ai/mastra/commit/ce010242eee9bdfc09e4c26725b9d37998679a8d), [`6ce80bf`](https://github.com/mastra-ai/mastra/commit/6ce80bf4872a891e0bddf8b80561a80584efb14b), [`f984b4d`](https://github.com/mastra-ai/mastra/commit/f984b4d6c60bf2ae2a9b156f0e8c35a66fe96c91), [`136c959`](https://github.com/mastra-ai/mastra/commit/136c9592fb0eeb0cd212f28629d8a29b7557a2fc), [`9268531`](https://github.com/mastra-ai/mastra/commit/9268531e7ec4be98beeba3b3ae8be0a7ea380662), [`13ead79`](https://github.com/mastra-ai/mastra/commit/13ead79149486b88144db7e11e6ff551caef5be1), [`05dab92`](https://github.com/mastra-ai/mastra/commit/05dab92b3373306a4791c3a035a3100dd9a76b7f), [`dccd8f1`](https://github.com/mastra-ai/mastra/commit/dccd8f1f8b8f1ad203b77556207e5529567c616d), [`4df7cc7`](https://github.com/mastra-ai/mastra/commit/4df7cc79342fd065fe7fdeef93c094db14b12bcd), [`f180e49`](https://github.com/mastra-ai/mastra/commit/f180e4990e71b04c9a475b523584071712f0048f), [`9260e01`](https://github.com/mastra-ai/mastra/commit/9260e015276fb1b500f7878ee452b47476bf1583), [`e281ae5`](https://github.com/mastra-ai/mastra/commit/e281ae50e6087affc242de13f471112835bc60b4), [`2f6c54e`](https://github.com/mastra-ai/mastra/commit/2f6c54e17c041cac1def54baaa6b771647836414), [`284b0d7`](https://github.com/mastra-ai/mastra/commit/284b0d78d0edb306413447e5268007491006937c), [`05dab92`](https://github.com/mastra-ai/mastra/commit/05dab92b3373306a4791c3a035a3100dd9a76b7f), [`aca3121`](https://github.com/mastra-ai/mastra/commit/aca31211233dac25459f140ea4fcfb3a5af64c18), [`e06a159`](https://github.com/mastra-ai/mastra/commit/e06a1598ca07a6c3778aefc2a2d288363c6294ff), [`4dd900d`](https://github.com/mastra-ai/mastra/commit/4dd900d75dfe9be89f8c15188b368a8622aa1e18), [`b560d6f`](https://github.com/mastra-ai/mastra/commit/b560d6f88b9b904b15c10f75c949eb145bc27684), [`99869ec`](https://github.com/mastra-ai/mastra/commit/99869ecb1f2aa6dfcc44fa4e843e5ee0344efa64), [`900d086`](https://github.com/mastra-ai/mastra/commit/900d086bb737b9cf2fcf68f11b0389b801a2738c), [`f176145`](https://github.com/mastra-ai/mastra/commit/f1761458eaa602f59c5499bd0855ae7a5fd9baf3), [`4c0e286`](https://github.com/mastra-ai/mastra/commit/4c0e28637c9cfb4f416549b55e97ebfa13319dfc), [`e41e7c8`](https://github.com/mastra-ai/mastra/commit/e41e7c88285feefe5cddea22105b40092bcf217f), [`55f1e2d`](https://github.com/mastra-ai/mastra/commit/55f1e2d65425b95a49ae788053b266f256e38c96), [`4ff5bdf`](https://github.com/mastra-ai/mastra/commit/4ff5bdfe170cba6dfb5260c6af0f4ba668430772), [`db760bb`](https://github.com/mastra-ai/mastra/commit/db760bbba144083ae7f4c2ec79a254bdd6111fa3), [`d416efd`](https://github.com/mastra-ai/mastra/commit/d416efdee26c1755328e21cc62584f8566e21432), [`19a2b5e`](https://github.com/mastra-ai/mastra/commit/19a2b5eda9d93f6e1026e0c84f3c1f1c85700a9f), [`9cdf38e`](https://github.com/mastra-ai/mastra/commit/9cdf38e58506e1109c8b38f97cd7770978a4218e), [`087e413`](https://github.com/mastra-ai/mastra/commit/087e4133e5d6efa36619e9556c16750e4179c047), [`db34bc6`](https://github.com/mastra-ai/mastra/commit/db34bc6fb36cf125bda0c46be4d3fdc774b70cc4), [`990851e`](https://github.com/mastra-ai/mastra/commit/990851edcb0e30be5c2c18b6532f1a876cc2d335), [`25184ff`](https://github.com/mastra-ai/mastra/commit/25184ffaf1293ec95119426eb1a1f8d38831b96c), [`bbcd93c`](https://github.com/mastra-ai/mastra/commit/bbcd93cf7d8aa1007d6d84bfd033b8015c912087), [`8373ff4`](https://github.com/mastra-ai/mastra/commit/8373ff46745d77af79f183c4470f80fa2727a6b2), [`d48a705`](https://github.com/mastra-ai/mastra/commit/d48a705ff3dfbdc7a996e07ecd8293b5effd9a2a), [`308bd07`](https://github.com/mastra-ai/mastra/commit/308bd074f35cef0c75d82fc1eb19382fe04ecf6f), [`6068a6c`](https://github.com/mastra-ai/mastra/commit/6068a6c42950fad3ebfc92346417896ba60803d2), [`25184ff`](https://github.com/mastra-ai/mastra/commit/25184ffaf1293ec95119426eb1a1f8d38831b96c), [`36b3bbf`](https://github.com/mastra-ai/mastra/commit/36b3bbf5a8d59f7e23d47e29340e76c681b4929c), [`d86f031`](https://github.com/mastra-ai/mastra/commit/d86f031eb6b0b2570145afafea664e59bf688962), [`b275631`](https://github.com/mastra-ai/mastra/commit/b275631dc10541a482b2e2d4a3e3cfa843bd5fa1), [`00106be`](https://github.com/mastra-ai/mastra/commit/00106bede59b81e5b0e9cd6aad8d3b5dbc336387), [`1c989ea`](https://github.com/mastra-ai/mastra/commit/1c989ea0fcc3e8b6c25a64a5e423875706903420), [`bd36d8e`](https://github.com/mastra-ai/mastra/commit/bd36d8eb6de8c9a0310352649dbd4b06703c2299), [`11c1528`](https://github.com/mastra-ai/mastra/commit/11c152848c5d0ef227184853b5040f5b41ee7b1e), [`4999667`](https://github.com/mastra-ai/mastra/commit/49996678b68356cad7f088430009690406c50fbd), [`e2a079c`](https://github.com/mastra-ai/mastra/commit/e2a079cc3755b1895f7bd5dc36e9be81b11c7c22), [`8ac9141`](https://github.com/mastra-ai/mastra/commit/8ac9141439caa8fdd674944c4d84f29b3c730296), [`25184ff`](https://github.com/mastra-ai/mastra/commit/25184ffaf1293ec95119426eb1a1f8d38831b96c), [`534a456`](https://github.com/mastra-ai/mastra/commit/534a456a25e4df1e5407e7e632f4cb3b1fa14f9d), [`105e454`](https://github.com/mastra-ai/mastra/commit/105e454c95af06a7c741c15969d8f9b0f02463a7), [`aebde9c`](https://github.com/mastra-ai/mastra/commit/aebde9cfacf56592c6b6350cae721740fe090b8a), [`36bae07`](https://github.com/mastra-ai/mastra/commit/36bae07c0e70b1b3006f2fd20830e8883dcbd066), [`5688881`](https://github.com/mastra-ai/mastra/commit/5688881669c7ed157f31ac77f6fc5f8d95ceea32)]:
|
|
340
|
+
- @mastra/core@1.33.0
|
|
341
|
+
- @mastra/client-js@1.18.0
|
|
342
|
+
- @mastra/react@0.3.0
|
|
343
|
+
|
|
344
|
+
## 27.0.0-alpha.18
|
|
345
|
+
|
|
346
|
+
### Patch Changes
|
|
347
|
+
|
|
348
|
+
- Updated dependencies [[`4999667`](https://github.com/mastra-ai/mastra/commit/49996678b68356cad7f088430009690406c50fbd)]:
|
|
349
|
+
- @mastra/core@1.33.0-alpha.17
|
|
350
|
+
- @mastra/client-js@1.18.0-alpha.18
|
|
351
|
+
- @mastra/react@0.3.0-alpha.18
|
|
352
|
+
|
|
353
|
+
## 27.0.0-alpha.17
|
|
354
|
+
|
|
355
|
+
### Patch Changes
|
|
356
|
+
|
|
357
|
+
- Updated dependencies [[`cc189cc`](https://github.com/mastra-ai/mastra/commit/cc189cc0128eb7af233476b5e421ec6888bffde7), [`db760bb`](https://github.com/mastra-ai/mastra/commit/db760bbba144083ae7f4c2ec79a254bdd6111fa3), [`1c989ea`](https://github.com/mastra-ai/mastra/commit/1c989ea0fcc3e8b6c25a64a5e423875706903420)]:
|
|
358
|
+
- @mastra/core@1.33.0-alpha.16
|
|
359
|
+
- @mastra/client-js@1.18.0-alpha.17
|
|
360
|
+
- @mastra/react@0.3.0-alpha.17
|
|
361
|
+
|
|
362
|
+
## 27.0.0-alpha.16
|
|
363
|
+
|
|
364
|
+
### Patch Changes
|
|
365
|
+
|
|
366
|
+
- Updated dependencies [[`105e454`](https://github.com/mastra-ai/mastra/commit/105e454c95af06a7c741c15969d8f9b0f02463a7)]:
|
|
367
|
+
- @mastra/core@1.33.0-alpha.15
|
|
368
|
+
- @mastra/client-js@1.18.0-alpha.16
|
|
369
|
+
- @mastra/react@0.3.0-alpha.16
|
|
370
|
+
|
|
371
|
+
## 27.0.0-alpha.15
|
|
372
|
+
|
|
373
|
+
### Patch Changes
|
|
374
|
+
|
|
375
|
+
- Changed the default Observability list mode to branches (all traces, including nested). The query logic still recognizes `?listMode=traces` to opt back into the top-level-only view. ([#16493](https://github.com/mastra-ai/mastra/pull/16493))
|
|
376
|
+
|
|
377
|
+
**Before**
|
|
378
|
+
|
|
379
|
+
`/observability` → top-level traces only
|
|
380
|
+
|
|
381
|
+
**After**
|
|
382
|
+
|
|
383
|
+
`/observability` → branches (all traces, nested too)
|
|
384
|
+
`/observability?listMode=traces` → top-level traces only
|
|
385
|
+
|
|
386
|
+
- Updated dependencies [[`05dab92`](https://github.com/mastra-ai/mastra/commit/05dab92b3373306a4791c3a035a3100dd9a76b7f), [`05dab92`](https://github.com/mastra-ai/mastra/commit/05dab92b3373306a4791c3a035a3100dd9a76b7f)]:
|
|
387
|
+
- @mastra/react@0.3.0-alpha.15
|
|
388
|
+
- @mastra/client-js@1.18.0-alpha.15
|
|
389
|
+
- @mastra/core@1.33.0-alpha.14
|
|
390
|
+
|
|
391
|
+
## 27.0.0-alpha.14
|
|
392
|
+
|
|
393
|
+
### Minor Changes
|
|
394
|
+
|
|
395
|
+
- Added an "All traces, nested too" mode to the Observability → Traces page. ([#16479](https://github.com/mastra-ai/mastra/pull/16479))
|
|
396
|
+
|
|
397
|
+
The traces list now has a switcher in the toolbar to toggle between two views:
|
|
398
|
+
- **Top-level traces only** (default) — one row per top-level run, the existing behavior.
|
|
399
|
+
- **All traces, nested too** — one row per invocation, including every agent, workflow, tool, processor, scorer, and RAG ingestion that ran nested inside another run.
|
|
400
|
+
|
|
401
|
+
This makes it possible to find every invocation of a given entity (e.g. "every run of `recipe-maker` workflow") regardless of how it was triggered. Selecting a row in the new mode opens a detail panel showing just that branch's subtree.
|
|
402
|
+
|
|
403
|
+
**New hooks** for consumers building their own observability UIs:
|
|
404
|
+
- `useBranch({ traceId, spanId, depth? })` — fetches the span subtree rooted at an anchor span.
|
|
405
|
+
- `useTraceOrBranchSpans({ traceId, spanId, listMode })` — returns trace spans or a branch subtree depending on the active mode.
|
|
406
|
+
|
|
407
|
+
- **Added** new `pill-ghost` variant on `Tabs` and `sticky` prop on `TabList` for sticky tab headers. ([#16433](https://github.com/mastra-ai/mastra/pull/16433))
|
|
408
|
+
|
|
409
|
+
```tsx
|
|
410
|
+
<Tabs defaultTab="overview">
|
|
411
|
+
<TabList variant="pill-ghost" sticky>
|
|
412
|
+
<Tab value="overview">Overview</Tab>
|
|
413
|
+
<Tab value="settings">Settings</Tab>
|
|
414
|
+
</TabList>
|
|
415
|
+
</Tabs>
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**Added** `variant` prop on `Combobox` (`default`, `ghost`, `link`) for flexible trigger styling. Note: this prop existed previously but was a no-op; it now actually drives the trigger appearance, so callers passing `variant` will see updated styles.
|
|
419
|
+
|
|
420
|
+
```tsx
|
|
421
|
+
// Bordered form input (default)
|
|
422
|
+
<Combobox options={options} value={value} onValueChange={setValue} />
|
|
423
|
+
|
|
424
|
+
// Borderless, hover-only surface
|
|
425
|
+
<Combobox options={options} value={value} onValueChange={setValue} variant="ghost" />
|
|
426
|
+
|
|
427
|
+
// Text-only trigger
|
|
428
|
+
<Combobox options={options} value={value} onValueChange={setValue} variant="link" />
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
**Improved** `EntityHeader` layout — title and children now share a single row with wrapping, and padding is tighter for denser headers.
|
|
432
|
+
|
|
433
|
+
**Improved** `ScrollArea` to handle vertical/horizontal orientation correctly, preventing forced horizontal scroll when only vertical is needed.
|
|
434
|
+
|
|
435
|
+
**Improved** `PanelSeparator` with a pill-shaped handle that grows on hover/active for a clearer affordance.
|
|
436
|
+
|
|
437
|
+
**Removed** `Threads`, `ThreadList`, `ThreadItem`, `ThreadLink`, `ThreadDeleteButton` exports. These had no consumers outside this repository. Downstream users relying on these exports should compose an equivalent list locally using the underlying DS primitives (`Button`, `Icon`, `Txt`) — the `playground` package now contains a reference implementation under `src/components/thread-list`.
|
|
438
|
+
|
|
439
|
+
```diff
|
|
440
|
+
- import { Threads, ThreadList, ThreadItem, ThreadLink, ThreadDeleteButton } from '@mastra/playground-ui';
|
|
441
|
+
+ // Compose locally with @mastra/playground-ui primitives (Button, Icon, Txt)
|
|
442
|
+
+ // or copy the reference implementation from the playground package.
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Patch Changes
|
|
446
|
+
|
|
447
|
+
- Updated dependencies [[`f984b4d`](https://github.com/mastra-ai/mastra/commit/f984b4d6c60bf2ae2a9b156f0e8c35a66fe96c91), [`ce01024`](https://github.com/mastra-ai/mastra/commit/ce010242eee9bdfc09e4c26725b9d37998679a8d), [`f984b4d`](https://github.com/mastra-ai/mastra/commit/f984b4d6c60bf2ae2a9b156f0e8c35a66fe96c91), [`8373ff4`](https://github.com/mastra-ai/mastra/commit/8373ff46745d77af79f183c4470f80fa2727a6b2), [`11c1528`](https://github.com/mastra-ai/mastra/commit/11c152848c5d0ef227184853b5040f5b41ee7b1e)]:
|
|
448
|
+
- @mastra/core@1.33.0-alpha.13
|
|
449
|
+
- @mastra/client-js@1.18.0-alpha.14
|
|
450
|
+
- @mastra/react@0.2.36-alpha.14
|
|
451
|
+
|
|
452
|
+
## 27.0.0-alpha.13
|
|
453
|
+
|
|
454
|
+
### Patch Changes
|
|
455
|
+
|
|
456
|
+
- Updated dependencies [[`b59316f`](https://github.com/mastra-ai/mastra/commit/b59316ffa0f7688165b0f9c81ccdf85da461e5b2), [`55f1e2d`](https://github.com/mastra-ai/mastra/commit/55f1e2d65425b95a49ae788053b266f256e38c96), [`19a2b5e`](https://github.com/mastra-ai/mastra/commit/19a2b5eda9d93f6e1026e0c84f3c1f1c85700a9f), [`d48a705`](https://github.com/mastra-ai/mastra/commit/d48a705ff3dfbdc7a996e07ecd8293b5effd9a2a)]:
|
|
457
|
+
- @mastra/core@1.33.0-alpha.12
|
|
458
|
+
- @mastra/client-js@1.18.0-alpha.13
|
|
459
|
+
- @mastra/react@0.2.36-alpha.13
|
|
460
|
+
|
|
461
|
+
## 27.0.0-alpha.12
|
|
462
|
+
|
|
463
|
+
### Patch Changes
|
|
464
|
+
|
|
465
|
+
- Updated dependencies [[`37c0dc5`](https://github.com/mastra-ai/mastra/commit/37c0dc5697d343db98628bf867bf71ce6deec6d7), [`ef6b584`](https://github.com/mastra-ai/mastra/commit/ef6b5847ac33c0a7e80af3a86e8801e2933dd3ee), [`4dd900d`](https://github.com/mastra-ai/mastra/commit/4dd900d75dfe9be89f8c15188b368a8622aa1e18), [`4ff5bdf`](https://github.com/mastra-ai/mastra/commit/4ff5bdfe170cba6dfb5260c6af0f4ba668430772), [`bbcd93c`](https://github.com/mastra-ai/mastra/commit/bbcd93cf7d8aa1007d6d84bfd033b8015c912087), [`308bd07`](https://github.com/mastra-ai/mastra/commit/308bd074f35cef0c75d82fc1eb19382fe04ecf6f)]:
|
|
466
|
+
- @mastra/core@1.33.0-alpha.11
|
|
467
|
+
- @mastra/client-js@1.18.0-alpha.12
|
|
468
|
+
- @mastra/react@0.2.36-alpha.12
|
|
469
|
+
|
|
470
|
+
## 27.0.0-alpha.11
|
|
471
|
+
|
|
472
|
+
### Minor Changes
|
|
473
|
+
|
|
474
|
+
- **Updated agent traces tab to use the rich observability traces UI** ([#16405](https://github.com/mastra-ai/mastra/pull/16405))
|
|
475
|
+
|
|
476
|
+
The agent traces tab now shows the dense 7-column trace list with a side-panel detail view featuring colored timeline spans (Agent/Workflow/Model/Scorer), expandable nested spans, Evaluate Trace, and Save as Dataset Item.
|
|
477
|
+
|
|
478
|
+
**Locked scope filter pills**
|
|
479
|
+
|
|
480
|
+
When viewing agent-scoped traces, the Primitive Type and Primitive ID filter pills are now read-only — they display the agent context, show a lock icon and tooltip, and cannot be edited or removed. The Add Filter dropdown no longer lists scope-controlled fields so users cannot accidentally override the active scope.
|
|
481
|
+
|
|
482
|
+
`PropertyFilterApplied` accepts a new `lockedFieldIds` (and optional `lockedTooltipContent`) prop. `PropertyFilterCreator` accepts a new `hiddenFieldIds` prop. Both are opt-in and unset by default, so existing usages are unaffected.
|
|
483
|
+
|
|
484
|
+
```tsx
|
|
485
|
+
// Before
|
|
486
|
+
<PropertyFilterApplied fields={fields} tokens={tokens} onTokensChange={setTokens} />
|
|
487
|
+
|
|
488
|
+
// After — pills for the listed fields render locked with a tooltip
|
|
489
|
+
<PropertyFilterApplied
|
|
490
|
+
fields={fields}
|
|
491
|
+
tokens={tokens}
|
|
492
|
+
onTokensChange={setTokens}
|
|
493
|
+
lockedFieldIds={['rootEntityType', 'entityId']}
|
|
494
|
+
lockedTooltipContent="This filter is set by the current context."
|
|
495
|
+
/>
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
- Improved `ScrollArea` to use Base UI internally and added a richer mask API. Edges now fade by default based on `orientation` (top/bottom for vertical, left/right for horizontal, all four for both), so most scrollers get the polished fade-out automatically. ([#16415](https://github.com/mastra-ai/mastra/pull/16415))
|
|
499
|
+
|
|
500
|
+
**Heads up — default behavior change:** `ScrollArea` previously rendered without any edge fade unless `showMask` was passed. It now fades the edges that match `orientation` by default. Pass `mask={false}` on the callsites where you want to keep the old hard edges.
|
|
501
|
+
|
|
502
|
+
**New `mask` prop.** Accepts a boolean (`false` disables the fade entirely) or an object to override individual sides. The `x` and `y` keys are shorthands for the matching axis.
|
|
503
|
+
|
|
504
|
+
```tsx
|
|
505
|
+
// Default — fades follow `orientation`
|
|
506
|
+
<ScrollArea>...</ScrollArea>
|
|
507
|
+
|
|
508
|
+
// Opt out entirely
|
|
509
|
+
<ScrollArea mask={false}>...</ScrollArea>
|
|
510
|
+
|
|
511
|
+
// Keep only the top fade
|
|
512
|
+
<ScrollArea mask={{ bottom: false }}>...</ScrollArea>
|
|
513
|
+
|
|
514
|
+
// Vertical fades only on a two-axis scroller
|
|
515
|
+
<ScrollArea orientation="both" mask={{ x: false }}>...</ScrollArea>
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
**Migrating from `showMask`.** The `showMask` boolean is now deprecated but still works — `mask` wins when both are set.
|
|
519
|
+
|
|
520
|
+
```tsx
|
|
521
|
+
// Before
|
|
522
|
+
<ScrollArea showMask>...</ScrollArea>
|
|
523
|
+
<ScrollArea showMask={false}>...</ScrollArea>
|
|
524
|
+
|
|
525
|
+
// After
|
|
526
|
+
<ScrollArea>...</ScrollArea> // default fade matches orientation
|
|
527
|
+
<ScrollArea mask={false}>...</ScrollArea> // explicitly disable
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
- Added a new `pill` variant on `TabList` with an animated background indicator that slides behind the active trigger. The default `line` variant now animates its underline smoothly between tabs as well. Implemented by migrating the underlying Tabs component from Radix UI to Base UI. ([#16414](https://github.com/mastra-ai/mastra/pull/16414))
|
|
531
|
+
|
|
532
|
+
```tsx
|
|
533
|
+
// Before — only the line (underline) style was available
|
|
534
|
+
<Tabs defaultTab="overview">
|
|
535
|
+
<TabList>
|
|
536
|
+
<Tab value="overview">Overview</Tab>
|
|
537
|
+
<Tab value="projects">Projects</Tab>
|
|
538
|
+
</TabList>
|
|
539
|
+
</Tabs>
|
|
540
|
+
|
|
541
|
+
// After — opt into the new pill style via the `variant` prop on TabList
|
|
542
|
+
<Tabs defaultTab="overview">
|
|
543
|
+
<TabList variant="pill">
|
|
544
|
+
<Tab value="overview">Overview</Tab>
|
|
545
|
+
<Tab value="projects">Projects</Tab>
|
|
546
|
+
</TabList>
|
|
547
|
+
</Tabs>
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
The public API (`Tabs`, `TabList`, `Tab`, `TabContent`) is unchanged; existing call-sites keep the default `line` variant.
|
|
551
|
+
|
|
552
|
+
- Added `InputGroup` and extended `ButtonsGroup` in playground-ui design system. ([#16417](https://github.com/mastra-ai/mastra/pull/16417))
|
|
553
|
+
|
|
554
|
+
**New `InputGroup` component**
|
|
555
|
+
|
|
556
|
+
Compose inputs with leading or trailing icons, buttons, text labels, and keyboard hints. Supports inline (left/right) and block (top/bottom) addon alignment, and works with both inputs and textareas.
|
|
557
|
+
|
|
558
|
+
```tsx
|
|
559
|
+
import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupButton } from '@mastra/playground-ui';
|
|
560
|
+
import { SearchIcon, XIcon } from 'lucide-react';
|
|
561
|
+
|
|
562
|
+
<InputGroup>
|
|
563
|
+
<InputGroupAddon>
|
|
564
|
+
<SearchIcon />
|
|
565
|
+
</InputGroupAddon>
|
|
566
|
+
<InputGroupInput placeholder="Search..." />
|
|
567
|
+
<InputGroupAddon align="inline-end">
|
|
568
|
+
<InputGroupButton aria-label="Clear">
|
|
569
|
+
<XIcon />
|
|
570
|
+
</InputGroupButton>
|
|
571
|
+
</InputGroupAddon>
|
|
572
|
+
</InputGroup>;
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
**Extended `ButtonsGroup`**
|
|
576
|
+
|
|
577
|
+
Added `orientation` (`horizontal` | `vertical`), and new `ButtonsGroupSeparator` and `ButtonsGroupText` slots. Existing API unchanged.
|
|
578
|
+
|
|
579
|
+
```tsx
|
|
580
|
+
<ButtonsGroup spacing="close">
|
|
581
|
+
<Button variant="outline">−</Button>
|
|
582
|
+
<ButtonsGroupText>42</ButtonsGroupText>
|
|
583
|
+
<Button variant="outline">+</Button>
|
|
584
|
+
</ButtonsGroup>
|
|
585
|
+
|
|
586
|
+
<ButtonsGroup orientation="vertical">
|
|
587
|
+
<Button variant="ghost">Copy</Button>
|
|
588
|
+
<ButtonsGroupSeparator />
|
|
589
|
+
<Button variant="ghost">Cut</Button>
|
|
590
|
+
</ButtonsGroup>
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
**Tweaked `Button` ghost variant**
|
|
594
|
+
|
|
595
|
+
Aligned hover/active progression with the outline variant (`surface3` → `surface4`) so click feedback is perceptible on transparent backgrounds. Existing ghost buttons throughout the playground will appear one shade lighter on hover and active.
|
|
596
|
+
|
|
597
|
+
### Patch Changes
|
|
598
|
+
|
|
599
|
+
- Filter pills (`PropertyFilterApplied`) now match the rest of the design system — single 1px border, consistent rounded segments, no custom styling. Labels stay on one line and no longer compress when long values are present. ([#16426](https://github.com/mastra-ai/mastra/pull/16426))
|
|
600
|
+
|
|
601
|
+
`ButtonsGroupText` segments also no longer wrap to multiple lines or shrink under flex pressure, which makes them safer to drop into any tight layout.
|
|
602
|
+
|
|
603
|
+
- **Polished Combobox dropdown items** ([#16411](https://github.com/mastra-ai/mastra/pull/16411))
|
|
604
|
+
- Moved the selection check to the right of each item so unselected rows no longer carry an awkward left padding gap and the whole list aligns consistently.
|
|
605
|
+
- Tightened popup search/empty padding and softened the trigger hover for a calmer command-palette feel.
|
|
606
|
+
|
|
607
|
+
**Added `ComboboxPrimitive` export for advanced compositions**
|
|
608
|
+
|
|
609
|
+
Re-exports the raw `@base-ui/react/combobox` parts (Root, Trigger, Input, List, Item, Chips, etc.) so callers needing virtualization, async status, chips, or creatable patterns can compose them directly with the shared `comboboxStyles` tokens — without growing the monolithic `<Combobox>` prop surface.
|
|
610
|
+
|
|
611
|
+
```tsx
|
|
612
|
+
import { ComboboxPrimitive, comboboxStyles } from '@mastra/playground-ui';
|
|
613
|
+
|
|
614
|
+
<ComboboxPrimitive.Root items={items}>
|
|
615
|
+
<ComboboxPrimitive.Input className={comboboxStyles.searchInput} />
|
|
616
|
+
<ComboboxPrimitive.Portal>
|
|
617
|
+
<ComboboxPrimitive.Positioner>
|
|
618
|
+
<ComboboxPrimitive.Popup className={comboboxStyles.popup}>
|
|
619
|
+
<ComboboxPrimitive.List className={comboboxStyles.list}>
|
|
620
|
+
{item => (
|
|
621
|
+
<ComboboxPrimitive.Item value={item} className={comboboxStyles.item}>
|
|
622
|
+
{item.label}
|
|
623
|
+
</ComboboxPrimitive.Item>
|
|
624
|
+
)}
|
|
625
|
+
</ComboboxPrimitive.List>
|
|
626
|
+
</ComboboxPrimitive.Popup>
|
|
627
|
+
</ComboboxPrimitive.Positioner>
|
|
628
|
+
</ComboboxPrimitive.Portal>
|
|
629
|
+
</ComboboxPrimitive.Root>;
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
- Updated dependencies [[`7ad5585`](https://github.com/mastra-ai/mastra/commit/7ad55856406f1de398dc713f6a9eaa78b2784bb6), [`210ea7a`](https://github.com/mastra-ai/mastra/commit/210ea7af559791b73a44fc9c12179908aaa3183f), [`83218c8`](https://github.com/mastra-ai/mastra/commit/83218c88b37773c9424fbe733b37be556e55e94d), [`265ec9f`](https://github.com/mastra-ai/mastra/commit/265ec9f887b5c81255c873a76ff7796f16e4f99b), [`6ce80bf`](https://github.com/mastra-ai/mastra/commit/6ce80bf4872a891e0bddf8b80561a80584efb14b), [`9268531`](https://github.com/mastra-ai/mastra/commit/9268531e7ec4be98beeba3b3ae8be0a7ea380662), [`13ead79`](https://github.com/mastra-ai/mastra/commit/13ead79149486b88144db7e11e6ff551caef5be1), [`bd36d8e`](https://github.com/mastra-ai/mastra/commit/bd36d8eb6de8c9a0310352649dbd4b06703c2299), [`8ac9141`](https://github.com/mastra-ai/mastra/commit/8ac9141439caa8fdd674944c4d84f29b3c730296)]:
|
|
633
|
+
- @mastra/core@1.33.0-alpha.10
|
|
634
|
+
- @mastra/client-js@1.18.0-alpha.11
|
|
635
|
+
- @mastra/react@0.2.36-alpha.11
|
|
636
|
+
|
|
637
|
+
## 27.0.0-alpha.10
|
|
638
|
+
|
|
639
|
+
### Patch Changes
|
|
640
|
+
|
|
641
|
+
- Updated dependencies [[`e281ae5`](https://github.com/mastra-ai/mastra/commit/e281ae50e6087affc242de13f471112835bc60b4)]:
|
|
642
|
+
- @mastra/client-js@1.18.0-alpha.10
|
|
643
|
+
- @mastra/react@0.2.36-alpha.10
|
|
644
|
+
|
|
645
|
+
## 27.0.0-alpha.9
|
|
646
|
+
|
|
647
|
+
### Patch Changes
|
|
648
|
+
|
|
649
|
+
- Updated dependencies [[`5688881`](https://github.com/mastra-ai/mastra/commit/5688881669c7ed157f31ac77f6fc5f8d95ceea32)]:
|
|
650
|
+
- @mastra/core@1.33.0-alpha.9
|
|
651
|
+
- @mastra/client-js@1.18.0-alpha.9
|
|
652
|
+
- @mastra/react@0.2.36-alpha.9
|
|
653
|
+
|
|
3
654
|
## 27.0.0-alpha.8
|
|
4
655
|
|
|
5
656
|
### Patch Changes
|