Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Launchpad Merge ProposalsNew to Visual Studio Code? Get it now.
Launchpad Merge Proposals

Launchpad Merge Proposals

Preview

Canonical

|
2 installs
| (2) | Free
Browse, review, and comment on Launchpad merge proposals without leaving VS Code
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Launchpad Merge Proposals for VS Code

Review Launchpad merge proposals without leaving your editor.

[!NOTE] This extension is in preview. Features and APIs may change between releases. Bug reports and feedback are very welcome, so please report a bug.


Launchpad Merge Proposals for VS Code brings Launchpad's review workflow into your editor. Browse merge proposals, view diffs, leave inline comments, and submit reviews without switching to the browser.

Features

Browse merge proposals

The Launchpad Merge Proposals view in the Activity Bar lists proposals for the upstream of your checked-out branch (the remote branch it tracks), in both directions:

  • Outgoing: the tracked branch is the source.
  • Incoming: the tracked branch is the target.

When the workspace holds several git repositories, the branch is read from the one currently selected in the Source Control view, not from the active editor.

Filter the visible MPs by status (Needs review, Approved, Work in progress, Merged, and more) to focus on what matters.

Browsing and filtering merge proposals in the Launchpad Merge Proposals view

Read the diff natively

Open Files Changed to review changes in VS Code's familiar side-by-side diff editor. Files are decorated to show where comments live, so you can quickly see what has already been discussed.

You must be signed in to Launchpad to view diffs, including for public repositories. See Getting started.

Reviewing a proposal's Files Changed in the side-by-side diff editor

Comment inline

Read published inline comments right next to the code and draft your own as you review. Comment threads appear in VS Code's native Comments panel, allowing you to browse every comment on the diff in one place. Drafts are kept until you submit them as part of a review.

Reading published inline comments and drafting new ones on the diff

[!NOTE] Threads containing drafts are marked Unresolved and the rest as Resolved, as a stand-in for distinguishing drafts until VS Code's draft-state API stabilizes.

The Comments panel can filter by Resolved/Unresolved. You can choose to only view threads with draft comments or focus on what you still haven't reviewed.

Filtering the Comments panel to only show threads with drafts

[!TIP] A thread collapses when its draft is submitted or discarded, i.e., when its status changes to Resolved. Turn off comments.collapseOnResolve to keep threads expanded.

Submit a review

Pick a Merge Proposal vote, add a Markdown comment, and submit. Your pending inline drafts are published together with the review.

Picking a vote, writing a comment, and submitting a review

Requirements

  • VS Code 1.105 or newer.
  • A Launchpad account for the full feature set. Without one, you can browse public proposals only (see Authentication and permissions).
  • A workspace folder backed by a git repository with a Launchpad remote (git.launchpad.net). If your remotes use a rewritten prefix such as lp:, see Git URL rewrites.
  • The built-in VS Code Git extension, which is bundled with VS Code and enabled by default.

Getting started

  1. Install the Launchpad Merge Proposals VS Code extension and open a project that has a Launchpad git remote.
  2. Check out a local branch that tracks a Launchpad remote branch:
    • Tracking a branch you already pushed: git branch --set-upstream-to=<remote>/<branch>.
    • Publishing a new local branch with tracking configured: git push -u <remote> <branch>.
  3. Open the Launchpad Merge Proposals view from the Activity Bar.
  4. Sign in when prompted, or run Launchpad Merge Proposals: Sign In from the Command Palette. Choose an access level in VS Code, approve it in your browser, return to VS Code, and click Continue.
  5. Select a merge proposal, then pick a preview diff to see changed files and comments.

[!IMPORTANT] Signing in is required to view diffs, even for public repositories.

Authentication and permissions

Sign-in uses Launchpad's OAuth flow. Your token is kept in VS Code's SecretStorage. Sign out with Launchpad Merge Proposals: Sign Out or from the Accounts menu.

During sign-in, the extension guides you through choosing an access level. For public merge proposals, Change Non-Private Data is the recommended level for full access to the extension's features. To use a different level later, run Launchpad Merge Proposals: Change Access Level from the Command Palette.

Access level What it unlocks
Signed out View non-private proposals, published reviews and comments
Read Non-Private Data …plus open preview diffs to view non-private diff content and published inline comments
Change Non-Private Data …plus draft inline comments and submit reviews/comments on non-private proposals
Read Anything Extends Read Non-Private scope to private data
Change Anything Extends Change Non-Private scope to private data

Inline comments live in the diff, so viewing them needs at least Read. Drafting them needs Change because Launchpad only exposes drafts to a token that can also write them.

Extension Settings

Git URL rewrites

If you rewrite remote URL prefixes with Git's url.<base>.insteadOf, the affected remotes aren't recognized as Launchpad ones: the extension reads remote URLs as they are stored in your Git config, before those rewrites are applied.

Declare the rewrites you use, mapping each prefix to its expansion (for example lp: to https://git.launchpad.net/), in VS Code Settings.

Alternatively, add the setting directly to your settings.json:

{
  "launchpad.mergeProposals.git.urlRewrites": {
    "lp:": "https://git.launchpad.net/"
  }
}

Whole diff reconstruction (experimental)

A Launchpad preview diff carries only the changed lines. To give you the surrounding code to review against, the extension rebuilds the complete contents of each changed file, on both sides of the diff, from the Git history in your local clone.

The feature is experimental and needs the relevant history to be present locally. When the rebuild fails, the extension falls back to showing the changed lines on their own (see Known issues and limitations).

If reconstruction causes problems, you can turn it off in VS Code Settings, or by adding the setting directly to your settings.json:

{
  "launchpad.mergeProposals.reconstructWholeDiffs": false
}

Commands

Commands are available from the Command Palette under the Launchpad Merge Proposals category. The contextual ones only show up when they apply:

Command Description
Launchpad Merge Proposals: Sign In Authorize the extension with your Launchpad account.
Launchpad Merge Proposals: Sign Out Remove the stored session.
Launchpad Merge Proposals: Change Access Level Re-authorize with a different Launchpad access level.
Launchpad Merge Proposals: Refresh Merge Proposals Reload the list of merge proposals.
Launchpad Merge Proposals: Filter Merge Proposals Filter the list by proposal status.
Launchpad Merge Proposals: Open Merge Proposal in Browser Open the selected proposal on launchpad.net.
Launchpad Merge Proposals: Refresh Selected Merge Proposal Reload details for the open proposal.
Launchpad Merge Proposals: Refresh Comments Reload comments for the current diff.
Launchpad Merge Proposals: Reconstruct Complete Diff Again Retry whole diff reconstruction for the open diff.
Launchpad Merge Proposals: Show Log Open the extension's output log.

Known issues and limitations

  • This is a preview release, so expect rough edges.
  • When whole diff reconstruction is disabled or unavailable, unchanged portions are shown as empty lines so the diff matches the source code's line numbers.
  • The MP list follows the upstream of the checked-out branch, so a branch with no upstream shows nothing at all, even when a proposal exists for a branch of the same name on Launchpad. Not seeing a proposal? Check that:
    • the right repository is selected in the Source Control view;
    • you're on the right local branch (git branch --show-current);
    • that branch has an upstream (git rev-parse --abbrev-ref '@{upstream}'). If it doesn't, set one with git push -u <remote> <branch>, or with git branch --set-upstream-to=<remote>/<branch> when the remote branch already exists;
    • the upstream's remote is a recognized Launchpad remote (git remote -v). Remotes written with a rewritten prefix such as lp: need Git URL rewrites configured, and remotes with different fetch and push URLs are resolved from the fetch URL.
  • Submitting or discarding a draft turns its thread to the Resolved status, which VS Code collapses by default. Disable comments.collapseOnResolve to keep it expanded (see Comment inline).

Contributing

Bug reports, feature requests, and merge proposals are welcome on Launchpad.

Release notes

See the CHANGELOG for the full history.

License

Licensed under GPL-3.0-only. Copyright 2026 Canonical Ltd.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft