# Slice 1 copy list

Reviewed and approved by Paul on 2026-09-08 (copy-review, 52 strings, two edited). The strings below are the approved text.

## Sign in (`/signin`)

| String | Where |
| --- | --- |
| Sign in | `templates/signin.html`, `title` block |
| Sign in to Meet | `templates/signin.html`, `content` block, page-header Title |
| A sign in link should be on its way with a link to click. | `templates/signin.html`, `content` block, sent notice |
| Email address | `templates/signin.html`, `content` block, field Label |
| Send me a sign-in link | `templates/signin.html`, `content` block, submit button |
| That does not look like an email address. | `auth.go`, `signin` (`err=address`) |
| Too many sign-in attempts just now. Wait a few minutes and try again. | `auth.go`, `signin` (`err=rate`) |
| That sign-in link has expired. Ask for a new one. | `auth.go`, `signin` (`err=expired`) |
| Sign-in did not work. Try again. | `auth.go`, `signin` (default `err`) |

## Welcome (`/welcome`)

| String | Where |
| --- | --- |
| 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 | 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`)

_added 2026-09-10, copy review waived for this round per suite #5_

| String | Where |
| --- | --- |
| Start a call | `templates/index.html`, `content` block, submit button |
| Call, {day} {month} {hour:minute} | `handlers_meetings.go`, `callTitle` — the title a started call gets, e.g. "Call, 10 Sep 09:15", formatted in the instance zone |

## Meetings list (`/`)

| String | Where |
| --- | --- |
| Meetings | `templates/index.html`, `title` block and page-header Title |
| New meeting | `templates/index.html`, `content` block, `h2` |
| Title | `templates/index.html`, `content` block, field Label |
| Starts (%s), or leave blank to start now | `templates/index.html`, `content` block, field Label (`%s` is the instance zone, e.g. "Europe/Dublin") |
| Enter the start as a date and time, or leave it blank to start now. | `handlers_meetings.go`, `parseStart` |
| Give the meeting a title. | `handlers_meetings.go`, `createMeeting` |
| Keep the title under 200 characters. | `handlers_meetings.go`, `createMeeting` |
| Create meeting | `templates/index.html`, `content` block, submit button |
| Upcoming | `templates/index.html`, `content` block, `h2` |
| No meetings yet. Make one above and share its link. | `templates/index.html`, `content` block, empty-state Body |
| Starts {{.Starts}} | `templates/index.html`, `content` block, upcoming row (when the meeting has a start time) |
| Starts now | `templates/index.html`, `content` block, upcoming row (when the meeting has no start time) |
| · no live link | `templates/index.html`, `content` block, upcoming row (when the meeting's link was revoked and not replaced) |
| Replace the link | `templates/index.html`, `content` block, upcoming row action link |
| End | `templates/index.html`, `content` block, upcoming row action link |
| Ended meetings ({{len .Ended}}) | `templates/index.html`, `content` block, `details summary` |
| Ended | `templates/index.html`, `content` block, ended row |

## Link shown once (`/meetings`, `/meetings/{sqid}/links`)

| String | Where |
| --- | --- |
| Your meeting link | `templates/link_once.html`, `title` block |
| Meetings | `templates/link_once.html`, `content` block, back-nav Label |
| {{.Title}} | `templates/link_once.html`, `content` block, page-header Title (the meeting's own title) |
| Starts {{.Starts}}. | `templates/link_once.html`, `content` block (when the meeting has a start time) |
| The old link has stopped working. | `templates/link_once.html`, `content` block (only when the link was replaced) |
| This is the only time this link is shown. Copy it now and send it to the people you are meeting. | `templates/link_once.html`, `content` block |
| Meeting link | `templates/link_once.html`, `content` block, link input aria-label |
| Go to the meeting | `templates/link_once.html`, `content` block, link button |

## Confirm: replace the link (`/meetings/{sqid}/links/replace`)

| String | Where |
| --- | --- |
| Replace the link? | `handlers_meetings.go`, `confirmReplaceLink` (rendered as `title` block and page-header Title via `templates/confirm.html`) |
| Meetings | `templates/confirm.html`, `content` block, back-nav Label |
| Everyone holding the current link for "{{title}}" will get a not-found page. You will see the new link once. | `handlers_meetings.go`, `confirmReplaceLink` (rendered as the confirm Body) |
| Replace the link | `handlers_meetings.go`, `confirmReplaceLink` (confirm-form Label) |
| Cancel | `templates/confirm.html`, `content` block, confirm-form CancelLabel |

## Confirm: end the meeting (`/meetings/{sqid}/end` GET)

| String | Where |
| --- | --- |
| End the meeting? | `handlers_meetings.go`, `confirmEnd` (rendered as `title` block and page-header Title via `templates/confirm.html`) |
| Meetings | `templates/confirm.html`, `content` block, back-nav Label |
| "{{title}}" will close for everyone and its link will stop working. | `handlers_meetings.go`, `confirmEnd` (rendered as the confirm Body) |
| End the meeting | `handlers_meetings.go`, `confirmEnd` (confirm-form Label) |
| Cancel | `templates/confirm.html`, `content` block, confirm-form CancelLabel |

## Holding page (`/m/{sqid}/join`)

| String | Where |
| --- | --- |
| {{.Title}} | `templates/join.html`, `title` block and page-header Title (the meeting's own title) |
| Meetings | `templates/join.html`, `content` block, back-nav Label (members only) |
| Starts {{.Starts}}. | `templates/join.html`, `content` block (when the meeting has a start time) |
| You are {{.Name}}, joining as a {{.Standing}}. | `templates/join.html`, `content` block (`{{.Standing}}` is "member" or "guest", from `standing.go`, `Standing.String`) |
| This team's Meet has no relay yet. Calls usually connect only between people on the same network. | `templates/join.html`, `content` block (the floor notice; shown only when no relay is configured) |
| Calls coming soon | `templates/join.html`, `content` block |
| End the meeting | `templates/join.html`, `content` block, member-only link |

## Error page (`/errors`, and any handler's `ErrorPage`)

`templates/errors.html` now renders rastrillo's shared `error-page`
partial (`{{template "error-page" dict "Status" .Status "Ref" .Ref}}`).
The status, body sentence, and link labels it renders are rastrillo's
copy, not Meet's, so they are not listed here.

| String | Where |
| --- | --- |
| Something went wrong | `templates/errors.html`, `title` block (the browser tab title; the partial does not override it) |
