From 363c13c3878b60349caab73f19e5630032cbfb21 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 1 Apr 2026 09:53:49 -0700 Subject: [PATCH] Impvove communication --- README.md | 2 +- messages/en-US.json | 6 +++--- src/app/[orgId]/settings/provisioning/pending/page.tsx | 6 ++++++ src/components/PendingSitesTable.tsx | 7 +++++++ src/components/SiteProvisioningKeysTable.tsx | 1 + src/components/ui/controlled-data-table.tsx | 4 +++- src/components/ui/data-table.tsx | 4 +++- 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bac7b7e56..28fc991c8 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Pangolin is an open-source, identity-based remote access platform built on WireG | | Description | |-----------------|--------------| -| **Pangolin Cloud** | Fully managed service with instant setup and pay-as-you-go pricing — no infrastructure required. Or, self-host your own [remote node](https://docs.pangolin.net/manage/remote-node/understanding-nodes) and connect to our control plane. | +| **Pangolin Cloud** | Fully managed service with instant setup and pay-as-you-go pricing - no infrastructure required. Or, self-host your own [remote node](https://docs.pangolin.net/manage/remote-node/understanding-nodes) and connect to our control plane. | | **Self-Host: Community Edition** | Free, open source, and licensed under AGPL-3. | | **Self-Host: Enterprise Edition** | Licensed under Fossorial Commercial License. Free for personal and hobbyist use, and for businesses earning under \$100K USD annually. | diff --git a/messages/en-US.json b/messages/en-US.json index 412d50179..51bb996af 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -371,10 +371,10 @@ "provisioningKeysUpdated": "Provisioning key updated", "provisioningKeysUpdatedDescription": "Your changes have been saved.", "provisioningKeysBannerTitle": "Site Provisioning Keys", - "provisioningKeysBannerDescription": "Generate a provisioning key and use it with the Newt connector to automatically create sites on first startup — no need to set up separate credentials for each site.", + "provisioningKeysBannerDescription": "Generate a provisioning key and use it with the Newt connector to automatically create sites on first startup - no need to set up separate credentials for each site.", "provisioningKeysBannerButtonText": "Learn More", "pendingSitesBannerTitle": "Pending Sites", - "pendingSitesBannerDescription": "Sites that connect using a provisioning key appear here for review. Approve each site before it becomes active and gains access to your resources.", + "pendingSitesBannerDescription": "Sites that connect using a provisioning key appear here for review.", "pendingSitesBannerButtonText": "Learn More", "apiKeysSettings": "{apiKeyName} Settings", "userTitle": "Manage All Users", @@ -2346,7 +2346,7 @@ "description": "Enterprise features, 50 users, 50 sites, and priority support." } }, - "personalUseOnly": "Personal use only (free license — no checkout)", + "personalUseOnly": "Personal use only (free license - no checkout)", "buttons": { "continueToCheckout": "Continue to Checkout" }, diff --git a/src/app/[orgId]/settings/provisioning/pending/page.tsx b/src/app/[orgId]/settings/provisioning/pending/page.tsx index 637f828b8..4669f9160 100644 --- a/src/app/[orgId]/settings/provisioning/pending/page.tsx +++ b/src/app/[orgId]/settings/provisioning/pending/page.tsx @@ -9,6 +9,8 @@ import DismissableBanner from "@app/components/DismissableBanner"; import Link from "next/link"; import { Button } from "@app/components/ui/button"; import { ArrowRight, Plug } from "lucide-react"; +import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert"; +import { TierFeature, tierMatrix } from "@server/lib/billing/tierMatrix"; type PendingSitesPageProps = { params: Promise<{ orgId: string }>; @@ -96,6 +98,10 @@ export default async function PendingSitesPage(props: PendingSitesPageProps) { + + = { onAdd?: () => void; onRefresh?: () => void; isRefreshing?: boolean; + refreshButtonDisabled?: boolean; isNavigatingToAddPage?: boolean; searchPlaceholder?: string; filters?: DataTableFilter[]; @@ -91,6 +92,7 @@ export function ControlledDataTable({ onAdd, onRefresh, isRefreshing, + refreshButtonDisabled = false, searchPlaceholder = "Search...", filters, filterDisplayMode = "label", @@ -335,7 +337,7 @@ export function ControlledDataTable({