Skip to content

feat(eui-neo): add 0.6.1 - #531

Open
FarnaHerry wants to merge 1 commit into
mcpplibs:mainfrom
FarnaHerry:feat/eui-neo-0.6.1
Open

FarnaHerry wants to merge 1 commit into
mcpplibs:mainfrom
FarnaHerry:feat/eui-neo-0.6.1

Conversation

@FarnaHerry

@FarnaHerry FarnaHerry commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up to #473 (0.6.0). Upstream released v0.6.1; this bumps the index from 0.6.0 to 0.6.1. Design doc: .agents/docs/2026-10-14-bump-eui-neo-0.6.1-plan.md.

Source

Tarball archive/refs/tags/v0.6.1.tar.gz
sha256 cd0bd6bd437177db097da146fc20f4b8b01c70d0db561a6f8e26baa26dbbbf5f (computed twice, stable)
License Apache-2.0 (unchanged)
CN mirror pending — no mcpp-res write access; plain-string GLOBAL url fallback per cn-mirror.md SOP

What changed upstream (0.6.0 → 0.6.1)

  • CORE_SOURCES / VULKAN_SOURCES byte-identical to 0.6.0 (extracted and diffed from both CMakeLists.txt) — no source-list, dep, feature or flag changes.
  • core/window/x11_moveresize.h is new but header-only (EWMH _NET_WM_MOVERESIZE; libX11 dlopen'd at runtime, no link-time X11 dependency). Its compile-time <X11/Xlib.h> reaches the linux window_backend.cpp TU through the transitive compat.glfw → compat.x11 chain — verified in the emitted compile_commands.json.
  • ime_bridge.c's new EUI_GLFW_X11_IME_POSITION arm (X11 IME caret fix) calls glfwSetX11InputMethodCursorPos, a function upstream's patch_glfw_x11_ime.cmake adds to its bundled glfw. compat.glfw is unpatched upstream 3.4, so the arm is inert here; the linux IME keeps the 0.6.0 stub.

The one real descriptor change (found by testing, twice)

In the SDL2 backend, beginWindowMove / beginWindowResize call sendX11MoveResizeForWindow unguarded, but the SDL2 branch's declaration sits inside #if __linux__ && … && defined(SDL_VIDEO_DRIVER_X11) (window_backend.cpp:223) — unlike the GLFW branch's copy (:608), which upstream hoisted out of the guard with its own #else return false. Three builds fail, all measured:

  1. linux + compat.sdl2 — its config is dummy+offscreen only, so the macro is absent (local run): 'sendX11MoveResizeForWindow' was not declared at :571.
  2. macOS (CI, first revision): use of undeclared identifier at :567/:571.
  3. Windows (CI, first revision): same two errors — __linux__ is false there, so NO macro can wake the declaration; it does not exist at all. Upstream's own CI builds the SDL2 backend on Linux only and never sees this.

Fix: one package-private shim in the force-included mcpp_eui_backends.h, split by platform, active only with the sdl2 feature:

  • linux: #define SDL_VIDEO_DRIVER_X11 1 for this package's own TUs wakes the guarded block. It can never fire at runtime (compat.sdl2 has no X11 driver, so no SDL window is ever an X11 window and every delegation returns false — upstream's "unavailable → report failure" contract).
  • macOS / Windows: a core::window stub sendX11MoveResizeForWindow(void*, int) returning false — the fallback upstream's GLFW branch and its own release notes describe ("on non-X11 platforms the delegation returns false and callers keep their programmatic fallback"). Handle is void* in the SDL2 branch, so the signature matches the call sites exactly; the real definition is linux-only, so no redefinition.

Neither half may become an interface define — consumers would inherit the lie on every platform.

Verification

Locally with mcpp 2026.10.1.2 (same as CI MCPP_VERSION), Linux x86_64, MCPP_INDEX_MIRROR=GLOBAL:

  • Lint clean (check_* suite + mcpp xpkg parse).
  • All seven members mcpp test green: eui-neo, eui-neo-window, eui-neo-app-main, eui-neo-markdown, eui-neo-sdl2 (sdl2+network), eui-neo-vulkan, eui-neo-tray. The sdl2 member failed before the shim and passes after it — the shim's measured evidence.
  • First CI revision: all linux legs (default + llvm×4), lint, build, select, measure, timings, mirror-cn-reachable, graphics-side-effects passed; macOS + Windows failed on the SDL2 member only (logs read — no other error on either leg). This revision extends the shim for those two legs; they are its authoritative verification.
  • Stub branch additionally syntax-checked against the exact upstream call-site pattern (g++ -Wall -Wextra -Werror -fsyntax-only); linux half regression-re-run (eui-neo + eui-neo-sdl2 green).

CORE_SOURCES and VULKAN_SOURCES are byte-identical to 0.6.0 (extracted and
diffed from both CMakeLists.txt), so the lib's source list, deps, features
and flags carry over unchanged. The release is window lifecycle, Linux
input and component fixes; three of its pieces deserve notes:

  * core/window/x11_moveresize.h is new but header-only: libX11 is
    dlopen'd at runtime (no link-time X11 dependency), yet its compile-time
    <X11/Xlib.h> now reaches the linux window_backend.cpp TU through the
    transitive compat.glfw -> compat.x11 chain — verified in the emitted
    compile_commands.json, no direct dep added.
  * ime_bridge.c's new EUI_GLFW_X11_IME_POSITION arm (X11 IME caret fix)
    calls glfwSetX11InputMethodCursorPos, a function upstream's
    scripts/patch_glfw_x11_ime.cmake adds to its BUNDLED glfw.
    compat.glfw is unpatched upstream 3.4, so the arm is inert here; the
    linux IME keeps the 0.6.0 stub.
  * The one real descriptor change, found by testing: in the SDL2 backend,
    beginWindowMove/beginWindowResize call sendX11MoveResizeForWindow
    UNGUARDED, but the SDL2 branch's declaration sits INSIDE
    `#if __linux__ && ... && defined(SDL_VIDEO_DRIVER_X11)`
    (window_backend.cpp:223) — unlike the GLFW branch's copy (:608), which
    upstream hoisted out of the guard with its own `#else return false`.
    Three builds fail (all measured): linux + compat.sdl2 (dummy+offscreen
    config, macro absent — local run), macOS and Windows (`__linux__` false,
    so NO macro can wake the declaration — both PR CI legs; upstream's own
    CI builds the SDL2 backend on Linux only). The fix is one
    package-private shim in the force-included mcpp_eui_backends.h, split
    by platform: on linux define SDL_VIDEO_DRIVER_X11 for this package's
    own TUs, waking the guarded block (it can never fire at runtime —
    compat.sdl2 has no X11 driver, so every delegation returns false,
    upstream's "unavailable -> report failure" contract); elsewhere supply
    the core::window stub the GLFW branch and upstream's release notes both
    describe ("on non-X11 platforms the delegation returns false and
    callers keep their programmatic fallback"). Neither half may become an
    interface define: consumers would inherit the lie on every platform.

No CN mirror yet (never published to mcpp-res); plain-string GLOBAL url
fallback per cn-mirror.md SOP. sha256 computed twice from the tag tarball.

All seven workspace members bumped to 0.6.1 and verified locally with
mcpp 2026.10.1.2 (same as CI MCPP_VERSION): index lint clean; eui-neo,
eui-neo-window, eui-neo-app-main, eui-neo-markdown, eui-neo-sdl2,
eui-neo-vulkan, eui-neo-tray all pass — the sdl2 member failed before the
shim and passes after it, which is the shim's measured evidence; the stub
branch is additionally syntax-checked against the exact upstream call-site
pattern, and its authoritative verification is the PR's macOS/Windows legs.

This branch has not been deployed

No deployments
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