diff --git a/src/app/(dashboard)/[portSlug]/admin/email/page.tsx b/src/app/(dashboard)/[portSlug]/admin/email/page.tsx index 4017ee4..4477d4b 100644 --- a/src/app/(dashboard)/[portSlug]/admin/email/page.tsx +++ b/src/app/(dashboard)/[portSlug]/admin/email/page.tsx @@ -34,7 +34,7 @@ const FIELDS: SettingFieldDef[] = [ label: 'Default signature (HTML)', description: 'Appended to the bottom of system-generated emails.', type: 'html', - placeholder: '


The Port Nimara team

', + placeholder: '

-
The Port Nimara team

', defaultValue: '', }, { @@ -71,7 +71,7 @@ const FIELDS: SettingFieldDef[] = [ { key: 'smtp_pass_override', label: 'SMTP password override', - description: 'Optional. Stored in plain text — only set when overriding env credentials.', + description: 'Optional. Stored in plain text - only set when overriding env credentials.', type: 'password', defaultValue: '', }, diff --git a/src/app/(dashboard)/[portSlug]/clients/[clientId]/loading.tsx b/src/app/(dashboard)/[portSlug]/clients/[clientId]/loading.tsx index 326d916..d2e7a04 100644 --- a/src/app/(dashboard)/[portSlug]/clients/[clientId]/loading.tsx +++ b/src/app/(dashboard)/[portSlug]/clients/[clientId]/loading.tsx @@ -4,13 +4,13 @@ import { CardSkeleton } from '@/components/shared/loading-skeleton'; /** * Route-level loading UI for the client detail page. Renders while the * server component resolves the session and the client component bootstraps - * its initial query — replaces the previous empty-header flash on direct + * its initial query - replaces the previous empty-header flash on direct * URL visits. */ export default function Loading() { return (
- {/* Header strip — title, badges, action buttons */} + {/* Header strip - title, badges, action buttons */}
diff --git a/src/app/(dashboard)/[portSlug]/invoices/new/page.tsx b/src/app/(dashboard)/[portSlug]/invoices/new/page.tsx index a31ade2..0e7f9b3 100644 --- a/src/app/(dashboard)/[portSlug]/invoices/new/page.tsx +++ b/src/app/(dashboard)/[portSlug]/invoices/new/page.tsx @@ -59,7 +59,7 @@ export default function NewInvoicePage() { }, [setChrome]); // When the form is launched from an interest detail with `?interestId=…&kind=deposit`, - // fetch enough of the interest to display "Deposit for {client} — Berth {n}" in + // fetch enough of the interest to display "Deposit for {client} - Berth {n}" in // the review step. Doubles as the source of truth for the billing entity prefill. const { data: prefilledInterest } = useQuery<{ data: { @@ -184,7 +184,7 @@ export default function NewInvoicePage() { return (
- {/* Header — desktop only; mobile gets the title from the topbar */} + {/* Header - desktop only; mobile gets the title from the topbar */}
{interest.leadCategory && ( diff --git a/src/app/(portal)/portal/my-reservations/page.tsx b/src/app/(portal)/portal/my-reservations/page.tsx index 95db972..6b643b5 100644 --- a/src/app/(portal)/portal/my-reservations/page.tsx +++ b/src/app/(portal)/portal/my-reservations/page.tsx @@ -59,7 +59,7 @@ export default async function PortalMyReservationsPage() {
{r.yachtName ?? 'Yacht'} {r.berthMooringNumber && ( - — Berth {r.berthMooringNumber} + - Berth {r.berthMooringNumber} )}

diff --git a/src/app/(scanner)/[portSlug]/scan/manifest.webmanifest/route.ts b/src/app/(scanner)/[portSlug]/scan/manifest.webmanifest/route.ts index f1f0dd0..2014311 100644 --- a/src/app/(scanner)/[portSlug]/scan/manifest.webmanifest/route.ts +++ b/src/app/(scanner)/[portSlug]/scan/manifest.webmanifest/route.ts @@ -15,7 +15,7 @@ export async function GET(_req: Request, { params }: { params: Promise<{ portSlu const portName = port?.name ?? 'Port Nimara'; const manifest = { - name: `${portName} — Scanner`, + name: `${portName} - Scanner`, short_name: 'Scanner', description: `Capture and submit expense receipts for ${portName}.`, start_url: `/${portSlug}/scan`, diff --git a/src/app/(scanner)/[portSlug]/scan/page.tsx b/src/app/(scanner)/[portSlug]/scan/page.tsx index 4bb6ac7..c3750e6 100644 --- a/src/app/(scanner)/[portSlug]/scan/page.tsx +++ b/src/app/(scanner)/[portSlug]/scan/page.tsx @@ -3,7 +3,7 @@ import type { Metadata } from 'next'; import { ScanShell } from '@/components/scan/scan-shell'; export const metadata: Metadata = { - title: 'Scan receipt — Port Nimara', + title: 'Scan receipt - Port Nimara', }; export default function ScanPage() { diff --git a/src/app/api/health/route.ts b/src/app/api/health/route.ts index d3cb8dd..57bdf0e 100644 --- a/src/app/api/health/route.ts +++ b/src/app/api/health/route.ts @@ -1,11 +1,11 @@ import { NextResponse } from 'next/server'; /** - * Liveness probe — confirms the Next.js process is responding. + * Liveness probe - confirms the Next.js process is responding. * * Returns 200 unconditionally; if the process is wedged or has crashed * the request never lands here at all. Do NOT include database/Redis/MinIO - * checks in this endpoint — a transient downstream blip should drop the + * checks in this endpoint - a transient downstream blip should drop the * pod from the load balancer (readiness), not restart the pod (liveness). * * For deep dependency checks, hit `/api/ready` instead. diff --git a/src/app/api/public/interests/route.ts b/src/app/api/public/interests/route.ts index 2935254..4d80889 100644 --- a/src/app/api/public/interests/route.ts +++ b/src/app/api/public/interests/route.ts @@ -36,7 +36,7 @@ type PublicInterestData = z.infer; // Keep the helper aligned with that. type Tx = typeof db; -// POST /api/public/interests — unauthenticated public interest registration. +// POST /api/public/interests - unauthenticated public interest registration. // Creates the trio (client + yacht + interest) plus an optional company + // membership, all inside a single transaction. export async function POST(req: NextRequest) { @@ -70,7 +70,7 @@ export async function POST(req: NextRequest) { const firstName = data.firstName ?? fullName.split(/\s+/)[0] ?? 'Valued Guest'; - // Resolve berth by mooring number (if provided). Read-only lookup — safe + // Resolve berth by mooring number (if provided). Read-only lookup - safe // to do outside the transaction. let berthId: string | null = null; let resolvedMooringNumber: string | null = data.mooringNumber ?? null; diff --git a/src/app/api/public/residential-inquiries/route.ts b/src/app/api/public/residential-inquiries/route.ts index 9b97f84..ee75126 100644 --- a/src/app/api/public/residential-inquiries/route.ts +++ b/src/app/api/public/residential-inquiries/route.ts @@ -34,7 +34,7 @@ async function gateRateLimit(ip: string): Promise { } /** - * POST /api/public/residential-inquiries — unauthenticated entry point for + * POST /api/public/residential-inquiries - unauthenticated entry point for * the public website's residential interest form. Creates a * `residential_clients` row and an opening `residential_interests` row in a * single transaction. @@ -110,7 +110,7 @@ export async function POST(req: NextRequest) { emitToRoom(`port:${portId}`, 'residential_client:created', { id: result.clientId }); emitToRoom(`port:${portId}`, 'residential_interest:created', { id: result.interestId }); - // Send notification emails (non-blocking — failures shouldn't 500 the + // Send notification emails (non-blocking - failures shouldn't 500 the // public form). void sendResidentialNotifications({ portId, @@ -147,7 +147,7 @@ async function sendResidentialNotifications(args: { }); await sendEmail(data.email, confirmation.subject, confirmation.html); - // Sales-team alert — pull recipients from system_settings if configured; + // Sales-team alert - pull recipients from system_settings if configured; // fall back to the inquiry_contact_email if available. const recipientsRow = await db.query.systemSettings.findFirst({ where: and( diff --git a/src/app/api/ready/route.ts b/src/app/api/ready/route.ts index 569b65e..f193d62 100644 --- a/src/app/api/ready/route.ts +++ b/src/app/api/ready/route.ts @@ -21,7 +21,7 @@ interface ReadyResponse { } /** - * Readiness probe — verifies that every backing service this process + * Readiness probe - verifies that every backing service this process * needs to serve traffic is reachable. A 503 should drop the pod from the * load balancer until the next probe succeeds; it should not trigger a * pod restart (that's what `/api/health` is for). diff --git a/src/app/api/v1/admin/alerts/run-engine/route.ts b/src/app/api/v1/admin/alerts/run-engine/route.ts index 3fef6d1..169e90c 100644 --- a/src/app/api/v1/admin/alerts/run-engine/route.ts +++ b/src/app/api/v1/admin/alerts/run-engine/route.ts @@ -10,7 +10,7 @@ import { runAlertEngineForPorts } from '@/lib/services/alert-engine'; * exercised by the realapi socket fanout test. * * Requires super_admin or per-port admin permissions; the engine itself - * is idempotent — duplicate runs only re-evaluate, never duplicate rows. + * is idempotent - duplicate runs only re-evaluate, never duplicate rows. */ export const POST = withAuth(async (_req, ctx) => { try { diff --git a/src/app/api/v1/admin/documenso/health/route.ts b/src/app/api/v1/admin/documenso/health/route.ts index f9f7218..66d25ed 100644 --- a/src/app/api/v1/admin/documenso/health/route.ts +++ b/src/app/api/v1/admin/documenso/health/route.ts @@ -5,7 +5,7 @@ import { errorResponse } from '@/lib/errors'; import { checkDocumensoHealth } from '@/lib/services/documenso-client'; /** - * Admin probe — calls Documenso /api/v1/health using the port's effective + * Admin probe - calls Documenso /api/v1/health using the port's effective * config. Used by the "Test connection" button on /admin/documenso. */ export const POST = withAuth( diff --git a/src/app/api/v1/admin/duplicates/handlers.ts b/src/app/api/v1/admin/duplicates/handlers.ts index 5a85564..59182be 100644 --- a/src/app/api/v1/admin/duplicates/handlers.ts +++ b/src/app/api/v1/admin/duplicates/handlers.ts @@ -40,7 +40,7 @@ export async function listHandler(_req: Request, ctx: AuthContext): Promise { const a = clientById.get(p.clientAId); const b = clientById.get(p.clientBId); - if (!a || !b) return null; // FK orphan — shouldn't happen, but be defensive + if (!a || !b) return null; // FK orphan - shouldn't happen, but be defensive // Skip pairs where one side has already been merged or archived. if (a.mergedIntoClientId || b.mergedIntoClientId) return null; return { diff --git a/src/app/api/v1/admin/invitations/route.ts b/src/app/api/v1/admin/invitations/route.ts index acfbbfb..ad2b624 100644 --- a/src/app/api/v1/admin/invitations/route.ts +++ b/src/app/api/v1/admin/invitations/route.ts @@ -9,7 +9,7 @@ import { createCrmInvite, listCrmInvites } from '@/lib/services/crm-invite.servi export const GET = withAuth( withPermission('admin', 'manage_users', async (_req, ctx) => { try { - // crm_user_invites is a global table (no per-port column) — invites + // crm_user_invites is a global table (no per-port column) - invites // mint better-auth users that may later be assigned roles in any // port. Listing it cross-tenant would let a port-A director // enumerate pending invitee emails, names, and isSuperAdmin flags diff --git a/src/app/api/v1/admin/ocr-settings/test/route.ts b/src/app/api/v1/admin/ocr-settings/test/route.ts index 9d4d520..03bf3da 100644 --- a/src/app/api/v1/admin/ocr-settings/test/route.ts +++ b/src/app/api/v1/admin/ocr-settings/test/route.ts @@ -13,7 +13,7 @@ const schema = z.object({ apiKey: z.string().min(1), }); -// `manage_settings`-gated for parity with the parent OCR settings route — +// `manage_settings`-gated for parity with the parent OCR settings route - // triggers outbound AI provider auth requests using a caller-supplied key. export const POST = withAuth( withPermission('admin', 'manage_settings', async (req) => { diff --git a/src/app/api/v1/admin/templates/preview/route.ts b/src/app/api/v1/admin/templates/preview/route.ts index a1fd851..0cb5985 100644 --- a/src/app/api/v1/admin/templates/preview/route.ts +++ b/src/app/api/v1/admin/templates/preview/route.ts @@ -17,12 +17,12 @@ import { previewAdminTemplateSchema } from '@/lib/validators/document-templates' * POST /api/v1/admin/templates/preview * * Generates a preview PDF from a TipTap JSON content block. - * Returns { data: { pdfBase64: string } } — the client can render this + * Returns { data: { pdfBase64: string } } - the client can render this * in an