Grafy Blog
All postsTry Grafy free
← All posts

Jump through a long AI chat by question

The Grafy team · Aug 19, 2026 · 11 min read
ai chat navigationlong ai chatchat historymultiple ai modelsgrafy chat
Jump through a long AI chat by question

A useful chat becomes difficult to read at exactly the moment it becomes valuable. The answer on screen depends on a question six screens above, a follow-up refers to a chart you attached yesterday, and the phrase you remember is in the prompt rather than the reply. Scrolling turns into archaeology: up too far, down again, then the same search in the second model column.

Grafy Chat treats the questions as the document outline. Every user prompt becomes one row in a rail along the left edge. The rail shows where you are, opens into a readable table of contents on hover or keyboard focus, and jumps every visible model column — plus the fused answer — to the same exchange with one click.

1Ask2See the rail3Choose a question4Align every answer
Ask → See the rail → Choose a question → Align every answer
QUESTIONS1 Summarise the proposal2 Which assumptions are weakest?3 Compare the two forecasts4 What should we verify next?5 Draft the review noteMODEL AMODEL Bone click parks every open column on question 3
Question three is selected once in the rail and aligned across both model columns. A fused panel, when open, moves on the same coordinate.

One tick per question, visible from the first one

The rail appears as soon as the chat contains a question. Waiting until a transcript is long enough would make the interface shift halfway through the work and leave readers wondering what changed. Collapsed, it occupies 38 pixels and draws one small tick per question. The current exchange is cyan; the rest form a quiet map of the conversation.

Tick width hints at prompt length on a logarithmic scale between 9 and 22 pixels. A series of terse follow-ups therefore has a different silhouette from a long brief without letting a pasted 600-character instruction take over the gutter. The active row is measured from the chat's actual scroll position, so it updates when you use the wheel, reopen part-way through a transcript, or follow an answer as it streams — not only after clicking the rail.

This turns the transcript from a feed into something closer to the source map in why a graph beats a chat thread: still linear, but no longer dependent on remembering where each decision was made.

Hover turns the map into a table of contents

Move the pointer into the strip and the panel unfolds to 320 pixels. Each row shows its question number and a one-line label; long prompts are ellipsised in the panel but keep the complete text as a tooltip. Only the rows scroll, so the Questions heading stays put in a long conversation. Move away and the panel folds back without leaving an overlay across the answer.

The row under the pointer grows to 1.45 times its normal type size, with nearby rows easing back to normal across a 46-pixel reach. The boxes themselves never grow. They stay on a fixed 22-pixel grid, because changing a box's height would move the next question out from under the pointer and make the list chatter. The magnification is for legibility, not decoration: it enlarges the target while preserving the geometry you are aiming at.

Keyboard users get the same table. Tabbing onto a row unfolds the panel and magnifies the focused entry, with a visible focus ring. A mouse click does not leave the whole panel pinned open afterwards; it jumps, then gives the answer its space back.

One click parks a single chat on the question

In a normal one-model conversation, selecting a row places that question near the top of the transcript with 16 pixels of breathing room. Smooth scrolling is used when motion preferences allow it; prefers-reduced-motion switches the jump to immediate placement and removes the panel transitions.

A deliberate jump also pauses live tail-following. Without that rule, the next streamed token would pull the transcript straight back to the bottom and make the rail look broken. Following resumes naturally when you later reach the live tail. Meanwhile the highlighted row is recomputed from where the transcript actually sits, so the table of contents never insists you are on question five while you are reading question three.

Browser Find is still useful for a name or quotation. The rail answers a different question: which exchange was about the forecast? It navigates by the prompts that framed the work, not by a word that might appear twenty times in the answers.

Several model columns share one question coordinate

The harder case is the council of AI models, where the same question can produce several answers side by side. Clicking a row moves every open column. The question lands on the same internal anchor line in each scroller rather than simply at the top, because one model may have answered in two paragraphs and another in twenty. Aligning by raw scroll percentage would put them on unrelated text.

Each user bubble is marked with the rail's row number, and the ordinary scroll synchronisation speaks that same coordinate. The rail temporarily suspends sync while it places the columns, then releases it after the smooth scroll has settled. That prevents one column's motion from grabbing another halfway through the jump. The result is one gesture for the whole comparison rather than repeating the same hunt in every answer.

The fuser panel joins the same set. When several answers have been reconciled into a single response, choosing question four moves the source columns and the fused answer to question four together. Watch reasoning models think explains the other layer of those answer cards; the rail is concerned only with finding the exchange again.

Late-joined and solo columns do not break the map

Columns are not always identical. Add a model halfway through a chat and it never received the earlier questions. Continue one column on its own and it gains a question the others do not have. A naive rail that calls each column's first prompt “question 1” would align the late joiner's first answer with the original column's first answer, even though they are about different things.

Grafy builds the rail from the union of questions across every visible column and the fuser, merging shared rows by their flattened text while preserving repeated questions as separate exchanges. Each column keeps a mapping from its own local count to the shared row. The late joiner's question zero might therefore be rail row three, which is the number rendered onto its bubble and the number scroll sync uses.

When a chosen question is absent from one column, that column still moves somewhere honest. If it joined later, it goes to its beginning. If it stopped earlier, it goes to its end. A hole in the middle goes to the nearest question above it. Leaving the column untouched would look like a failed click; moving to the closest content tells you visually that the model was not present for that exchange.

Attachments can name a question with no words

A prompt does not need text to deserve a row. Send budget.pdf on its own and the question label becomes budget.pdf. Send an unnamed image and it becomes Image; an otherwise wordless attachment falls back to Attachment. If the prompt does contain words, those win over the filename, so What does this chart say? remains the useful label rather than q3.png.

Pasted multi-line questions are flattened to one line by collapsing newlines, tabs and runs of spaces. The complete prompt remains on the transcript and in the tooltip; only the navigation label is compacted. This is especially useful with PDF and document chat, where the attachment name can be the most stable way to find an exchange weeks later.

Labels use their own direction automatically. A question written in Arabic or Persian reads right-to-left inside the row, while the number and layout keep working. The rail is navigation, so losing the prompt's direction there would make the one place meant to improve scanning harder to scan.

A worked example: review three forecasts without losing the question

Open Grafy Chat with three models and ask: Compare the base, optimistic and downside forecasts in the attached workbook. Follow with Which assumption changes revenue most?, then What evidence would falsify that assumption? Finally, ask one model alone to turn its answer into a five-item diligence list and fuse the three shared answers.

An hour later, hover the rail and choose Which assumption changes revenue most? The original three columns and fuser line up on that exchange. The solo continuation remains represented as its own later row; clicking it moves that column to the diligence list and takes the other columns to their nearest end, making the divergence visible rather than inventing matching turns they never received.

Choose the workbook-only first row and a model added after the first question goes to its own beginning. You have not lost your place, and the interface has not pretended that late model read a file it never saw. If the conclusions themselves need a structured comparison beyond side-by-side reading, compare two graphs is the next step.

Compared with search, summaries and manual scrolling

Browser Find locates a string, which is ideal when you remember the wording. It cannot align four independent scrolling columns, and it cannot tell which of five identical Can you make that shorter? prompts you mean. The rail preserves repeated text as repeated rows, so the second click leads to the second exchange.

A generated summary is useful when you want the conclusion without the path. It is a new interpretation, however, and may flatten disagreement that matters. The question rail generates nothing and costs nothing. It is an index over the conversation already stored, so selecting a row reveals the original wording and every original answer.

Manual scrolling remains the right control on a phone, where a 320-pixel panel would cover the whole reading surface and there is no hover pointer to magnify it. At 760 pixels wide and below, the rail is hidden and the transcript keeps its normal scrolling. The feature improves desktop review without turning mobile into a miniature desktop.

The rail stays quiet while answers stream

Streaming can render the chat component once per token. The minimap keeps its row data in a stable reference and subscribes to scroll once rather than tearing listeners down with every word. It remeasures geometry when the question count changes, not when a token changes, because an answer getting another word does not add an item to the table of contents.

Pointer tracking is limited to animation frames, and the rail does not auto-scroll its own rows while the pointer or keyboard is engaged; moving the list under someone reading it would undo the fixed-grid discipline. When nobody is interacting, a long rail follows the currently active question just enough to keep its highlighted row visible.

These are small implementation facts with a large usability result: the navigation remains still while the content behind it is alive. That is the same principle as reproducible workflows at a smaller scale — a record is only valuable when later changes do not rewrite the route through it.

Frequently asked questions

How do I jump to an earlier question in Grafy Chat?

Use the thin question rail on the left of the desktop chat. Hover it, or Tab into it, to reveal the full table of contents; then select the question. A single chat places it near the top, while a multi-model view aligns every visible answer column and the fuser on the same exchange. The highlighted tick follows ordinary scrolling too.

Does the question rail work with several AI models?

Yes. It is built from the union of questions across the visible model columns and fused answers. Shared prompts occupy one row, a solo continuation gets its own row, and a model added midway maps its local first question to the correct later row. Clicking a question moves every column to that exchange or to the nearest honest boundary if it was absent.

What happens if I asked the same question twice?

Both exchanges get their own rows. The merge logic skips a row already claimed by that column, so two prompts reading shorter please are not collapsed into one destination. This matters because the answers around them are different even when the words are identical; the second row takes you to the second request rather than back to the first.

Can I use the minimap with a keyboard or reduced motion?

Yes. Every row is a real button with a focus-visible outline. Keyboard focus unfolds the table and magnifies the selected label just as hover does. If the system requests reduced motion, the panel stops transitioning and question jumps happen immediately instead of smoothly. The magnification remains because it improves legibility, but it no longer eases into place.

Why is the question rail hidden on my phone?

At 760 pixels wide and below, the rail is deliberately removed. Its expanded panel is 320 pixels wide and depends on hover-style targeting, so it would cover the answer on a phone rather than helping. Mobile keeps ordinary transcript scrolling and browser search. The rail is a desktop reading aid, not a requirement for accessing any question or answer.

Open Grafy Chat, ask a few follow-ups, then use the left-hand ticks to reread the conversation by question instead of by scroll position.

Read next

More from the Grafy blog.

← Back to all posts