Quick View
Peek any record in a modal over your list without losing your place. The same detail page renders inside the modal or full screen, and command-click still opens a new tab.
The cost of looking at a record used to be a navigation. You were on a list, you clicked an initiative, the list disappeared, you read the detail, you clicked back, the list scrolled to a different position than where you left it. By the third time, you stopped clicking through and started ignoring the records you were curious about.
Quick View is the fix. Click a card, click a row, click a bar on the roadmap, and the record lifts into a modal over the surface you were on. The list, the board, the timeline behind it stays exactly where it was. Close the modal and your cursor lands back on the row you opened, your scroll position is preserved, and your filters are still applied. You read what you needed to read, you moved on.
Open any record, keep the list behind
Quick View is wired for initiatives, plans, and bugs today, from any of the four surfaces those records show up on: the grid, the Kanban board, the roadmap, and the cross-project portfolio timeline. Sprints, portfolios, projects, sessions, tasks, and documents render at the full route only at the moment; extending Quick View across the rest is a follow-up.
The entry point is always the same: click the title in a row, click the body of a card, click a bar. The modal opens, the surface mounts behind it, and the URL updates to the detail page so a refresh keeps you where you are.
- The list, board, or roadmap behind stays current
- Cmd / ctrl / middle click open a new tab
- Close drops you back where you were
- Direct deep links land here, with no modal
- Heavier operations route here automatically
- Same component, same state, no re-render
The same component, both surfaces
What you see inside the modal is the same component that renders the full detail page. The initiative detail you read from a deep link and the initiative detail you peek through Quick View are not two implementations; they are one. The detail does not know whether it is being rendered in a modal or at a full route. Tabs work the same way, the version history renders the same way, the action menu offers the same operations. There is no "lite" version with features stripped out.
That choice is what keeps Quick View honest. A surface that pretends to be the full detail but is missing fields, or tabs, or the latest version data, ends up being the surface no one trusts. The platform avoids the trust gap by not letting one exist.
Native browser behavior, on every click
The thing modal patterns usually get wrong is the click. They override every click on a row, so command-click does not open a new tab, middle-click does not open a new tab, right-click does not show "Open in new tab" in the menu. The user reaches for the affordance their browser has trained them on for twenty years and the affordance does not work.
Quick View respects the browser. A plain left-click opens the modal. Cmd-click, ctrl-click, shift-click, alt-click, middle-click, and right-click all fall through to the browser default. Want the record in a new tab so you can keep reading the list? Cmd-click. Want a context menu so you can copy the link? Right-click. The modifier-key affordance you already know works exactly the way you expect it to.
The URL in the address bar is a real URL to the detail page, not a query parameter on the list. That means the link you copy from Quick View is a link that resolves directly to the full detail when someone else opens it. They are not getting a modal that depends on having been on your list; they are getting the page.
Tabs do not collapse the modal
A detail page in Disco Parrot has tabs (Overview, Plans, Bugs, Discussions, the kind of structure a real product needs). The way most modal patterns handle this is wrong: clicking a tab navigates the URL, which the modal-router reads, which the modal-router thinks is a new page, which collapses the modal.
The Quick View routing layer carries the modal state through tab navigations, so clicking a tab inside the modal switches tabs inside the modal, with the list still behind. The URL updates so a refresh lands you on the right tab inside the modal, the back button works the way you would expect it to, and the modal stays open until you close it on purpose.
When you need the full page
A modal is the right shape for reading and quick edits. Some things are better as a full page: a long-running action, a complex form, a flow that benefits from more space. The modal header carries an "Open full page" button that hands you off, with the same record and the same state, to the full route.
The handoff is a navigation, not a re-render. You do not lose the data you were looking at; the URL changes from "in a modal" to "as a page" and the same component renders at the new size. The list behind the modal disappears the moment you take the handoff, because you have left the list, but every other piece of state on the detail page is preserved through the transition.
The detail page itself can request the handoff when it knows the user is about to start an operation that needs the room. Opening the action launcher on an initiative inside the modal redirects you to the full page first, then opens the launcher, because the launcher uses a drawer that does not stack cleanly against a modal backdrop. The redirect is silent; you click "Launch a skill," you arrive on the full page with the launcher open, ready to go. The transition is not a failure mode; it is the right shape for the operation you were about to start.
Closing a modal uses a navigation that replaces the current history entry rather than pushing a new one. The browser back button takes you to wherever you were before you opened the modal, not back into the modal you just closed. Most patterns get this wrong; we got it right at the routing layer.
Where Quick View opens from
Quick View is wired on every list-shaped surface in the product today.
| From | What happens |
|---|---|
| Grid | Click the title of a row. Modifier keys open a new tab; plain click opens the modal. |
| Kanban board | Click the body of a card. Drag is detected separately, so dragging never accidentally opens a modal. |
| Roadmap | Click a bar. Resize and reschedule drags are detected separately. |
| Cross-project timeline | Click a bar. The portfolio view is read-only, so click is the only interaction. |
The component that opens is the same in every case. The list behind is whatever surface you came from. You can move between several records in a row without ever fully committing to any of them, which is exactly the shape a triage afternoon needs.
What you can do from inside the modal
Quick View is the full detail, not a preview. That means most of what you would do on the full page works inside the modal too. Read the body. Change the status. Reassign the owner. Add a comment. Open a tab and look at the linked plans. Pull up the version history. The component does not know it is in a modal, so the operations it offers are the operations it always offers.
The handful of things that route you to the full page are the operations where the modal is the wrong shape: starting a Flow against the record, launching a skill, opening a side-by-side configuration view. The platform takes the redirect for you. You click the action, the modal closes, the full page opens with the action already in motion, and you keep going. The hand-off is a feature, not a friction point; the right surface for a heavy operation is the page, and Quick View knows when to step out of the way.
The modifier keys still work too. Cmd-click an internal link inside the modal to open it in a new tab. Right-click the title for the browser context menu. The modal does not steal your browser interactions; it just keeps the list mounted behind it.