Rename the Meet app to Calls in the directory
The directory slug, display name and brand asset become "calls"/"Calls", and the marketing site's two links follow the app to its new hostname. The slug is load-bearing beyond the label: directoryRouteAllowed derives each team's permitted origin as https://<label>.<slug>.oficina.works, and suite's CheckSiblingHost (transport.go) requires exactly <team>.<app> under oficina.works, so the app name is a DNS label in the sibling protocol rather than only a caption. No team is provisioned yet and nothing configures Calls as a sibling, so nothing breaks today, but the slug flip, the carlos domain move and the deploy want to land together once teams exist. brand.go's servable-asset allowlist is keyed by filename, so it moves with the file or the icon 404s; brand_test derives the same path from the display name, which is what catches that. The catalog's hardcoded "Coming soon" for this entry stays a dead fallback: the integrated loop overwrites it, and the catalog test asserts the string renders zero times. Marketing copy keeps "Meet without installing anything first" — that is the English verb, not the product name. This branch is deliberately not merged: index.html now points at calls.oficina.works, which does not resolve until the domain is attached.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
11 files changed,
+13
−13
connect/navigation_test.go+1 −1internal/home/app_chooser_test.go+1 −1internal/home/brand.go+1 −1internal/home/brand_test.go+1 −1internal/home/directory_catalog.go+2 −2internal/home/directory_catalog_test.go+1 −1internal/home/directory_runtime.go+1 −1internal/home/origins_test.go+1 −1internal/home/static/brand/calls.svg+2 −0internal/home/static/brand/meet.svg+0 −2internal/home/static/site/index.html+2 −2
CI failed — run details
diff --git a/connect/navigation_test.go b/connect/navigation_test.go| index 5153217..5f9d42f 100644 |
| --- a/connect/navigation_test.go |
| +++ b/connect/navigation_test.go |
| @@ -86,7 +86,7 @@ func TestNavigationPurposeIsolationAndFixedAction(t *testing.T) { |
| t.Fatal("valid marker refused") |
| } |
| other := *n |
| - other.namespace = "oficina/meet" |
| + other.namespace = "oficina/calls" |
| if other.marker(r, n.now().Unix()) { |
| t.Fatal("cross-app marker accepted") |
| } |
diff --git a/internal/home/app_chooser_test.go b/internal/home/app_chooser_test.go| index 5bc9afc..89d82d0 100644 |
| --- a/internal/home/app_chooser_test.go |
| +++ b/internal/home/app_chooser_test.go |
| @@ -8,7 +8,7 @@ import ( |
| ) |
| func TestNativeAppChoicesKeepTeamAndAppBoundaries(t *testing.T) { |
| - for _, app := range []string{"docs", "sheets", "slides", "calendar", "meet", "memoria"} { |
| + for _, app := range []string{"docs", "sheets", "slides", "calendar", "calls", "memoria"} { |
| t.Run(app, func(t *testing.T) { |
| f := newMountedChooser(t) |
| cookie := f.session(t, chooserPerson) |
diff --git a/internal/home/brand.go b/internal/home/brand.go| index 08bbe85..f065324 100644 |
| --- a/internal/home/brand.go |
| +++ b/internal/home/brand.go |
| @@ -22,7 +22,7 @@ func mountBrand(r chi.Router) { |
| "sheets.svg": "image/svg+xml", |
| "slides.svg": "image/svg+xml", |
| "calendar.svg": "image/svg+xml", |
| - "meet.svg": "image/svg+xml", |
| + "calls.svg": "image/svg+xml", |
| "memoria.svg": "image/svg+xml", |
| } { |
| body, err := brandFS.ReadFile("static/brand/" + name) |
diff --git a/internal/home/brand_test.go b/internal/home/brand_test.go| index 9ead1f9..56d605e 100644 |
| --- a/internal/home/brand_test.go |
| +++ b/internal/home/brand_test.go |
| @@ -19,7 +19,7 @@ func TestDirectoryBrandAssetsArePublicAndListingKeepsNames(t *testing.T) { |
| t.Fatal(page.Code) |
| } |
| body := page.Body.String() |
| - for _, name := range []string{"Docs", "Sheets", "Slides", "Calendar", "Meet", "Memoria"} { |
| + for _, name := range []string{"Docs", "Sheets", "Slides", "Calendar", "Calls", "Memoria"} { |
| path := "/static/brand/" + strings.ToLower(name) + ".svg" |
| if !strings.Contains(body, `src="`+path+`" alt=""`) || !strings.Contains(body, ">"+name+"<") { |
| t.Fatal("listing lost icon or name", name) |
diff --git a/internal/home/directory_catalog.go b/internal/home/directory_catalog.go| index fb0a76c..dcee344 100644 |
| --- a/internal/home/directory_catalog.go |
| +++ b/internal/home/directory_catalog.go |
| @@ -19,7 +19,7 @@ func directoryCatalog(cfg Runtime) []catalogApp { |
| {Name: "Sheets", Icon: "/static/brand/sheets.svg", Status: "Not connected to Home yet"}, |
| {Name: "Slides", Icon: "/static/brand/slides.svg", Status: "Not connected to Home yet"}, |
| {Name: "Calendar", Icon: "/static/brand/calendar.svg", Status: "Not connected to Home yet"}, |
| - {Name: "Meet", Icon: "/static/brand/meet.svg", Status: "Coming soon"}, |
| + {Name: "Calls", Icon: "/static/brand/calls.svg", Status: "Coming soon"}, |
| {Name: "Memoria", Icon: "/static/brand/memoria.svg", Status: "Not connected to Home yet"}, |
| {Name: "Mail", Status: "Separate sign-in"}, |
| {Name: "Files", Status: "Separate sign-in"}, |
| @@ -49,7 +49,7 @@ func (cfg Runtime) validAppPreviews() bool { |
| } |
| for app, origin := range cfg.appPreviewOrigins { |
| switch app { |
| - case "docs", "sheets", "slides", "calendar", "meet", "memoria", "mail", "files": |
| + case "docs", "sheets", "slides", "calendar", "calls", "memoria", "mail", "files": |
| default: |
| return false |
| } |
diff --git a/internal/home/directory_catalog_test.go b/internal/home/directory_catalog_test.go| index 54a0682..99c6693 100644 |
| --- a/internal/home/directory_catalog_test.go |
| +++ b/internal/home/directory_catalog_test.go |
| @@ -45,7 +45,7 @@ func TestDirectoryCatalogRequiresSigninAndDoesNotInventLaunchDestinations(t *tes |
| } |
| noStore(t, page) |
| body := page.Body.String() |
| - for _, name := range []string{"Docs", "Sheets", "Slides", "Calendar", "Meet", "Memoria", "Mail", "Files"} { |
| + for _, name := range []string{"Docs", "Sheets", "Slides", "Calendar", "Calls", "Memoria", "Mail", "Files"} { |
| if !strings.Contains(body, ">"+name+"<") { |
| t.Fatal("missing app", name) |
| } |
diff --git a/internal/home/directory_runtime.go b/internal/home/directory_runtime.go| index cc8b4b3..67b782c 100644 |
| --- a/internal/home/directory_runtime.go |
| +++ b/internal/home/directory_runtime.go |
| @@ -19,7 +19,7 @@ func directoryApps() []directoryApp { |
| {slug: "sheets", name: "Sheets", integrated: true}, |
| {slug: "slides", name: "Slides", integrated: true}, |
| {slug: "calendar", name: "Calendar", integrated: true}, |
| - {slug: "meet", name: "Meet", integrated: true}, |
| + {slug: "calls", name: "Calls", integrated: true}, |
| {slug: "memoria", name: "Memoria", integrated: true}, |
| } |
| } |
diff --git a/internal/home/origins_test.go b/internal/home/origins_test.go| index 867ed41..f44d7d2 100644 |
| --- a/internal/home/origins_test.go |
| +++ b/internal/home/origins_test.go |
| @@ -15,7 +15,7 @@ import ( |
| // two tests below exist to catch. |
| var sharedPublicPaths = []string{ |
| "/healthz", "/static/tokens.css", "/static/theme.css", |
| - "/static/brand/icon.svg", "/static/brand/icon-32.png", "/static/brand/apple-touch-icon.png", "/static/brand/brand.css", "/static/brand/LICENSE.lucide", "/static/brand/docs.svg", "/static/brand/sheets.svg", "/static/brand/slides.svg", "/static/brand/calendar.svg", "/static/brand/meet.svg", "/static/brand/memoria.svg", |
| + "/static/brand/icon.svg", "/static/brand/icon-32.png", "/static/brand/apple-touch-icon.png", "/static/brand/brand.css", "/static/brand/LICENSE.lucide", "/static/brand/docs.svg", "/static/brand/sheets.svg", "/static/brand/slides.svg", "/static/brand/calendar.svg", "/static/brand/calls.svg", "/static/brand/memoria.svg", |
| "/static/site/home.css", "/static/site/archivo.woff2", "/static/site/archivo-ext.woff2", |
| "/static/site/newsreader.woff2", "/static/site/newsreader-ext.woff2", |
| } |
diff --git a/internal/home/static/brand/calls.svg b/internal/home/static/brand/calls.svg| new file mode 100644 |
| index 0000000..a98731d |
| --- /dev/null |
| +++ b/internal/home/static/brand/calls.svg |
| @@ -0,0 +1,2 @@ |
| +<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Calls"><title>Calls</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#087F8C"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5" /> |
| + <rect x="2" y="6" width="14" height="12" rx="2" /></g></svg> |
diff --git a/internal/home/static/brand/meet.svg b/internal/home/static/brand/meet.svg| deleted file mode 100644 |
| index a027150..0000000 |
| --- a/internal/home/static/brand/meet.svg |
| +++ /dev/null |
| @@ -1,2 +0,0 @@ |
| -<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Meet"><title>Meet</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#087F8C"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5" /> |
| - <rect x="2" y="6" width="14" height="12" rx="2" /></g></svg> |
diff --git a/internal/home/static/site/index.html b/internal/home/static/site/index.html| index 8eadc30..04fce19 100644 |
| --- a/internal/home/static/site/index.html |
| +++ b/internal/home/static/site/index.html |
| @@ -81,7 +81,7 @@ |
| <tr style="--row:5"> |
| <th scope="row" class="c-app">Calls</th> |
| <td class="c-what">Meet without installing anything first.</td> |
| - <td class="c-get" data-label="Web"><a href="https://meet.oficina.works">Open</a></td> |
| + <td class="c-get" data-label="Web"><a href="https://calls.oficina.works">Open</a></td> |
| <td class="c-get c-none" data-label="Mac"><span aria-hidden="true">—</span><span class="vh">No Mac app</span></td> |
| <td class="c-get c-none" data-label="iPhone"><span aria-hidden="true">—</span><span class="vh">No iPhone app</span></td> |
| </tr> |
| @@ -225,7 +225,7 @@ |
| <li><a href="https://sheets.oficina.works">Sheets</a></li> |
| <li><a href="https://slides.oficina.works">Slides</a></li> |
| <li><a href="https://calendar.oficina.works">Calendar</a></li> |
| - <li><a href="https://meet.oficina.works">Calls</a></li> |
| + <li><a href="https://calls.oficina.works">Calls</a></li> |
| <li><a href="https://memoria.oficina.works">Memoria</a></li> |
| </ul> |
| </div> |