diff --git a/src/app/(counter)/layout.tsx b/src/app/(counter)/layout.tsx
index 8cfdf28..ef50b2f 100644
--- a/src/app/(counter)/layout.tsx
+++ b/src/app/(counter)/layout.tsx
@@ -4,10 +4,13 @@ import { CounterShell } from "./shell";
export const metadata: Metadata = {
title: "Counter · WFDASH",
manifest: "/manifest-counter.json",
- // Standalone display for the installed PWA. iOS reads this from
- // via the same value in
- // the root layout — duplicating it here so each route segment's
- // metadata is self-contained.
+ // Standalone display comes from `apple-mobile-web-app-capable`,
+ // which the root layout declares via `metadata.other` and this
+ // segment inherits (it defines no `other` of its own, so nothing
+ // overrides it). The previous comment here claimed the root already
+ // supplied that tag — it didn't: the root only set
+ // `appleWebApp.capable`, which Next 16 renders under the
+ // standardised name that iOS ignores.
applicationName: "WFDASH Counter",
};
diff --git a/src/app/(mobile)/m/layout.tsx b/src/app/(mobile)/m/layout.tsx
index 1fd67b3..a19a7d7 100644
--- a/src/app/(mobile)/m/layout.tsx
+++ b/src/app/(mobile)/m/layout.tsx
@@ -14,6 +14,13 @@ export const metadata: Metadata = {
statusBarStyle: "default",
title: "Boss",
},
+ other: {
+ // Next 16 emits only the standardised `mobile-web-app-capable` for
+ // `appleWebApp.capable`, and iOS ignores that name — so without
+ // this the home-screen icon opens as a Safari bookmark rather than
+ // a standalone app. See the same note in `(rep)/rep/layout.tsx`.
+ "apple-mobile-web-app-capable": "yes",
+ },
};
export const viewport: Viewport = {
diff --git a/src/app/(rep)/rep/layout.tsx b/src/app/(rep)/rep/layout.tsx
index 8fd124d..a6e5c93 100644
--- a/src/app/(rep)/rep/layout.tsx
+++ b/src/app/(rep)/rep/layout.tsx
@@ -24,6 +24,18 @@ export const metadata: Metadata = {
statusBarStyle: "default",
title: "Visits",
},
+ other: {
+ // `appleWebApp.capable: true` emits the standardised
+ // `mobile-web-app-capable` in Next 16 — and **iOS only honours the
+ // apple-prefixed name**. Without this tag the home-screen icon is
+ // a plain Safari bookmark, not a standalone app: tapping it just
+ // foregrounds Safari on whatever tab was already open, which looks
+ // exactly like "it opened the main app instead".
+ //
+ // Verified on the running app: only `mobile-web-app-capable` was
+ // present until this was added.
+ "apple-mobile-web-app-capable": "yes",
+ },
};
export const viewport: Viewport = {
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 21aa0f0..fe59c85 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -130,6 +130,23 @@ export const metadata: Metadata = {
statusBarStyle: "default",
title: "WFDASH",
},
+ other: {
+ // Next 16 renders `appleWebApp.capable: true` as the standardised
+ // `` and no longer emits the
+ // apple-prefixed name — which is the only one iOS actually reads.
+ //
+ // Without this, an "Add to Home Screen" icon is a plain Safari
+ // bookmark rather than a standalone app: tapping it foregrounds
+ // Safari on whatever tab was already open, which presents as "it
+ // opened the main app instead of mine". Verified missing on /m and
+ // /rep against the running app before this was added.
+ //
+ // Declared at the root so every surface inherits it (/, /m,
+ // /counter, /rep). The PWA layouts that define their own `other`
+ // repeat it, because a child's `other` replaces the parent's
+ // rather than merging into it.
+ "apple-mobile-web-app-capable": "yes",
+ },
openGraph: {
type: "website",
title: "WFDASH - Business CRM",