Repository navigation
Conversation
kazo0
added this pull request to stack #75
October 12, 2026 23:35
…s do not render Drops the UnoThemeVersion / UnoToolkitVersion pins (they only kept us on the pre-7.0 servicing lines) and moves global.json to the latest 7.0 dev Sdk. What 7.0 needed in the app: - Application.Resuming / EnteredBackground are gone: App.xaml.cs and NotificationService.Android.cs use the static Windows.ApplicationModel.Core.CoreApplication events (Uno.WinRT), which Uno.UI 7.0 raises. - Android host: Uno.UI.Runtime.Android.NativeApplication is abstract and builds the host in CreateHost(); ApplicationActivity moved there too. - UnoSplashScreenColor -> UnoSplashScreenBackgroundColor (UNOB0028). - Android minSdk 21 -> 24: the 7.0 AndroidX graph needs 23 (AMM0000) and the Sdk defaults to 24; spec 009 and AGENTS.md updated. Product call. - Microsoft.Extensions.Configuration.* 10.0.12 to match the Sdk graph. - Uno.UI.Toolkit.ElevatedView (settings dropdown) is Uno.UI.Xaml.Controls.ElevatedView: 7.0 renamed Uno.UI.Toolkit to Uno.UI.Extras and moved its types without forwarders. Parked: every 7.0 Sdk (dev.60 … dev.73, nuget.org and unoplatformdev) pins Uno.Extensions 8.0.0-dev.76, built against Uno.WinUI 7.0.0-dev.1574. The iOS/Android builds warn UNOB0020 that Navigation.UI / Reactive.UI reference types the 7.0 core no longer has, and at runtime (iOS simulator, web head) only the TabBar shell renders: regions empty, nothing logged even with the extensions at Debug. After switching Sdk, rm -rf DailyReflection/obj DailyReflection/bin (a stale 6.x Uno.dll next to 7.0's Uno.WinRT.dll crashes the iOS registrar). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DxndQ1L7ruaSHzi9voExNb
… the 7.0 core
Pins UnoExtensionsVersion ahead of the Sdk (7.0.0-dev.73 still carries
8.0.0-dev.76). dev.76 was built against an older 7.0 core, and its
Navigation.UI / Reactive.UI reference types the current core no longer
has: the iOS and Android builds warned UNOB0020 ("will fail at
runtime"). dev.83 is the rebuild from unoplatform/uno.extensions#3223;
the warning is gone on every head. Drop the pin once an Sdk carries it.
This alone does not bring the pages back; see the next commit.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ
kazo0
added a commit
that referenced
this pull request
Oct 13, 2026
The migration-ordering note in spec 001 names NavigateAsync<MainPage>; PR #74 moves the app to a Shell navigation root. The ordering it documents is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ
Contributor
🌐 Web preview deployedhttps://f6bc770f.dailyreflection.pages.dev Built from 9ff74dd. Updates on every push. |
On Uno 7.0 the pages stayed blank behind the TabBar even with the rebuilt Uno.Extensions. The cause is the shell: NavigateAsync<MainPage>() passed a Page. The navigation host casts the shell to ContentControl to make it the root region, and falls back to the Toolkit's root-view initializer otherwise. Up to 6.x Uno's UserControl, and so Page, derived from ContentControl, so MainPage itself was the root region. Uno 7.0 aligns UserControl with WinUI (it derives from Control): the cast yields null, the fallback is a LoadingView that never enters the visual tree, and its "Main" request parks forever. Navigation logs only through the host's logger factory, which is why nothing was logged. The maintainers track the silent failure as BC14 in unoplatform/uno.extensions#3186. Views/Shell.xaml is the template's shape: a UserControl around one ContentControl, exposed through IContentControlProvider, so the root region sits in the tree and the default "Main" route navigates MainPage into it through a FrameView. MainPage's TabBar regions then attach under that navigator as designed. Routes, pages and view-models are unchanged. Verified on the iOS simulator, the web head (phone and 1024-wide rail, light and dark) and the desktop and Android builds; 110 unit tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ
The web preview job failed on this branch at "Verify profile-guided AOT": it looked for publish/wwwroot/package_*/uno-config.js, and the 7.0 bootstrapper writes the file at the wwwroot root instead (the package_<hash>/ folder still holds the assets and bootstrap scripts). Checked against a local Release publish: the runtime-mode and profiled-AOT keys are unchanged, 117 assemblies AOT-compile against aot.profile, and dotnet.native.wasm is 22.4 MB, under the Pages limit. The file is not fingerprinted, so _headers needs no change: it falls under the Pages default of revalidating on every request. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ
The migration-ordering note in spec 001 names NavigateAsync<MainPage>; PR #74 moves the app to a Shell navigation root. The ordering it documents is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ
2 of 10 tasks
This branch has not been deployed
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.
Rebased onto master after #73 squash-merged (GitHub reported the stacked branch as conflicting and ran no CI). Moves the app to Uno Platform 7.0:
global.jsontoUno.Sdk7.0.0-dev.73 (the latest 7.0 dev build on nuget.org),Uno.Extensionspinned to 8.0.0-dev.83 ahead of the Sdk, and aShellnavigation root. Every head builds, every page renders, 110 unit tests pass.What this does
UnoThemeVersion/UnoToolkitVersionpins fromDirectory.Packages.props(they only existed to stay on the pre-7.0 servicing lines). The Sdk's groups resolve to Uno.WinUI 7.0.0-dev.2270, Themes 9.0.0-dev.41, Toolkit 11.0.0-dev.140. TheUno.Fonts.Roboto2.10.0-dev.12 pin from feat(reading): larger default text, a Text Size setting and fixed tab labels #73 stays: the 7.0 Sdk still pins fonts at dev.9.UnoExtensionsVersionto 8.0.0-dev.83 (chore: Rebuild against current Uno 7.0 Core (7.0.0-dev.2162) unoplatform/uno.extensions#3223, the rebuild against the current 7.0 core). The Sdk still carries 8.0.0-dev.76, built against an older core; its Navigation.UI / Reactive.UI referenced types 7.0 no longer has (UNOB0020, "will fail at runtime"). Drop the pin once an Sdk carries dev.83 or later.web-deploy.yml's "Verify profile-guided AOT" step: Uno 7.0 writesuno-config.jsat the wwwroot root, not underpackage_<hash>/(the web preview job failed on thatls). Checked against a local Release publish: runtime modeInterpreterAndAOT, profiled AOT on, 117 assemblies compiled againstaot.profile,dotnet.native.wasm22.4 MB._headersneeds no change: the file is not fingerprinted and keeps the Pages default of revalidating.Views/Shell.xaml, the template-style navigation root (aUserControlaround oneContentControl, exposed throughIContentControlProvider), andOnLaunchednow callsNavigateAsync<Shell>(). Routes, pages and view-models are unchanged: the defaultMainroute navigatesMainPageinto the shell through aFrameView, and MainPage's TabBar regions attach under that navigator.What 7.0 needed in the app
Application.Resuming/EnteredBackgroundare gone.App.xaml.csandNotificationService.Android.csuse the staticWindows.ApplicationModel.Core.CoreApplicationevents, which Uno.UI 7.0 raises.Uno.UI.Runtime.Android.NativeApplicationis abstract and builds the host inCreateHost()(UnoPlatformHostBuilder.Create().App(() => new App()).UseAndroid().Build());ApplicationActivitymoved to the same namespace.UnoSplashScreenColor→UnoSplashScreenBackgroundColor(UNOB0028).androidx.tracing, AMM0000) and the Sdk defaults to 24. The deliberate Xamarin-era 21 pin (spec 009) cannot survive 7.0; spec 009 and AGENTS.md are updated. This is a product call.Uno.UI.Toolkit.ElevatedView(the settings dropdown from feat(reading): larger default text, a Text Size setting and fixed tab labels #73) isUno.UI.Xaml.Controls.ElevatedView: 7.0 renamed theUno.UI.Toolkitassembly toUno.UI.Extrasand moved its types with no forwarders.Microsoft.Extensions.Configuration.*10.0.12 to match the Sdk's graph (NU1605 otherwise).Pagecan no longer be the shell (see below).Why the pages were blank, and why dev.83 alone was not enough
Two causes, found one under the other.
UNOB0020warnings above. 8.0.0-dev.83 removes them on every head.NavigateAsync<MainPage>()with aPageas the shell. The navigation host casts the shell toContentControlto make it the root region, and falls back to the Toolkit's root-view initializer otherwise. Up to 6.x Uno'sUserControl, and soPage, derived fromContentControl, so MainPage itself was the root region and the app worked. Uno 7.0 alignsUserControlwith WinUI (: Control; checked in theUno.UImetadata, 6.8 vs 7.0.0-dev.2270): the cast yields null, the fallback is aLoadingViewthat never enters the visual tree, and the root navigator'sMainrequest parks forever ("Region '' has no children to forward request to … Parking navigation 'Main'"). Nothing was logged because the navigation engine logs only through the host's own logger factory, which this app never configured (trace it withConfigureLoggingon theIHostBuilder, not throughInitializeLogging). The fix is the template's shell shape, aContentControlexposed throughIContentControlProvider. The maintainers already track the silent failure as BC14 in Uno 7.0 retarget: follow-ups for the public Uno.Sdk and release day unoplatform/uno.extensions#3186 ("needs a runtime-verified fix plus a regression test"); this app's runtime confirmation of it is filed as [Navigation] NavigateAsync<TShell>() with a Page/UserControl shell is a silent blank screen on Uno 7.0 (BC14 in #3186) unoplatform/uno.extensions#3225 and linked from that bullet.Verification
UNOB0020gone from the iOS and Android builds; desktop, Android, iOS simulator and WebAssembly heads build.Main→FrameView→MainPage,Reflection→DailyReflectionPage, thenSoberTime/Settingson tab taps; no parked root request, no "initial navigation returned null".dotnet format whitespaceandstylepass.rm -rf DailyReflection/obj DailyReflection/bin(a stale 6.xUno.dllnext to 7.0'sUno.WinRT.dllcrashes the iOS registrar with "Cannot register two managed types … VideoSurface").🤖 Generated with Claude Code
https://claude.ai/code/session_01Qakj5qRUPLXR5HdMmDnBfZ