fix: browser tab title should always just say "Epicure"

Root layout used title.template ("%s | Epicure") and 38 pages set
their own title, producing "Recipes | Epicure", "Messages — Epicure",
etc. Drop the template, set a flat "Epicure" default, and clear every
page's title override so they all inherit it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-09 14:58:03 +02:00
parent 64f45ed74d
commit 212d6f7335
35 changed files with 35 additions and 37 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ import { CheckCircle, XCircle, Database, Cpu } from "lucide-react";
import Link from "next/link";
import { getAllSiteSettings } from "@/lib/site-settings";
export const metadata: Metadata = { title: "AI Config" };
export const metadata: Metadata = {};
function resolveProvider(settings: Record<string, { value: string | null }>) {
if (settings["OPENROUTER_API_KEY"]?.value) return { provider: "OpenRouter", description: "Routes to many models via openrouter.ai" };
+1 -1
View File
@@ -1,7 +1,7 @@
import type { Metadata } from "next";
import { db, auditLogs, users, eq, desc } from "@epicure/db";
export const metadata: Metadata = { title: "Audit Logs" };
export const metadata: Metadata = {};
const PAGE_SIZE = 50;
+1 -1
View File
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
import { listInvites } from "@/lib/invites";
import { InvitesManager } from "@/components/admin/invites-manager";
export const metadata: Metadata = { title: "Invites Admin" };
export const metadata: Metadata = {};
export default async function AdminInvitesPage() {
const invites = await listInvites();
+1 -1
View File
@@ -5,7 +5,7 @@ import { count, eq, sql } from "@epicure/db";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Users, BookOpen, Sparkles, Image } from "lucide-react";
export const metadata: Metadata = { title: "Admin Overview" };
export const metadata: Metadata = {};
export default async function AdminPage() {
const currentMonth = new Date().toISOString().slice(0, 7);
+1 -1
View File
@@ -3,7 +3,7 @@ import { db, recipes, users, eq, desc } from "@epicure/db";
import { Badge } from "@/components/ui/badge";
import Link from "next/link";
export const metadata: Metadata = { title: "Recipe Moderation" };
export const metadata: Metadata = {};
const VISIBILITY_COLORS = {
public: "default",
+1 -1
View File
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
import { db, reports, users, eq, desc } from "@epicure/db";
import { ReportsQueue } from "@/components/admin/reports-queue";
export const metadata: Metadata = { title: "Reports Admin" };
export const metadata: Metadata = {};
export default async function AdminReportsPage() {
const rows = await db
+1 -1
View File
@@ -3,7 +3,7 @@ import { getAllSiteSettings, isSignupsDisabled } from "@/lib/site-settings";
import { AdminSettingsForm } from "@/components/admin/admin-settings-form";
import { SignupsToggle } from "@/components/admin/signups-toggle";
export const metadata: Metadata = { title: "Site Settings Admin" };
export const metadata: Metadata = {};
const SETTING_GROUPS = [
{
+1 -1
View File
@@ -4,7 +4,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import { HardDrive } from "lucide-react";
export const metadata: Metadata = { title: "Storage Usage" };
export const metadata: Metadata = {};
export default async function AdminStoragePage() {
const [totalPhotos, recipesWithPhotos, photosByTier, topUsers] = await Promise.all([
+1 -1
View File
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
import { db, tierDefinitions } from "@epicure/db";
import { TierLimitsForm } from "@/components/admin/tier-limits-form";
export const metadata: Metadata = { title: "Tier Limits Admin" };
export const metadata: Metadata = {};
export default async function AdminTiersPage() {
const tiers = await db.select().from(tierDefinitions);
+1 -1
View File
@@ -10,7 +10,7 @@ import { ResetUsageButton } from "@/components/admin/reset-usage-button";
import Link from "next/link";
import { ArrowLeft } from "lucide-react";
export const metadata: Metadata = { title: "User Detail" };
export const metadata: Metadata = {};
interface PageProps {
params: Promise<{ id: string }>;
+1 -1
View File
@@ -7,7 +7,7 @@ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { CreateUserDialog } from "@/components/admin/create-user-dialog";
import Link from "next/link";
export const metadata: Metadata = { title: "User Management" };
export const metadata: Metadata = {};
const ROLE_COLORS = {
user: "secondary",