18c1ab2ece
Three targeted fixes for the jitter that shows up as soon as a feed contains nested NoteCompose (reposts, quotes, BechLink previews): * `calculateBackgroundColor`: only schedule the 5s "new item" fade LaunchedEffect when the item is actually new and tracks read state. Inner notes pass `routeForLastRead = null` and were parking a coroutine for 5s per item, every scroll. Also drop a per-call `Color.copy(alpha = 0f)` allocation in favor of `Color.Transparent`. * `EventObservers` + `WatchBlockAndReport`: wrap the `StateFlow` lookups in `remember(note)` so each recomposition of the same note doesn't re-resolve `note.flow().…stateFlow` (and, in `WatchBlockAndReport`, hit the synchronized LRU lookup) on every pass. Affects observeNote / Replies / Reactions / Zaps / Reposts / Ots / Edits and the per-item hidden-flow check. * `produceCachedState` / `produceCachedStateAsync`: short-circuit on cache hits. The previous `produceState` body always launched a coroutine even when the LRU already had the value; this is the common path for BechLink previews and draft notes during scroll. Now we read the cache synchronously inside `remember`, and only launch a `LaunchedEffect` for the actual miss. No behavior change.