CloudBolt Content NavigatorBrowse and sync CloudBolt content by human-readable name instead of Global ID. CloudBolt stores content in git using ID-based directory names like Requirements
Setup
The CloudBolt panel will appear in the Activity Bar once a content repo is detected. Python TypingsCloudBolt ships a set of Download the typings from your instance1. SSH into your CloudBolt instance and create an archive, following the symlink to capture the actual files. Mac / Linux:
Windows:
2. Download the archive to your local machine (run from your content repo root): Mac / Linux:
Windows (PowerShell):
3. Extract into your content repository: Mac / Linux:
Windows (PowerShell):
This creates a
Configure VS CodePylance's default stub path is Since the stubs do not include the underlying
Change IndicatorsThe tree shows how far each item is from being in CloudBolt. CloudBolt syncs from the git remote, so an edit only counts once it is committed and pushed:
Colour without a badge means an item is affected rather than edited — a blueprint whose plugin changed, a content type group holding a changed item, or the specific blueprint section that holds the affected dependency. Where an item is in more than one state, the one that blocks a sync wins, so uncommitted edits show ahead of unsynced commits. The indicators update as you save, commit, pull, and sync — no manual refresh needed. Sync to CloudBolt on one item clears only that item (and whatever its sync carried along); Refresh in CloudBolt clears everything. Pulling a colleague's commits does not raise an indicator against their work, but your own committed work keeps its ↑ until you actually sync it — matching the git remote is not the same as being in CloudBolt. Indicators are tracked per branch. CloudBolt syncs a branch at a time, so "last synced" only means anything relative to one: switching branches does not carry the other branch's sync state over, and syncing on one branch leaves the other's alone. A branch you have never synced starts clean, the same way a fresh install does — run Refresh All Content after switching to load that branch into your development instance. Note that indicators are computed from git on your own machine, so they cannot see a sync a teammate ran. Reload Content Tree re-reads the workspace; it does not re-check CloudBolt. Workspace Settings (.vscode/settings.json)The extension only activates in workspaces whose root holds one of the recognized content folders (opening the CloudBolt panel or running any CloudBolt: command activates it too). In a repository with no CloudBolt content folders the extension stays idle — it registers no file watchers, scans nothing, and writes no settings. It writes to
These hide CloudBolt metadata files and embedded images from the Explorer and search results — the extension surfaces that information through the tree view instead. Exclusions you added yourself are preserved; VS Code's own defaults ( Friendly Editor Tab TitlesContent files are named after their Global ID on disk, so a tab reading These patterns go in your own
The mapping is derived entirely from metadata that is already committed, so a copy in the shared The list is regenerated from the workspace whenever the extension activates, on Reload Content Tree, after a sync, when a We recommend committing Content in a SubdirectoryBy default the extension expects the content folders (
This belongs in the repository's One caveat: VS Code decides whether to activate an extension before any extension code runs, and it can only check the workspace root — so a nested layout will not activate the extension automatically. Open the CloudBolt panel once per window, or run any CloudBolt: command, and everything works from there. Configuration
Supported Content Types
Source Code RepositoryCloudBolt uses a Source Code Repository (SCR) to know where to pull content from when syncing. The SCR must be configured in your CloudBolt instance before using this extension, and it must point to the same remote git repository as your local clone. To configure the SCR in CloudBolt:
Once the SCR exists in CloudBolt, link the extension to it:
When you sync, the extension tells CloudBolt to pull from the current branch of that remote repository. This means your changes must be committed and pushed to the remote before syncing — local-only changes will not be included. The extension will warn you if it detects unpushed commits before proceeding. Dependency TreeContent items are expandable in the tree to show their dependencies:
All dependencies are resolved from your local repo and shown by human-readable name. If a dependency exists in CloudBolt but not in the local repo, it is shown as Refresh All ContentRefresh All Content pushes every item in your local repo to CloudBolt in a single job. It is most useful in two situations: Setting up a new development instance When you first configure a development instance, it will not have any of the content from your repo. Running Refresh All populates the instance with everything on the current branch, giving you a consistent baseline to develop and test against. Starting work on a new feature branch (optional) When you check out a new branch, your development instance may still reflect the previous branch. Running Refresh All at the start of your session ensures the instance is in sync with the branch you are working on before you begin making changes. This step is optional — it is only necessary if the branch contains content differences that would affect your testing. In both cases, the current branch must exist on the remote before running Refresh All — push it first with Pull RequestsA second pane below the Content tree lists the repository's open pull requests and shows
what content each one changes by name. Reviewing a content pull request on github.com
means reading paths like The pane appears only when the repository's
Expand a pull request to see the content it changes, grouped by content type exactly as the Content tree groups it. Items whose change touches a single file open their diff on click; items with several changed files expand into rows named for what each file is — Script, Metadata, Icon — rather than the Global ID file name. Changes outside the content folders are collected under Other Files. Clicking any of those opens a read-only side-by-side diff in the editor, with both sides fetched from GitHub. You do not need to check the branch out, and the tab is titled with the content name rather than the Global ID. The pull request tabClick a pull request to open its own tab: title, state, branches, changed-file and line counts, the full description, and who has reviewed it or been asked to. The review controls live here too — Start Review before one is open, then Approve, Comment, and Request changes with a summary box once it is. Checkout and Open on GitHub are on the same tab. On a pull request you opened yourself, only Comment is offered: GitHub does not allow approving or requesting changes on your own work. ReviewingExisting review comments appear as inline threads on the diff, in the same place they sit on github.com. You can reply to a thread, start a new one on any line, edit or delete your own comments, and resolve or unresolve threads. The pull request tab also carries the Conversation: existing discussion and review summaries, with a box to comment on the pull request itself rather than on a line. Merge, close and reopen are there too, with the merge method (merge commit, squash, rebase) chosen before a confirmation step; a branch with conflicts says so instead of offering a button that would fail. Each changed file has a viewed checkbox in the tree. It is stored on GitHub, not locally, so your progress through a large pull request follows you to the web UI and back. Select lines in a diff and choose Suggest a Change to propose a concrete replacement.
The comment opens pre-filled with a To review properly, start a review first — either from the pull request tab, or with the Start Review button on the comment box, which opens the review and attaches that first comment to it. The comment box follows the review state: Start Review and Add Comment before one is open, Add to Review once it is. Comments added while a review is open are held as pending: labelled as such and visible only to you. Finish with Submit Review…, available from the pull request tab, the comment thread toolbar, and the pull request's right-click menu. Approving asks for confirmation first, since it posts publicly under your name. With no review in progress, a comment posts immediately. Comments written against a commit that has since been rewritten cannot be placed on any line of the current diff. Rather than guessing a line and attaching real feedback to unrelated code, those are listed in the tree under their file as outdated, with the original diff hunk in the tooltip. Running a pull request's contentUse the Refresh in CloudBolt icon on a pull request's row, or the same entry in its right-click menu, to load the content it changes onto your development instance, so you can actually run a colleague's work before approving it. CloudBolt pulls from the git remote and the pull request's branch is already pushed, so nothing is checked out and your working tree is untouched. The payload follows the same rule as the Content tree: a changed item that belongs to a parent is synced by submitting the parent, because pulling a parent brings its dependencies with it. Content the pull request adds, which is not in your clone yet, is submitted on its own. Afterwards your instance holds that branch's content rather than yours. The status bar says
so — Checking out a pull requestRight-click a pull request and choose Checkout Pull Request to fetch the contributor's branch and switch to it — useful when you want to run their content against your own CloudBolt development instance before approving. Run CloudBolt: Refresh All Content afterwards to load it. Checkout refuses to run when you have uncommitted changes, rather than carrying them onto someone else's branch. The branch you were on is remembered: CloudBolt: Return to Previous Branch takes you back. PerformanceNothing is fetched until you ask for it. The four categories render with no network call at all; expanding one costs a single request, and expanding a pull request costs one more. Results are cached for five minutes — use the refresh button in the pane's title bar to pick up newer pull requests sooner. Limitations
Commands
Right-click any content item in the tree to Sync to CloudBolt, or use the sync button in the toolbar to push all pending changes at once. A pull request's row carries icons for Refresh in CloudBolt, Checkout Pull Request, and Open on GitHub. Right-clicking adds Open Pull Request, Start Review, and Submit Review… alongside the same three. |