Finish the reskin: tray parity, friendly picker labels, guarded macOS font, docs sweep - #20
Merged
chrisuthe merged 2 commits intoSep 2, 2026
Conversation
… font, docs sweep The tray menu carries the reference's items in its order under the status line, with Switch Group present regardless of the footer setting and the state in labels rather than IsChecked. The transport items bind the view model's commands so NativeMenuItem greys them out together while there is no connection; mute goes through a new ToggleMuteCommand so the footer button and the tray drive the one property. The macOS head names .AppleSystemUIFont only after Skia's font manager has matched it, because an unresolvable DefaultFamilyName kills the process before a window appears; the rule is a pure helper in Core so it is pinned without a Mac. The start-up UI font log line is how the result is read.
chrisuthe
marked this pull request as ready for review
September 2, 2026 02:19
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.
Phase 6 of the reskin, the last. Closes the loose ends the earlier phases left and sweeps the docs so they describe the app as it is.
What changed
Volume: NN %readout, separator, Show Sendspin Player, Quit. Switch Group is there regardless of the footer setting. The transport items bind the view model's commands, so they grey out together while disconnected (NativeMenuItemfollowsCanExecute, and every exporter's click path executes the command). Mute goes through a newToggleMuteCommandso the footer button and the tray drive the one property. State stays in labels, neverIsChecked(Avalonia #8751).TrayMenuTestsbuilds the menu over the headless platform's null tray and reads the headers, the enable state, mute and the readout.BackdropModeLabelpattern: the picker still writes the enum through; only the item template goes through the converter.SettingLabelTestspins every member of both enums;ConnectionMode.Autois obsolete on this SDK line and is the one member allowed to fall through, and the test says so.ReadDesktopFontFamilynames.AppleSystemUIFontonly afterSKFontManager.Default.MatchFamilyreturns a typeface for it, and leaves the name null (with a line on stderr) otherwise, because an unresolvableDefaultFamilyNamekills the process before a window appears. The rule isCore/Platform/MacSystemFont.Selectover a resolver, pinned byMacSystemFontTestswithout a Mac.Program.csand ARCHITECTURE now say "shipped, guarded".src/Sendspin.Playernow says what the code is for; the grep in the brief returns nothing.UiClockrule and the advertised backdrop roles as done-and-closed. ARCHITECTURE gains an index at the top of the UI shell section and a phase 6 "As shipped" paragraph. COMPLIANCE was checked and is unchanged: thecontroller@v1row already lists mute andswitch.Decisions worth a look
Verification
make testgreen: 341 + 172 tests.dotnet formatclean on every project touched. Release build with warnings-as-errors andEnforceCodeStyleInBuildclean on every Linux-buildable project. Hygiene tests pass andEverySettingsComboBoxIsGuardedstill counts five.PlatformSelection.MacOS.cswas compile-checked withcscagainst the real SkiaSharp, Avalonia and Core assemblies with nullable and warnings-as-errors.UI font:log line.$Default is .AppleSystemUIFont, glyphs from System Fontmeans the guard passed and the system face is in use;$Default is Helveticaplus a.AppleSystemUIFont does not resolve hereline on stderr means it declined safely.