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

steciuk

|
2 installs
| (1) | 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.

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.

Drafts need Change access, both to write them and to load your existing ones back, because Launchpad only exposes drafts to a token that can also write them. See Authentication and permissions for the full breakdown.

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.
  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. Approve access 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.

When authorizing, Launchpad asks what level of access to grant.

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.

[!IMPORTANT] The extension doesn't yet detect which level you granted, so a too-narrow grant isn't flagged up front. Lower-tier actions work, but anything needing more (such as publishing or loading drafts) fails with an error notification. If you hit one, sign out and back in with a higher access level.

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)

By default, preview diffs show only the changed lines. Enable this experimental setting to show complete file contents where possible.

Complete contents require the relevant Git history to be available locally. If they cannot be reconstructed, Launchpad continues to show the changed lines and explains why (see Known issues and limitations).

Enable or disable it in VS Code Settings.

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

{
  "launchpad.mergeProposals.reconstructWholeDiffs": true
}

Commands

All commands are available from the Command Palette under the Launchpad Merge Proposals category:

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: 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: 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 granted OAuth scope isn't detected yet, so a too-narrow grant isn't caught up front. Write actions fail with an error instead (see Authentication and permissions).
  • Tokens don't refresh automatically. If requests start failing, sign out and back in.
  • The MP list follows the upstream of your checked-out branch. Not seeing a proposal? Check if you're on the right local branch.
  • Only repositories with a recognized Launchpad git remote are detected. When a remote has different fetch and push URLs, the fetch URL is used for resolution. Remotes written with a rewritten prefix such as lp: need Git URL rewrites configured.
  • 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
© 2026 Microsoft