Sharing circles
The Circles tab: creating, editing and deleting circles, seeing what a circle can see, and moving contacts between circles.
Updated: 29 October 2026
3.2 Circles tab
Top bar: the profile switcher and Add (Add circle). Title “Circles”, and the line “Who sees what. Tap a cell to change it.” Mock: mobile/design/redesign/redesign-round-2.html (A108).
Who sees what is a grid, the tab’s main content:
- Rows are the profile’s details, every one except the default name (which every connection sees): a category icon and the type with the category (“Mobile”, “Home phone”, “Personal e-mail”, “Home address”, “Birthday”, “Photo”), in the order of the Profile tab.
- Columns are the circles in
sort_order, headed by the circle’s name in its colour (wrapped onto two lines when it has two words). The top-left cell says how many there are (“6 circles →”). - Cells: a filled dot in the circle’s colour when the circle sees the detail, a half-filled dot when it sees part of it (an address shared per field, a date without the year), an empty ring when it does not. A legend line under the grid: “Half dot: part of it (city only, birthday without year).”
- Scrolling: the detail column is locked; only the circle columns scroll sideways, with a fade on the right edge while more circles lie beyond it. The corner above the detail column reads “3 circles” with a chevron as soon as not every circle fits (product owner, 30 Oct 2026: the fade alone did not say there were more); tapping it scrolls one circle on, and at the end the chevron turns round and goes back to the first. On a phone about four circles fit; there can be up to 30.
- Tapping a cell toggles that circle on that detail when the detail has one scope (writes
circle_idsat once, as the per-detail sheet does, with the same “Now visible to …” toast on a reveal). A detail with more than one scope (a date’s day and year, an address per field) opens its Who sees it sheet instead (Profile).
Under the grid, Circles · 6: one row per circle with its dot, name, a status line (“8 people”, “11 people · updates off”) and Preview (the preview of §3.2.1 point 4). Tapping a row opens Circle details. Reordering circles is Move up / Move down in Circle details’ overflow menu, which keeps it reachable for a screen reader (A68).
Every profile starts with Family (pink), Friends (cyan) and Work (orange). These are ordinary circles: they can be renamed, recoloured and, once empty, deleted. Nothing in the system depends on their names (v2 marked Family and Work as “required”; v3 drops that because a user without colleagues should not be forced to keep Work).
3.2.2 Add circle (sheet)
Fields: Name (required, max 40, unique per profile; a duplicate gets “(2)” suggested, following v1’s E2E behaviour; the comparison is trimmed and case-insensitive, so “family” is “Family” taken again), Colour (the ten-colour palette from Visual design, first unused colour preselected), Send me updates about people in this circle (switch, default on). Create button disabled until a name is entered. On create the sheet closes and the new circle is highlighted in the list.
3.2.1 Circle details
Mock: mobile/design/redesign/redesign-round-2.html, “Switch list” (chosen 2026-10-29). Top bar: ”‹ Circles” and the overflow.
- Header: a 16 dp dot and the name in
screenTitle(tap to rename inline), and the status line “8 people · updates on”. Overflow: Change colour, Notifications on/off, Move up, Move down, Delete circle. There is no description:sharing_circleshas no such column. - Summary: an info box “Sees 9 of your 10 details” with Preview.
- What Family sees: one row per detail with its type label, its value (in
mutedwhile switched off) and a switch for this circle. Toggling adds or removes this circle from that detail’scircle_ids(for dates two rows: day and month, year; for per-field addresses one row per field). The address rows are the country’s form plus every column the row already carries a scope for, so a scope that outlived a country change is still listed and can still be switched off. This is v1’s per-circle editor and complements the per-detail sheet and the grid; all three write the same data. - People · 8, with Move people (bulk move) on the right: rows with avatar, the display name and the relation (“Parent”, “Sister-in-law”); each row’s swipe or overflow offers Move, which opens the Move to circle sheet. Tap a row to open the contact card.
- Preview (from the summary box or the Circles tab): a read-only rendering of the contact card exactly as a member of this circle receives it. It calls
preview_circle(<circle id>), which the owner of the circle may call and nobody else; the answer is the same document a member already holds inconnections.snapshot, because both come from one function (snapshot_for_circle). Nothing about visibility is computed on the device, which is what makes v2’s promise — “See exactly what a circle can see about you” — true rather than approximate.
Rename validation as for add. Deleting a circle is possible only when it has no people; otherwise the Delete item shows “Move the 12 people in this circle first” and offers a bulk move. Deleting a circle removes it from every detail’s circle_ids (trigger) and refreshes snapshots.
Moving a contact between circles
From the contact card, the circle details member list, or drag-and-drop on tablets. The picker shows the circles with a short “they will now see …” / “they will stop seeing …” diff computed locally from the details’ circle sets, compared per shared piece rather than per row so that a different field of the same address or the year of the same date counts as a change, then asks to confirm when the move reveals more (Friends → Family) and applies immediately when it reveals less. The other party receives a circle_changed notification only if their card actually changed, and never learns the circle’s name.
Rules
- A connection is in exactly one circle at a time.
- Maximum 30 circles per profile.
- Circle names and descriptions are never sent to other users.
- Notifications switch: when off, changes made by people in this circle do not produce push notifications for the owner (they still appear in the in-app list). This matches v1’s
IsSendUpdateNotifications. - Deleting a circle with members is blocked (v1
SharingCircleInUseException).