Skip to content

Commit 25eb0c7

Browse files
authored
fix(webapp): clarify that region only affects where runs execute (#4226)
## Summary This adds an always-visible info tooltip on the Location column and a note in the "set default region" confirmation dialog making it explicit. It also removes the obsolete "V4" badge from the Regions page title.
1 parent 48a0b83 commit 25eb0c7

2 files changed

Lines changed: 46 additions & 6 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
area: webapp
3+
type: improvement
4+
---
5+
6+
Clarified on the Regions page that a region only affects where your runs execute, not where your data is stored. This shows as a tooltip on the Location column and in the confirmation dialog when you change your default region.

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions/route.tsx

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { CloudProviderIcon } from "~/assets/icons/CloudProviderIcon";
1616
import { FlagIcon } from "~/assets/icons/RegionIcons";
1717
import { cloudProviderTitle } from "~/components/CloudProvider";
1818
import { Feedback } from "~/components/Feedback";
19-
import { V4Title } from "~/components/V4Badge";
2019
import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
2120
import { MainCenteredContainer, PageBody, PageContainer } from "~/components/layout/AppLayout";
2221
import { Badge } from "~/components/primitives/Badge";
@@ -47,6 +46,7 @@ import {
4746
TableRow,
4847
} from "~/components/primitives/Table";
4948
import { TextLink } from "~/components/primitives/TextLink";
49+
import { InfoIconTooltip } from "~/components/primitives/Tooltip";
5050
import { useFeatures } from "~/hooks/useFeatures";
5151
import { useOrganization } from "~/hooks/useOrganizations";
5252
import { useHasAdminAccess } from "~/hooks/useUser";
@@ -138,7 +138,7 @@ export default function Page() {
138138
return (
139139
<PageContainer>
140140
<NavBar>
141-
<PageTitle title={<V4Title>Regions</V4Title>} />
141+
<PageTitle title="Regions" />
142142
<PageAccessories>
143143
<AdminDebugTooltip>
144144
<Property.Table>
@@ -168,7 +168,15 @@ export default function Page() {
168168
<TableRow>
169169
<TableHeaderCell>Region</TableHeaderCell>
170170
<TableHeaderCell>Cloud Provider</TableHeaderCell>
171-
<TableHeaderCell>Location</TableHeaderCell>
171+
<TableHeaderCell>
172+
<span className="flex items-center gap-1">
173+
Location
174+
<InfoIconTooltip
175+
content="Region location is where your runs execute, not where your data is stored."
176+
contentClassName="normal-case tracking-normal"
177+
/>
178+
</span>
179+
</TableHeaderCell>
172180
<TableHeaderCell>Static IPs</TableHeaderCell>
173181
{isAdmin && <TableHeaderCell>Admin</TableHeaderCell>}
174182
<TableHeaderCell
@@ -309,16 +317,20 @@ export default function Page() {
309317
variant="minimal"
310318
panelClassName="max-w-full gap-1"
311319
>
312-
<Paragraph variant="extra-small" className="flex items-baseline gap-x-0.5">
313-
Trigger.dev is fully GDPR compliant. Learn more in our{" "}
320+
<Paragraph variant="extra-small">
321+
Trigger.dev is fully{" "}
322+
<TextLink to="https://security.trigger.dev/gdpr?tab=securityControls&frameworks=gdpr_v1">
323+
GDPR compliant
324+
</TextLink>
325+
. Learn more in our{" "}
314326
<TextLink to="https://security.trigger.dev">security portal</TextLink> or{" "}
315327
<Feedback
316328
button={
317329
<span className="cursor-pointer text-xs text-indigo-500 transition hover:text-indigo-400">
318330
get in touch
319331
</span>
320332
}
321-
defaultValue="help"
333+
defaultValue="feedback"
322334
/>
323335
.
324336
</Paragraph>
@@ -341,6 +353,7 @@ function SetDefaultDialog({
341353
newDefaultRegion: Region;
342354
}) {
343355
const [isOpen, setIsOpen] = useState(false);
356+
const { isManagedCloud } = useFeatures();
344357
const currentDefaultRegion = regions.find((r) => r.isDefault);
345358

346359
return (
@@ -444,6 +457,27 @@ function SetDefaultDialog({
444457
Runs triggered from now on will execute in "{newDefaultRegion.name}", unless you{" "}
445458
<TextLink to={docsPath("triggering#region")}>override when triggering</TextLink>.
446459
</Paragraph>
460+
461+
<InfoPanel
462+
icon={InformationCircleIcon}
463+
iconClassName="size-4"
464+
variant="minimal"
465+
panelClassName="mt-4 max-w-full gap-1 border-t border-grid-dimmed pt-4 pb-0 pl-0"
466+
>
467+
<Paragraph variant="extra-small">
468+
Region is where your runs execute, not where your data is stored.
469+
{isManagedCloud ? (
470+
<>
471+
{" "}
472+
Trigger.dev is fully{" "}
473+
<TextLink to="https://security.trigger.dev/gdpr?tab=securityControls&frameworks=gdpr_v1">
474+
GDPR compliant
475+
</TextLink>
476+
.
477+
</>
478+
) : null}
479+
</Paragraph>
480+
</InfoPanel>
447481
</div>
448482
</DialogDescription>
449483
<DialogFooter>

0 commit comments

Comments
 (0)