- Save the chat history from the frames when leaving the world, through
GetMessageInfo, instead of on every line. Lines written back from the
history carry a mark, so they are saved as they are. History is no longer
recorded while it is off, keeps 30 lines instead of 29, and whispers are
dimmed in the whisper colour (gsub's match count was taken as red).
- Skip the CLINK and URL passes on lines that cannot hold them.
- Colour player links in one gsub with a callback instead of a gsub per name.
- Read a chat line that several frames show only once, by its line ID.
- Build the timestamp once per second.
- Lay the tabs out on hover only when their bar comes back, not 10 times a
second.
- Drop ChatFrame_OnUpdate: it only blinks the flash of the bottom button
pfUI hides. The lines fade in the engine's update.