Desktop launch: upstream/dev → upstream/v2
Compared the latest fetched tips on September 8, 2026:
| Branch | Exact revision | Tip date |
|---|---|---|
upstream/dev |
ecbc6ccac85b3e8087b6445e584318419b9e2b34 |
September 7, 2026 |
upstream/v2 |
a912a6ee4fe506edc3f96555f86c2d6ad9fdce3d |
September 8, 2026 UTC |
The comparison uses the two branch snapshots, not just commits since their common ancestor. The audit covers app, desktop, session-ui, and ui, plus Core, Server, Client, and provider changes with a Desktop-visible result. Mobile web is included at the user's request. The blog contains no TUI features.
Main editorial finding
This is a substantial expansion and hardening of Desktop. Tabs, Home, model choice, file attachments, change review, themes, and basic follow-up queueing already exist in dev. Do not announce those as first-time V2 inventions.
The strongest launch story is better control of ongoing work, worktrees in the tabbed experience, a configurable activity timeline, conversation search, recovery and continuity, and much broader polish. The experimental browser is a meaningful preview, but remains opt-in.
Feature coverage
| Area | Baseline and V2 difference | Evidence |
|---|---|---|
| Tabbed workspace | Tabs and Home already exist in dev. V2 makes the current layout the sole layout and improves tab sizing, controls, state, and navigation. | Dev i18n/en.ts has the Introducing Tabs copy; #42993, #46731 |
| Worktrees | Dev's new-layout release copy explicitly says worktrees are not supported there yet; legacy worktree functionality existed. V2 brings creation, selection, and management into the tabbed layout. | #38790, #47310 |
| Starting branch | Choose which branch a new worktree starts from. | #44906 |
| Preparation | Keep the new session visible; draft a follow-up while the worktree is being prepared; tolerate long setup. | #46694, #47734, #47694 |
| Moving sessions | Move an existing conversation to another worktree/directory, with location notices and clearer menus. This does not claim that unrelated local file edits are automatically merged. | #47310, #46862, commit 8062b5455a |
| Worktree setup and cleanup | Startup scripts, default destination, current inventories, linked-session information, and clearer individual/bulk deletion. | #44455, #47310 |
| Follow-ups | Basic queue/steer preferences already exist in dev. V2 provides a server-backed inbox, visible queue pullout, alternate delivery action, reorder/remove/steer controls, and position-preserving editing with draft restoration. | Dev pages/session.tsx; #44683, #42109 |
| Deliberate interruption | Queued work stays parked after a stop; deliberate stops release restart intent. Avoid suggesting that stopped tasks automatically start again. | #42682, #41800 |
| Background work | Long-running tools and delegated tasks can run in the background; Desktop exposes Move to background and background summaries. | #44068, commit ec46439ef5, session/background.ts |
| Delegated sessions | Clearer delegation/activity states, child-session navigation, preserved parent lineage, and subagent resumption. | #44078, #46746, #44404, #43172 |
| Timeline presets | Messages only, Quiet, Compact, Detailed, Everything; category-level visibility, grouping, and collapse controls. | #46717, #47226 |
| Activity readability | Group repeated activity and adjacent patches, merge repeated file edits, show inline counts and errors, retain useful working/completion indicators. | #43901, #44107, #45603, #44632, #47033 |
| Conversation search | Find in session with highlights and match navigation. Current implementation searches loaded user/assistant text, not every tool output or all unloaded history. | Commit 370b9965d3; session/timeline/search-controller.ts |
| Command palette | Better scoping, responsiveness, and combined command/file/session lookup. Session-ID search is also supported. | #47164, #44387, #42992 |
| Dropzone | Attachments already exist. V2 expands the drop target across the session and into new sessions, with model-aware copy and drag cancellation. | #42312, #47303 |
| Images and diagrams | Image previews in Read results, local Markdown images, and rendered Mermaid diagrams. | #46513, #45780, #43024, #45773 |
| Session import/export | New native Desktop import flow validates a saved session, imports it into a selected project, and opens it. Export existed; completion handling is improved. | #46416, #46435 |
| Home actions | Rename, export, and delete from a session's context menu; improved search/index behavior. | #43245, #43191 |
| Session identity | Saved project colors, project menus, editable titles, tab context menus, and copy-ID actions. Custom header project icons are gated outside production at the audited tip. | #46787, #46977, #46113, #44125, settings/experimental/experimental.tsx |
| Settings | Full-page settings with clearer Preferences, Appearance, Notifications, Projects, Worktrees, Providers, Models, Extensions, Experimental, and About sections. | #40845, #45190, #46984, #45782 |
| Vertical tabs | Optional vertical layout and project-name display. Experimental, not the default. | #45210, settings/experimental/experimental.tsx |
| In-app browser | Desktop-only, opt-in browser tabs beside review/files; user and agent navigation, input, screenshots, files, and diagnostics. Experimental, disabled by default. | #44838, #46531, settings/model.tsx |
| Files | Horizontal tree scrolling, context menus, folder labels, cleaner file tabs and empty states, preserved panel state. | Commit e64b2bc137; #43835, #47095, #44477 |
| Review | Word-level changes in unified review, navigation following file-tree order, large-diff improvements, support for compatible non-Git VCS backends. Existing review/comments are not newly invented. | #45833, #46557, #46684 |
| Desktop terminal panel | New bottom placement as an alternative to the side panel; focus, mouse, copy, and editing fixes. This is the panel inside Desktop, not the TUI. | #44175, #45140, #44737 |
| Model selection | Refined picker, synchronized selections, thinking controls, model-change notices, and persisted previous selections. | #44383, #43288, #41771, #45515 |
| Provider reach | Expanded native providers and integrations, including Mistral, Groq, DeepInfra, Cerebras/Together, Bedrock Mantle, Azure authentication, and DigitalOcean. The blog groups this rather than treating backend packages as Desktop UI features. | #46278, #45288, #45108, #45098, #40119, #45086, #47137 |
| Local models | Model discovery for configured Ollama, LM Studio, and vLLM providers. | #43021, #42607, #43022 |
| Skills and extensions | Skills exposed in slash commands; clearer shared/project views; corrected worktree scope for MCP toggles and clearer connection failures. | #47247, #45432, #45509, #45522 |
| Web search | Pluggable search providers and Desktop choice/consent UI, including disabling search; selection remains sticky per session. | #35558, #42591, #41042, #47334, commit 33ef66746b |
| Live customization | Config, instructions, agents, commands, skills, and local plugins can refresh without restarting the session. Public plugin/API redesign is substantial, but implementation details are not launch-post copy. | Commits c9b24ef027, 856c569458, 92807d0bb9, 8da7526616; #39224 |
| Long-session context | Better retention and retry/recovery around compaction; provider-side compaction where configured and supported. Provider mode is opt-in; local mode remains the default. | #46751, #47178, #47323, #47324 |
| Restart/crash continuation | Durable running-work records allow managed-service restart recovery after graceful or unclean exits. Explicit user stops release that intent. Repeated recovery has a finite budget; this is not an exactly-once/no-loss guarantee. | #41800, current core/src/session/execution.ts, core/src/session/execution/restart.ts, server/src/process.ts |
| Background recovery | Recover shell outcomes and background child sessions after restart; wake the parent appropriately. Current implementation supersedes the earlier PR's child-recovery limitations. | Commit ded8a492d1; #45781, current core/src/session/execution/restart.ts |
| Interrupted responses | Continue some interrupted streams from durable history, including transport failures after partial output. Retryable failures after output also receive recovery handling. | #43757, #45861 |
| Reconnect and foreground | Detect stalled streams; resync on foreground; refresh queued input; pace directory resync; clearer connection indicator and request timeouts. | #47571, #47573, #47565, #47574, #47572 |
| Missing locations | Recover a session by selecting another directory or worktree rather than leaving an unusable route. | #46215 |
| Session-entry performance | Remove unnecessary waits before showing available history; reduce work in tab switching and draft entry. Results vary by workload. | #46044 |
| Streaming and large changes | Avoid whole-row reconstruction for text deltas; reuse diff highlighting; avoid repeated diff work; bound costly rendering. | #46774, #46769, #46768, #46772 |
| Large drafts and memory | Batch/defer persistence, chunk large draft text, avoid redundant encoding/history hydration, and fix multiline-paste out-of-memory cases. Desktop renderer state moves to SQLite. | #47704, #47705, #47706, #45497, #47695 |
| Inactive work and request load | Stop transcript/inbox prefetch in inactive tabs; bound Home indexing and catalog retention; cap request concurrency and reduce slow Git-read contention. | #46762, #46786, #45406, #47441, #47564 |
| Continuity of the view | Fix scroll anchoring, prepended history, disclosure state, restored panels, new-session flicker, and session ownership across navigation. | #44317, #44077, #45474, #44477, #47734 |
| Notifications and windows | Restore completion alerts, route notification clicks into the right tab, deduplicate sounds, and sync project lists across windows. | #44412, #44897, #44612, #44600 |
| Native polish | Windows titlebar/caption controls and editing shortcuts, native-menu zoom sync, Linux window display, WSL V2 startup and connection improvements. | #45208, #46336, #46773, #42681, #42199 |
| Updates and migration | Migration progress/failure UI, staged-update verification/rechecks, coordinated restarts, and bundled matching runtime. A development-startup benchmark is not a consumer app-startup benchmark. | #42495, #42715, #42707, #41865, #46705 |
| Mobile navigation | Full-width Session/Changes/Files/Terminal views, view navigation placement, Files tabs, compact menus, and status/session-detail drawers. | #46388, #46389 |
| Mobile review and touch | Edge-to-edge changes, sticky file summaries, Open file, line numbers, wrapping preferences, visible touch actions, and better input sizing. | #46390, #46391 |
| Mobile relaunch and keyboard | Restore last permitted route for the installed web app; cached startup/update handling; iOS safe areas and keyboard spacing. This is mobile web/PWA work, not a native phone-app announcement or full offline operation. | #44205, #46391, #46703, #47712, #45495 |
| Language and layout | Hebrew locale, bidirectional input, right-to-left layout fixes, and typography/spacing work across shared components. | #42475, #42413, #44106 |
Performance wording
The post intentionally uses qualitative, workload-specific wording. The attached videos are demonstrations, not benchmarks.
- #46044 contains useful real-data improvements, but its different cohorts and intermediate/final builds must not be pooled. It explicitly retains regressions and mixed CPU results. Its numbers are not a fresh measurement of these exact dev/v2 tips.
- #47706 measures typing after a particular large paste through real composer/draft components. It is not a whole-app speed, memory, or battery benchmark.
- #42722 concerns cold development startup. Do not turn that into a consumer launch-time claim.
No aggregate percentage, universal instant-opening claim, battery claim, or total-RAM figure appears in the launch post.
Release and media notes
launch-post.mdis a release editorial draft. It does not assert a public release date, final installer availability, or final platform/download matrix. Add the confirmed V2 Desktop download URL when scheduling publication.- Browser and vertical tabs remain explicitly experimental. Provider-native compaction remains opt-in. Project-header icons are not advertised as a production feature.
- Nine real UI videos are included. See
media/README.mdfor capture provenance: six local renderer clips, two native Desktop PR recordings, and one current native Desktop browser clip composed from its real renderer surfaces. Demo content is staged. - The published blog uses the actual OC-2 light/dark semantic tokens, Desktop's Inter and IBM Plex Mono fonts, and the production wordmark paths. The editorial text uses a 640-pixel maximum measure, 17/28-pixel body type, restrained variable-font headings, and consistent paragraph spacing. Phone controls retain 44-pixel touch targets.
- The hands-on composer, timeline, and search now compile the production views and controllers with fixture session data. They reuse
Composer,createComposerEditor,createMemoryComposerState,createSessionQueue,SessionQueuePanel,TimelineDetailControl,createReactiveTimelineProjection,createSessionTimelineRowRenderer,TimelineSearchBar, andcreateTimelineSearchController. The only aliases adapt server/location data; no UI component is replaced by a lookalike. Source:packages/app/launch-demos/in the V2 worktree. - Raw commit and changed-file inventories are retained in
capture/desktop-commits.txtandcapture/desktop-files.txtfor follow-up review.