Shift
Shift shows what the model changed in your data since you last looked. Each change lands with one pulse, wears pigment, keeps the old value struck beneath it, and waits until you keep or revert it.
Tap “Refresh from register”. Four values change. Tap one to see why, then keep or revert it, or acknowledge them all.
Anatomy
When to use
- Tables and records the model refreshes from another source: rent rolls, cash forecasts, schedules, registers.
- Any value people make decisions from, where a silent change would mislead.
- Not for live data that changes every second, such as prices. Those need a timestamp, not a review.
Behaviour
| Step | What happens |
|---|---|
| Refresh | The status shows the model reading its source, with a thinking caret. |
| Land | Each changed cell pulses once in tyrian, then rests. The new value flows in pigment. |
| Inspect | Tapping a change shows its reason and source in the review bar. |
| Keep | The value settles into still pigment. The struck value goes. |
| Revert | The old value returns in ink. The change leaves no trace. |
Best practices
- Give every change a reason with a source and a date: “Renewal signed 2 Oct at S$9.20 psf”.
- Keep column widths stable. Use tabular figures so changed numbers don’t shift their neighbours.
- After each decision, move to the next pending change.
- Offer “Acknowledge all” only alongside per-change review, never instead of it.
Accessibility
- Changed cells are focusable buttons named in full: “L09 rent changed from 8.90 to 9.20. Renewal signed 2 Oct.”
- Old values carry a hidden “was” for screen readers.
- One announcement sums up the refresh: “The model changed 4 values in the rent roll.”
Specifications
- Landing pulse
- One beat, once, in tyrian
- Between changes
- 420 ms
- Old value
- Ink 3, struck in madder at 70%
- Figures
- Tabular