Skip to content

Plan Avalonia 12 upgrade for Linux frontend #136

Description

@shanselman

Context

The Linux frontend currently uses Avalonia 11.x. A vulnerable transitive dependency warning for Tmds.DBus.Protocol 0.21.2 was mitigated short-term by pinning Tmds.DBus.Protocol to 0.21.3, but the larger dependency graph is still on Avalonia 11. A full Avalonia 12 upgrade should be handled separately because it can affect rendering, themes, platform integrations, packaging, and runtime behavior.

Proposed upgrade plan

  1. Update all Avalonia packages together to the same Avalonia 12 version:
    • Avalonia
    • Avalonia.Desktop
    • Avalonia.Themes.Fluent
    • Avalonia.Fonts.Inter
    • Avalonia.Diagnostics
  2. Remove the explicit Tmds.DBus.Protocol override if Avalonia 12 resolves to a non-vulnerable version on its own.
  3. Restore and build the Linux project with warnings treated as signals, especially NuGet vulnerability warnings and obsolete API warnings.
  4. Fix any Avalonia 12 API/theme/binding changes in:
    • BabySmash.Linux/App.axaml.cs
    • BabySmash.Linux/MainWindow.axaml.cs
    • BabySmash.Linux/Views/OptionsWindow.axaml*
    • BabySmash.Linux/Shapes/*
    • BabySmash.Linux/Core/Animation/*
  5. Validate packaging outputs:
    • self-contained publish
    • tarball layout
    • .deb package
    • .rpm package
  6. Manual smoke test on Linux:
    • app launches fullscreen
    • shapes render and animate
    • keyboard smashing creates expected shapes/letters
    • sounds and TTS still work with paplay/espeak
    • options dialog opens and persists settings
    • multi-monitor behavior still matches current expectations
    • cursor/topmost/fullscreen behavior is not regressed

Acceptance criteria

  • Linux Release build succeeds without vulnerability warnings.
  • Linux publish/package jobs pass in CI.
  • No explicit Tmds.DBus.Protocol pin is needed unless documented as intentional.
  • Manual Linux smoke test passes for rendering, input, audio/TTS, settings, and window behavior.

Notes

This should be a dedicated PR, not folded into routine dependency patch updates, because Avalonia 12 pulls a broader rendering/platform dependency graph including SkiaSharp, FreeDesktop, X11/native packages, and theme components.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions