{
  "_extension_comment": "`.json`, NOT the conventional `.webmanifest`. Helidon's default media-type table (helidon-common-media-type's default-media-types.properties) has no `webmanifest` row — checked, not assumed — so WebUiFeature's static handler would serve it with no usable Content-Type, and the Web App Manifest spec makes a fetch whose type is not a JSON MIME type a failure. `.json` maps to `application/json`, which IS a JSON MIME type, so the manifest is processed. `WebUiStaticContentIT.realAssetsAreServedWithTheirOwnContentType` pins that, and would catch a rename back.",
  "_comment": "Exists so pwa-192x192.png and pwa-512x512.png do something — an installable app's icons are declared here and nowhere else. It is a MANIFEST ONLY: no service worker, no VitePWA plugin. The Vue app these assets came from registers an autoUpdate service worker, and that is deliberately not carried over; a self-updating cache in front of an SPA that java-svc serves from the classpath under /ui is a behaviour change with its own failure modes, not a branding one. All paths are relative, so they resolve against the manifest's own URL and survive the /ui mount moving.",
  "name": "Autoflows",
  "short_name": "Autoflows",
  "description": "Autoflows Platform",
  "start_url": "./",
  "scope": "./",
  "display": "standalone",
  "_colour_comment": "White, matching the icons' own ground — both PNGs are the mint wordmark on solid white, so a charcoal splash would show a white card floating on it. Not the rail's charcoal, which is an in-app surface.",
  "theme_color": "#ffffff",
  "background_color": "#ffffff",
  "_purpose_comment": "Declared `any` and deliberately NOT `maskable`: the wordmark runs nearly the full width of both PNGs, so it has no safe zone and a platform's circular mask would clip the first and last letters.",
  "icons": [
    { "src": "pwa-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
    { "src": "pwa-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }
  ]
}
