From 800f9b5f6d0a555d78616c5b6feabbe58ee3e31b Mon Sep 17 00:00:00 2001 From: codebanditssss Date: Sun, 24 May 2026 23:01:05 +0530 Subject: [PATCH 1/2] fix(web): emit manifest link with crossorigin=use-credentials for credential-gated proxies --- packages/web/src/app/layout.tsx | 4 ++++ packages/web/src/app/manifest.test.ts | 4 ++-- packages/web/src/app/manifest.webmanifest/route.ts | 8 ++++++++ packages/web/src/{app/manifest.ts => lib/pwa-manifest.ts} | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 packages/web/src/app/manifest.webmanifest/route.ts rename packages/web/src/{app/manifest.ts => lib/pwa-manifest.ts} (93%) diff --git a/packages/web/src/app/layout.tsx b/packages/web/src/app/layout.tsx index 98e0547ce4..347c65647c 100644 --- a/packages/web/src/app/layout.tsx +++ b/packages/web/src/app/layout.tsx @@ -34,6 +34,9 @@ export async function generateMetadata(): Promise { export default function RootLayout({ children }: { children: ReactNode }) { return ( + + + {children} @@ -41,3 +44,4 @@ export default function RootLayout({ children }: { children: ReactNode }) { ); } + diff --git a/packages/web/src/app/manifest.test.ts b/packages/web/src/app/manifest.test.ts index de9f098087..9f2f3f043e 100644 --- a/packages/web/src/app/manifest.test.ts +++ b/packages/web/src/app/manifest.test.ts @@ -6,9 +6,9 @@ vi.mock("@/lib/project-name", () => ({ describe("app manifest", () => { it("builds the PWA manifest with project-aware naming and icons", async () => { - const { default: manifest } = await import("./manifest"); + const { buildPwaManifest } = await import("@/lib/pwa-manifest"); - expect(manifest()).toMatchObject({ + expect(buildPwaManifest()).toMatchObject({ name: "ao | Agent Orchestrator", short_name: "ao", start_url: "/", diff --git a/packages/web/src/app/manifest.webmanifest/route.ts b/packages/web/src/app/manifest.webmanifest/route.ts new file mode 100644 index 0000000000..b267c98528 --- /dev/null +++ b/packages/web/src/app/manifest.webmanifest/route.ts @@ -0,0 +1,8 @@ +import { buildPwaManifest } from "@/lib/pwa-manifest"; + +export function GET() { + const manifest = buildPwaManifest(); + return new Response(JSON.stringify(manifest), { + headers: { "Content-Type": "application/manifest+json" }, + }); +} diff --git a/packages/web/src/app/manifest.ts b/packages/web/src/lib/pwa-manifest.ts similarity index 93% rename from packages/web/src/app/manifest.ts rename to packages/web/src/lib/pwa-manifest.ts index 2138c2d92f..09fbd7b715 100644 --- a/packages/web/src/app/manifest.ts +++ b/packages/web/src/lib/pwa-manifest.ts @@ -1,7 +1,7 @@ import type { MetadataRoute } from "next"; import { getProjectName } from "@/lib/project-name"; -export default function manifest(): MetadataRoute.Manifest { +export function buildPwaManifest(): MetadataRoute.Manifest { const projectName = getProjectName(); return { name: `ao | ${projectName}`, From 2641c0e2d2d37d6544fca4707ee48056d6e597b8 Mon Sep 17 00:00:00 2001 From: codebanditssss Date: Sun, 24 May 2026 23:15:37 +0530 Subject: [PATCH 2/2] chore(web): add cache-control header to manifest route --- packages/web/src/app/manifest.webmanifest/route.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/web/src/app/manifest.webmanifest/route.ts b/packages/web/src/app/manifest.webmanifest/route.ts index b267c98528..1c85da6eb6 100644 --- a/packages/web/src/app/manifest.webmanifest/route.ts +++ b/packages/web/src/app/manifest.webmanifest/route.ts @@ -3,6 +3,9 @@ import { buildPwaManifest } from "@/lib/pwa-manifest"; export function GET() { const manifest = buildPwaManifest(); return new Response(JSON.stringify(manifest), { - headers: { "Content-Type": "application/manifest+json" }, + headers: { + "Content-Type": "application/manifest+json", + "Cache-Control": "public, max-age=0, must-revalidate", + }, }); }