1# Action names agree across presentations
2
3Proposed invariant: a command's visible label, tooltip, menu wording and accessible
4name describe the same action on the same object. An icon-only presentation must
5retain that meaning. This applies to shared web/Electron controls and corresponding
6React Native iOS/Android actions, wherever those actions are available.
7
8Separate strings can drift while each presentation still looks plausible. A message
9copy action called “Copy link” promises a different clipboard payload to someone
10using a screen reader. Use wording that identifies the actual target, including
11when a message contains links or structured context. Additional clipboard formats
12do not turn copying a message into copying a link.
13
14This proposal draws on Apple's [Writing](https://developer.apple.com/design/human-interface-guidelines/writing)
15and [Accessibility](https://developer.apple.com/design/human-interface-guidelines/accessibility)
16guidance. It is a product constraint, not a claim of Apple certification or complete
17application compliance.
18
19## Boundaries
20
21Native menus and assistive technologies may use different wording or omit a tooltip.
22Labels need semantic agreement, not identical strings across platforms. A contextual
23“Copy” is sufficient when its target is unambiguous; do not globally expand it.
24Temporary “Copied” feedback may replace an action label without implying a different
25target. Clipboard transport, success timing and error reporting are separate concerns.
26
27## Observable cases
28
29- User and assistant message copy controls identify the message, in both tooltip
30 and accessible name. Collapsing a long message does not change the action's meaning.
31- Copying a message with structured context still identifies the message; it does
32 not promise to copy only a context link.
33- Code and plan copy actions retain their own targets. A contextual plan menu can
34 say “Copy to clipboard”; a code control must not be announced as copying a message.
35- An icon, labeled button or native menu for an equivalent command conveys the same
36 operation. Completed feedback never names a different object.
37
38Verify visible wording alongside the runtime accessible name and resulting action.
39Source inspection and screenshots alone do not establish accessibility-tree behavior.