4.0 KiB
Non-Linear: Ideas Borrowed from Existing Products
Overview
Design ideas mined from existing products, evaluated against Non-Linear's "focused dev tool" philosophy.
✅ Adopted for v0.1
Keyboard-First + Command Palette (from Linear)
Every action has a keyboard shortcut. Cmd+K command palette is the primary navigation method. Graph navigation via Alt+↑/↓/←/→. Context-aware palette shows different actions depending on current view and selection.
Triage Inbox / Rootless Inbox (from Linear)
Nodes without a parent land in a staging inbox. Triage = assigning a parent, which places the node in the tree. Decouples "capture" from "organize." Agents can triage via API.
Backlinks / Inbound Link Surfacing (from Obsidian)
Every node surfaces inbound lateral links: "3 tasks blocked by this." Count badges on nodes in layered overview. Agents can query "what depends on this node?" for impact analysis.
PR / Commit ↔ Node Coupling (from GitHub)
Short typeable node IDs (NL-42). Commit message parsing (fixes NL-42 → status change). PR linkage appears in node's activity feed. Branch naming support (feature/NL-42-login-flow). GitHub/GitLab webhooks trigger node updates.
Scoped Conversations + Selective Watching (from Slack)
Watch granularity: single node, subtree, or project-wide. Event type filters (status changes, comments, agent actions). Mute noisy subtrees. Agent-specific filter.
Plan-Then-Apply (from Terraform/Pulumi)
Structural changes show preview: reparent consequences, bulk operation impact, deletion cascades, permission boundary changes. Agent proposals submitted as reviewable "plans."
Cycles as Time-Boxing (from Linear)
Cross-cutting temporal view over spatial tree. Cycle = named set of node references + date range. Color highlighting in all views. Agent scoping to current cycle.
Complete Change History / Blame Timeline (from Git)
Every mutation is an event: status, assignment, comment, link, reparent, label. Compact timeline in focus widget. Diff-style for structural changes. Agent-readable via API.
Breadcrumb Navigation (from VS Code)
Full root→node path as clickable segments. Always visible in focus widget. Keyboard shortcut to jump to any ancestor.
Natural Language Node Creation (from Todoist)
Parse tree path (Auth > Login flow), labels (#bug, p0), assignment (@agent-1) from text. Integrated into command palette. Fuzzy-matches node names. Falls back to inbox if path unresolvable.
⏳ Deferred
Auto-Linking External Signals (from Sentry/PagerDuty) — v0.3+
Production errors auto-route to the right component subtree. Deferred because it can overwhelm UI and requires mature graph structure before automation.
❌ Not Adopting
Rich Document Blocks (from Notion)
Turns dev tool into workspace platform. Nodes have rich markdown descriptions, not embedded apps.
Multiplayer Presence / Cursors (from Figma)
Overkill for small teams (3-5). Ambient awareness handled by activity feed and scoped notifications.
Canvas / Sketch-to-Structure (from Excalidraw)
Cool demo, unclear daily value. Entry experience (create root → add children) is fast enough.
Summary Table
| Idea | Source | Status | Version |
|---|---|---|---|
| Keyboard-first + Cmd+K | Linear | ✅ Adopted | v0.1 |
| Triage / rootless inbox | Linear | ✅ Adopted | v0.1 |
| Backlinks | Obsidian | ✅ Adopted | v0.1 |
| PR/commit coupling | GitHub | ✅ Adopted | v0.1 |
| Scoped conversations + watching | Slack | ✅ Adopted | v0.1 |
| Plan-then-apply | Terraform | ✅ Adopted | v0.1 |
| Cycles (color-highlighted) | Linear | ✅ Adopted | v0.1 |
| Complete change history | Git | ✅ Adopted | v0.1 |
| Breadcrumb navigation | VS Code | ✅ Adopted | v0.1 |
| Natural language creation | Todoist | ✅ Adopted | v0.1 |
| Auto-link external signals | Sentry/PagerDuty | ⏳ Deferred | v0.3+ |
| Rich document blocks | Notion | ❌ Rejected | — |
| Multiplayer presence | Figma | ❌ Rejected | — |
| Canvas sketch-to-structure | Excalidraw | ❌ Rejected | — |