Skip to content

0.2.0: mcpp-vscode 1.1.0 is mcpp-vscode 0.9.0 over the backend; one page library for VS Code and CLion; CLion's API on 261-263 - #3

Draft
Sunrisepeak wants to merge 118 commits into
mainfrom
release/0.2.0
Draft

Sunrisepeak wants to merge 118 commits into
mainfrom
release/0.2.0

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

mcpp design 2026-10-29 §10 and the mcpp-ide rows of §13.1. Versions: backend 0.2.0, mcpp-vscode 1.1.0, mcpp-clion 0.2.0, mcpp-nvim 0.2.0.

mcpp-vscode 1.1.0 = mcpp-vscode 0.9.0 over the backend

  • 0.9.0 imported with its history (subtree merge into mide-plugins/vscode); every view, page, command, menu, keybinding, setting and string is 0.9.0's.
  • spec/ states 0.9.0's contributions; mcpp-ide-dev gen vscode writes package.json, its strings and the settings registry in place; CI regenerates and expects no drift.
  • mcpp runs through the backend's mcpp/exec, mcppls through languageService/exec; no other process is started for either.
  • Kept from 1.0 in 0.9.0's style: Debug (mcpp launch type), the Testing tree, Select the Build Target (target-set rows with mcpp ≥ 2026.10.30.1), Pack, build on save, cancellable jobs.

Parity gates against 0.9.0

  1. Manifest and strings: 0.9.0's contributes and nls are a subset of the generated manifest (test/parity/manifest.test.ts).
  2. Page documents: every page's HTML, rendered by the extension's generators, is byte-identical to the snapshot rendered by 0.9.0's (test/parity/pages.test.ts, 8 snapshots).
  3. End to end: the Extension Host suite over the bundled backend and a fake mcpp answering from protocol/fixtures; the CLion workbench in Chromium over a real mcpp-ide serve (webui/tests/workbench.test.mjs).

One page library for VS Code and CLion

  • webui/ is a workbench running mcpp-vscode's page modules unchanged in a browser host. vscode and Node's built-ins are answered over a bridge, views are tabs, webviews are iframes with the IDE's --vscode-* theme. The old webui/js panels are removed.
  • mcpp-clion's tool window and Settings | Tools | mcpp are this workbench in JCEF (Workbench.kt).

Backend

  • New methods: mcpp/exec, languageService/exec, project/files.
  • targets rows for target sets, gated by mcpp ≥ 2026.10.30.1.

mcpp-clion on 2026.1–2026.3

  • TrustedProjects.isProjectTrusted, XDebuggerManager.newSessionBuilder, createDriverConfiguration(project, CPPEnvironment(toolchain)).
  • The Plugin Verifier runs against 2026.1 and 2026.2.3.

Waiting on mcpp 2026.10.30.1

The §13.1 CI rows are prepared and land after mcpp 2026.10.30.1 is released:

  • one mcpp pack --target openkal --systems all --pkg-format tar,okb;
  • runs_on.self;
  • the .exe launcher;
  • MCPP_VERSION=2026.10.30.1.

wellwei and others added 30 commits July 31, 2026 18:59
- detect ast_file_version_too_new/old as pcm-mismatch
- new src/llvmTools.ts: xlings detection, version extraction, path derivation
- autoConfigureModulesWizard: 8-step guided setup (check toolchain →
  install matching llvm-tools via xlings → configure clangd → rebuild)
- status bar '模块不可用' now shows context-aware QuickPick with auto-fix
- enhanced pcm-mismatch error message with actionable guidance
- McppOperationRegistry.hasActive() and McppCliController.isBusy()
- executeXlingsInstallTask() helper for xlings vscode.Task execution

version 0.2.2
- wizard 检测到 GCC/MSVC: error 消息说明原因 + 提供安装/选择工具链入口
- 状态栏点击 GCC 项目: QuickPick 提供一键配置/安装/选择默认工具链
- 模块检查 interactive 模式: warning 消息带一键配置按钮形成闭环
…check

- createSerialExecutor: use AsyncLocalStorage-scoped flag instead of global
  depth counter so only same-async-context reentrant calls bypass the queue
- findXlingsExecutable: check PATH entries with existsSync before returning
  'xlings', so the wizard's 'install xlings' guidance branch is reachable
- add 2 tests: concurrent caller queues correctly, reentrant call bypasses
- changelog: 0.2.2 entry covering one-click auto-configure, PCM mismatch
  detection, non-LLVM toolchain UX, serial executor fix, xlings detection
- README: update version to 0.2.2, add mcpp.autoConfigureModules to
  command table, add auto-configure to troubleshooting and LLVM integration
  sections, update roadmap and release tag example
feat: add member-scoped mcpp run/test editor actions
feat: add mcpp.newProject command to scaffold and open projects
Sunrisepeak and others added 30 commits October 30, 2026 02:33
… that the extension and the workbench call

The project tree, the libraries and a package's page, the cache, the settings page and the graphs
are registered by src/pages.ts from what the extension activates; finding the current project
moves to src/projects/current.ts. The extension's behaviour is unchanged.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…host

webui/src answers what the pages ask of VS Code (the vscode module) and of Node (fs, path, os,
crypto, url, util) through a bridge to the IDE that hosts the page: requests through
mcppHostSend/mcppHostReceive, synchronous file reads through a prompt the host answers. Views are
tabs in the manifest's order and names, webviews are iframes with the page's own CSP, nonce and the
IDE's --vscode-* theme. tools/bundle-webui.mjs bundles it with esbuild beside the pages' media,
the codicons and mermaid, and lists the files in files.txt. The previous panels (webui/js) are
removed: the workbench shows the pages VS Code shows.

webui/tests/workbench.test.mjs runs the workbench in Chromium over a real mcpp-ide serve and the
mock mcpp: the tabs, the project tree, the cache page, the libraries over an index and a package's
page, a settings write, and the graph page, with no page error and no CSP refusal.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…nch in JCEF

Workbench.kt hosts webui's bundle in a JBCefBrowser and answers its bridge in the IDE's terms:
the backend's methods, the settings store, dialogs, popups, progress, editors, the clipboard, the
browser, files, mcpp's commands; the theme is given as the --vscode-* variables. The tool window
holds one workbench; Settings | Tools | mcpp opens its settings page alone. Selecting a target and
packing are the IDE's popups, packing as a job over the backend's pack/formats.

Gradle bundles the workbench with the extension's tools/bundle-webui.mjs; CI installs the
extension's dependencies, runs the workbench test in Chromium, and checks that the plugin's jar
carries every file the workbench lists.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…t once; the install action stays on the message

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…; the changelogs, the READMEs and the architecture of the pages

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… (fileURLToPath, not a URL's pathname)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…n filter, not the deprecated constructor

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ext; CI checks the icons

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…t openkal (tar and okb), runs_on, the .exe launcher

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…lease/2026.10.30.1 until it is released

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…version>-openkal-bundle-all)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… lifecycle, its log and the IDE report (mcpp design 2026-10-30 part 2 §3, §4)

Each project is asked in its own directory (mcpp self env through the shim or
mcpp.path), with XLINGS_PROJECT_DIR removed from every run of mcpp; features by
what mcpp states or by a table frozen at 2026.10.30.1, never by version;
pinned-missing with the shim's words and its install command; untrusted
workspaces not asked; asked again after a job's envelope names another version,
on focus and on a manifest change; at most two at once. project/mcpp,
project/refresh, capabilities/explain, report/collect, project/mcppChanged.

VS Code and CLion restart an ended backend after 1, 4 and 16 s and stop after a
fourth end in three minutes (degraded mode, restart and report actions); Export
IDE Report in every editor; mcpp.backend.logLevel; VS Code's status item names
the project's mcpp. Tests: test_probe over the mock playing a shim per
directory; the Neovim smoke writes the report.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…s, and its actions under each editor's id (mcpp design 2026-10-30 part 2 §5)

The backend's languageService/status runs mcppls status (0.0.20 and later)
or reads the table frozen at 0.0.18 and 0.0.19; a different answer is sent
once (languageService/changed). The command table's forwards name mcppls's
action ids, resolved per editor by commands/list: CLion runs the mcppls
plugin's action, Neovim mcppls-nvim's command, VS Code the command and
arguments mcppls names, with mcpp-ide's confirmation. VS Code no longer
reads the mcppls extension's API object; a missing kit is a row that
installs it; auto refresh after a build forwards nothing.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… (mcpp design 2026-10-30 part 2 §6, §7)

source/entries says what a C++ file is to its project, from the text: a
program's main, a test's, or neither. VS Code: Run and Debug above main
(mcpp.codeLens.enable), Build and Debug in the editor title, Run, Debug,
Build and Test in the editor's context menu, placed by the command table.
CLion: the gutter's ▶ from the backend's answer on the PSI element, the
hammer runs mcpp build, a status bar item, keymaps with VS Code's chords.

spec/test-frameworks.json: GoogleTest, Catch2, doctest. test/cases reads a
program's cases from its source and, after a build, from its listing;
test/runCases runs some with the framework's filter and reads its report
(test/caseResult). The Testing view and CLion's test tree show cases.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… case at its macro

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…inked /var, Windows' drive letters); capabilities/explain names tests.debug (test-launch)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ks for their actions (0.0.20's status, the frozen table for 0.0.18 and 0.0.19); a build forwards a reload only under refreshAfterBuild = reload; CLion's startup no longer names a removed method

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…kend (mcpp design 2026-10-30 part 2 §8)

The tolerant TOML scanner, completion, hover, the three jumps and the seven
manifest rules, and build.mcpp's SPEC-007 checks, completion, snippets and
hover, ported from mcpp-vscode 0.9's TypeScript. tests/rules/golden holds that
implementation's answers over tests/rules/corpus at every position of every
line; test_rules compares the backend's with them. One mcpp.toml snapshot and
one build-program snapshot (spec/), the latter refreshed from 2026.10.29.1. The
reference gained what the backend's reader already did: a table read through
the schema (workspace mirrors, a platform's tables under a selector, named
entries), a selector-only table offered with its selector, the schema's own
arrays of tables allowed, and an unclosed multi-line string at the end no
longer stops the parse. CLion 2026.1's abstract ProjectTaskRunner.canRun(task).

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ditor reaches the rules layer of mcpp.toml and build.mcpp through it (mcpp design 2026-10-30 part 2 §8)

initialize in LSP's shape, mcpp-ide's methods and notifications under
mcpp-ide/, textDocument/* for the two files (full synchronisation, UTF-16
columns, answered in order). VS Code connects with its language client,
bundled into dist/vendor; CLion over the session's own connection through
its extension points (the platform's LSP client starts a server of its own);
Neovim with vim.lsp. mcpp-vscode's TypeScript rules layer, its snapshots and
their generators are removed; the scanner's goldens cover its parser tests.
The declared degraded mode where okrun does not run, with its Extension Host
run in CI. test-launch is mcpp 2026.10.31.2's.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…t 2 §9)

The tool window's Project, Libraries and Cache tabs are native trees and lists
over the backend's view models; a graph is the one page in JCEF
(webui/graph.html, mermaid over graph/packages and graph/modules, tested in
Chromium over a real backend); Settings | Tools | mcpp is a form generated
from settings/registry with Apply, Reset and a search. The workbench, its
vscode shim and its bridge are removed. The views' models and the settings
form are tested headless.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…rsions.env)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… single quotes

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…EDT), not a light project on temp://, where CLion's bundled STM32 startup activity fails

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…dEnabledPlugin, not PluginManagerCore's internal getPlugin (verifier: INTERNAL_API_USAGES on 2026.2); the index box's renderer by its customizer

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…so, the public question; findEnabledPlugin is internal on 2026.2 too

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…kal 0.18, whose okrun maps the image it runs), mcpp >= 2026.10.31.2; CI's macOS runs on macos-15 -- GitHub retires macos-14 on 2026-11-02

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… ran once the image is loaded (openkal-image 0.1.6)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants