ui: one sign-out, in the shell; callTitle test
welcome.html no longer renders its own sign-out form now that the topbar shell always shows one when a Viewer is signed in — /welcome was showing two. Updated the "Sign out" row in the slice 1 copy list to point at the shell instead of welcome.html. Added TestCallTitle, a table test over a fixed time and a few zones (UTC, a zone ahead of UTC, and one that rolls the date forward), covering what meettest's black-box "Call, " prefix check couldn't.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzvnuKhLzudvq7jZ7SvVt2
3 files changed,
+60
−2
docs/superpowers/copy/2026-09-08-slice-1-strings.md+1 −1internal/meet/handlers_meetings_test.go+59 −0internal/meet/templates/welcome.html+0 −1
CI passed — run details
diff --git a/docs/superpowers/copy/2026-09-08-slice-1-strings.md b/docs/superpowers/copy/2026-09-08-slice-1-strings.md| index e451bd2..a944bf8 100644 |
| --- a/docs/superpowers/copy/2026-09-08-slice-1-strings.md |
| +++ b/docs/superpowers/copy/2026-09-08-slice-1-strings.md |
| @@ -23,7 +23,7 @@ Reviewed and approved by Paul on 2026-09-08 (copy-review, 52 strings, two edited |
| | Signed in | `templates/welcome.html`, `title` block | |
| | You're signed in | `templates/welcome.html`, `content` block, page-header Title | |
| | You're signed in as {{.Email}}. This team's Meet has no meetings for you. If someone sent you a meeting link, open it again now. | `templates/welcome.html`, `content` block | |
| -| Sign out | `templates/welcome.html`, `content` block, submit button | |
| +| Sign out | now lives in the shell (`templates/layout.html`, account corner, shown whenever `.Viewer` is set) — no longer its own form on `templates/welcome.html` | |
| ## Start a call (`/meetings/start`) |
diff --git a/internal/meet/handlers_meetings_test.go b/internal/meet/handlers_meetings_test.go| new file mode 100644 |
| index 0000000..2e15ae9 |
| --- /dev/null |
| +++ b/internal/meet/handlers_meetings_test.go |
| @@ -0,0 +1,59 @@ |
| +package meet |
| + |
| +import ( |
| + "testing" |
| + "time" |
| +) |
| + |
| +// TestCallTitle is the review follow-up for "Start a call": |
| +// meettest's black-box test only ever checked the title for a |
| +// "Call, " prefix, so this pins the exact format over a fixed time |
| +// and a few zones, including one that rolls the date over. |
| +func TestCallTitle(t *testing.T) { |
| + dublin, err := time.LoadLocation("Europe/Dublin") |
| + if err != nil { |
| + t.Fatal(err) |
| + } |
| + tokyo, err := time.LoadLocation("Asia/Tokyo") |
| + if err != nil { |
| + t.Fatal(err) |
| + } |
| + cases := []struct { |
| + name string |
| + now time.Time |
| + zone *time.Location |
| + want string |
| + }{ |
| + { |
| + name: "UTC", |
| + now: time.Date(2026, 9, 10, 9, 5, 0, 0, time.UTC), |
| + zone: time.UTC, |
| + want: "Call, 10 Sep 09:05", |
| + }, |
| + { |
| + name: "single-digit day is not zero-padded", |
| + now: time.Date(2026, 9, 3, 9, 5, 0, 0, time.UTC), |
| + zone: time.UTC, |
| + want: "Call, 3 Sep 09:05", |
| + }, |
| + { |
| + name: "a zone ahead of UTC, same day", |
| + now: time.Date(2026, 9, 10, 9, 15, 0, 0, time.UTC), |
| + zone: dublin, // Irish summer time is UTC+1 in September |
| + want: "Call, 10 Sep 10:15", |
| + }, |
| + { |
| + name: "a zone far enough ahead to roll the date over", |
| + now: time.Date(2026, 9, 10, 23, 30, 0, 0, time.UTC), |
| + zone: tokyo, // UTC+9, no DST |
| + want: "Call, 11 Sep 08:30", |
| + }, |
| + } |
| + for _, c := range cases { |
| + t.Run(c.name, func(t *testing.T) { |
| + if got := callTitle(c.now, c.zone); got != c.want { |
| + t.Errorf("callTitle(%s, %s) = %q, want %q", c.now, c.zone, got, c.want) |
| + } |
| + }) |
| + } |
| +} |
diff --git a/internal/meet/templates/welcome.html b/internal/meet/templates/welcome.html| index 2be5df2..4455ff6 100644 |
| --- a/internal/meet/templates/welcome.html |
| +++ b/internal/meet/templates/welcome.html |
| @@ -2,5 +2,4 @@ |
| {{define "content"}} |
| {{template "page-header" dict "Title" "You're signed in"}} |
| <p>You're signed in as {{.Email}}. This team's Meet has no meetings for you. If someone sent you a meeting link, open it again now.</p> |
| -<form method="post" action="/signout"><button type="submit" rst-btn="ghost">Sign out</button></form> |
| {{end}} |