ci: add decorated-window-tao native build to all workflows#234
Closed
kdroidFilter wants to merge 189 commits into
Closed
ci: add decorated-window-tao native build to all workflows#234kdroidFilter wants to merge 189 commits into
kdroidFilter wants to merge 189 commits into
Conversation
- Add decorated-window-tao module with Rust/tao native bridge and Metal rendering on macOS - Add sample-tao showcase - Document Microsoft Store packaging requirements (identity, minVersion) - Ignore tmp/ research clones
- Replace diagnostic nativeDiagView with production text overlay mechanism - Add NSTextView overlay that AppKit's _NSKeyBindingManager recognizes for press-and-hold/accent picker engagement while forwarding input to TaoView - Add nativeAttachTextOverlay and nativeFocusTextOverlay for lifecycle control - Route key events through overlay when TextField focused, back to TaoView on blur - Update TaoPlatformContext.startInputMethod with proper try-finally cleanup
- Implement nativeSetAlwaysOnTop in Rust JNI bridge to call tao::Window::set_always_on_top - Add setAlwaysOnTop() method to TaoWindow public API - Add demo toggle in ActionsTab to test always-on-top behavior
…nTop - Add onPreviewKeyEvent callback parameter to DecoratedWindow for custom key handling - Wire previewKeyHandler to both macOS and Windows SceneHost implementations - Apply alwaysOnTop to Windows platform variant - Update sample demo to wire onPreviewKeyEvent and add debug logging UI - Document that parameters matching AWT backends for module-swap compatibility
- Implement nativeSetFocusable in Rust JNI to control window focus ability - Add setFocusable() method to TaoWindow - Wire focusable parameter through DecoratedWindow function (Phase 2b) - Add demo UI toggle for focusable behavior and log focus state changes
- Add PainterToRgba utility to convert Compose Painter to RGBA pixel buffer - Implement nativeSetIcon and nativeSetMinimumSize in Rust JNI - Add setIcon() and setMinimumSize() methods to TaoWindow - Wire icon and minimumSize parameters through DecoratedWindow - Add onKeyEvent handler (post-filter) in addition to onPreviewKeyEvent - Update scene hosts to wire both key handlers
- Rename DecoratedWindow to openDecoratedWindow (imperative function) - Add DecoratedWindowComposable: reactive @composable variant with state updates via LaunchedEffect for title, alwaysOnTop, focusable, visible, minimumSize, icon - Add TaoMainDispatcher: custom CoroutineDispatcher queuing to Tao event loop - Add TaoApplicationCompose: composable variant of taoApplication with proper Compose runtime integration, frame clock, and global snapshot management - Update sample Main to demonstrate composable API with reactive window state
- Add nativeSetInnerSize and nativeSetOuterPosition to NativeTaoBridge - Implement setInnerSize() and setOuterPosition() in TaoWindow - Add MOVED event constant (physical pixel coordinates in tao Event) - Wire reactive size/position to DecoratedWindowComposable via LaunchedEffect - Update sample to demonstrate window size/position state binding
- Detect double-tap on title bar using ViewConfiguration timing thresholds - Toggle window maximized state on double-tap (mirrors decorated-window-jni) - Prevent native double-click handlers from firing by consuming Press events - Wire both min and max tap times for platform-consistent double-click detection
- Implement nativeSetFullscreen in Rust JNI - Add setFullscreen() and isFullscreen property to TaoWindow - Wire fullscreen state to DecoratedWindowComposable via LaunchedEffect - Add demo toggle for fullscreen in ActionsTab
- Implement nativeIsFullscreen in Rust JNI to query fullscreen state - Add isFullscreen property to TaoWindow for reactive UI binding
- Switch jewel-sample from decorated-window-jni to decorated-window-tao - Move IntUiTheme inside DecoratedWindow content for proper CompositionLocal propagation - Use Tao's TitleBar with Jewel theme colors (panelBackground, contentColor) - Remove isNewContextMenuEnabled flag so Jewel can override context menu via LocalContextMenuRepresentation - TitleBarView now uses Tao API but maintains Jewel styling and interactive components Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Remove imperative taoApplication() function - Rename taoApplicationComposable to taoApplication as the canonical entry point - Make openDecoratedWindow internal (users call @composable DecoratedWindow) - Simplify ApplicationScope to interface only - Update sample Main to use new taoApplication signature
- Add TaoAccessibility.kt with node descriptors (roles, flags, actions, bounds) - Add TaoSemanticsObserver to walk Compose semantics tree and push to native - Implement JNI bridge for a11y attachment, snapshots, focus events - Add objc/a11y.m with NSAccessibility integration and VoiceOver callbacks - Wire accessibility to TaoComposeSceneHost attach/detach lifecycle - Support roles: button, checkbox, text field, slider, heading, etc. - Forward VoiceOver actions back to Compose semantics via TaoAccessibilityRegistry
- Add selectionStart/End to TaoA11yNode for text selection tracking - Implement setText action in VoiceOver (edit text fields via screen reader) - Add JNI callback dispatchA11ySetText for native→Java text updates - Improve snapshot serialization: version bump, fixed per-node size - Wire onSetText handler in TaoAccessibilityController - Support editable text fields fully: read, navigate, modify via accessibility
- Create A11yTab with button, checkbox, switch, radio, slider, text field - Wire Compose semantics (role, contentDescription, toggleableState, etc.) - Each control shows visual feedback for AX action effects - Enables system-level testing via osascript/VoiceOver end-to-end validation - Add to sample-tao Main navigation tabs
- Fix rect_to_screen to handle non-flipped NSView (Tao 0.35 default) - Manually flip Y coordinate when source view is not flipped - Fix hit test Y flip for non-flipped views to match stored frame orientation - Improve comments on coordinate system conversions (top-left vs bottom-left) - Prevents misaligned accessibility hit tests on non-flipped TaoView
- Add REQUEST_FOCUS, SCROLL_UP/DOWN/LEFT/RIGHT action bitmasks - Wire Compose semantics: RequestFocus, ScrollBy, PageUp/Down/Left/Right - Map scroll semantics to ScrollArea role for proper VoiceOver routing - Synthesize scroll direction actions from available semantics - Handle page actions (preferred) falling back to ScrollBy with viewport heuristics - Implement native scroll callbacks in a11y.m (up/down/left/right)
- Add MODAL, LIVE_REGION_POLITE, LIVE_REGION_ASSERTIVE flags to TaoA11yFlag - Add DISMISS action for closing modal dialogs (VO+Esc binding) - Wire Compose IsDialog, LiveRegionMode, and Dismiss semantics - Implement native dismiss callback in a11y.m - Add test UI: live region with status updates + modal dialog example - Enable full accessibility for modals and dynamic announcements
- Add SetSelection action and dispatchA11ySetSelection JNI callback - Wire Compose SetSelection semantics in TaoSemanticsObserver - Implement native setSelection callback in a11y.m - Enable VoiceOver text selection in editable fields - Map VoiceOver selection to Compose traversalMode=false (direct set)
- Add nativeA11yIsVoiceOverRunning() to check if VoiceOver is active - Add nativeA11yIsActive() to check if any a11y client has touched the tree - Implement NSAccessibility init/teardown and activity tracking in a11y.m - Enable optimization pathway to skip pushes when no client listening - Document timing constraints for future gating implementation
- Add custom action support (VO+Cmd+. menu in VoiceOver) - Wire Compose customActions semantics to NSAccessibility - Implement native custom action callbacks with action index routing - Add JNI callback dispatchA11yCustomAction for native→Java dispatch - Add test UI demonstrating custom actions on notification element - Extends a11y API to include application-defined context menu
…cing - Consolidate FlushingMainDispatcher into global TaoMainDispatcher - Remove manual frame throttle (16ms cap) — rely on CAMetalLayer vsync - Auto-pump TaoMainDispatcher on every MAIN_EVENTS_CLEARED tick - Send Snapshot.sendApplyNotifications() after pumping dispatcher - Prevents animation freezing by ensuring state writes trigger redraws - Mirrors Compose Desktop's FrameDispatcher and Skiko patterns
- Replace time-based resync with event-driven (native signals when needed) - Add nativeA11yConsumeResync/nativeA11yNotePushed for handshake - Add table, row, cell accessibility roles for structured data - Implement direct onScrollBy handler for fine-grained scroll control - Simplify maybeForceResync to no-op (native handles coordination) - Reduce a11y snapshot traffic: only push when client active or requested
…omposeSceneHostLinux - Eliminated unnecessary debug `System.err` outputs. - Removed `moveLogCnt` variable from `onPointerMove`.
…imize scene rendering - Replace XSync with XFlush to prevent NVIDIA deadlocks during rapid resizes. - Coalesce frequent resize/scale events to reduce X11 round-trips. - Cache Skia render targets to avoid excessive GL surface reallocations. - Add deferred native resize handling tied to redraw events for efficiency. - Ensure proper cleanup of cached surfaces during context detachment.
…DPI-scaled) NativeView passes physical pixels straight from Compose's coords.size, but the bridge wrapped them in dpi::LogicalSize — wry re-applies the display's DPI scale factor on top, ending up 1.5x–1.75x too large on hidpi screens. Switch to PhysicalSize/PhysicalPosition.
…r put_Bounds(x,y,w,h) wry on Windows attaches CoreWebView2Controller directly to the parent HWND (no intermediate hosting HWND). SetWindowPos on the HWND we returned has no visual effect — what positions the WebView is the controller's put_Bounds(rect). Adds NucleusPlatformView.setBounds(x, y, w, h) (default no-op so macOS NSView and Linux GtkWidget paths stay unchanged) and HwndEmbedding calls it after setFrame/resize. The WebViewTab Windows branch routes through nativeSetBounds(handle, x, y, w, h) which calls controller.put_Bounds(PhysicalPosition(x, y), PhysicalSize(w, h)). Previously the WebView was stuck at top-left because nativeSetBounds hard-coded position (0, 0).
The previous attempt had each overlay/popup HWND own its own HGLRC, joined to the host's share group via wglCreateContextAttribsARB(.., hostHGLRC, ..). NVIDIA's WGL ICD reproducibly crashed nvoglv64.dll inside the host's flushAndSubmit on the frame after a sibling HGLRC was created in the process — even with identical pixel formats and resetGLAll on every cross-context switch. Single-HGLRC: every overlay/popup HDC reuses the HOST's HGLRC. wgl gives every overlay HDC the host's HGLRC at gl_init time; nativeMakeCurrent does wglMakeCurrent(overlayDC, hostHGLRC) — same context, just a different draw target. Skia keeps a single shared DirectContext (the host's), exposed via TaoPopupHostWindows.hostDirectContext. resetGLAll() between HDC switches handles the default-framebuffer state delta. Side effects: - The overlay HWND no longer needs to delete its HGLRC on destroy. - DwmEnableBlurBehindWindow + DWM polish (corner radius, dark mode, four-sided shadow) still applied per overlay HWND so DWM honors their alpha individually. - Removes the kill-switch added previously: overlay can now run unconditionally on Windows.
…ow move via TaoWindow.onMoved The previous owner-subclass approach (intercept WM_WINDOWPOSCHANGED on the Tao main HWND, batch-reposition overlays via DeferWindowPos) didn't fire reliably — likely the chained-subclass install on top of Tao's deco subclass had ordering issues we couldn't diagnose remotely. Replaces it with a Kotlin-side hook: TaoComposeSceneHostWindows subscribes to TaoWindow.onMoved, fires a registered list of move callbacks. NativeViewOverlayControllerWindows + TaoPopupSceneLayerWindows each register a callback that re-issues nativeSetOverlayFrame / nativeSetFrameInWindow with the cached owner-local coords, which the native side translates to screen coords via ClientToScreen(owner). TaoPopupHostWindows gains registerOwnerMoveListener / unregisterOwnerMoveListener. The dead C-side owner subclass / OwnerNode / repositionOverlaysFromOwnerLocked machinery is left in place for now — never installed since nativeCreateOverlay doesn't call getOrCreateOwnerNode anymore.
HTTRANSPARENT from WM_NCHITTEST routes a click via WindowFromPoint to the next TOP-LEVEL window beneath. For an owned WS_POPUP overlay above a WS_CHILD WebView (sibling of nothing — child of the overlay's owner), HTTRANSPARENT routes to the owner (main HWND) — never reaching the WebView child. Result: clicks outside the NavPill region were absorbed by the main scene with no visual response, and the WebView appeared unclickable. Fix: nativeSetOverlayRegions now also calls SetWindowRgn(overlay, hrgn) where hrgn is the union of the registered rects. SetWindowRgn restricts both visibility AND hit-testing to the region — outside it, the overlay HWND has zero presence. Win32's normal hit-testing (WindowFromPoint walks the Z-order then dives into ChildWindowFromPoint) reaches the WebView child directly. Empty region (no NavPill mounted yet) → entire overlay click-through. Also adds a memcpy /NODEFAULTLIB shim — MSVC's optimizer turned the new array snapshot loop into a memcpy call which the link line otherwise can't resolve.
…erlay HWND Compose's overlay scene PlatformContext was using PlatformContext.Empty() which left setPointerIcon as a no-op — hovering a BasicTextField didn't switch to the IBeam cursor. Adds nativeSetCursor(overlay, code) JNI export. C side stores an HCURSOR on OverlayState (loaded from IDC_IBEAM/HAND/CROSS/ARROW), and WM_SETCURSOR applies it for HTCLIENT hits (the overlay has no border zones). The overlay's PlatformContext now overrides setPointerIcon, mapping PointerIcon.Text/Hand/Crosshair to the corresponding cursor codes.
…spatch
Temporary stderr logs to triage why typing in the overlay's BasicTextField
doesn't insert characters even though the field gains focus visually
(border highlight). Two checkpoints:
1. TaoComposeSceneHostWindows.onKeyEvent — confirms Tao is delivering
keys to the host and shows how many popupKeyHandlers are registered.
2. NativeViewOverlayController.windows.kt overlay key handler —
confirms popupKeyHandlers are walked, shows whether the overlay
scene consumed the event.
Will be removed once the root cause is identified.
…keys from WebView WebView2 (Chromium child HWND) grabs Win32 keyboard focus on its own clicks and holds it. After clicking inside WebView, the main HWND no longer receives WM_KEYDOWN — Tao's onKeyEvent never fires, the popupKeyHandlers chain doesn't run, and the focused overlay TextField never sees the typed character (even though it shows visual focus). In the overlay's WM_LBUTTONDOWN/RBUTTONDOWN/MBUTTONDOWN, call SetFocus(s->owner) before dispatching the pointer event. The overlay itself has WS_EX_NOACTIVATE so it can't take focus, but moving keyboard focus to its OWNER (the main HWND) is allowed and routes subsequent typing through the normal main pipeline → popupKeyHandlers → overlay scene → focused TextField. When the user later clicks the WebView, the WebView's own click handler calls SetFocus on itself (Chromium does this internally), so focus moves back to WebView automatically — bidirectional behavior preserved.
…blur, broaden URL field I-beam Two follow-ups now that overlay keys + clicks work end-to-end: 1. Focus release: TaoComposeSceneHostWindows hooks window.onFocusChanged and fires registered onLost callbacks. NativeViewOverlayControllerWindows registers a callback that calls scene.focusManager.releaseFocus(), so when the user clicks the WebView (which grabs Win32 keyboard focus) the URL TextField's highlight border + caret stop drawing. TaoPopupHostWindows interface gets registerOwnerFocusLostListener / unregisterOwnerFocusLostListener. 2. I-beam over the whole URL field: BasicTextField only applies PointerIcon.Text over the rendered text glyphs (a thin strip in a singleLine top-aligned field). Adds Modifier.pointerHoverIcon (PointerIcon.Text) on the outer Box of UrlField — matches HTML and native text inputs (whole field shows I-beam). Removes the temporary stderr diagnostics added to triage the keyboard issue (root cause was Win32 focus being held by WebView2; fixed by SetFocus(owner) in overlay's WM_*BUTTONDOWN).
…RL field I-beam Two refinements: 1. WebView2 (child HWND) grabbing Win32 keyboard focus made the Tao main HWND fire onFocusChanged(false), which the DecoratedWindow chrome interpreted as 'window deactivated' — title-bar dimmed even though the window was still in active use. Adds NativeTaoWindowsNativeViewBridge.nativeIsFocusInTree(parentHwnd): GetFocus() vs IsChild(parent, focused). The chain treats focus inside the window tree as still-active. Wired uniformly across macOS/Linux/Windows DecoratedWindow paths — the JNI is no-op on non-Windows because the native library isLoaded == false there. 2. BasicTextField only paints the I-beam over rendered text glyphs (a thin top strip when singleLine + 13.sp inside a 36.dp box). Adds Modifier.pointerHoverIcon(PointerIcon.Text, overrideDescendants = true) on UrlField's outer Box — the whole pill now shows the I-beam, matching every HTML/native text input.
…dress can't find host DLL Under GraalVM native-image, nucleus_tao_gl.dll is extracted to a mangled filename — GetModuleHandleW(L"nucleus_tao_gl.dll") returns NULL, the host accessor function pointers stay NULL, and nucleus_tao_overlay_gl_init returns FALSE. Result: nativeCreateOverlay returns 0 and the overlay HWND fails to create. Fallback: when the cross-DLL accessors aren't resolved, snapshot wglGetCurrentContext() / wglGetCurrentDC() at gl_init time. The host's WGL is always current then because nativeCreateOverlay runs mid-render (Compose composition inside host.onRedrawRequested). GetPixelFormat + DescribePixelFormat on the current HDC give us the format index + PFD. Also adds a diagnostic stderr log in setPointerIcon to triage why the URL field I-beam still only appears at the top pixel.
Implements native Windows touchscreen input handling with Tao `WindowEvent::Touch`. Adds support for touch gestures (scroll, drag, pinch, rotate) by routing per-finger updates to Compose. Introduces `onTouchInput` API in JVM and accumulates active pointer sets for seamless `sendPointerEvent`. Includes necessary scale and pressure adjustments for compatibility with Compose.
Implements native Windows touchscreen input handling with Tao `WindowEvent::Touch`. Adds support for touch gestures (scroll, drag, pinch, rotate) by routing per-finger updates to Compose. Introduces `onTouchInput` API in JVM and accumulates active pointer sets for seamless `sendPointerEvent`. Includes necessary scale and pressure adjustments for compatibility with Compose.
Implements native Windows touchscreen input handling with Tao `WindowEvent::Touch`. Adds support for touch gestures (scroll, drag, pinch, rotate) by routing per-finger updates to Compose. Introduces `onTouchInput` API in JVM and accumulates active pointer sets for seamless `sendPointerEvent`. Includes necessary scale and pressure adjustments for compatibility with Compose.
Implements native Windows touchscreen input handling with Tao `WindowEvent::Touch`. Adds support for touch gestures (scroll, drag, pinch, rotate) by routing per-finger updates to Compose. Introduces `onTouchInput` API in JVM and accumulates active pointer sets for seamless `sendPointerEvent`. Includes necessary scale and pressure adjustments for compatibility with Compose.
Replace windows-rs Rust implementation with C/MSVC for WebView2 integration. Remove Cargo.toml/build.bat/lib.rs and associated build artifacts. Key changes: - Add sidecarFiles support in NativeLibraryLoader for WebView2Loader.dll - Update NativeView to support DComp-backed views with null HWND - Modify .gitignore for MSVC build outputs and NuGet packages - Enable WebView2 CompositionController integration in sample bridge This enables proper WebView2 embedding without Rust toolchain dependency.
- Remove trailing comma from clip modifier - Fix indentation for border modifier and Box content - Standardize spacing for NativeView parameters - Correct alignment of factory, modifier, cornerRadius, and update blocks
…esize Two independent writers were competing for the overlay NSView's frame during a live resize: AppKit's autoresizingMask (immediate, per-resize- tick) and Compose's explicit setFrame committed inside the host's interop CATransaction (one frame later). The overlay's drawn region jittered between both each tick. Drop the overlay's autoresizingMask so Compose owns its frame end-to- end, and route the Metal layer resize + ComposeScene size update through the same scheduleInterop block as nativeSetOverlayFrame so they all commit atomically.
…rame on macOS `nativeAttachOverlay` was replacing the host view's backing layer (`view.layer = layer`), which makes the view layer-HOSTED. AppKit only auto-syncs `layer.position` to `view.frame.origin` for layer-BACKED views (where AppKit creates the backing layer itself). The hosted CAMetalLayer therefore stayed at position (0, 0) regardless of the host view's frame, so the rendered Compose surface was offset by exactly `view.frame.origin` from where the AppKit-managed sibling subview rendered — visible as a ~25 px misalignment between the overlay and the embedded native view. Switch to layer-backed + sublayer (`[view.layer addSublayer:layer]`). AppKit owns the host view's backing layer and keeps it correctly placed; the CAMetalLayer follows live-resize via `kCALayerWidthSizable | kCALayerHeightSizable` autoresizing.
Adds a new "SwiftUI" tab that embeds a real SwiftUI view inside a Compose layout via NativeView. The SwiftUI side is a flat Swift dylib whose entry points are `@_cdecl`-exported symbols; the Java side calls them directly through `java.lang.foreign.*` (Linker / SymbolLookup / MethodHandle), with no JNI shim. A Compose overlay floats on top of the SwiftUI surface with a small counter pill (+ / − / ↺) whose state is mirrored into the SwiftUI `@Published` model on every change. * `swift_view.swift` — `NSHostingView` wrapping the SwiftUI view + five `@_cdecl` exports (create / view / set_counter / set_hue / release). * `build-swiftui.sh` — emits `libsample_tao_swiftui.dylib` for both arm64 and x86_64. * `SampleSwiftUIBridge.kt` — extracts the dylib from resources, resolves the symbols via FFM, exposes typed wrappers. * `SwiftUITab.kt` — Compose tab UI; drives the SwiftUI model with `snapshotFlow`. * sample-tao bumped to JVM 21 + `--enable-preview` (FFM is preview in 21, stable in 22). Lower modules stay on 17.
…umentation Removes three `[NucleusOverlay]` NSLog calls that traced `mouseDown` / `becomeFirstResponder` / `resignFirstResponder` on the macOS native overlay view. They were left over from the overlay focus rework and now spam the console on every click.
…reen AppKit's fullscreen transition (`willEnterFS`) changes the title bar to be visible and non-transparent to run its standard animation, but does not automatically revert these properties. This explicitly restores `titlebarAppearsTransparent = YES` and `titleVisibility = NSWindowTitleHidden` so embedded views like WKWebView aren't pushed down by an opaque band. Additionally, removes the call to `reinstallToolbarIfNeeded()` when entering fullscreen. The invisible toolbar exists solely to enable large corner radii on macOS 26, which is irrelevant in fullscreen mode, and reinstalling it forces a tall opaque toolbar band that obscures Compose content.
…reen Keep the invisible NSToolbar attached across fullscreen transitions instead of detaching/reattaching, and toggle its visibility off in fullscreen and back on in windowed mode. Detaching the toolbar made the macOS 26 large corner radius disappear after exiting fullscreen (and reinstalling in didEnterFS pushed the contentView down with a visible white strip above the Compose title bar). Hiding the toolbar collapses that band while preserving the corner-radius opt-in.
…band during entry animation Previously the invisible NSToolbar's chrome was only collapsed in didEnterFS (after the entry animation finished), so the white toolbar band remained visible above the Compose title bar throughout the transition. Move the visibility toggle into willEnterFS / willExitFS so the toolbar is in its final state before each animation runs: - willEnterFS hides toolbar before AppKit kicks off the entry anim - willExitFS restores it before the exit anim, so the large corner radius is already in place throughout the windowed-mode return.
… white band Reverts all of today's iterative attempts (chrome flag flips, toolbar visibility toggling, willEnter/willExit timing tweaks) which each introduced their own regressions (corner-radius lost on exit, glitches during transition). The earlier removal of the toolbar in willEnterFS to avoid the entry-animation glitch is preserved. The single targeted change: do not call reinstallToolbarIfNeeded() inside didEnterFS. The toolbar is unnecessary in fullscreen anyway (its only role is to opt the window into the macOS 26 large corner radius, irrelevant on a screen-spanning window) and reinstalling it makes AppKit allocate a tall opaque band at the top of the contentView — visible as a white strip above the Compose title bar. didExitFS already reinstalls via the kTaoHadToolbarKey flag so windowed-mode chrome restores correctly.
…m resources and system cache
Add Rust toolchain setup and build/verify/upload steps for the Tao backend's 30 native binaries (6 DLLs/dylibs/libs × 2 archs per platform) to build-natives.yaml, and wire artifact downloads into all six consumer workflows (pre-merge, publish-maven, publish-plugin, test-packaging, test-graalvm, release-graalvm).
Collaborator
Author
|
Closing in favor of a feature branch targeting nucleus-2.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dtolnay/rust-toolchain@v1) for Windows, macOS, and Linux inbuild-natives.yamllibgtk-3-devto Linux build dependenciesdecorated-window-taoartifact downloads into all 6 consumer workflowspre-merge.yamlandpublish-maven.yamlFiles changed
build-natives.yaml— 3 new build blocks (Windows, macOS, Linux)pre-merge.yaml— download step + verify entriespublish-maven.yaml— download step + verify entriespublish-plugin.yaml— download steptest-packaging.yaml— download steptest-graalvm.yaml— download steprelease-graalvm.yaml— download stepTest plan
nucleus-2.0branchpreMergepasses with downloaded artifacts🤖 Generated with Claude Code