🐛(frontend) stop the installed app reopening the room it came from

site.webmanifest declared no start_url, so the page that linked
it became one and an install started inside a room reopened that
room on every launch. It now declares "/", moves out of public/
and takes VITE_APP_TITLE for name and short_name, which shipped
empty and leaned on the browser falling back to the title.

The frontend Dockerfile now declares that build argument, so the
value compose.yml passes stops being dropped.
This commit is contained in:
davd-gzl
2026-08-03 11:33:38 +00:00
committed by aleb_the_flash
parent 6c69c3d6e3
commit 06e73d7a5e
5 changed files with 36 additions and 1 deletions
+1
View File
@@ -42,6 +42,7 @@ and this project adheres to
- 🐛(frontend) fall back to user.full_name on request-entry
- 🚸(frontend) show two initials in the Avatar when possible
- 🩹(all) clear the SonarCloud reliability finding and the lint debt
- 🐛(frontend) stop the installed app reopening the room it came from
## [1.24.0] - 2026-07-21
+3
View File
@@ -36,6 +36,9 @@ WORKDIR /home/frontend
ARG VITE_API_BASE_URL
ENV VITE_API_BASE_URL=${VITE_API_BASE_URL}
ARG VITE_APP_TITLE
ENV VITE_APP_TITLE=${VITE_APP_TITLE}
RUN npm run build
# ---- Front-end image ----
-1
View File
@@ -1 +0,0 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
+18
View File
@@ -0,0 +1,18 @@
{
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/",
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
+14
View File
@@ -26,6 +26,20 @@ export default defineConfig(({ mode }) => {
dest: 'assets/mediapipe/wasm',
rename: { stripBase: 4 },
},
{
// Kept out of public/ so the instance title reaches the manifest,
// the way index.html gets it through %VITE_APP_TITLE%.
src: 'site.webmanifest',
dest: '.',
transform: (content) => {
const title = env.VITE_APP_TITLE
return JSON.stringify({
...JSON.parse(content),
name: title,
short_name: title,
})
},
},
],
}),
env.VITE_ANALYZE === 'true' &&