diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index a933f90ec..d4f6259b1 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -1,50 +1,222 @@
-You are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. Only terminate your turn when you are sure that the problem is solved.
+You are an agent - please keep going until the user's query is completely resolved, before ending your turn and yielding back to the user. Only terminate your turn when you are sure that the problem is solved.
-If you are not sure about file content or codebase structure pertaining to the user’s request, use your tools to read files and gather the relevant information: do NOT guess or make up an answer.
+If you are not sure about file content or codebase structure pertaining to the user's request, use your tools to read files and gather the relevant information: do NOT guess or make up an answer.
You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully.
When in Agent mode, work directly in the code files.
-## NuGet dependencies
+## NuGet Dependencies
- Prefer the latest stable release versions of NuGet dependencies when adding or updating packages.
- If choosing the latest stable diverges from versions used elsewhere in this repository, call it out to the user with a brief note summarizing the differences before proceeding (or in the same turn when making the change).
+- Common .NET MAUI package recommendations:
+ - `Microsoft.Maui.Controls` - Core MAUI controls
+ - `CommunityToolkit.Maui` - Essential community extensions
+ - `CommunityToolkit.Mvvm` - MVVM helpers and source generators
## About the Project
This application is a .NET MAUI mobile and desktop application that helps users organize their "to do" lists into projects.
-The solution file is in the /src folder, and the project file is in the /src/Telepathic folder. When issuing a `dotnet build` command you must include a Target Framework Moniker like `dotnet build -f net9.0-maccatalst`. Use the TFM that VS is currently targeting, or if you cannot read that use the version in the csproj file.
+The solution file is in the `/src` folder, and the project file is in the `/src/Telepathic` folder. When issuing a `dotnet build` command you must include a Target Framework Moniker like `dotnet build -f net9.0-maccatalyst`. Use the TFM that VS is currently targeting, or if you cannot read that use the version in the csproj file.
-Here are some general .NET MAUI tips:
+## .NET MAUI Best Practices
-- Use `Border` instead of `Frame`
-- Use `Grid` instead of `StackLayout`
+### Layout Controls
+
+- Use `Border` instead of `Frame` (Frame is obsolete in .NET 9)
+- Use `Grid` instead of `StackLayout` for complex layouts requiring space subdivision
+- Use `HorizontalStackLayout` or `VerticalStackLayout` for simple linear layouts
- Use `CollectionView` instead of `ListView` for lists of greater than 20 items that should be virtualized
- Use `BindableLayout` with an appropriate layout inside a `ScrollView` for items of 20 or less that don't need to be virtualized
-- Use `Background` instead of `BackgroundColor`
+### Visual Properties
+
+- Use `Background` (Brush) instead of `BackgroundColor` (Color)
+- Use `Stroke` instead of `BorderColor` for Border controls
+- Use explicit numeric font sizes instead of `Device.GetNamedSize()` (deprecated)
+
+### Layout Options
+
+- **CRITICAL**: Do NOT use `AndExpand` layout options (e.g., `FillAndExpand`, `StartAndExpand`)
+ - These are deprecated in .NET 9 and will be removed
+ - Use regular options: `Fill`, `Start`, `End`, `Center`
+ - If you need expansion behavior, use `Grid` with `Height="*"` or `Width="*"` row/column definitions
+
+### Grid Layouts
+
+- **CRITICAL**: Always define explicit `RowDefinitions` and `ColumnDefinitions` in Grid
+ - .NET MAUI does NOT auto-generate rows/columns like Xamarin.Forms did
+ - Example:
+
+```
+
+
+
+
+
+
+
+
+```
+
+### Default Spacing
-This project uses C# and XAML with an MVVM architecture.
+- Add implicit styles for default spacing (MAUI defaults to 0, unlike Xamarin.Forms which used 6):
-Use the .NET Community Toolkit for MVVM. Here are some helpful tips:
+```
+
+
+
+```
+
+### XAML Namespaces
+
+- Use the standard .NET MAUI namespace: `xmlns="http://schemas.microsoft.com/dotnet/2021/maui"`
+- Use the standard XAML namespace: `xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"`
-## Commands
+### Application Lifecycle
-- Use `RelayCommand` for commands that do not return a value.
+- **CRITICAL**: Use `CreateWindow()` pattern, NOT `MainPage` property (obsolete in .NET 9):
+
+```
+
+public App()
+{
+ InitializeComponent();
+}
+
+protected override Window CreateWindow(IActivationState? activationState)
+{
+ return new Window(new AppShell());
+}
+
+```
+
+### Platform-Specific APIs
+
+- Use `DeviceInfo.Platform` instead of `Device.RuntimePlatform` (Device class is deprecated)
+- Use `DeviceInfo.Idiom` instead of `Device.Idiom`
+- Use `MainThread.InvokeOnMainThreadAsync()` instead of `Device.InvokeOnMainThreadAsync()`
+- Platform constants: `DevicePlatform.Android`, `DevicePlatform.iOS`, `DevicePlatform.MacCatalyst`, `DevicePlatform.WinUI`
+
+### Accessibility & Semantics
+
+- Use `SemanticProperties.Description` instead of `AutomationProperties.Name` (deprecated in .NET 8)
+- Use `SemanticProperties.Hint` instead of `AutomationProperties.HelpText` (deprecated in .NET 8)
+
+### Messaging
+
+- Use `WeakReferenceMessenger` from `CommunityToolkit.Mvvm` instead of `MessagingCenter` (deprecated in .NET 9)
+- Define message classes and implement `IRecipient` for type-safe messaging
+
+## MVVM with .NET Community Toolkit
+
+This project uses C# and XAML with an MVVM architecture using the .NET Community Toolkit.
+
+### Commands
+
+Use `RelayCommand` for commands that do not return a value.
+
+```
-```csharp
[RelayCommand]
Task DoSomethingAsync()
{
// Your code here
}
+
```
-This produces a `DoSomethingCommand` through code generation that can be used in XAML.
+This produces a `DoSomethingCommand` through code generation that can be used in XAML:
+
+```
-```xml
```
+### Observable Properties
+
+Use `ObservableProperty` for data-bindable properties:
+
+```
+
+[ObservableProperty]
+private string title = "Default Title";
+
+```
+
+This generates a public `Title` property with `INotifyPropertyChanged` support.
+
+### Dependency Injection
+
+Register services in `MauiProgram.cs`:
+
+```
+
+builder.Services.AddSingleton();
+builder.Services.AddTransient();
+builder.Services.AddTransient();
+
+```
+
+Inject dependencies via constructor:
+
+```
+
+public class MyViewModel
+{
+private readonly IMyService _service;
+
+ public MyViewModel(IMyService service)
+ {
+ _service = service;
+ }
+}
+
+```
+
+## Code Quality Guidelines
+
+### Global Usings
+
+- Keep `GlobalUsings.cs` minimal - only commonly used namespaces
+- Common global usings for MAUI:
+
+```
+
+global using Microsoft.Maui.Controls;
+global using Microsoft.Maui.Controls.Xaml;
+global using System.Collections.ObjectModel;
+global using System.ComponentModel;
+global using CommunityToolkit.Mvvm.ComponentModel;
+global using CommunityToolkit.Mvvm.Input;
+
+```
+
+### Resource Naming
+
+- **CRITICAL**: Image files must follow strict naming rules:
+ - Lowercase only
+ - Start and end with a letter
+ - Only alphanumeric characters or underscores
+ - No spaces, hyphens, or special characters
+ - Examples: `dotnetbot.png`, `app_icon.svg`, `background_image.jpg`
+
+### Layout Collection Management
+
+Use direct `Add()` methods instead of manipulating `Children` collection:
+
+```
+// CORRECT
+grid.Add(new Label { Text = "Hello" });
+
+// WRONG - deprecated pattern
+grid.Children.Add(new Label { Text = "Hello" });
+```
\ No newline at end of file
diff --git a/.github/workflows/prompts/update-latest.prompt.md b/.github/workflows/prompts/update-latest.prompt.md
index c6f4c6183..a773d9cce 100644
--- a/.github/workflows/prompts/update-latest.prompt.md
+++ b/.github/workflows/prompts/update-latest.prompt.md
@@ -1,12 +1,494 @@
---
mode: agent
---
-I would like to update the 9.0 samples to the latest .NET 10 version. Make sure to use the Microsoft Learn MCP. Please follow these steps:
-
-1. **Create a folder called 10.0**: Create a new folder named `10.0` in the root directory of the repository.
-2. **Copy the 9.0 samples**: Copy all the contents from the `9.0` folder into the newly created `10.0` folder. Don't copy bin and obj if present.
-3. **Update Target Framework**: Change the target framework in the project files from `net9.0` to `net10.0`.
-4. **Update SupportedOSPlatformVersion**: Update SupportedOSPlatformVersion to their latest versions compatible with .NET 10.
-5. **Update Deprecated APIs**: Review and update any deprecated APIs or obsolete methods to use the latest recommended alternatives in .NET 10. Address any compiler warnings and follow guidance from Microsoft Learn documentation.
-6. **Address Build Warnings**: Resolve any build warnings that appear during compilation, referring to Microsoft Learn for best practices and updated guidance.
-7. **Test the Samples**: Build each sample to ensure they compile with the newest version and run without warnings.
+
+## Objective
+Migrate all .NET MAUI samples from the 9.0 folder to .NET 10, ensuring compatibility, removing deprecated APIs, and following latest best practices.
+
+## Prerequisites
+- Access to Microsoft Learn MCP for documentation lookups
+- .NET 10 SDK installed and workloads configured
+- Understanding of .NET MAUI deprecation patterns from .NET 9 to .NET 10
+
+## Migration Steps
+
+### Step 1: Prepare Directory Structure
+**Action:** Create the 10.0 folder structure mirroring 9.0 organization
+
+```
+
+# Create 10.0 root folder if it doesn't exist
+
+New-Item -Path "10.0" -ItemType Directory -Force
+
+# List all sample categories in 9.0
+
+Get-ChildItem -Path "9.0" -Directory
+
+```
+
+**Verification:**
+- Confirm 10.0 folder exists
+- Document all sample categories found in 9.0
+
+### Step 2: Copy Sample Projects (Excluding Build Artifacts)
+**Action:** Copy all samples from 9.0 to 10.0, excluding build artifacts
+
+```
+
+
+# For each sample in 9.0
+
+Get-ChildItem -Path "9.0" -Recurse -Directory | ForEach-Object {
+\$sourcePath = \$_.FullName
+\$targetPath = \$sourcePath -replace '\\9.0\\', '\\10.0\\'
+
+ # Copy excluding bin, obj, and .vs folders
+ robocopy $sourcePath $targetPath /E /XD bin obj .vs /NFL /NDL /NJH /NJS
+ }
+
+```
+
+**Verification:**
+- Confirm all samples copied successfully
+- Verify no bin/obj folders were copied
+- Check that solution and project files are present
+
+### Step 3: Update Target Framework Monikers (TFMs)
+**Action:** Update all .csproj files to target .NET 10
+
+**Find and Replace:**
+- `net9.0-android` → `net10.0-android`
+- `net9.0-ios` → `net10.0-ios`
+- `net9.0-maccatalyst` → `net10.0-maccatalyst`
+- `net9.0-windows` → `net10.0-windows10.0.19041.0`
+- `net9.0-tizen` → `net10.0-tizen` (if present)
+
+```
+
+
+# Batch update all .csproj files
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.csproj" | ForEach-Object {
+\$content = Get-Content \$_.FullName -Raw
+\$content = \$content -replace 'net9\.0-', 'net10.0-'
+Set-Content \$_.FullName -Value \$content -NoNewline
+Write-Host "Updated: $($_.FullName)"
+}
+
+```
+
+**Verification:**
+- Use Microsoft Learn MCP to verify correct .NET 10 TFMs
+- Confirm no net9.0 references remain in any .csproj
+
+### Step 4: Update SupportedOSPlatformVersion
+**Action:** Update minimum OS versions to .NET 10 recommendations
+
+**Use Microsoft Learn MCP to query:**
+- "What are the recommended SupportedOSPlatformVersion values for .NET MAUI 10?"
+
+**Expected Updates:**
+```
+
+
+21.0
+
+
+15.0
+
+
+15.0
+
+
+10.0.19041.0
+10.0.19041.0
+
+```
+
+**Verification:**
+- Cross-reference with Microsoft Learn MCP
+- Document any version changes from .NET 9
+
+### Step 5: Update NuGet Package Versions
+**Action:** Update all MAUI and related packages to latest .NET 10 compatible versions
+
+**Query Microsoft Learn MCP:**
+- "What is the latest Microsoft.Maui.Controls version for .NET 10?"
+- "What is the latest CommunityToolkit.Maui version compatible with .NET 10?"
+
+**Expected Package Updates:**
+```
+
+
+
+
+
+```
+
+```
+
+
+# List all packages that need updating
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.csproj" | ForEach-Object {
+Select-String -Path \$_.FullName -Pattern '
+
+
+
+
+
+
+
+```
+
+#### 6.3 AndExpand Layout Options (Deprecated)
+```
+
+
+# Find all AndExpand usages
+
+Get-ChildItem -Path "10.0" -Recurse -Include "*.cs","*.xaml" |
+Select-String -Pattern "AndExpand" |
+Select-Object Path, LineNumber, Line
+
+```
+
+**Replacement:**
+- Remove `AndExpand` suffix from all LayoutOptions
+- Use `Grid` with star-sized rows/columns for expansion behavior
+
+#### 6.4 Application.MainPage (Obsolete)
+```
+
+
+# Find MainPage property usage
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.cs" |
+Select-String -Pattern "MainPage\s*=" |
+Select-Object Path, LineNumber
+
+```
+
+**Replacement:**
+```
+
+// BEFORE
+public App()
+{
+InitializeComponent();
+MainPage = new AppShell();
+}
+
+// AFTER
+public App()
+{
+InitializeComponent();
+}
+
+protected override Window CreateWindow(IActivationState? activationState)
+{
+return new Window(new AppShell());
+}
+
+```
+
+#### 6.5 AutomationProperties (Deprecated)
+```
+
+
+# Find AutomationProperties usage
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.xaml" |
+Select-String -Pattern "AutomationProperties\." |
+Select-Object Path, LineNumber
+
+```
+
+**Replacement:**
+- `AutomationProperties.Name` → `SemanticProperties.Description`
+- `AutomationProperties.HelpText` → `SemanticProperties.Hint`
+
+#### 6.6 MessagingCenter (Deprecated)
+```
+
+
+# Find MessagingCenter usage
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.cs" |
+Select-String -Pattern "MessagingCenter\." |
+Select-Object Path, LineNumber
+
+```
+
+**Replacement:**
+- Use `WeakReferenceMessenger` from `CommunityToolkit.Mvvm`
+- Add package: `CommunityToolkit.Mvvm`
+
+**Query MCP:** "How do I migrate from MessagingCenter to WeakReferenceMessenger in .NET MAUI 10?"
+
+### Step 7: Fix Grid Layout Definitions
+**Action:** Ensure all Grid controls have explicit RowDefinitions and ColumnDefinitions
+
+```
+
+
+# Find potential Grid layout issues (grids using Grid.Row without definitions)
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.xaml" | ForEach-Object {
+\$content = Get-Content $_.FullName -Raw
+ if ($content -match ']*>' -and \$content -match 'Grid\.Row=' -and \$content -notmatch 'Grid\.RowDefinitions') {
+Write-Warning "Potential missing RowDefinitions in: $($_.FullName)"
+}
+}
+
+```
+
+**Verification:**
+- Manually review flagged files
+- Add explicit RowDefinitions/ColumnDefinitions where missing
+
+### Step 8: Address Build Warnings
+**Action:** Build each sample and resolve warnings using Microsoft Learn MCP
+
+```
+
+
+# Build all samples and capture warnings
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.csproj" | ForEach-Object {
+Write-Host "`nBuilding: $($_.Name)" -ForegroundColor Cyan
+dotnet build \$_.FullName -c Release 2>\&1 | Tee-Object -FilePath "build-log.txt" -Append
+}
+
+```
+
+**For each warning:**
+1. Copy the warning message
+2. Query Microsoft Learn MCP: "How do I resolve this .NET MAUI 10 warning: [paste warning]"
+3. Apply recommended fix
+4. Document the fix in a migration notes file
+
+**Common Warnings to Expect:**
+- CS0618: Obsolete API usage
+- MAUI0001: Frame is deprecated
+- MAUI0002: AndExpand layout options are deprecated
+
+### Step 9: Update Image Resource Naming
+**Action:** Ensure all image files follow .NET MAUI naming requirements
+
+**Requirements:**
+- Lowercase only
+- Start and end with letter
+- Only alphanumeric or underscores
+- No spaces, hyphens, or special characters
+
+```
+
+
+# Find non-compliant image names
+
+Get-ChildItem -Path "10.0" -Recurse -Include "*.png","*.jpg","*.svg" | Where-Object {
+\$_.Name -cmatch '[A-Z]' -or \$_.Name -match '[ -]' -or \$_.Name -match '^[0-9]'
+} | ForEach-Object {
+\$newName = \$_.Name.ToLower() -replace '[^a-z0-9._]', '_'
+Write-Host "Rename: $($_.Name) → \$newName"
+\# Rename-Item \$_.FullName -NewName \$newName
+}
+
+```
+
+### Step 10: Validate and Test
+**Action:** Comprehensive testing of migrated samples
+
+#### 10.1 Build Validation
+```
+
+
+# Clean build all samples
+
+Get-ChildItem -Path "10.0" -Recurse -Filter "*.csproj" | ForEach-Object {
+dotnet clean \$_.FullName
+dotnet build \$_.FullName -c Release --no-incremental
+}
+
+```
+
+**Success Criteria:**
+- All samples build without errors
+- Zero deprecated API warnings (CS0618)
+- Zero MAUI-specific warnings
+
+#### 10.2 Runtime Testing
+For each sample category:
+- Run on at least one Android emulator/device
+- Run on at least one iOS simulator/device (if on macOS)
+- Verify core functionality works
+- Check for runtime exceptions
+
+#### 10.3 Documentation Review
+- Verify README.md is still accurate
+- Update any .NET 9 references to .NET 10
+- Document any breaking changes
+
+### Step 11: Create Migration Summary
+**Action:** Document all changes made during migration
+
+Create `10.0/MIGRATION_NOTES.md`:
+
+```
+
+
+# .NET 9 to .NET 10 Migration Summary
+
+## Date: [Current Date]
+
+### Samples Migrated
+
+- Total samples: [count]
+- Categories: [list categories]
+
+
+### Framework Updates
+
+- TFM: net9.0 → net10.0
+- SupportedOSPlatformVersion changes: [document changes]
+
+
+### Package Updates
+
+| Package | .NET 9 Version | .NET 10 Version |
+| :-- | :-- | :-- |
+| Microsoft.Maui.Controls | [version] | [version] |
+| CommunityToolkit.Maui | [version] | [version] |
+
+### Deprecated API Replacements
+
+- Device.RuntimePlatform → DeviceInfo.Platform ([count] instances)
+- Frame → Border ([count] instances)
+- AndExpand removed ([count] instances)
+- [list all others]
+
+
+### Build Warnings Resolved
+
+- [Document all warnings and resolutions]
+
+
+### Known Issues
+
+- [Document any unresolved issues]
+
+
+### Testing Status
+
+- [x] All samples build successfully
+- [x] Android testing completed
+- [ ] iOS testing completed (if applicable)
+- [ ] Windows testing completed (if applicable)
+
+```
+
+### Step 12: Final Verification Checklist
+
+Before considering migration complete:
+
+- [ ] No `net9.0` references remain in any .csproj file
+- [ ] All `Device.` class usages replaced
+- [ ] All `Frame` controls replaced with `Border`
+- [ ] All `AndExpand` layout options removed
+- [ ] All `Application.MainPage` usages replaced with `CreateWindow()`
+- [ ] All `AutomationProperties` replaced with `SemanticProperties`
+- [ ] All image file names comply with naming rules
+- [ ] All samples build without warnings
+- [ ] All samples tested on at least one platform
+- [ ] Migration notes documentation completed
+- [ ] README files reviewed and updated
+
+## Microsoft Learn MCP Query Strategy
+
+Use these structured queries to get targeted help:
+
+1. **Before starting:** "What are the breaking changes between .NET MAUI 9 and .NET MAUI 10?"
+
+2. **For TFM updates:** "What are the correct TargetFrameworks and SupportedOSPlatformVersion values for .NET MAUI 10?"
+
+3. **For deprecated APIs:** "What APIs were deprecated or removed in .NET MAUI 10 and what are their replacements?"
+
+4. **For specific warnings:** "How do I resolve [specific warning code and message] in .NET MAUI 10?"
+
+5. **For package compatibility:** "Is [package name] version [version] compatible with .NET MAUI 10?"
+
+## Troubleshooting Common Issues
+
+### Issue: Build fails with TFM error
+**Query MCP:** "What is the correct TargetFramework syntax for .NET MAUI 10?"
+
+### Issue: Package restore fails
+**Query MCP:** "What is the latest stable version of [package name] for .NET MAUI 10?"
+
+### Issue: Deprecated API warning
+**Query MCP:** "What replaced [deprecated API] in .NET MAUI 10?"
+
+### Issue: Layout rendering incorrectly
+**Review:** Grid RowDefinitions/ColumnDefinitions are explicit
+
+## Success Criteria
+
+Migration is complete when:
+1. All samples build with zero errors
+2. All samples build with zero warnings
+3. All deprecated APIs have been replaced
+4. All samples run successfully on target platforms
+5. Migration documentation is complete
+6. Code review passes quality checks