Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .server-changes/dashboard-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ Meet the dashboard agent: a chat in every environment that answers questions abo

**Watch…** on a run, queue, error or the health report tells you when things change: a run finishes, a queue clears or grows past a number you pick, an error comes back, an environment recovers. The answer arrives in the chat and, if you want, by email, Slack or webhook — and the agent can look into bad news on its own. A watch reaches you on any browser you sign in from, without opening the chat first.

A sample of conversations is scored automatically so the agent keeps getting better; only the score and a one-line summary are kept, never your messages, data or code, and we can switch it off for your organization on request. The Docs button is gone from page headers — ask the agent instead, or open Documentation from Help & Feedback. Separately, a queue's wait times, peak depth, throughput and throttling can now be read from the API.
A sample of conversations is scored automatically so the agent keeps getting better; only the score and a one-line summary are kept, never your messages, data or code, and we can switch it off for your organization on request. Ask the agent instead of the Docs buttons in page headers — they stay there when the agent isn't available to you. Separately, a queue's wait times, peak depth, throughput and throttling can now be read from the API.
6 changes: 6 additions & 0 deletions .server-changes/query-toolbar-light-theme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
area: webapp
type: fix
---

In the light theme, the Format, Clear and Copy buttons on the query editor no longer blend into the query text behind them.
2 changes: 1 addition & 1 deletion apps/webapp/app/components/code/TSQLEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ export function TSQLEditor(opts: TSQLEditorProps) {
}}
/>
{showButtons && (
<div className="absolute right-0 top-0 z-10 flex items-center justify-end bg-background-deep/80 light:bg-transparent p-1.5">
<div className="absolute right-0 top-0 z-10 flex items-center justify-end bg-background-deep/80 light:bg-white/80 p-1.5">
{additionalActions && additionalActions}
{showFormatButton && (
<Button
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { useDashboardAgent } from "./dashboardAgentLauncher";

export function WhenAgentUnavailable({ children }: { children: React.ReactNode }) {
const agent = useDashboardAgent();
if (agent) {
return null;
}

return <>{children}</>;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ExclamationTriangleIcon } from "@heroicons/react/20/solid";
import { BookOpenIcon, ExclamationTriangleIcon } from "@heroicons/react/20/solid";
import { json } from "@remix-run/node";

import { useFetcher, useRevalidator } from "@remix-run/react";
Expand Down Expand Up @@ -92,6 +92,7 @@ import { requireUserId } from "~/services/session.server";
import { cn } from "~/utils/cn";
import { formatNumberCompact } from "~/utils/numberFormatter";
import {
docsPath,
EnvironmentParamSchema,
v3AgentTaskPath,
v3PlaygroundAgentPath,
Expand All @@ -102,6 +103,7 @@ import {
v3TestTaskPath,
} from "~/utils/pathBuilder";
import { sectionAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -286,6 +288,15 @@ export default function Page() {
<PageTitle title="Tasks" accessory={<TasksHelpTooltip />} />
<PageAccessories>
<AdminDebugTooltip />
<WhenAgentUnavailable>
<LinkButton
variant={"docs/small"}
LeadingIcon={BookOpenIcon}
to={docsPath("/tasks/overview")}
>
Task docs
</LinkButton>
</WhenAgentUnavailable>
Comment thread
coderabbitai[bot] marked this conversation as resolved.
</PageAccessories>
</NavBar>
<PageBody scrollable={false}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { BookOpenIcon } from "@heroicons/react/24/solid";
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
import { Suspense, useMemo, useState } from "react";
import { TypedAwait, typeddefer, useTypedLoaderData } from "remix-typedjson";
Expand All @@ -16,7 +17,7 @@ import { statusColor } from "~/components/primitives/charts/statusColors";
import { CopyableText } from "~/components/primitives/CopyableText";
import { DateTime } from "~/components/primitives/DateTime";
import { Header2 } from "~/components/primitives/Headers";
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
import { Paragraph } from "~/components/primitives/Paragraph";
import * as Property from "~/components/primitives/PropertyTable";
import { Spinner } from "~/components/primitives/Spinner";
Expand All @@ -42,12 +43,14 @@ import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstan
import { getResizableSnapshot } from "~/services/resizablePanel.server";
import { requireUser } from "~/services/session.server";
import {
docsPath,
EnvironmentParamSchema,
v3EnvironmentPath,
v3PlaygroundAgentPath,
} from "~/utils/pathBuilder";
import { parseFiniteInt } from "~/utils/searchParams";
import { agentsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -227,6 +230,17 @@ export default function Page() {
</span>
}
/>
<PageAccessories>
<WhenAgentUnavailable>
<LinkButton
variant="docs/small"
LeadingIcon={BookOpenIcon}
to={docsPath("ai-chat/overview")}
>
Agents docs
</LinkButton>
</WhenAgentUnavailable>
</PageAccessories>
</NavBar>
<MetricsLayout.Root>
<MetricsLayout.Filters>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { parseWithZod } from "@conform-to/zod";
import {
BellAlertIcon,
BellSlashIcon,
BookOpenIcon,
EnvelopeIcon,
LockClosedIcon,
PlusIcon,
Expand All @@ -24,7 +25,7 @@ import { Button, LinkButton } from "~/components/primitives/Buttons";
import { ClipboardField } from "~/components/primitives/ClipboardField";
import { DetailCell } from "~/components/primitives/DetailCell";
import { Header2, Header3 } from "~/components/primitives/Headers";
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
import { Paragraph } from "~/components/primitives/Paragraph";
import {
Table,
Expand Down Expand Up @@ -59,12 +60,14 @@ import { requireUserId } from "~/services/session.server";
import { cn } from "~/utils/cn";
import {
EnvironmentParamSchema,
docsPath,
v3BillingPath,
v3NewProjectAlertPath,
v3ProjectAlertsPath,
} from "~/utils/pathBuilder";
import { alertsWorker } from "~/v3/alertsWorker.server";
import { alertsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -190,6 +193,17 @@ export default function Page() {
<PageContainer>
<NavBar>
<PageTitle title="Alerts" />
<PageAccessories>
<WhenAgentUnavailable>
<LinkButton
LeadingIcon={BookOpenIcon}
to={docsPath("v3/troubleshooting-alerts")}
variant="docs/small"
>
Alerts docs
</LinkButton>
</WhenAgentUnavailable>
</PageAccessories>
</NavBar>
<PageBody scrollable={false}>
{alertChannels.length > 0 ? (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
BookOpenIcon,
CheckCircleIcon,
ExclamationTriangleIcon,
KeyIcon,
Expand Down Expand Up @@ -74,8 +75,9 @@ import {
import { rbac } from "~/services/rbac.server";
import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder";
import { cn } from "~/utils/cn";
import { EnvironmentParamSchema, v3BillingPath } from "~/utils/pathBuilder";
import { docsPath, EnvironmentParamSchema, v3BillingPath } from "~/utils/pathBuilder";
import { sectionAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -340,6 +342,16 @@ export default function Page() {
</Property.Item>
</Property.Table>
</AdminDebugTooltip>

<WhenAgentUnavailable>
<LinkButton
variant="docs/small"
LeadingIcon={BookOpenIcon}
to={docsPath("/v3/apikeys")}
>
API keys docs
</LinkButton>
</WhenAgentUnavailable>
</PageAccessories>
</NavBar>
<PageBody scrollable={false}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ExclamationCircleIcon } from "@heroicons/react/20/solid";
import { BookOpenIcon } from "@heroicons/react/24/solid";
import { Outlet, useLocation, useNavigation, useParams } from "@remix-run/react";

import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
Expand Down Expand Up @@ -55,9 +56,15 @@ import {
runOpsSplitReadEnabled,
type PrismaClientOrTransaction,
} from "~/db.server";
import { EnvironmentParamSchema, v3BatchPath, v3BatchRunsPath } from "~/utils/pathBuilder";
import {
docsPath,
EnvironmentParamSchema,
v3BatchPath,
v3BatchRunsPath,
} from "~/utils/pathBuilder";
import { throwNotFound } from "~/utils/httpErrors";
import { batchesAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -122,6 +129,15 @@ export default function Page() {
<PageTitle title="Batches" />
<PageAccessories>
<AdminDebugTooltip />
<WhenAgentUnavailable>
<LinkButton
variant={"docs/small"}
LeadingIcon={BookOpenIcon}
to={docsPath("/triggering")}
>
Batches docs
</LinkButton>
</WhenAgentUnavailable>
</PageAccessories>
</NavBar>
<PageBody scrollable={false}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { getFormProps, getInputProps, useForm } from "@conform-to/react";
import { parseWithZod } from "@conform-to/zod";
import { ArrowUpCircleIcon, CheckIcon, EnvelopeIcon, PlusIcon } from "@heroicons/react/20/solid";
import { BookOpenIcon } from "@heroicons/react/24/solid";
import { DialogClose } from "@radix-ui/react-dialog";
import { useFetcher, useSearchParams } from "@remix-run/react";
import { type ActionFunctionArgs, json, type LoaderFunctionArgs } from "@remix-run/server-runtime";
Expand Down Expand Up @@ -66,6 +67,7 @@ import { requireUserId } from "~/services/session.server";
import { cn } from "~/utils/cn";
import {
branchesPath,
docsPath,
EnvironmentParamSchema,
ProjectParamSchema,
v3BillingPath,
Expand All @@ -78,6 +80,7 @@ import { NewBranchPanel } from "~/routes/resources.branches.create";
import { BranchesOptions } from "~/utils/branches";
import { IconArrowBearRight2 } from "@tabler/icons-react";
import { branchesAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";
import { pageMeta } from "~/utils/pageTitle";

Expand Down Expand Up @@ -256,6 +259,17 @@ export default function Page() {
))}
</Property.Table>
</AdminDebugTooltip>

<WhenAgentUnavailable>
<LinkButton
variant={"docs/small"}
LeadingIcon={BookOpenIcon}
to={docsPath("deployment/preview-branches")}
>
Branches docs
</LinkButton>
</WhenAgentUnavailable>
Comment thread
coderabbitai[bot] marked this conversation as resolved.

{limits.isAtLimit ? (
<UpgradePanel
limits={limits}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PlusIcon } from "@heroicons/react/20/solid";
import { BookOpenIcon, PlusIcon } from "@heroicons/react/20/solid";
import { NoSymbolIcon } from "@heroicons/react/24/solid";
import { Outlet, useParams } from "@remix-run/react";
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
Expand Down Expand Up @@ -49,11 +49,13 @@ import { checkPermissions } from "~/services/routeBuilders/permissions.server";
import { requireUserId } from "~/services/session.server";
import { cn } from "~/utils/cn";
import {
docsPath,
EnvironmentParamSchema,
v3BulkActionPath,
v3CreateBulkActionPath,
} from "~/utils/pathBuilder";
import { bulkActionsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -140,6 +142,15 @@ export default function Page() {
<PageTitle title="Bulk actions" />
<PageAccessories>
<AdminDebugTooltip />
<WhenAgentUnavailable>
<LinkButton
variant={"docs/small"}
LeadingIcon={BookOpenIcon}
to={docsPath("/bulk-actions")}
>
Bulk actions docs
</LinkButton>
</WhenAgentUnavailable>
<LinkButton
variant="primary/small"
LeadingIcon={PlusIcon}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { ArrowPathIcon, ArrowUturnLeftIcon, NoSymbolIcon } from "@heroicons/react/20/solid";
import {
ArrowPathIcon,
ArrowUturnLeftIcon,
BookOpenIcon,
NoSymbolIcon,
} from "@heroicons/react/20/solid";
import { Form, Outlet, useLocation, useNavigate, useNavigation, useParams } from "@remix-run/react";

import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
Expand Down Expand Up @@ -26,7 +31,7 @@ import {
DialogTrigger,
DialogFooter,
} from "~/components/primitives/Dialog";
import { NavBar, PageTitle } from "~/components/primitives/PageHeader";
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
import { PaginationControls } from "~/components/primitives/Pagination";
import { Paragraph } from "~/components/primitives/Paragraph";
import {
Expand Down Expand Up @@ -66,6 +71,7 @@ import { titleCase } from "~/utils";
import { cn } from "~/utils/cn";
import {
EnvironmentParamSchema,
docsPath,
v3DeploymentPath,
v3ProjectSettingsIntegrationsPath,
} from "~/utils/pathBuilder";
Expand All @@ -75,6 +81,7 @@ import { useAutoRevalidate } from "~/hooks/useAutoRevalidate";
import { env } from "~/env.server";
import { DialogClose } from "@radix-ui/react-dialog";
import { deploymentsAgentPageContext } from "~/components/dashboard-agent/suggested-prompts";
import { WhenAgentUnavailable } from "~/components/dashboard-agent/WhenAgentUnavailable";
import type { Handle } from "~/utils/handle";

export const handle: Handle = {
Expand Down Expand Up @@ -199,6 +206,17 @@ export default function Page() {
<PageContainer>
<NavBar>
<PageTitle title="Deployments" />
<PageAccessories>
<WhenAgentUnavailable>
<LinkButton
variant={"docs/small"}
LeadingIcon={BookOpenIcon}
to={docsPath("/cli-deploy")}
>
Deployments docs
</LinkButton>
</WhenAgentUnavailable>
</PageAccessories>
</NavBar>
<PageBody scrollable={false}>
<ResizablePanelGroup orientation="horizontal" className="h-full max-h-full">
Expand Down
Loading
Loading