Caret

Caret makes every field say who may write in it, and gives each writer a caret in its own colour: ink for the person, pigment for the model. A field only the model writes has no ink caret at all.

Live specimen

Type in “Reply to tenant”. The model drafts ahead of your caret: Tab or “Take all” takes the draft, → takes one word, and typing anything else sends its caret back.

Anatomy

When to use

  • A reply, note or message the model can help write.
  • A field the model fills on its own, such as a summary, which people review but don’t type in.
  • Not for passwords, amounts or anything a person must enter themselves: those fields are person only.

Caret is not autofill. Autofill copies values you stored. Caret writes from context and shows its hand: every word it adds stays pigment.

Behaviour

ReachCaretsWhat people can do
Person onlyInkType
SharedInk, and pigment ahead of itType, take a word, take the draft, dismiss with Esc
Model onlyPigmentAccept or ask for a rewrite

The model caret blinks while it thinks, holds steady while it writes, and leaves when the draft is ready. Words taken from the draft settle into still pigment, so the field keeps a record of who wrote what.

Best practices

  • Put the reach mark in the field’s header, next to its name.
  • Draft only at the end of the text and only when the person pauses. Never draft mid-word.
  • Send the model’s caret back the moment the person types something else.
  • If someone types in a model-only field, explain once in a murmur rather than ignoring the keys.
DoShow the draft in flowing pigment after the person’s caret.
Don’tDon’t show the draft in grey. Grey reads as a placeholder, not as another author.

Accessibility

  • The shared field’s label says how to take the draft: “Tab accepts its draft, right arrow accepts one word.”
  • The model-only field is a read-only textbox labelled “written by the model”.
  • Take controls are real buttons, so touch and switch users don’t need Tab or arrows.

Specifications

Draft delay
600 ms after the person pauses at the end of the text
Thinking
Model caret blinks for 700 ms
Writing
50 to 110 ms per word
Keys
Tab takes all · → takes one word · Esc dismisses
Model caret
2 px bar of pigment; blinks on the beat while thinking