Roadmap
ScopeKite ships as sequential vertical slices. This is the compact record; the full per-PR detail lives in EXECUTION_PLAN and open questions in the research backlog.
Shipped
Section titled “Shipped”| PR | Title | Main capability | User-visible impact | Notable system change |
|---|---|---|---|---|
| 01 | Repository scaffold | Monorepo + quality gates | — | pnpm/Turbo, CI, compose stack, license/secret scanning |
| 02 | Design system & shells | Tokens, primitives, app shells | First navigable UI stubs | design-tokens, ui-web + Storybook |
| 03 | Database & API baseline | Postgres, migrations, health | — | Drizzle + migration CI, OTel, outbox/audit tables |
| 04 | Authentication | Sign-up/verify/reset/sessions | Accounts work | Better Auth adapter, cookie+bearer, rate limits |
| 05 | Workspaces & membership | Invites, roles, permissions | Teams can form | Permission service, negative-auth test contract |
| 06 | Projects & contract | Projects, workflow states | Projects exist | Zod contract registry → generated client, check:api gate |
| 07 | Work items | CRUD, activity, events | Tasks exist | Revisions, idempotency, identifier minting, outbox atomicity |
| 08 | Web walking skeleton | End-to-end web loop | Sign up → create → complete | Playwright E2E foundation |
| 09 | Mobile walking skeleton | Expo app core loop | Work from a phone | Bearer sessions, mobile fixtures |
| 10 | Integration review | Gate check across slices | — | Contract/tenancy audit before Milestone 2 |
| 11–12 | Comments & inbox | Conversation, mentions, notifications | Discuss work, get pinged | Watcher graph, notification fan-out |
| 13 | Project board | Kanban columns | Drag work across states | Optimistic revision-checked moves |
| 14 | Cycles | Timeboxes + planning | Commit work to a sprint | Date-only cycles, commit/release ops |
| 15 | Filters & saved views | URL-persisted filtering | Shareable narrowed lists | One filter shape across list/board/views |
| 16 | Command palette | ⌘K navigate/search/create | Keyboard-first navigation | Debounced workspace quick search |
| 17–18 | Email pipeline | Provider adapter + outbox worker | Reliable verification/invite mail | Resend/Mailpit adapters, retry worker |
| 19 | Realtime-lite | Polling freshness | Badges/threads stay current | Freshness contract per surface |
| 20 | Attachments | Upload/download/delete | Files on tasks | MinIO/S3 via guarded routes only |
| 20.1–22 | Staging + observability + roadmap | Deploy, dashboards, objectives/modules | Staging URL; roadmap surface | Continuous deploy runbook, OTel dashboards |
| 23 | Dashboard | Workspace home | See your day at a glance | Composed from existing endpoints |
| 24 | UX polish wave | Mention typeahead, inbox polish | Smoother daily loop | — |
| 25 | Rich text | Constrained markdown | Formatted descriptions/comments | Shared grammar, sanitized rendering |
| 26 | Comment attachments | Files on comments | Attach in context | Comment-linked uploads, confirm-gated delete |
| 27 | SSE realtime | Live updates | Near-instant badges | SSE over outbox, polling fallback |
| 28–30 | Mobile catch-up & search | Mobile inbox/detail, workspace search | Phone parity for the loop | Search endpoint over items+comments |
| 31 | Import/export | CSV both ways | Migrate data in/out | Dry-run all-or-nothing import |
| 32–33 | Ops & security hardening | Rate limits, headers, sessions UI | Self-serve session control | Per-account limits, CSRF posture pinned |
| 34 | UX audit & specs | Target interaction model | — | ADR-027 + the PR-35…41 spec pack |
| 35 | Split-pane task detail | Context-preserving pane | Open tasks without losing your place | Intercepting/parallel routes, one URL |
| 36 | Sub-tasks | One-level children | Break work down | Additive parentId filter (v0.15.0) |
| 37 | Attachment gallery | Thumbnails, lightbox, paste | Screenshots feel native | Strict image allowlist, SVG never inline |
| 38 | Unified conversation | Comments + milestones, mobile markdown | Task reads as one story | Parser moved to domain, native renderer |
| 39 | Split-view refresh fix | Context in the URL | Refresh keeps the split view | ?context= param + hard-load pane route |
| 40 | List/board/overview polish | Grouping, bulk, quick-edit, triage | Faster daily surfaces | Bulk per-item PATCH + retry, keyboard model |
| 41 | Cycle planning room | Two-pane planning | Plan a cycle in one screen | Client-side rollups, warning chips |
| 42 | Visual polish | Density, icons, motion, preview | Compact mode, calmer UI | Density context, motion-reduce-safe animation |
| 43 | Docs site | Astro Starlight foundation | This site | Curated layer; repo docs stay canonical |
| 44 | Docs on staging | docs.scopekite.code.lease | Docs reachable next to the app | Static container, NPM ingress, no env access |
| 45 | In-app help | Sidebar + palette + empty-state docs links | Learn without leaving the app | One URL registry, safe new-tab links only |
| 46 | First-run onboarding | Getting-started checklist, teaching empty states | Fresh workspaces explain themselves | Progress derived from real data, local flags only |
| 47 | Activity in conversation | Collapsed “All activity” in the task story | Who-changed-what without tab switching | Activity tab retired; timeline reused as renderer |
| 48 | Task-detail quick actions | Copy link, assign-to-me, mark done, cycle picker | Common moves are one click | Reuses existing endpoints; relations stay R-47 |
| 49 | Responsive QA | Three-viewport smoke, loading polish | Layouts hold from phone to desktop | Overflow guardrail; surfaces join the sweep |
| 50 | Post-marathon QA | Staging re-verification, flake fixes | Marathon confirmed stable in production posture | Docs-and-tests-only; no product code touched |
| 51 | Retrospective & playbook | Architecture lessons, reusable checklists | — | Docs-only; evidence-cited |
| 52 | Workspace admin polish | Identity, members, invites, vocabulary map | Administration feels trustworthy | Removed false deletion copy; permission logic unit-tested |
| 53 | Asana UX research | Clean-room competitive dossier | — | Behavior-level findings only; proposed the PR-54…59 wave |
| 54 | Project overview & status | Brief, health ritual, roadmap/cycle/activity panels | Projects explain themselves | Append-only project_status_update; health ≠ lifecycle; nothing computed |
| 55 | Project Files | Every attachment in one project lens | Find that screenshot again | Read-only aggregate over items + comments; PR-37 allowlist reused |
| 56 | View display & quick filters | Columns, grouping, density, preset chips | Shape the table you work in | Display document in the existing saved-view payload — no migration |
| 57 | Relations & dependencies | blocks / duplicate / relates, blocked indicators | Answer “what blocks this?” | work_item_relation; inverses and blocked computed, never stored |
| 58 | Project dashboard | Counts, breakdowns, every number drills down | See a project’s shape at a glance | One additive aggregate endpoint; tile and drilldown share a filter |
| 59 | Customize drawer | Project configuration in context, real controls only | Change settings without losing your place | Drawer over the route; nothing advertised that has no endpoint |
| 60 | Post-wave acceptance | Staging verification, cross-surface journey, role acceptance | Badges now readable; status picker honest | Contrast gate + research-id gate joined the quality path |
| 61 | Mention autocomplete | Accessible member typeahead, @email tokens |
Mention the right person, even name twins | Pure logic shared via @scopekite/domain; no contract change |
| 62 | Comment editing | Author-only edits, revisions, tombstones | Fix the typo without rewriting history | ADR-028; deleted content scrubbed everywhere; no impersonation edits |
| 63A | Attachment scanning | ClamAV worker loop, fail-closed downloads | Files are checked before anyone opens them | Only clean downloads; honest Scanning/Blocked states; R-12 half closed |
| 63B | Retention & restore | Guarded purge, offsite backup, full drill | Deleted means deleted — and backups provably restore | Dry-run-first purge; same-disk honesty; R-12 awaits a real destination |
| 64 | Mobile parity | Mentions, comment edits, scan states, relations, overview | The daily loop genuinely works from a phone | Shared domain logic; ADR-029 gates push; no new native deps |
| 65 | Observability→work | ADR-030 + signed-webhook ingest prototype | Alerts become tracked work instead of lost pings | Standard-Webhooks auth; fingerprint dedup; routing from config only |
| 66 | Integration management UI | Settings surface, once-only secret, test events, health facts | Set up an inbound webhook without touching the API by hand | Contract 0.24.0; deterministic test fingerprint; failure counters (0018) |
| 67 | App shell & rhythm | Viewport-locked shell, one date dialect, branded 404, cached nav | The chrome stays put and every date reads the same way | Beautification 1/4 (UI audit); no schema or contract change |
| 68 | Planning surfaces | Cycle-room relayout, guarded delete, My Work sections, feed grammar, cycle progress | The sprint ritual is calm and My Work reads like a day plan | Beautification 2/4; honest “completion so far” figure, not a fake burndown |
| 69 | Mobile & rows | Two-line phone rows, filter sheet, board due chips, pane polish, title-first search | The daily loop works one-handed and rows never hide their titles | Beautification 3/4; board pane becomes an overlay, no column slivers |
| 70 | Identity & color | Project colors, card signals, state-colored dashboard, auth card, parsed sessions | Projects have a face and every card says how the work is going | Beautification 4/4; contract 0.25.0 (additive list signals) |
| 71 | Capture & empty states | New-task quick-fields, danger overdue callout, empty-state typography | Capture stays one keystroke, detail is one click away | Gap marathon 1/3 |
| 72 | Roadmap earns its name | Month-grouped targets, initiative progress from linked projects | The roadmap answers “when” and “how far along” without pretending | Gap marathon 2/3; contract 0.26.0 (additive itemCount) |
| 73 | Project colors | Pickable identity color with automatic fallback | Projects look the way the team decides | Gap marathon 3/3; migration 0019; contract 0.27.0 |
Dogfood audit follow-through
Section titled “Dogfood audit follow-through”| Task | Slice | User impact | System change |
|---|---|---|---|
| SCA-2 | Mobile workspace selection | Sign-in and switching make workspace context explicit | Mobile-only; validated saved membership and workspace-scoped cache reset |
| SCA-3 | Unified task story | Files, comments, and meaningful activity stay visible together; delete leaves the tab bar | Web-only composition of existing guarded queries and mutations |
| SCA-4 | First-run team + project setup | A founder can seat the team and shape the first project while intent is fresh, or skip safely | Web orchestration over existing invitation/project APIs |
| SCA-5 | Bulk-selection discoverability | People know what selection unlocks before committing, including at phone width | Web-only selection mode and tests; existing bulk mutations unchanged |
In flight — Product Knowledge (PR-82 … PR-86)
Section titled “In flight — Product Knowledge (PR-82 … PR-86)”Write the decision once. Turn it into work. Follow it through delivery.
A bounded document surface inside the tracker: structured pages in a hierarchy, tasks created from a page’s own paragraphs (keeping an excerpt that survives later edits), the page reporting live delivery state for the work it produced, and read-only page reading on a phone.
This is an explicitly recorded promotion of what SCOPE.md listed as a P0 non-goal — ADR-031 states the decision and names what stays out: realtime co-editing, comments anchored to selected text, page media, public sharing, imports, page-level permissions, and mobile editing (R-70…R-78).
| PR | Slice |
|---|---|
| 82 | Architecture, UX spec, ADR-031, editor decision (Tiptap OSS, MIT, client-only — chosen on measured bundle/license/block-id evidence) |
| 83 | Page hierarchy, persistence, permissions, API, append-only revisions |
| 84 | Web Pages tree and the structured editor, with an honest conflict contract |
| 85 | Linking pages to work; creating tasks from document blocks |
| 86 | Initiative documentation, permission-filtered work rollups, mobile reading |
Next / open
Section titled “Next / open”- R-54…R-58 — the Asana-inspired project UX wave: all five shipped in PR-54…59. What each slice deliberately cut lives on as R-59…R-64.
- R-47 — dependencies/work-item relations, raised in priority by PR-53’s task-detail findings.
- R-45 — bulk undo (inverse patches); roadmap progress rollups (PR-40.1).
- R-50 — app-component Storybook harness, spacious density, exit-motion audit.
- R-35 remainder — velocity/burndown analytics, cycle badges on rows/cards.
- R-44 — email bounce webhooks and preferences; R-46 — labels end to end.
- Platform: RLS revisit (R-18), search indexing at scale (R-43), virus-scan gate (R-12).
The docs site itself (this PR-43) is infrastructure; expect these pages to trail the repo docs slightly — they are curated, not generated.