feat(brand): swap recipient-facing pictureFrame strings to WeVisto
CI / test (push) Has been cancelled

Updated: SPA <title>, PWA manifest name/short_name, iOS web-app title,
"Install"/"Pin to home screen" copy, HomeView empty state, all Twig page
titles (login/register/setup/token/help), and the share-notification
email header. Left alone: the firmware-broadcast SSID PictureFrame-XXXX
(coordinated firmware change needed) and internal code/comment refs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 21:42:50 -04:00
parent 62cd3f57df
commit db80ea5262
27 changed files with 34 additions and 34 deletions
+2 -2
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>pictureFrame</title> <title>WeVisto</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="manifest" href="/build/manifest.webmanifest" /> <link rel="manifest" href="/build/manifest.webmanifest" />
@@ -13,7 +13,7 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" /> <meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" /> <meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="pictureFrame" /> <meta name="apple-mobile-web-app-title" content="WeVisto" />
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "pictureFrame", "name": "WeVisto",
"short_name": "pictureFrame", "short_name": "WeVisto",
"description": "Manage photos for your e-ink picture frames.", "description": "Manage photos for your e-ink picture frames.",
"id": "/", "id": "/",
"start_url": "/", "start_url": "/",
+1 -1
View File
@@ -143,7 +143,7 @@ describe('SettingsView', () => {
fireBeforeInstallPrompt() fireBeforeInstallPrompt()
const wrapper = mount(SettingsView) const wrapper = mount(SettingsView)
await flushPromises() await flushPromises()
expect(wrapper.find('.settings__install').text()).toBe('Install pictureFrame') expect(wrapper.find('.settings__install').text()).toBe('Install WeVisto')
}) })
it('clicking the native Install button invokes prompt() and resolves accepted', async () => { it('clicking the native Install button invokes prompt() and resolves accepted', async () => {
+1 -1
View File
@@ -17,7 +17,7 @@
</svg> </svg>
<p class="home-view__empty-title">Set up your first frame</p> <p class="home-view__empty-title">Set up your first frame</p>
<p class="home-view__empty-sub"> <p class="home-view__empty-sub">
Power on your pictureFrame device and scan the QR code it displays to get started. Power on your WeVisto frame and scan the QR code it displays to get started.
</p> </p>
</div> </div>
</div> </div>
+2 -2
View File
@@ -5,7 +5,7 @@
<section v-if="!isStandalone" class="settings__section"> <section v-if="!isStandalone" class="settings__section">
<h2 class="settings__section-title">Install app</h2> <h2 class="settings__section-title">Install app</h2>
<p class="settings__hint"> <p class="settings__hint">
Pin pictureFrame to your home screen so it opens like a native app. Pin WeVisto to your home screen so it opens like a native app.
</p> </p>
<button <button
v-if="canPromptInstall" v-if="canPromptInstall"
@@ -13,7 +13,7 @@
class="settings__install" class="settings__install"
@click="onNativeInstall" @click="onNativeInstall"
> >
Install pictureFrame Install WeVisto
</button> </button>
<button <button
v-else v-else
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>pictureFrame</title> <title>WeVisto</title>
<link rel="icon" type="image/svg+xml" href="/build/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/build/favicon.svg" />
<link rel="manifest" href="/build/manifest.webmanifest" /> <link rel="manifest" href="/build/manifest.webmanifest" />
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" /> <meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" /> <meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="pictureFrame" /> <meta name="apple-mobile-web-app-title" content="WeVisto" />
<script type="module" crossorigin src="/build/assets/index-ClBfMwfs.js"></script> <script type="module" crossorigin src="/build/assets/index-CH4aAMxd.js"></script>
<link rel="modulepreload" crossorigin href="/build/assets/_plugin-vue_export-helper-BNDVmFr7.js"> <link rel="modulepreload" crossorigin href="/build/assets/_plugin-vue_export-helper-BNDVmFr7.js">
<link rel="stylesheet" crossorigin href="/build/assets/index-BlLBHR1q.css"> <link rel="stylesheet" crossorigin href="/build/assets/index-BlLBHR1q.css">
</head> </head>
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "pictureFrame", "name": "WeVisto",
"short_name": "pictureFrame", "short_name": "WeVisto",
"description": "Manage photos for your e-ink picture frames.", "description": "Manage photos for your e-ink picture frames.",
"id": "/", "id": "/",
"start_url": "/", "start_url": "/",
@@ -4,7 +4,7 @@
<body style="font-family:system-ui,sans-serif;background:#fdf6ee;margin:0;padding:2rem 1rem"> <body style="font-family:system-ui,sans-serif;background:#fdf6ee;margin:0;padding:2rem 1rem">
<div style="max-width:480px;margin:0 auto;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e8d9c4"> <div style="max-width:480px;margin:0 auto;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e8d9c4">
<div style="padding:1.5rem"> <div style="padding:1.5rem">
<p style="color:#8a7060;font-size:.875rem;margin-bottom:.5rem">pictureFrame</p> <p style="color:#8a7060;font-size:.875rem;margin-bottom:.5rem">WeVisto</p>
<h1 style="font-size:1.25rem;font-weight:700;color:#3a2e22;margin-bottom:.5rem">{{ sharer.email }} shared a photo with you</h1> <h1 style="font-size:1.25rem;font-weight:700;color:#3a2e22;margin-bottom:.5rem">{{ sharer.email }} shared a photo with you</h1>
<p style="color:#8a7060;font-size:.875rem;margin-bottom:1.25rem">Add it to your frame or decline — it's up to you.</p> <p style="color:#8a7060;font-size:.875rem;margin-bottom:1.25rem">Add it to your frame or decline — it's up to you.</p>
</div> </div>
+1 -1
View File
@@ -1,4 +1,4 @@
{{ sharer.email }} shared a photo with you on pictureFrame. {{ sharer.email }} shared a photo with you on WeVisto.
Add to my frame: Add to my frame:
{{ absolute_url('/token/' ~ approveToken.uuid ~ '/approve') }} {{ absolute_url('/token/' ~ approveToken.uuid ~ '/approve') }}
+2 -2
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Setup help — pictureFrame</title> <title>Setup help — WeVisto</title>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { body {
@@ -86,7 +86,7 @@
<body> <body>
<div class="wrap"> <div class="wrap">
<h1>pictureFrame setup help</h1> <h1>WeVisto setup help</h1>
<p class="lede">Trouble joining your frame to the network, or stuck on a screen? Start here.</p> <p class="lede">Trouble joining your frame to the network, or stuck on a screen? Start here.</p>
<nav class="toc" aria-label="Contents"> <nav class="toc" aria-label="Contents">
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sign in — pictureFrame</title> <title>Sign in — WeVisto</title>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { body {
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create account — pictureFrame</title> <title>Create account — WeVisto</title>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { body {
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Name your frame — pictureFrame</title> <title>Name your frame — WeVisto</title>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: system-ui, sans-serif; min-height: 100dvh; background: #fdf6ee; color: #3a2e22; body { font-family: system-ui, sans-serif; min-height: 100dvh; background: #fdf6ee; color: #3a2e22;
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Set up your frame — pictureFrame</title> <title>Set up your frame — WeVisto</title>
<style> <style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: system-ui, sans-serif; min-height: 100dvh; background: #fdf6ee; color: #3a2e22; body { font-family: system-ui, sans-serif; min-height: 100dvh; background: #fdf6ee; color: #3a2e22;
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Add photo to your frame — pictureFrame</title> <title>Add photo to your frame — WeVisto</title>
<style> <style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem} body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem}
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Photo added — pictureFrame</title> <title>Photo added — WeVisto</title>
<style> <style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem} body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Decline photo — pictureFrame</title> <title>Decline photo — WeVisto</title>
<style> <style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem} body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem}
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Photo declined — pictureFrame</title> <title>Photo declined — WeVisto</title>
<style> <style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem} body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
+1 -1
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Link invalid — pictureFrame</title> <title>Link invalid — WeVisto</title>
<style> <style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem} body{font-family:system-ui,sans-serif;min-height:100dvh;background:#fdf6ee;color:#3a2e22;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}