@sentry/junior-dashboard 0.141.0 → 0.142.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/dist/app.js +4 -1
- package/dist/client/api.d.ts +4 -0
- package/dist/client/components/Tooltip.d.ts +2 -1
- package/dist/client.js +3 -3
- package/dist/index.js +4 -1
- package/package.json +3 -3
- package/src/client/components/Tooltip.tsx +3 -1
- package/src/client/pages/system/GuardianActivity.tsx +2 -1
- package/src/client/pages/tasks/TaskDetailsDrawer.tsx +4 -4
- package/src/client/pages/tasks/TaskExecutionsPage.tsx +2 -2
- package/src/client/pages/tasks/TasksPage.tsx +5 -4
- package/src/mock-reporting/fixtures.ts +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentry/junior-dashboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.142.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"react-router": "^7.16.0",
|
|
35
35
|
"shiki": "4.1.0",
|
|
36
36
|
"zod": "^4.4.3",
|
|
37
|
-
"@sentry/junior": "0.
|
|
38
|
-
"@sentry/junior-plugin-api": "0.
|
|
37
|
+
"@sentry/junior": "0.142.0",
|
|
38
|
+
"@sentry/junior-plugin-api": "0.142.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@tailwindcss/cli": "^4.3.0",
|
|
@@ -18,6 +18,7 @@ type TooltipProps = {
|
|
|
18
18
|
content: ReactNode;
|
|
19
19
|
label?: ReactNode;
|
|
20
20
|
placement?: "above" | "below";
|
|
21
|
+
triggerClassName?: string;
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
const VIEWPORT_GAP = 8;
|
|
@@ -52,6 +53,7 @@ export function Tooltip({
|
|
|
52
53
|
content,
|
|
53
54
|
label,
|
|
54
55
|
placement = "above",
|
|
56
|
+
triggerClassName,
|
|
55
57
|
}: TooltipProps) {
|
|
56
58
|
const tooltipId = useId();
|
|
57
59
|
const rootRef = useRef<Element | null>(null);
|
|
@@ -160,7 +162,7 @@ export function Tooltip({
|
|
|
160
162
|
|
|
161
163
|
return (
|
|
162
164
|
<span
|
|
163
|
-
className="inline-flex"
|
|
165
|
+
className={cn("inline-flex", triggerClassName)}
|
|
164
166
|
ref={rootRef as RefObject<HTMLSpanElement | null>}
|
|
165
167
|
>
|
|
166
168
|
{card}
|
|
@@ -122,10 +122,11 @@ export function GuardianActivity(props: { days: GuardianMetricDay[] }) {
|
|
|
122
122
|
}
|
|
123
123
|
key={day.date}
|
|
124
124
|
label={shortDate(day.date)}
|
|
125
|
+
triggerClassName="h-full min-w-0 flex-1 items-end"
|
|
125
126
|
>
|
|
126
127
|
<button
|
|
127
128
|
aria-label={`${shortDate(day.date)}: ${day.allow} allowed, ${day.ask} asked, ${day.deny} denied, ${formatCostSummary({ total: day.costUsd ?? 0 })}`}
|
|
128
|
-
className="flex min-w-0 flex-
|
|
129
|
+
className="flex w-full min-w-0 flex-col justify-end overflow-hidden rounded-t-sm bg-white/[0.035] focus-visible:outline-1 focus-visible:outline-cyan-300"
|
|
129
130
|
style={{ height: `${height}%` }}
|
|
130
131
|
type="button"
|
|
131
132
|
>
|
|
@@ -138,13 +138,13 @@ export function TaskDetailsDrawer(props: {
|
|
|
138
138
|
<header className="relative border-b border-white/10 bg-dashboard-surface-raised px-4 py-3 md:px-5">
|
|
139
139
|
<div className="min-w-0 pr-12">
|
|
140
140
|
<h2
|
|
141
|
-
className="m-0 font-display text-lg font-medium tracking-normal text-dashboard-text
|
|
141
|
+
className="m-0 font-display text-lg font-medium tracking-normal text-dashboard-text"
|
|
142
142
|
id={titleId}
|
|
143
143
|
>
|
|
144
|
-
{task.
|
|
144
|
+
{task.title}
|
|
145
145
|
</h2>
|
|
146
|
-
<div className="mt-1 break-words font-mono text-xs leading-snug text-dashboard-text-muted">
|
|
147
|
-
{statusLabel} · {formatDate(task.createdAt)}
|
|
146
|
+
<div className="mt-1 break-words font-mono text-xs leading-snug text-dashboard-text-muted capitalize">
|
|
147
|
+
{task.kind} task · {statusLabel} · {formatDate(task.createdAt)}
|
|
148
148
|
</div>
|
|
149
149
|
</div>
|
|
150
150
|
<div className="absolute top-3 right-4 md:right-5">
|
|
@@ -103,7 +103,7 @@ function TaskExecutionsView(props: {
|
|
|
103
103
|
</Link>
|
|
104
104
|
<PageHeader
|
|
105
105
|
description={`${data.task.kind} task · ${data.task.destination.label} · ${statusSummary}`}
|
|
106
|
-
title={data.task.
|
|
106
|
+
title={data.task.title}
|
|
107
107
|
/>
|
|
108
108
|
</div>
|
|
109
109
|
|
|
@@ -140,7 +140,7 @@ function TaskExecutionsView(props: {
|
|
|
140
140
|
{data.executions.map((execution) => (
|
|
141
141
|
<ExecutionRow
|
|
142
142
|
execution={execution}
|
|
143
|
-
fallbackTitle={data.task.
|
|
143
|
+
fallbackTitle={data.task.title}
|
|
144
144
|
key={execution.executionId}
|
|
145
145
|
/>
|
|
146
146
|
))}
|
|
@@ -63,6 +63,7 @@ function taskMatches(task: TaskSummary, search: string): boolean {
|
|
|
63
63
|
task.destination.teamId,
|
|
64
64
|
task.instruction,
|
|
65
65
|
task.kind,
|
|
66
|
+
task.title,
|
|
66
67
|
task.kind === "scheduled" ? task.schedule : task.resource,
|
|
67
68
|
...(task.kind === "event" ? [task.source] : []),
|
|
68
69
|
...(task.kind === "event" ? task.events : []),
|
|
@@ -176,7 +177,7 @@ export function TasksPage(props: { enabled: boolean }) {
|
|
|
176
177
|
className="w-full lg:max-w-sm"
|
|
177
178
|
label="Search tasks"
|
|
178
179
|
onChange={setSearchText}
|
|
179
|
-
placeholder="
|
|
180
|
+
placeholder="Title, instruction, location, or creator"
|
|
180
181
|
value={searchText}
|
|
181
182
|
/>
|
|
182
183
|
</TaskFilterGroup>
|
|
@@ -331,7 +332,7 @@ function TaskRow(props: {
|
|
|
331
332
|
<TaskSourceMark task={task} />
|
|
332
333
|
<span className="min-w-0">
|
|
333
334
|
<span className="block truncate font-display text-base font-medium text-dashboard-text">
|
|
334
|
-
{task.
|
|
335
|
+
{task.title}
|
|
335
336
|
</span>
|
|
336
337
|
<span className="mt-1 block truncate font-mono text-xs uppercase tracking-[0.08em] text-dashboard-text-muted">
|
|
337
338
|
<span className="md:hidden">{task.destination.label}</span>
|
|
@@ -363,7 +364,7 @@ function TaskRow(props: {
|
|
|
363
364
|
</div>
|
|
364
365
|
<button
|
|
365
366
|
aria-expanded={props.selected}
|
|
366
|
-
aria-label={`View task details: ${task.
|
|
367
|
+
aria-label={`View task details: ${task.title}`}
|
|
367
368
|
className="grid size-8 cursor-pointer place-items-center rounded border border-transparent bg-transparent text-dashboard-text-muted transition-colors hover:border-white/10 hover:bg-white/[0.04] hover:text-dashboard-text"
|
|
368
369
|
onClick={props.onSelect}
|
|
369
370
|
type="button"
|
|
@@ -379,7 +380,7 @@ function TaskRow(props: {
|
|
|
379
380
|
</button>
|
|
380
381
|
{task.ownedByViewer ? (
|
|
381
382
|
<Button
|
|
382
|
-
aria-label={`Delete: ${task.
|
|
383
|
+
aria-label={`Delete: ${task.title}`}
|
|
383
384
|
disabled={props.deleting}
|
|
384
385
|
onClick={props.onDelete}
|
|
385
386
|
size="icon"
|
|
@@ -1550,6 +1550,7 @@ function mockTasks(): TaskSummary[] {
|
|
|
1550
1550
|
runsLast7Days: 3,
|
|
1551
1551
|
schedule: "Every Monday at 9:00 AM",
|
|
1552
1552
|
status: "active",
|
|
1553
|
+
title: "Weekly project summary",
|
|
1553
1554
|
totalRuns: 48,
|
|
1554
1555
|
},
|
|
1555
1556
|
{
|
|
@@ -1570,6 +1571,7 @@ function mockTasks(): TaskSummary[] {
|
|
|
1570
1571
|
resource: "Issue · ACME-42",
|
|
1571
1572
|
runsLast7Days: 1,
|
|
1572
1573
|
source: "github",
|
|
1574
|
+
title: "Closed issue summary",
|
|
1573
1575
|
totalRuns: 7,
|
|
1574
1576
|
triggerAvailable: true,
|
|
1575
1577
|
},
|
|
@@ -1591,6 +1593,7 @@ function mockTasks(): TaskSummary[] {
|
|
|
1591
1593
|
resource: "Incident · INC-17",
|
|
1592
1594
|
runsLast7Days: 0,
|
|
1593
1595
|
source: "pagerduty",
|
|
1596
|
+
title: "Incident change alerts",
|
|
1594
1597
|
totalRuns: 0,
|
|
1595
1598
|
triggerAvailable: false,
|
|
1596
1599
|
},
|