Skip to content

feat: windows - #11272

Draft
triniwiz wants to merge 60 commits into
mainfrom
feat/windows
Draft

triniwiz wants to merge 60 commits into
mainfrom
feat/windows

Conversation

@triniwiz

@triniwiz triniwiz commented Jun 26, 2026 •

Copy link
Copy Markdown
Member

Adds support for the new windows runtime.

Closes #254 (WinUI3)

@nx-cloud

nx-cloud Bot commented Jun 26, 2026 •

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 4fe2d65

Command Status Duration Result
nx test apps-automated -c=android ✅ Succeeded 3m 33s View ↗
nx run-many --target=test --configuration=ci --... ✅ Succeeded <1s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-11-06 08:04:59 UTC

@farfromrefug

Copy link
Copy Markdown
Collaborator

@triniwiz we should never write PRs like this. This is impossible to review and the possible regressions are numerous.
You should create small PRs with small steps.
I think it would be much easier for everyone if you did this

@NathanWalker
NathanWalker marked this pull request as draft July 4, 2026 17:52
@tuga001-sme

Copy link
Copy Markdown

How to run C#(.net) from js/ts ?

@listepo

listepo commented Jul 26, 2026

Copy link
Copy Markdown

@triniwiz can you add an example for c# plugin? it's posible?

A value that throws when applied (e.g. var() resolving to an invalid
color) left the previously applied value in place. Per CSS Values 5,
a declaration invalid at computed-value time computes as unset.

https://drafts.csswg.org/css-values-5/#invalid-substitution
…n-proc server

NSRegisterWidgetsActivatableClasses took the manifest's first inProcessServer, so when a plugin's
registration ran first (e.g. canvas-media's canvasmedia.node) the Widgets classes were listed under
that plugin's DLL and every widget activation failed with "Package ... not found". Select the
server whose Path is NativeScript.Widgets.dll, as the plugin registrations do.
Conflict in deps-bundle discovery: main's lazy transitive evaluation reads
each input's format from esbuild's metafile, but a failing build with
metafile set crashes the process on esbuild 0.27, and the windows retry
loop expects failures. The retry loop now probes without metafile, then
one final metafile build runs on the known-resolvable entries.
resolveFsAnchoredSpec built /@fsc:/... on windows; add the separator like
the served-module transformer does. Normalize separators in the new specs.
WinUI leaves the system title bar light, so a dark app (or one switched with Application.systemAppearanceChanged) kept a light caption. The window's AppWindow title bar is now set when the window opens and on each appearance change: with PreferredTheme on Windows App SDK 1.7+, otherwise with the system's light or dark caption colors. Setting the colors needs a runtime that boxes struct values for IReference<T>.
WinUI only hit-tests a panel where it has a background, so a view with a tap or touch listener and no background got the pointer only over its children, and input went through it to whatever was underneath. A full-screen layer meant to catch taps outside a menu let them reach the page, and the wheel scrolled it. As on Android and iOS, a view with gestures now takes the pointer over its whole box: an unset background becomes transparent.
- Application.openWindow() and a NativeWindow per WinUI Window
- @media measured per window
- App exits once its last window closes (needs @nativescript/windows 1.0.0-beta.13)
…11468)

* feat(windows): let a parent resolve its children's percentage sizes

View gains _setChildPercentSize(child, horizontal, fraction), which
returns false. A percentage width or height is handed to the parent's;
when it returns true, core leaves the XAML Width/Height unset and skips
its own percent sizing. Setting a length clears it (fraction null).

* feat(windows): view location in window, on screen and relative to a view (#11515)

getLocationInWindow and getLocationRelativeTo transform the element's origin
through XAML; getLocationOnScreen adds the window's client origin, read off its
AppWindow (cached per XamlRoot) by a window-helper util.
# Conflicts:
#	packages/vite/hmr/server/websocket-ns-m-request.ts
#	packages/vite/hmr/shared/vendor/manifest.spec.ts
aleclarson and others added 6 commits October 28, 2026 09:38
The app ships in the package's app\ folder (ms-appx:///app/), but
getCurrentAppPath() returned the InstalledLocation itself, so every ~/ path
resolved through currentApp() (fonts, sounds, CSS imports, web-view and
tab-view sources) pointed one folder too high and failed to open.

currentApp() is now InstalledLocation\app, as on iOS (<bundle>/app) and
Android (files/app). getLogicalRootPath() stays the package root, like the
bundle root on iOS and files/ on Android.
Delete, rename, folder listing, size, last-modified and the sync
read/write members called .done() (not part of the projection) or
invoked methods on the pending IAsyncOperation instead of its result.
Sync members now block on the operation, async members chain it, and
failures surface the operation's HRESULT through onError/rejection.

Also: writes create the file, append no longer overwrites, the
appendBuffer members exist, folders never report an extension, and
getFileExtension is implemented.

Refs #11613
Values[key] reads and writes do not reach the IPropertySet on every
engine; call HasKey/Lookup/Insert explicitly. remove() no longer throws
for a missing key.

Refs #11614
# Conflicts:
#	packages/core/ui/core/properties/css-variable-expression.spec.ts
#	packages/core/ui/core/properties/index.ts
#	packages/core/ui/styling/style-scope.spec.ts
#	packages/core/ui/styling/style-scope.ts
The modal Popup's Closed handler was attached with
AddHandler(Popup.ClosedEvent, ...), but Popup.Closed is a plain event,
not a routed one: Popup.ClosedEvent is undefined, the call threw and
the empty catch hid it. Clicking outside a cancelable modal closed the
Popup without running the modal's close logic, so the view kept its
modal state and the close callback never fired. The handler is now
assigned to popup.Closed and cleared with null on close.

Also corrects the TextField comment: AddHandler(KeyDownEvent, handler,
true) works with a runtime that boxes JS delegates for Object
parameters (NativeScript/windows#41); the KeyDown event stays as the
fallback for runtimes that can't.

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.

Windows support (UWP)

6 participants