Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package opentui for openSUSE:Factory checked in at 2026-09-28 10:47:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/opentui (Old) and /work/SRC/openSUSE:Factory/.opentui.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opentui" Mon Sep 28 10:47:41 2026 rev:3 rq:1380982 version:0.5.12 Changes: -------- --- /work/SRC/openSUSE:Factory/opentui/opentui.changes 2026-09-16 17:42:14.243786000 +0200 +++ /work/SRC/openSUSE:Factory/.opentui.new.383539/opentui.changes 2026-09-28 10:48:29.117062224 +0200 @@ -1,0 +2,26 @@ +Sun Sep 27 15:46:57 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 0.5.12 (opencode v2 pins @opentui/* at exactly this + version; the FFI ABI is unversioned so both move together): + * Native core now needs Zig 0.16 and lives in packages/native; + its Zig dependencies and image libraries ship vendored in-tree + * New embedded terminal runtime and native image rendering in + the library, plus audio input capture and clipboard support + * Per-line text alignment, mouse pointer styles, double/triple + click and CJK line wrapping in the TypeScript API + * Renderer and input fixes: split-footer resize, transparent + terminal backgrounds, markdown tables and hyperlinks, Thai + spacing marks and Ghostty wide grapheme widths + * Many more fixes and improvements; see upstream's release notes + for the full list +- Drop opentui-build-id.patch (upstream sets the build ID itself) + and rework opentui-baseline-cpu.patch for the moved build.zig +- Retire opentui-zig-deps-0.4.5.tar.zst and opentui_zigdeps: deps + are vendored in-tree, unpacked at build time, nothing is fetched +- Licence now Apache-2.0 AND BSD-3-Clause AND MIT AND + (Unlicense OR MIT-0) for the vendored wuffs and libwebp code +- Skip two X11 clipboard unit tests on aarch64, where they abort + the test runner (opentui-aarch64-skip-crashing-x11-tests.patch); + create /tmp/.X11-unix in %check for the socket bind test + +------------------------------------------------------------------- Old: ---- opentui-0.4.5.tar.gz opentui-build-id.patch opentui-zig-deps-0.4.5.tar.zst opentui_zigdeps New: ---- opentui-0.5.12.tar.gz opentui-aarch64-skip-crashing-x11-tests.patch ----------(Old B)---------- Old: for the full list - Drop opentui-build-id.patch (upstream sets the build ID itself) and rework opentui-baseline-cpu.patch for the moved build.zig ----------(Old E)---------- ----------(New B)---------- New:- Skip two X11 clipboard unit tests on aarch64, where they abort the test runner (opentui-aarch64-skip-crashing-x11-tests.patch); create /tmp/.X11-unix in %check for the socket bind test ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ opentui.spec ++++++ --- /var/tmp/diff_new_pack.hJheSX/_old 2026-09-28 10:48:30.469118873 +0200 +++ /var/tmp/diff_new_pack.hJheSX/_new 2026-09-28 10:48:30.471118956 +0200 @@ -22,7 +22,7 @@ # Upstream's build.zig refuses to run on anything but this exact version, and # the Zig releases it brackets are not source compatible, so a range would be # a lie. When Factory moves on, this package has to be rebased, not relaxed. -%global zig_version 0.15.2 +%global zig_version 0.16.0 # The npm names for the platform the native library is built for. OpenTUI # resolves it as @opentui/core-<platform>-<arch>/libopentui.so, using Node's # names for both, not the RPM ones. @@ -33,26 +33,26 @@ %global node_arch arm64 %endif Name: opentui -Version: 0.4.5 +Version: 0.5.12 Release: 0 Summary: Library for building terminal user interfaces # OpenTUI itself is MIT. miniaudio is vendored as a single header in -# packages/core/src/zig/vendor and is dual licensed; yoga and uucode are -# pulled in as Zig dependencies and are both MIT. -License: MIT AND (Unlicense OR MIT-0) +# packages/native/src/vendor and is dual licensed, as is stb; uucode, +# ghostty-vt, yoga and lcms2 are MIT; libwebp is BSD-3-Clause and wuffs is +# Apache-2.0. All of them are compiled into libopentui.so. +License: Apache-2.0 AND BSD-3-Clause AND MIT AND (Unlicense OR MIT-0) URL: https://opentui.com Source0: https://github.com/anomalyco/%{name}/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz -# The two Zig dependencies, prepared for an offline build by opentui_zigdeps. -Source1: %{name}-zig-deps-%{version}.tar.zst -Source2: opentui_zigdeps -Source3: README.SUSE-maint -# Ask the linker for a build ID, without which rpm cannot split a debuginfo -# package off the library. -Patch0: opentui-build-id.patch -# Without this the library is generated for whatever CPU the build worker has -# and SIGILLs on older machines of the same architecture. -Patch1: opentui-baseline-cpu.patch +Source1: README.SUSE-maint +# The Zig sources moved to packages/native in 0.5.5 and build the library +# for an explicit triple by default; -Dlibrary-target=native below keeps the +# host libc and libstdc++, so pin the code generator back to the baseline. +Patch0: opentui-baseline-cpu.patch +# Two X11 clipboard unit tests abort the test runner on aarch64 (see the +# patch header); skipped there until upstream fixes them. +Patch1: opentui-aarch64-skip-crashing-x11-tests.patch BuildRequires: binutils +BuildRequires: gzip BuildRequires: python3-base # The grammar modules the highlighter ships: symlinked to the # tree-sitter-<lang>-wasm packages' files below, checked at build time. @@ -61,12 +61,16 @@ BuildRequires: tree-sitter-typescript-wasm BuildRequires: tree-sitter-zig-wasm BuildRequires: zig = %{zig_version} -BuildRequires: zstd -Provides: bundled(miniaudio) = 0.11.24 -Provides: bundled(uucode) = 0.1.0 +Provides: bundled(ghostty-vt) = 1.3.2 +Provides: bundled(lcms2) = 2.19.1 +Provides: bundled(libwebp) = 1.6.0 +Provides: bundled(miniaudio) = 0.11.22 +Provides: bundled(stb) = 2.18 +Provides: bundled(uucode) = 0.2.0 +Provides: bundled(wuffs) = 0.3 Provides: bundled(yoga) = 3.2.1 # Upstream supports no other architecture: SUPPORTED_TARGETS in -# packages/core/src/zig/build.zig lists only x86_64 and aarch64. +# packages/native/build.zig lists only x86_64 and aarch64. ExclusiveArch: x86_64 aarch64 %description @@ -94,35 +98,36 @@ what you build against, and nothing installs it to run. %prep -%autosetup -p1 -a1 -n %{name}-%{version} +%autosetup -p1 -n %{name}-%{version} %build -# Zig resolves the entries in build.zig.zon over the network unless --system -# points it at a directory of already-unpacked packages, which is what -# Source1 is. Both caches have to be inside the build directory as well, or -# Zig writes to $HOME. +# The Zig dependencies (yoga, uucode, ghostty) and the image C libraries +# (lcms2, libwebp, stb, wuffs, miniaudio) are vendored in-tree under +# packages/native/src/vendor; the archive unpacks to an ignored directory +# the build then resolves over relative paths, so nothing is fetched. export ZIG_GLOBAL_CACHE_DIR="$PWD/.zig-global-cache" export ZIG_LOCAL_CACHE_DIR="$PWD/.zig-local-cache" -zig_deps="$PWD/deps" -cd packages/core/src/zig -# -Dtarget=native keeps the host's libc and libstdc++, which is what a -# distribution build wants. What it must not keep is the host's CPU model - -# see Patch1. +cd packages/native +sh scripts/prepare-zig-deps.sh +# -Dlibrary-target=native keeps the host's libc and libstdc++, which is what +# a distribution build wants. What it must not keep is the host's CPU model - +# see Patch0. zig build \ - --system "$zig_deps" \ - -Dtarget=native \ + -Dlibrary-target=native \ -Doptimize=ReleaseFast \ --verbose %install install -d %{buildroot}%{_libdir}/%{name}/%{native_pkg} -install -m 0755 packages/core/src/zig/lib/native/libopentui.so \ +# The -Dlibrary-target override below installs to ../lib/<name> next to the +# default prefix, i.e. packages/native/lib/native, not zig-out. +install -m 0755 packages/native/lib/native/libopentui.so \ %{buildroot}%{_libdir}/%{name}/%{native_pkg}/libopentui.so -# The whole point of the explicit -Dtarget above. If a rebase ever puts a -# host-detected CPU model back, catch it here rather than in a bug report from -# somebody with an older machine. +# The whole point of the explicit -Dlibrary-target above. If a rebase ever +# puts a host-detected CPU model back, catch it here rather than in a bug +# report from somebody with an older machine. %ifarch aarch64 if objdump -d %{buildroot}%{_libdir}/%{name}/%{native_pkg}/libopentui.so \ | grep -qE '\s(ldapr|ldaprb|ldaprh|ldapur|stlur|stlurb|stlurh)\s'; then @@ -184,17 +189,22 @@ for pkg in core keymap solid; do cp -a packages/$pkg %{buildroot}%{_libdir}/%{name}/@opentui/ ( cd %{buildroot}%{_libdir}/%{name}/@opentui/$pkg - rm -rf src/zig src/tests src/benchmark tests examples \ + rm -rf src/tests src/benchmark src/specs tests examples \ dev docs bench-before bench-after node_modules \ tsconfig.json tsconfig.build.json tsconfig.node-test.json # scripts/ is mostly upstream's own build and release plumbing, but in - # solid it also holds four modules the exports map points at, so drop + # solid it also holds five modules the exports map points at (plus + # solid-transform.ts, which the bun-plugin entry imports), so drop # the plumbing by name rather than the directory. rm -f scripts/build.ts scripts/publish.ts scripts/dist-test.ts \ scripts/standalone-test.ts scripts/test.ts scripts/test-node.ts \ - scripts/test-node-hook.mjs scripts/test-packed-consumer.ts + scripts/test-node-hook.mjs scripts/test-packed-consumer.ts \ + scripts/bench-js-node.ts scripts/native-symbols.ts \ + scripts/native-symbols.test.ts scripts/package-native-symbols.ts \ + scripts/variants.ts scripts/reconciler-benchmark.ts rmdir scripts 2>/dev/null || : find . -name '*.test.ts' -delete + find . -name '__snapshots__' -type d -prune -exec rm -rf {} + find . -name '.gitignore' -delete # A couple of modules are exported API that also run themselves as a # CLI under import.meta.main, so they carry a bun shebang. Nothing here @@ -257,10 +267,11 @@ %check export ZIG_GLOBAL_CACHE_DIR="$PWD/.zig-global-cache" export ZIG_LOCAL_CACHE_DIR="$PWD/.zig-local-cache" -zig_deps="$PWD/deps" -cd packages/core/src/zig +# The X11 clipboard tests bind filesystem sockets under /tmp/.X11-unix, +# which exists on any X machine but not in the build root. +mkdir -p /tmp/.X11-unix +cd packages/native zig build test \ - --system "$zig_deps" \ --summary all %files ++++++ README.SUSE-maint ++++++ --- /var/tmp/diff_new_pack.hJheSX/_old 2026-09-28 10:48:30.505120381 +0200 +++ /var/tmp/diff_new_pack.hJheSX/_new 2026-09-28 10:48:30.509120549 +0200 @@ -12,9 +12,9 @@ Today the only consumer is opencode, which pins the version in the catalog block of its top level package.json: - "@opentui/core": "0.4.5", - "@opentui/keymap": "0.4.5", - "@opentui/solid": "0.4.5", + "@opentui/core": "0.5.12", + "@opentui/keymap": "0.5.12", + "@opentui/solid": "0.5.12", So this package tracks that pin, not the newest tag. Bumping ahead of opencode produces a library nothing in the distribution can load. When @@ -32,32 +32,26 @@ curl -L -o opentui-<version>.tar.gz \ https://github.com/anomalyco/opentui/archive/refs/tags/v<version>.tar.gz -2. Regenerate the offline Zig dependency bundle: - - ./opentui_zigdeps <version> - - This writes opentui-zig-deps-<version>.tar.zst. See below for what it is - and why the package cannot do without it. - -3. Check that the Zig version upstream demands is still the one Factory +2. Check that the Zig version upstream demands is still the one Factory ships. It is a hard equality check in - packages/core/src/zig/build.zig: + packages/native/build.zig (the Zig sources moved out of + packages/core/src/zig in 0.5.5): - const SUPPORTED_ZIG_VERSIONS = [_]SupportedZigVersion{ - .{ .major = 0, .minor = 15, .patch = 2 }, - }; + const SUPPORTED_ZIG_VERSIONS = [_]SupportedZigVersion{ + .{ .major = 0, .minor = 16, .patch = 0 }, + }; and the spec mirrors it in the zig_version global. The check is not over-caution on upstream's part: Zig is not source compatible across releases. If Factory's zig has moved past what upstream supports, the package has to be rebased onto a newer OpenTUI, not relaxed to a range. - Note that Factory also has versioned zig0.NN packages. This package does - not use them: zig0.15 currently fails to build on aarch64, while the - unversioned zig is green on both architectures and is 0.15.2 as well. - Revisit if that changes. + The unversioned zig BuildRequires resolves through the versioned + zig0.16 package's Provides: zig = 0.16.0; that indirection is + deliberate, so a Factory zig roll only retargets this package once a + zig0.16 successor exists. -4. Check the highlighter's grammar modules. packages/core/src/lib/tree-sitter/ +3. Check the highlighter's grammar modules. packages/core/src/lib/tree-sitter/ parsers-config.ts pins the grammar releases upstream downloaded the .wasm files from; the package replaces them with the tree-sitter-<lang>- wasm packages' modules (see "What gets installed"). A grammar upstream @@ -66,31 +60,47 @@ against the packaged grammar version (load the module and the query with web-tree-sitter; a query naming a node the grammar lacks throws). -4. Drop the old tarballs, osc addremove, build, submit. - - -The offline Zig dependency bundle ---------------------------------- - -packages/core/src/zig/build.zig.zon names two dependencies that Zig would -otherwise fetch over the network during the build: - - uucode a tarball, Unicode character data - yoga a git checkout of facebook/yoga at v3.2.1, the flexbox layout - engine, whose C++ sources are compiled straight into the library - -Neither has dependencies of its own, so the closure is exactly those two. - -`zig build --system <dir>` turns fetching off and looks each dependency up as -<dir>/<hash>, where <hash> is the string already written in build.zig.zon. In -that mode Zig does not recompute the hash - the distribution is trusted to -have put the right tree there - which is what makes the bundle possible to -build without Zig at all. That matters, because the Zig this package needs is -newer than the one the maintainer's own machine is likely to have. - -opentui_zigdeps parses the dependency table out of the release tarball rather -than hardcoding it, so a bump that changes a URL or a hash is picked up -instead of silently ignored. +4. Re-derive the License tag. Everything below is compiled into + libopentui.so, so every copyleft or permissive-but-not-MIT licence in + the vendored trees belongs in the tag; see "Vendored dependencies". + +5. Re-check the two %check workarounds at the bottom of this file. The + aarch64 test skip (opentui-aarch64-skip-crashing-x11-tests.patch) + goes away if the crash is fixed; the /tmp/.X11-unix mkdir stays as + long as the bind test binds filesystem sockets. + +6. Drop the old tarballs, osc addremove, build, submit. + + +Vendored dependencies +---------------------- + +Everything the native library links is vendored in-tree; the build fetches +nothing. Two mechanisms, both hash-pinned by upstream: + +packages/native/src/vendor/zig-deps.tar.gz holds the Zig dependencies - +yoga (the flexbox layout engine, v3.2.1, whose C++ sources are compiled +straight into the library), uucode (Unicode character data, in a ghostty +and an opentui flavour) and ghostty (the embedded-terminal VT engine, +1.3.2-dev). %build unpacks it with upstream's own +packages/native/scripts/prepare-zig-deps.sh into the ignored +packages/native/zig-deps directory, which build.zig.zon references over +relative paths. The pins and SHA-256 hashes live in +packages/native/src/vendor/update-zig-deps.sh; regenerating the archive is +upstream's `bun run vendor:update:zig`, not a maintainer script, so there +is no opentui_zigdeps equivalent anymore - the 0.4.5 bundle and script are +retired. + +Next to it, packages/native/src/vendor/ carries the image C libraries as +plain sources, compiled straight in: lcms2 (2.19.1, MIT), libwebp (1.6.0, +BSD-3-Clause, decoder subset listed in libwebp/FILES), stb_image and +stb_image_resize2 (2.18, MIT-or-public-domain), wuffs (wuffs-v0.3.c, +Apache-2.0) and miniaudio (0.11.22, Unlicense-or-MIT-0). Their updater is +`bun run vendor:update:images`, driven by vendor/update.sh pins. + +None of this is unbundled: the tree-sitter grammar modules stay the one +exception (see below), everything else has no system counterpart to link +against. What gets installed, and why it is shaped that way @@ -156,20 +166,47 @@ Worth knowing, because it is not obvious from upstream's scripts. Upstream builds the native library with `bun run build:native`, but all that does is -shell out to +unpack the vendored Zig dependencies (prepare-zig-deps.sh, plain shell - +the spec calls it directly) and shell out to - cd packages/core/src/zig && zig build -Doptimize=ReleaseFast + cd packages/native && zig build -Doptimize=ReleaseFast and then copy the result into a generated npm package directory. The spec does both of those directly, so opentui does not build-depend on bun and is not blocked on bun reaching Factory. -`-Dtarget=native` is passed deliberately. Upstream's default for a native -build is the first entry in SUPPORTED_TARGETS matching the host, which for -Linux is a glibc-2.17-pinned cross target - Zig would then compile against -its own bundled libc headers and link against synthesised stubs rather than -the system glibc. buildSingleTarget passes any unrecognised target string -straight to std.Target.Query.parse, so "native" is accepted and gives an -ordinary system build. This also matches openSUSE's own zig macros, whose -_zig_target defaults to native. +`-Dlibrary-target=native` is passed deliberately. Upstream's default for a +native build is the first entry in SUPPORTED_TARGETS matching the host, +which for Linux is a glibc-2.17-pinned cross target - Zig would then compile +against its own bundled libc headers and link against synthesised stubs +rather than the system glibc. buildSingleTarget passes any unrecognised +target string straight to std.Target.Query.parse, so "native" is accepted +and gives an ordinary system build. The library lands in +packages/native/lib/native/ either way; only the triple behind it +differs. + +The baseline-CPU patch (opentui-baseline-cpu.patch) belongs to that flag: +"native" leaves the CPU model at host detection, so the patch pins it to +.baseline and %install fails the build if an aarch64 library ever carries +FEAT_LRCPC instructions again. The old build-ID patch is retired - upstream +sets lib.build_id itself since 0.5.10. + + +%check workarounds +------------------ + +Two, both clipboard-related, both re-check on every bump: + +- opentui-aarch64-skip-crashing-x11-tests.patch skips the "expired + initial INCR" and "delayed expired INCR" unit tests on aarch64, where + they abort the test runner in drivePendingResponse with a null call + through the faked xcb_request_check. The crash reproduces outside the + build sandbox with pristine sources and the same code is still + upstream, so it is an upstream aarch64 bug, not packaging fallout; + upstream CI runs x86_64, where the suite passes. Drop the patch (or + narrow it) once the crash is gone. +- %check creates /tmp/.X11-unix before running the suite: the "bare + DISPLAY falls back to a filesystem listener" test binds a socket at + /tmp/.X11-unix/X<display>, which exists on any X machine but not in + the build root, and fails with ENOENT without it. ++++++ opentui-0.4.5.tar.gz -> opentui-0.5.12.tar.gz ++++++ /work/SRC/openSUSE:Factory/opentui/opentui-0.4.5.tar.gz /work/SRC/openSUSE:Factory/.opentui.new.383539/opentui-0.5.12.tar.gz differ: char 14, line 1 ++++++ opentui-aarch64-skip-crashing-x11-tests.patch ++++++ Skip two X11 clipboard unit tests that crash the test runner on aarch64 The "expired initial INCR" and "delayed expired INCR" tests in packages/native/src/clipboard/x11.zig abort with a null indirect call through the faked xcb_request_check in drivePendingResponse. The crash reproduces outside the build sandbox with the pristine 0.5.12 sources, so it is not packaging-introduced, and the identical code and tests are still present upstream, so there is nothing to cherry-pick. Upstream CI runs x86_64, where the suite is green; only this architecture is skipped. The skipped tests cover an INCR-expiry corner of the X11 clipboard provider; the remaining 30+ clipboard tests still run. Re-evaluate on rebase: drop this patch if the crash is gone. Not sent upstream: the failure was found while packaging and needs an upstream issue with a proper backtrace first. Index: opentui-0.5.12/packages/native/src/clipboard/x11.zig =================================================================== --- opentui-0.5.12.orig/packages/native/src/clipboard/x11.zig +++ opentui-0.5.12/packages/native/src/clipboard/x11.zig @@ -2335,6 +2335,10 @@ test "X11 expired initial INCR response refuses its delayed checked reply" { if (comptime builtin.os.tag != .linux) return error.SkipZigTest; + // Downstream-only skip on aarch64: this test crashes the test runner + // with a null call through the faked xcb_request_check, while the + // identical binary passes on x86_64. Re-evaluate on rebase. + if (comptime builtin.cpu.arch == .aarch64) return error.SkipZigTest; try clipboard_clock.init(); var symbols: linux.XcbSymbols = undefined; symbols.xcb_poll_for_reply = fakePollForReply; @@ -2390,6 +2394,9 @@ test "X11 delayed expired INCR response preserves replacement transfer" { if (comptime builtin.os.tag != .linux) return error.SkipZigTest; + // Downstream-only skip on aarch64: same crash as the expired-initial + // INCR test above. Re-evaluate on rebase. + if (comptime builtin.cpu.arch == .aarch64) return error.SkipZigTest; try clipboard_clock.init(); var symbols: linux.XcbSymbols = undefined; symbols.xcb_poll_for_reply = fakePollForReply; ++++++ opentui-baseline-cpu.patch ++++++ --- /var/tmp/diff_new_pack.hJheSX/_old 2026-09-28 10:48:30.551122308 +0200 +++ /var/tmp/diff_new_pack.hJheSX/_new 2026-09-28 10:48:30.556122518 +0200 @@ -1,16 +1,17 @@ Build for the architecture baseline, not for the build machine's CPU -build.zig hands the -Dtarget string straight to std.Target.Query.parse, and -the string "native" leaves cpu_model at .determined_by_arch_os, which for a -native query means "detect this CPU and enable everything it has". +build.zig hands the -Dlibrary-target string straight to +std.Target.Query.parse, and the string "native" leaves cpu_model at +.determined_by_arch_os, which for a native query means "detect this CPU +and enable everything it has". That is right for a developer building for themselves and wrong for a -distribution, where the build worker and the user are different machines. On -an aarch64 worker with FEAT_LRCPC (ARMv8.3) the C++ in yoga compiles down to -ldapr/stlur, and libopentui.so then dies with SIGILL on any older aarch64 - -ThunderX2, Cortex-A72 and friends - the moment yoga lays out its first node. -The x86_64 side has the same shape: whatever the worker happens to support -gets baked in. +distribution, where the build worker and the user are different machines. +On an aarch64 worker with FEAT_LRCPC (ARMv8.3) the C++ in yoga compiles +down to ldapr/stlur, and libopentui.so then dies with SIGILL on any older +aarch64 - ThunderX2, Cortex-A72 and friends - the moment yoga lays out its +first node. The x86_64 side has the same shape: whatever the worker +happens to support gets baked in. Pin the CPU model to the architecture baseline instead. This only affects which instructions the code generator may use; the libc and libstdc++ the @@ -19,14 +20,14 @@ publishes to npm, since every entry in SUPPORTED_TARGETS is an explicit triple and an explicit triple already resolves to the baseline model. -Not sent upstream: -Dtarget=native meaning "this exact machine" is a -reasonable default for the audience upstream is building for. +Not sent upstream: -Dlibrary-target=native meaning "this exact machine" +is a reasonable default for the audience upstream is building for. -Index: opentui-0.4.5/packages/core/src/zig/build.zig +Index: opentui-0.5.12/packages/native/build.zig =================================================================== ---- opentui-0.4.5.orig/packages/core/src/zig/build.zig -+++ opentui-0.4.5/packages/core/src/zig/build.zig -@@ -466,7 +466,11 @@ fn buildTarget( +--- opentui-0.5.12.orig/packages/native/build.zig ++++ opentui-0.5.12/packages/native/build.zig +@@ -720,7 +720,11 @@ build_options: *std.Build.Step.Options, macos_sdk_path: ?[]const u8, ) !void { @@ -37,6 +38,6 @@ + // that happened to compile it. + target_query.cpu_model = .baseline; const target = b.resolveTargetQuery(target_query); - + if (target.result.os.tag == .macos and macos_sdk_path == null) {
