Skip to content

mcpp-ide 1.2.0: one series, mcppls payloads by S6, test results as mcpp states them, ok images tested as they run - #5

Merged
Sunrisepeak merged 31 commits into
mainfrom
release/1.2.0
Nov 7, 2026
Merged

Sunrisepeak merged 31 commits into
mainfrom
release/1.2.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

mcpp-ide 1.2.0: the first series of one version for the backend, mcpp-vscode, mcpp-clion and mcpp-nvim (design mcpp 2026-11-07, D13, D15, D16, D18, D19).

Changes

  • One series (D15). X.Y.Z for every component; X.Y is the series, shared and checked: the backend states it in initialize, and each plugin refuses another series or protocol, naming both versions. A series release is tagged v1.2.0; <component>-v1.2.Z publishes one component's patch (release-plan.sh, release.yml).
  • mcppls payloads by S6 (D13). Version 5 takes this system's entry under platforms and starts <runner> <server.path>; version 4 serves its one platform. A payload that does not serve this system is refused, naming the ones it serves.
  • Test results as mcpp states them (D16). Statuses value for value (pass, compile_fail, run_fail/timed out, not_run, built); every test and case carries its own output (bounded to 1 MiB, head and tail) and the place its failure names; GoogleTest output divided by case. VS Code, CLion and Neovim each show it natively; run entries with icons.
  • Tested as it is run (D18). The backend is distributed only as an ok image, and backend-openkal builds its tests as ok images and runs them through the runner on every system; the native rows other than Linux x64 run with native.
  • A Run shows its build (D19). Run and Debug build through a launch job: mcpp's own narration as it is written, and its steps in the status bar, in place of a fixed "building" line. CLion's tool window moves to the left and is placed on the stripe once.
  • Platform as a series (A4). openkal-platform@^0.24 in mcpp.lock (0.24.2), mcpplibs.os ^0.3.1, mcpp 2026.11.7.1 or later.

Verification

  • Backend: 11/11 native and as x86_64-openkal images; the protocol test covers the launch job with and without mcpp's launch-stream.
  • VS Code: unit tests (543), the l10n and configuration checks.
  • Neovim: smoke suite, the run through a launch job included, 0 failures.
  • CLion: compiled and tested by CI (the IDE SDK is not available offline here).

Co-authored-by: speak-agent [email protected]

Sunrisepeak and others added 13 commits November 7, 2026 10:48
…and 5

A version 5 payload (mcppls 0.0.20) names each platform's runner under
platforms.<key>.runner; 0.2.1 took server.runner only and ran bin/mcppls.okb
itself. The backend now takes this system's entry, the one platform of a
version 4 payload, and refuses a payload that does not serve this system,
naming the platforms it does serve; with nothing else found the refusal is the
status's detail. The mapping from this system to mcppls's platform key is the
backend's alone. CLion makes every runner a payload names executable again.
The tests read the published 0.0.19 and 0.0.20 manifests.

Co-authored-by: speak-agent <[email protected]>
A version is X.Y.Z: X.Y is the series the backend and the VS Code, CLion and
Neovim plugins share, Z each component's own patch (design 2026-11-07, D15).
Every component is 1.2.0. The backend states its series in the initialize
answer; each plugin checks protocol 2 and its own series, and refuses another,
naming both versions and the install that matches. VS Code did not check the
protocol before.

Co-authored-by: speak-agent <[email protected]>
vX.Y.0 releases the backend, the VS Code extension, the CLion plugin and the
Neovim plugin; backend-, vscode-, clion- and nvim-vX.Y.Z release one component's
patch. .github/scripts/release-plan.sh checks that the tag's version is the
component's and that every component states one series; CI runs it on every
change.

Co-authored-by: speak-agent <[email protected]>
…its output and place

The stream mapping read fail and skip, which mcpp never writes, so run_fail and
compile_fail were errored and a timeout was never seen. Statuses follow mcpp's
contract: pass, run_fail (timedOut), compile_fail (compileFailed), not_run
(skipped with mcpp's reason) and built (builtOnly). Every test result carries
the program's whole output, passed or not, its head and tail past 1 MiB with
outputTruncated, and a failure's location: the first file:line its output
names. A case run divides the program's output among its cases by GoogleTest's
boundaries, and each case result carries its own output and place (D16).

Co-authored-by: speak-agent <[email protected]>
…e (D16)

The lenses above main are $(play) Run and $(debug-alt) Debug, and while the
active editor is a target's entry the editor title's Run menu runs and debugs
it (mcpp.runThisFile, mcpp.debugThisFile). Every test and case result says its
output to its own item, passed or not, with a note when the record cut it
short; a failure's message sits at the place its output names, else at the
item's line (a test's main, a case's macro). A timeout and a compile failure
say so.

Co-authored-by: speak-agent <[email protected]>
CLion: every test and case sends its own output as testStdOut, passed or not; a
failure's details start with the place its output names, which the console
filter links; a timeout and a compile failure say so; a file without run
entries is logged with why. Neovim: :Mcpp test writes each test and case to
mcpp://tests with its status and whole output, puts the failures in the
quickfix list at their places, and the sign column shows a program's and a
test's main and each case with a ▶, which a result turns into ✓ or ✗.

Co-authored-by: speak-agent <[email protected]>
The payloads' platform is openkal-platform@^0.24, its newest patch this mcpp
admits, kept in mcpp.lock (0.24.2, whose C++ run-time keeps the volume of a
normalized name); os is the compatible range ^0.3.1. Both need mcpp
2026.11.7.1.

Co-authored-by: speak-agent <[email protected]>
The backend is distributed only as an ok image. backend-openkal builds its
tests as ok images of each system's architecture and runs them through the
runner; the native rows other than Linux x64 run with `native`. The mcppls
status test names its mock server by a link on POSIX: an ok image creates no
executable file.

Co-authored-by: speak-agent <[email protected]>
…ogress

The backend's launch job builds a program as mcpp run does (with mcpp's
launch-stream, its events) and ends with the launch in job/finished. CLion's
Run and Debug, Neovim's run and VS Code's build for the debugger follow it:
mcpp's own narration as it is written, the steps in the status bar, and no
fixed 'building' line. CLion's tool window is on the left and its button is
placed on the stripe once. Design 2026-11-07 §4.9 (D19).

Co-authored-by: speak-agent <[email protected]>
…pec; smoke over the real mcpp

The backend, an ok image, reads a root, a working directory, a parent and a
payload an editor names (C:\Users\x\...) through mcpplibs.os into the generic
spelling. The tests take their own path and the temporary directory the same
way (found running them as images on Windows). mcpp.runThisFile and
mcpp.debugThisFile are declared in spec/commands.json, so the generated
manifest keeps them. The Neovim smoke's test prints its line, and a run's
terminal is closed before the next run.

Co-authored-by: speak-agent <[email protected]>
The backend each version ships is built over one version group (design
2026-11-07, D20), whose okrun reserves a thread's stack for an image's main
thread on Windows.

Co-authored-by: speak-agent <[email protected]>
Sunrisepeak and others added 16 commits November 7, 2026 19:10
An exclude on an include-only matrix left no backend job at all.

Co-authored-by: speak-agent <[email protected]>
…en the explanation is absent

Co-authored-by: speak-agent <[email protected]>
…ports a header, a preprocessor branch and os::is_<platform>

Co-authored-by: speak-agent <[email protected]>
… is on screen

The window state the stable runs recorded (visible=false, selected=Module Graph) is the graph
opened and then covered by Project, which shares the left side since 1.2.0.

Co-authored-by: speak-agent <[email protected]>
…ered, not by a startup activity that raced an early activation

Co-authored-by: speak-agent <[email protected]>
…e registered and shown, as CLion 2026.2 registers it after the project opens

Co-authored-by: speak-agent <[email protected]>
… the Debug window as the session starts

The failures alternated between CLion 2026.1 and 2026.2 run to run, and took the platform's own
Debug window as well as the mcpp one: a window shown before the IDE's startup work ends can be hidden
by it.

Co-authored-by: speak-agent <[email protected]>
…in's are tested over the backend main built from the same inputs

Co-authored-by: speak-agent <[email protected]>
openkal-image 0.5.3 enters an image in its convention's floating-point
state (openkal SPEC 12.2): on Windows a thread began with the x87 at
double precision, under which the image's C library read a decimal
number otherwise.

Co-authored-by: speak-agent <[email protected]>
Sunrisepeak and others added 2 commits November 8, 2026 07:33
…e, results from mcpp's record

A program that implements the mtest test protocol is listed and run
through mcpp's records whatever framework wrote it; a file of mtest's
cases shows its "name"_test literals with their suites before a build.
The frameworks without the protocol keep spec/test-frameworks.json.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak
Sunrisepeak merged commit ad7beb2 into main Nov 7, 2026
32 checks passed
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.

1 participant