Files
paseo/vendor/react-native-gpui/UPSTREAM
T
Mohamed Boudra 291c8ad1a8 fix(gpui): stabilize macOS packaging, connections and appearance
Release terminal WebSocket clients on the JS thread so daemon retries do not exhaust descriptors or join their own IO thread. Preserve Cargo symbols and seal ad-hoc macOS bundles with a library-loading policy that works with hardened runtime.

Use rounded border decoration without changing Fabric child layout, and route desktop hover through pointer events and Pressable render props. Include native regressions and reproducible package verification.
2026-11-08 04:40:38 +01:00

46 lines
3.0 KiB
Plaintext
Vendored

Repository: https://github.com/streetwriters/react-native-gpui
Revision: de11aa265e6fb36c80e8a30315bce6d34a9be7d6
License: MIT; see LICENSE and the licenses retained within packages.
Snapshot: packages/{cli,codegen,core,hermes} and
modules/{fs,gesture-handler,reanimated,safe-area-context,screens,svg,worklets}.
Examples, tester, testing package, website, and unused fonts/vector-icons ports
are not included. Upstream tests and build sources within retained packages stay
with the snapshot so contributors can inspect and modify the renderer.
Local patches (all other retained files match the revision above):
- packages/core/ReactGpui/rn-gpui/src/node_view.rs: box-none views must not
install their own pointer area. Otherwise an empty portal overlay redirects
clicks to its parent, blocking Paseo's sidebar. native.test.ts exercises this
against the actual app.
- packages/core/ReactGpui/rn-gpui/src/{node_view,style}.rs: paint uniform solid
borders with GPUI's rounded border primitive on a decoration child, keeping
Fabric child coordinates intact. Edge strips cannot draw the corner arcs.
- packages/core/ReactGpui/rn-gpui-sys/cpp/GpuiJsEngine.h: route Pressability
hover through the pointer events GPUI emits. The desktop Pressable wrapper
in src-gpui/Libraries/Components/Pressable also supplies hovered to render
props; metro.config.js lets a wrapper import its upstream component without
resolving back to itself. native.test.ts covers callbacks, render props,
nested row hover and border pixels using appearance-regression.fixture.js.
- packages/core/src-gpui/Libraries/Components/StatusBar/StatusBar.desktop.js:
desktop StatusBar implementation, because there is no mobile OS status bar.
- packages/cli/src/package-desktop.js: ad-hoc sign macOS packages so their
bundle resources are sealed, with templates/adhoc.entitlements.plist allowing
bundled ad-hoc dylibs under hardened runtime; covered by package-desktop.test.js.
- packages/cli/src/commands.js: preserve Cargo's generated dSYM symlink so
subsequent builds can replace it; copy symbol contents into the distribution
instead of linking back into the build tree. Covered by commands.test.js.
- packages/core/ReactCxxPlatform/react/io/WebSocketModule.{cpp,h}: release
failed and closed connections on the JS thread. Keeping terminal clients
exhausts file descriptors during daemon retries; deleting them on the IO
thread would join that same thread. websocket.native.test.ts exercises the
real RN API against a loopback peer. ReactGpui/rn-gpui-sys/build.rs tracks
these sources so incremental builds include the fix.
- packages/core/ReactGpui/rn-gpui-sys/build.rs: pass Cargo's
MACOSX_DEPLOYMENT_TARGET to CMake. Otherwise source builds default to the
installed SDK's version even when the app targets an older macOS release.
GPUI itself remains a pinned Cargo git dependency. Hermes/React Native prebuilt
libraries are downloaded by upstream build tooling; this is not an offline or
fully source-built distribution.