Repository navigation
Add a desktop shell capability, tray icons and hidden mounts - #16
Merged
Marc-André Moreau (mamoreau-devolutions) merged 2 commits intoOct 29, 2026
Merged
Conversation
A tray or capture tool needs what the projection did not cover yet:
- IAvnApplication6 (stage 33), a separately versioned capability:
SetShutdownMode (last window, main window, explicit), CreateRustVmTray,
GetPlatformHandle, SetWindowTopmost, SetWindowTransparent and
SetWindowExcludedFromCapture (Windows only). Run uses the requested
shutdown mode; trays are released when Run ends.
- Tray icons declared in the view-model schema: a top-level "trays"
list (model, a Tray-kind menu, icon, tooltip, activate command), the
Tray menu kind (gestures rejected), generated Create{Menu} and
Attach{Tray}Tray methods, RustViewRegistry.CreateTray, the managed
RustTrayAttachment, and a generated Rust mount_<tray>.
- Hidden mounts: AppScope::mount_hidden,
mount_dynamic_view_model_hidden (returning the Window), generated
mount_<view>_hidden, and Window::show.
- Rust: rustolonia::shell (ShutdownMode, set_shutdown_mode,
platform_handle, set_topmost, set_transparent,
set_excluded_from_capture) over the rustolonia-sys vtable.
The schema only gains "trays" when one is declared, so existing IR
files normalize unchanged; the sample and app outputs are regenerated
(each registry gains an empty CreateTray). IR and generator tests cover
trays; a native fixture test covers the new capability.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 12.1.1 version bump refreshed rust/Cargo.lock only. The apps under apps/ use rustolonia and rustolonia-sys by path with their own lock files, which still named 12.1.0 (or 0.1.0), so CI's `cargo test --locked` for the system monitor failed on master as well. Their two entries are updated, and prepare-release.ps1 now updates those entries in every app's lock file with each version bump. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Marc-André Moreau (mamoreau-devolutions)
merged commit Oct 29, 2026
5a80ef2
into
master
10 checks passed
Marc-André Moreau (mamoreau-devolutions)
deleted the
jiffshot-host-features
branch
October 29, 2026 20:40
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.
Jiffshot (a screen capture tool and editor) now runs as one Rustolonia app: a tray icon, windows created hidden and shown later, topmost and see-through capture UI, and windows left out of screen captures. This adds what the projection did not cover yet.
What's in it
IAvnApplication6(stage 33), a separately versioned capability. Existing hosts and consumers are unaffected:SetShutdownMode: last window, main window or explicit (Runuses it).CreateRustVmTray: tray icons are released whenRunends.GetPlatformHandle,SetWindowTopmost,SetWindowTransparent.SetWindowExcludedFromCapture: Windows only,E_NOTIMPLelsewhere.trayslist: model, aTray-kind menu, icon, tooltip, activate command.Traymenu kind rejects gestures; Recent Files and toggles work as in application menus.Create{Menu}andAttach{Tray}Tray, plusRustViewRegistry.CreateTray.RustTrayAttachment, and a generated Rustmount_<tray>.AppScope::mount_hidden.mount_dynamic_view_model_hidden, which returns theWindow.mount_<view>_hidden, andWindow::show.rustolonia::shell(ShutdownMode,set_shutdown_mode,platform_handle,set_topmost,set_transparent,set_excluded_from_capture) over therustolonia-sysvtable.rust/COMPATIBILITY.md,rust/MENUS.md.The schema gains
traysonly when one is declared, so existing IR files normalize unchanged. The sample and app outputs are regenerated: each registry gains an emptyCreateTray, and nothing else changes.Testing
tests/Avalonia.Projection.Ir.Tests: 138 passed, including the newViewModelTrayIrTests.tests/Avalonia.Projection.Generator.Tests: 98 passed, including the newViewModelTrayEmitterTests.rustolonia-sysnativeaot_fixture: 11 passed, including the new capability.master(which only adds the 12.1.1 host checksums): the IR and generator suites pass again. The native fixture was not rerun.Notes for review
rust/COMPATIBILITY.mdit belongs in a release that bumps all three crates. No version is bumped here.🤖 Generated with Claude Code