Gemma 4 · On-device
Skim Recap

A short-term memory for the part you scrolled past.

By Yui Morii

Attention is not binary

We often talk about reading as if attention is binary: either you read the page, or you did not. But that is not how people actually read online.

We slow down, scan, jump forward, return, and sometimes move through several paragraphs before realizing that one of them contained the context we needed. A fast scroll is not always a mistake. It is often a decision made before we know what was there.

Most AI reading tools ask a different question. They stop the reading flow and summarize the entire page. But “What is this article about?” is not the same question as “What did I just miss?”

The problem is not that people refuse to read. Reading interfaces have no memory of what attention moved past.

So I created Skim Recap. It identifies the passage between two scroll positions and brings back only that missing context, beside the cursor, without opening another tab or moving the page.

Keep reading. Flick. Recap.

KEEP READING → FLICK → RECAP

The user does not select text or formulate a prompt. Skim Recap starts tracking when scroll speed reaches approximately 1,800 pixels per second. After scrolling settles for 180 milliseconds, it measures the distance.

Trigger layerBehaviorUser control
Velocity1,800 px/sFixed
Settle window180 msFixed
Flick distance1,200 px default400–3,000 px

I kept speed and timing fixed so the interface exposes only one meaningful question: how much skipped distance is enough to interrupt me?

One model, shared across reading

The first preload downloads the Gemma 4 E4B model once. Chrome caches it locally, LiteRT-LM loads it onto the GPU, and every regular webpage tab shares the same model instance during that browser session.

Download once. Warm up once per session. Reuse everywhere.
ActionWhat remains available
Close popupModel remains available
Close one tabOther tabs continue sharing it
Open a new tabUses the shared model
Restart ChromeCached model reloads onto the GPU

Return context without breaking place

When a flick qualifies, the extension extracts only the text positioned inside the skipped range. The recap panel appears near the cursor and streams the result into the same surface.

Focus mode treats the recap as a continuation of the article. Smart mode exposes more of the model and summarization stages. Both layouts use the same locally generated result, so switching views never regenerates it.

The difference is not intelligence. It is how much of the system the reader wants to see.

From scroll event to local inference

A TypeScript content script observes velocity and extracts the skipped text. A Manifest V3 service worker routes the request to one Chrome offscreen document, where Gemma 4 runs locally through LiteRT-LM and WebGPU.

The full runtime breakdown — model identifier, source location, and where the same identifier appears in the compiled bundle — is on the stack page.

Skim Recap is not trying to replace reading. It protects the continuity of reading when attention moves faster than the page.
Overview About Privacy Stack
Blog Chrome Store