From 388b82f166d937c69a4553556b0042f441eadcd6 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com> Date: Thu, 23 Apr 2026 16:17:31 +0200 Subject: [PATCH 1/5] Integrate code-review skill into pr-review Pre-Flight and Try-Fix (#34994) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Description Integrates the standalone `code-review` skill into the `pr-review` orchestrator so that deep code analysis happens during Pre-Flight and its findings feed into Try-Fix exploration. ### Changes **Pre-Flight (Phase 1)** — `.github/pr-review/pr-preflight.md` - Added Part B (Step 7): Invokes code-review skill as an independent sub-agent - Independence-first principle preserved — sub-agent receives only the PR number, not Part A context - Outputs both `content.md` (context + code review summary) and `code-review.md` (full review) **Try-Fix (Phase 2)** — `.github/skills/pr-review/SKILL.md` - Try-fix prompt template now includes `code_review_findings` (errors, warnings, failure modes, blast radius) - Findings are advisory hints — inform approach, not a mandatory checklist - Only root-cause-relevant findings included to avoid distraction **Report (Phase 3)** — `.github/pr-review/pr-report.md` - Code Review row added to Phase Status table - Hard gate: `NEEDS_CHANGES` verdict blocks `APPROVE` regardless of Gate/Try-Fix - New "Code Review Impact on Try-Fix" section **AI Summary** — `.github/scripts/post-ai-summary-comment.ps1` - Full code-review output shown as separate "🔬 Code Review — Deep Analysis" collapsible section - Gracefully skipped if `code-review.md` does not exist ### Design decisions - The `code-review` skill itself is NOT modified — stays standalone and independently invokable - The `try-fix` skill is NOT modified — already accepts hints - Code review runs as a sub-agent to prevent anchoring bias (independence-first) - Report hard gate prevents approving PRs with unresolved code review errors --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/pr-review/pr-preflight.md | 76 ++++- .github/pr-review/pr-report.md | 26 +- .github/scripts/Review-PR.ps1 | 11 +- .github/scripts/post-ai-summary-comment.ps1 | 87 +++++- .github/scripts/post-gate-comment.ps1 | 271 ------------------ .github/skills/code-review/SKILL.md | 2 +- .github/skills/pr-review/SKILL.md | 55 +++- .../scripts/Run-DeviceTests.ps1 | 27 +- 8 files changed, 241 insertions(+), 314 deletions(-) delete mode 100644 .github/scripts/post-gate-comment.ps1 diff --git a/.github/pr-review/pr-preflight.md b/.github/pr-review/pr-preflight.md index 0c5ae3f9b0b3..f27631794756 100644 --- a/.github/pr-review/pr-preflight.md +++ b/.github/pr-review/pr-preflight.md @@ -1,10 +1,10 @@ -# PR Pre-Flight — Context Gathering +# PR Pre-Flight — Context Gathering & Code Review -> **SCOPE:** Document only. No code analysis. No fix opinions. No running tests. +> **SCOPE:** Gather context, classify files, and perform deep code review. No code changes. No fix selection. No test execution. --- -## Steps +## Part A: Context Gathering (Steps 1–6) 1. **Read the issue** — full body + ALL comments via GitHub MCP tools 2. **Find the PR** — read description, diff summary, review comments, inline feedback @@ -35,7 +35,58 @@ gh pr view XXXXX --json comments --jq '.comments[] | select(.body | contains("Fi --- -## Output File +## Part B: Code Review (Step 7) + +> **Purpose:** Perform deep code analysis using the `code-review` skill to surface correctness issues, safety concerns, and MAUI convention violations BEFORE Try-Fix explores alternatives. These findings guide Try-Fix models toward higher-quality fixes. + +> **🚨 Independence-first requirement:** Step 7 MUST be invoked as a **separate sub-agent** (via the `task` tool with `agent_type: "general-purpose"`) so the code-review skill can form its assessment from the code BEFORE reading any PR narrative. The sub-agent receives ONLY the PR number — not the context gathered in Part A. This prevents anchoring bias. +> +> **Validation constraint:** The Step 7 prompt MUST NOT contain issue titles, root-cause descriptions, bug summaries, or any Part A content — only `PR #XXXXX`. If you find yourself adding context "to help" the sub-agent, you are violating independence-first. + +7. **Invoke the code-review skill as a sub-agent:** + + Use the `task` tool to launch a separate agent. The prompt MUST NOT contain issue titles, root-cause descriptions, or any Part A context — only the PR number. + + ```python + task( + name="code-review", + description="Code review for PR", + agent_type="general-purpose", + mode="sync", + prompt=""" + Run the code-review skill for PR #XXXXX. + Follow the full 6-step workflow in .github/skills/code-review/SKILL.md. + Output the review in the format specified by that skill. + """ + ) + ``` + + The sub-agent internally follows the code-review skill's 6-step workflow: + 1. Gather code context (independence-first — reads code BEFORE PR description) + 2. Load MAUI review rules from `.github/skills/code-review/references/review-rules.md` + 3. Form independent assessment + 4. Reconcile with PR narrative and prior reviews + 5. Check CI status + 6. Blast radius, failure-mode probing, and verdict + +**If Step 7 fails, times out, or returns malformed output:** +- Write `pre-flight/code-review.md` with: `## Code Review: SKIPPED\n\nReason: {failure description}` +- Set verdict to `SKIPPED` in the Code Review Summary section of `content.md` +- Omit `hints` from Try-Fix prompts (the `hints` field becomes optional when code review is unavailable) +- Do NOT apply the code-review hard gate in Phase 3 (Report) — treat as if code review was not run + +**Store the sub-agent's full output** in `pre-flight/code-review.md` — use the exact output format from the code-review skill (do NOT reformat or summarize into a different template). + +**Extract key items for Try-Fix consumption** and add to `content.md`: +- All ❌ Error findings (with file:line references) +- All ⚠️ Warning findings (with file:line references) +- Failure-mode probes and their answers +- Blast radius assessment summary +- The overall verdict and confidence level + +--- + +## Output Files ```bash mkdir -p CustomAgentLogsTmp/PRState/{PRNumber}/PRAgent/pre-flight @@ -52,16 +103,29 @@ Write `content.md`: - {Finding 1} - {Finding 2} +### Code Review Summary +**Verdict:** {LGTM / NEEDS_CHANGES / NEEDS_DISCUSSION / SKIPPED} +**Confidence:** {high / medium / low / N/A} +**Errors:** {count} | **Warnings:** {count} | **Suggestions:** {count} + +Key code review findings: +- {❌/⚠️/💡} {Brief finding with file:line reference} +- ... +*(If SKIPPED: "Code review sub-agent failed or timed out. Reason: {details}")* + ### Fix Candidates | # | Source | Approach | Test Result | Files Changed | Notes | |---|--------|----------|-------------|---------------|-------| | PR | PR #XXXXX | {approach} | ⏳ PENDING (Gate) | `file.cs` | Original PR | ``` +Write `code-review.md` — the exact output from the code-review sub-agent, in the format specified by `.github/skills/code-review/SKILL.md` (Review Output Format section). Do NOT reformat or create a custom template — preserve the skill's native output verbatim. + --- ## Common Mistakes -- ❌ Researching root cause — save for Try-Fix phase -- ❌ Looking at implementation code — just gather context +- ❌ Skipping the code-review step — it provides critical findings for Try-Fix +- ❌ Reading the PR description before code in Step 7 — independence-first prevents anchoring bias - ❌ Running tests — that's the Gate phase +- ❌ Proposing fixes — save fix ideas for Try-Fix phase diff --git a/.github/pr-review/pr-report.md b/.github/pr-review/pr-report.md index 89651509fd3f..b715ba365327 100644 --- a/.github/pr-review/pr-report.md +++ b/.github/pr-review/pr-report.md @@ -12,18 +12,26 @@ - Phases 1-2 (Pre-Flight, Try-Fix) must be complete before starting - Gate result is available from the prompt (ran separately before this skill) +- **Read `pre-flight/content.md`** to get the code-review summary (verdict, confidence, error/warning counts) +- Optionally read `pre-flight/code-review.md` for full findings if needed for the recommendation --- ## Steps -1. **Determine recommendation:** +1. **Determine recommendation** (rows evaluated in order — first match wins): - | Condition | Recommendation | - |-----------|----------------| - | PR's fix selected and Gate passed | `✅ APPROVE` | - | Alternative fix found via Try-Fix | `⚠️ REQUEST CHANGES` — suggest alternative | - | Gate failed | `⚠️ REQUEST CHANGES` — fix doesn't work | + | Priority | Condition | Recommendation | + |----------|-----------|----------------| + | 1 | Code review verdict is `NEEDS_CHANGES` (any ❌ errors) | `⚠️ REQUEST CHANGES` — code review found errors | + | 2 | Gate failed (tests fail with fix) | `⚠️ REQUEST CHANGES` — fix doesn't work | + | 3 | Alternative fix found via Try-Fix that is simpler/better | `⚠️ REQUEST CHANGES` — suggest alternative | + | 4 | Code review verdict is `NEEDS_DISCUSSION` | `⚠️ REQUEST CHANGES` — include code review concerns | + | 5 | PR's fix selected AND Gate passed AND code review LGTM or SKIPPED | `✅ APPROVE` | + + **🚨 Hard gate:** If the code review (from Pre-Flight) has verdict `NEEDS_CHANGES`, the final recommendation MUST be `REQUEST CHANGES` regardless of Gate or Try-Fix results. Code-review ❌ Errors cannot be overridden by passing tests alone. + + **Code review SKIPPED:** If the code-review sub-agent failed or timed out (verdict = `SKIPPED`), the hard gate does NOT apply. Proceed as if code review was not available — base the recommendation on Gate and Try-Fix results only. Note in the report that code review was unavailable. 2. **Write output files** — Save recommendation to `content.md` @@ -47,10 +55,14 @@ Write `content.md`: | Phase | Status | Notes | |---|---|---| | Pre-Flight | ✅ COMPLETE | {notes} | +| Code Review | {verdict} ({confidence}) | {error_count} errors, {warning_count} warnings | | Gate | ✅ PASSED | {platform} | | Try-Fix | ✅ COMPLETE | {N} attempts, {M} passing | | Report | ✅ COMPLETE | | +### Code Review Impact on Try-Fix +{Brief description of how code-review findings influenced try-fix exploration. Did any model specifically address a code review ❌ Error? Did failure-mode probes reveal issues that guided fix approaches?} + ### Summary {Brief summary of the review} @@ -58,7 +70,7 @@ Write `content.md`: {Root cause analysis} ### Fix Quality -{Assessment of the fix} +{Assessment of the fix — informed by both gate results and code review findings} ``` --- diff --git a/.github/scripts/Review-PR.ps1 b/.github/scripts/Review-PR.ps1 index b4f43982bae3..23937b2bb5af 100644 --- a/.github/scripts/Review-PR.ps1 +++ b/.github/scripts/Review-PR.ps1 @@ -499,8 +499,11 @@ The agent will analyze the issue, determine the appropriate test type (UI test, } } -# Post gate result as a separate PR comment -$postGateScript = Join-Path $PSScriptRoot "post-gate-comment.ps1" +# Post gate result by updating (or creating) the unified AI Summary comment. +# The same script is called again in STEP 3 once the review phases finish; here +# it runs early so the PR author sees the gate outcome without waiting for the +# full review. +$postGateScript = Join-Path $PSScriptRoot "post-ai-summary-comment.ps1" if (Test-Path $postGateScript) { try { if ($DryRun) { @@ -509,10 +512,10 @@ if (Test-Path $postGateScript) { & $postGateScript -PRNumber $PRNumber } } catch { - Write-Host " ⚠️ Failed to post gate comment (non-fatal): $_" -ForegroundColor Yellow + Write-Host " ⚠️ Failed to post gate section (non-fatal): $_" -ForegroundColor Yellow } } else { - Write-Host " ⚠️ post-gate-comment.ps1 not found" -ForegroundColor Yellow + Write-Host " ⚠️ post-ai-summary-comment.ps1 not found" -ForegroundColor Yellow } # Apply gate result label diff --git a/.github/scripts/post-ai-summary-comment.ps1 b/.github/scripts/post-ai-summary-comment.ps1 index b53807632259..2648c71082c5 100644 --- a/.github/scripts/post-ai-summary-comment.ps1 +++ b/.github/scripts/post-ai-summary-comment.ps1 @@ -13,9 +13,16 @@ After posting, the PR author is @-mentioned so they know to review. Content is auto-loaded from PRAgent phase files: + CustomAgentLogsTmp/PRState//PRAgent/gate/content.md (always shown first, open) CustomAgentLogsTmp/PRState//PRAgent/{pre-flight,try-fix,report}/content.md + CustomAgentLogsTmp/PRState//PRAgent/pre-flight/code-review.md - Gate is posted separately by post-gate-comment.ps1. + Gate is included as a section inside this unified comment — the script may + be called by Review-PR.ps1 twice per run: once after the gate completes + (gate-only update) and once after the review phases finish (full update). + + Any standalone legacy "" comment from older versions of + the script is deleted after a successful post to avoid duplicates. .PARAMETER PRNumber The pull request number (required) @@ -60,9 +67,34 @@ if (-not (Test-Path $PRAgentDir)) { } $phases = [ordered]@{ - "pre-flight" = @{ File = "pre-flight/content.md"; Icon = "🔍"; Title = "Pre-Flight — Context & Validation" } - "try-fix" = @{ File = "try-fix/content.md"; Icon = "🔧"; Title = "Fix — Analysis & Comparison" } - "report" = @{ File = "report/content.md"; Icon = "📋"; Title = "Report — Final Recommendation" } + "pre-flight" = @{ File = "pre-flight/content.md"; Icon = "🔍"; Title = "Pre-Flight — Context & Validation" } + "code-review" = @{ File = "pre-flight/code-review.md"; Icon = "🔬"; Title = "Code Review — Deep Analysis" } + "try-fix" = @{ File = "try-fix/content.md"; Icon = "🔧"; Title = "Fix — Analysis & Comparison" } + "report" = @{ File = "report/content.md"; Icon = "📋"; Title = "Report — Final Recommendation" } +} + +# ─── Gate content (rendered first, always open) ─── +$gateSection = $null +$gateFilePath = Join-Path $PRAgentDir "gate/content.md" +if (Test-Path $gateFilePath) { + $gateContent = Get-Content $gateFilePath -Raw -Encoding UTF8 + if (-not [string]::IsNullOrWhiteSpace($gateContent)) { + Write-Host " ✅ gate ($((Get-Item $gateFilePath).Length) bytes)" -ForegroundColor Green + $gateSection = @" +
+🚦 Gate — Test Before & After Fix + +--- + +$gateContent + +
+"@ + } else { + Write-Host " ⏭️ gate (empty)" -ForegroundColor Gray + } +} else { + Write-Host " ⏭️ gate (not found)" -ForegroundColor Gray } $phaseSections = @() @@ -93,8 +125,8 @@ $content } } -if ($phaseSections.Count -eq 0) { - throw "No phase content found. Ensure at least one content.md exists in $PRAgentDir." +if (-not $gateSection -and $phaseSections.Count -eq 0) { + throw "No gate or phase content found. Ensure at least one of gate/content.md or {phase}/content.md exists in $PRAgentDir." } # ============================================================================ @@ -123,7 +155,13 @@ $timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm UTC") # BUILD NEW SESSION BLOCK # ============================================================================ -$phaseContent = $phaseSections -join "`n`n---`n`n" +# Combine gate (always first, open) with phases (collapsed). When only one +# kind of content is available, the session still renders cleanly. +$sessionParts = @() +if ($gateSection) { $sessionParts += $gateSection } +if ($phaseSections.Count -gt 0) { $sessionParts += ($phaseSections -join "`n`n---`n`n") } +$phaseContent = $sessionParts -join "`n`n---`n`n" + $sessionMarkerStart = "" $sessionMarkerEnd = "" @@ -176,12 +214,17 @@ function Merge-Sessions { foreach ($sha in $orderedKeys) { $block = $sessions[$sha] if ($isFirst) { - # Ensure latest session has
- $block = $block -replace '', '
' + # Ensure ONLY the outer (session-wrapping) details tag is open. Inner + # phase tags must keep their original open/collapsed state — we used + # to re-open all of them via a global regex replace, which forced + # every phase to expand on each new session. + $rx = [regex]::new('') + $block = $rx.Replace($block, '
', 1) $isFirst = $false } else { - # Collapse older sessions - $block = $block -replace '', '
' + # Collapse the outer details of older sessions; leave inner phases alone. + $rx = [regex]::new('') + $block = $rx.Replace($block, '
', 1) } $allSessions += $block } @@ -300,3 +343,25 @@ try { } finally { Remove-Item $tempFile -ErrorAction SilentlyContinue } + +# ============================================================================ +# CLEAN UP LEGACY STANDALONE GATE COMMENTS +# ============================================================================ +# Earlier versions of this workflow posted gate results in a separate comment +# marked with . Now that the gate is included as a section in +# this unified comment, those legacy comments are duplicates and should go. + +try { + $legacyMarker = "" + $allRaw = gh api "repos/dotnet/maui/issues/$PRNumber/comments" --paginate 2>$null + if ($allRaw) { + $allComments = $allRaw | ConvertFrom-Json + $legacy = @($allComments | Where-Object { $_.body -and $_.body.Contains($legacyMarker) }) + foreach ($lc in $legacy) { + Write-Host "🧹 Deleting legacy gate comment (ID: $($lc.id))..." -ForegroundColor Gray + gh api --method DELETE "repos/dotnet/maui/issues/comments/$($lc.id)" 2>&1 | Out-Null + } + } +} catch { + Write-Host "⚠️ Legacy gate-comment cleanup failed (non-fatal): $_" -ForegroundColor Yellow +} diff --git a/.github/scripts/post-gate-comment.ps1 b/.github/scripts/post-gate-comment.ps1 deleted file mode 100644 index fcf365f2f286..000000000000 --- a/.github/scripts/post-gate-comment.ps1 +++ /dev/null @@ -1,271 +0,0 @@ -#!/usr/bin/env pwsh -<# -.SYNOPSIS - Posts or updates the gate verification comment on a GitHub Pull Request. - -.DESCRIPTION - Maintains ONE comment per PR, identified by marker. - Each gate run adds an expandable session keyed by HEAD commit SHA. - - Same commit SHA → replaces that session in-place. - - New commit SHA → prepends a new session (latest first). - Older sessions stay collapsed; the newest is expanded by default. - - After posting, the PR author is @-mentioned so they know to review. - - Reads content from CustomAgentLogsTmp/PRState//PRAgent/gate/content.md. - -.PARAMETER PRNumber - The pull request number (required) - -.PARAMETER DryRun - Print comment instead of posting - -.EXAMPLE - ./post-gate-comment.ps1 -PRNumber 12345 - -.EXAMPLE - ./post-gate-comment.ps1 -PRNumber 12345 -DryRun -#> - -param( - [Parameter(Mandatory = $true)] - [int]$PRNumber, - - [Parameter(Mandatory = $false)] - [switch]$DryRun -) - -$ErrorActionPreference = "Stop" -$MARKER = "" - -# ============================================================================ -# LOAD GATE CONTENT -# ============================================================================ - -$gateContentPath = "CustomAgentLogsTmp/PRState/$PRNumber/PRAgent/gate/content.md" -if (-not (Test-Path $gateContentPath)) { - $repoRoot = git rev-parse --show-toplevel 2>$null - if ($repoRoot) { - $gateContentPath = Join-Path $repoRoot "CustomAgentLogsTmp/PRState/$PRNumber/PRAgent/gate/content.md" - } -} - -if (-not (Test-Path $gateContentPath)) { - Write-Host "⚠️ No gate content found at: $gateContentPath" -ForegroundColor Yellow - exit 0 -} - -$gateContent = Get-Content $gateContentPath -Raw -Encoding UTF8 -if ([string]::IsNullOrWhiteSpace($gateContent)) { - Write-Host "⚠️ Gate content is empty" -ForegroundColor Yellow - exit 0 -} - -Write-Host "✅ Loaded gate content ($($gateContent.Length) chars)" -ForegroundColor Green - -# ============================================================================ -# FETCH PR METADATA (commit + author) -# ============================================================================ - -try { - $commitJson = gh api "repos/dotnet/maui/pulls/$PRNumber/commits" --jq '.[-1] | {message: .commit.message, sha: .sha}' 2>$null | ConvertFrom-Json -} catch { - Write-Host "⚠️ Failed to fetch commit info: $_" -ForegroundColor Yellow - $commitJson = $null -} -$commitTitle = if ($commitJson) { ($commitJson.message -split "`n")[0] } else { "Unknown" } -$commitTitle = $commitTitle -replace '&','&' -replace '<','<' -replace '>','>' -$commitSha7 = if ($commitJson) { $commitJson.sha.Substring(0, 7) } else { "unknown" } -$commitFull = if ($commitJson) { $commitJson.sha } else { "" } -$commitUrl = if ($commitJson) { "https://github.com/dotnet/maui/commit/$commitFull" } else { "#" } - -try { - $prAuthor = gh api "repos/dotnet/maui/pulls/$PRNumber" --jq '.user.login' 2>$null -} catch { $prAuthor = $null } - -$timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm UTC") - -# ============================================================================ -# BUILD NEW SESSION BLOCK -# ============================================================================ - -$sessionMarkerStart = "" -$sessionMarkerEnd = "" - -$newSessionBlock = @" -$sessionMarkerStart -
-🚦 Gate Session$commitSha7 · $commitTitle · $timestamp - ---- - -$gateContent - ---- - -
-$sessionMarkerEnd -"@ - -# ============================================================================ -# MERGE WITH EXISTING SESSIONS -# ============================================================================ - -function Merge-Sessions { - param( - [string]$ExistingBody, - [string]$NewSession, - [string]$CommitSha7 - ) - - $sessionPattern = '(?s).*?' - $existingSessions = [regex]::Matches($ExistingBody, $sessionPattern) - - $sessions = [ordered]@{} - foreach ($match in $existingSessions) { - $sha = $match.Groups[1].Value - $sessions[$sha] = $match.Value - } - - $sessions[$CommitSha7] = $NewSession - - $orderedKeys = @($CommitSha7) + @($sessions.Keys | Where-Object { $_ -ne $CommitSha7 }) - - $allSessions = @() - $isFirst = $true - foreach ($sha in $orderedKeys) { - $block = $sessions[$sha] - if ($isFirst) { - $block = $block -replace '', '
' - $isFirst = $false - } else { - $block = $block -replace '', '
' - } - $allSessions += $block - } - - return ($allSessions -join "`n`n---`n`n") -} - -# ============================================================================ -# FIND EXISTING COMMENT & BUILD FINAL BODY -# ============================================================================ - -Write-Host "Checking for existing gate comment..." -ForegroundColor Yellow -$existingCommentId = $null -$existingBody = $null - -$existingRaw = gh api "repos/dotnet/maui/issues/$PRNumber/comments" --paginate 2>$null -$existingObj = $null -if ($existingRaw) { - try { - $allComments = $existingRaw | ConvertFrom-Json - $existingObj = @($allComments | Where-Object { $_.body -and $_.body.Contains($MARKER) }) | Select-Object -Last 1 - } catch { - Write-Host "⚠️ Could not parse comments: $_" -ForegroundColor Yellow - } -} - -if ($existingObj -and $existingObj.id) { - $existingCommentId = $existingObj.id - $existingBody = $existingObj.body - Write-Host "✓ Found existing comment (ID: $existingCommentId)" -ForegroundColor Green -} - -$authorPing = "" -if ($prAuthor) { - $authorPing = "> 👋 @$prAuthor — new gate results are available. Please review the latest session below." -} - -if ($existingBody) { - $mergedSessions = Merge-Sessions -ExistingBody $existingBody -NewSession $newSessionBlock -CommitSha7 $commitSha7 - - $commentBody = @" -$MARKER - -## 🚦 Gate — Test Before and After Fix - -$authorPing - -$mergedSessions -"@ -} else { - $commentBody = @" -$MARKER - -## 🚦 Gate — Test Before and After Fix - -$authorPing - -$newSessionBlock -"@ -} - -$commentBody = $commentBody -replace "`n{4,}", "`n`n`n" - -# ============================================================================ -# DRY RUN -# ============================================================================ - -if ($DryRun) { - Write-Host "" - Write-Host "=== GATE COMMENT PREVIEW ===" -ForegroundColor Cyan - Write-Host $commentBody - Write-Host "=== END PREVIEW ===" -ForegroundColor Cyan - exit 0 -} - -# ============================================================================ -# POST OR UPDATE COMMENT -# ============================================================================ - -$tempFile = [System.IO.Path]::GetTempFileName() -try { - @{ body = $commentBody } | ConvertTo-Json -Depth 10 | Set-Content -Path $tempFile -Encoding UTF8 - - if ($existingCommentId) { - Write-Host "Updating gate comment (ID: $existingCommentId)..." -ForegroundColor Yellow - try { - gh api --method PATCH "repos/dotnet/maui/issues/comments/$existingCommentId" --input $tempFile 2>&1 | Out-Null - if ($LASTEXITCODE -ne 0) { throw "PATCH failed" } - Write-Host "✅ Gate comment updated" -ForegroundColor Green - Write-Output "COMMENT_ID=$existingCommentId" - } catch { - Write-Host "⚠️ Could not update comment $existingCommentId : $_" -ForegroundColor Yellow - $botLogin = gh api user --jq .login 2>$null - if ($botLogin) { - $ownRaw = gh api "repos/dotnet/maui/issues/$PRNumber/comments" --paginate 2>$null - $ownCommentId = $null - if ($ownRaw) { - try { - $ownAll = $ownRaw | ConvertFrom-Json - $ownMatch = @($ownAll | Where-Object { $_.body -and $_.body.Contains($MARKER) -and $_.user.login -eq $botLogin }) | Select-Object -Last 1 - if ($ownMatch) { $ownCommentId = $ownMatch.id } - } catch { } - } - if ($ownCommentId -and $ownCommentId -ne "null") { - Write-Host " Retrying with own comment (ID: $ownCommentId)..." -ForegroundColor Yellow - gh api --method PATCH "repos/dotnet/maui/issues/comments/$ownCommentId" --input $tempFile 2>&1 | Out-Null - if ($LASTEXITCODE -eq 0) { - Write-Host "✅ Gate comment updated (own comment)" -ForegroundColor Green - Write-Output "COMMENT_ID=$ownCommentId" - return - } - } - } - Write-Host " Creating new comment as fallback..." -ForegroundColor Yellow - $newJson = gh api --method POST "repos/dotnet/maui/issues/$PRNumber/comments" --input $tempFile - $newId = ($newJson | ConvertFrom-Json).id - Write-Host "✅ Gate comment posted (ID: $newId)" -ForegroundColor Green - Write-Output "COMMENT_ID=$newId" - } - } else { - Write-Host "Creating new gate comment..." -ForegroundColor Yellow - $newJson = gh api --method POST "repos/dotnet/maui/issues/$PRNumber/comments" --input $tempFile - $newId = ($newJson | ConvertFrom-Json).id - Write-Host "✅ Gate comment posted (ID: $newId)" -ForegroundColor Green - Write-Output "COMMENT_ID=$newId" - } -} finally { - Remove-Item $tempFile -ErrorAction SilentlyContinue -} diff --git a/.github/skills/code-review/SKILL.md b/.github/skills/code-review/SKILL.md index ab07ead11c2f..3f0b145ffa04 100644 --- a/.github/skills/code-review/SKILL.md +++ b/.github/skills/code-review/SKILL.md @@ -17,7 +17,7 @@ Standalone skill that evaluates PR code changes for correctness, safety, perform **Do NOT use for:** "what does PR #XXXXX do?", "summarize PR", "describe the changes", or any informational query — just answer those directly without invoking this skill. > **How this differs from other skills:** -> - **`pr-review`** — End-to-end PR workflow (4 phases: pre-flight, gate, try-fix, report). Use when you want the full pipeline including test verification and fix attempts. +> - **`pr-review`** — End-to-end PR workflow (3 phases: pre-flight with code review, try-fix, report; gate runs separately). Use when you want the full pipeline including test verification and fix attempts. Pre-Flight invokes this skill as a sub-agent for independence-first code analysis. > - **`pr-finalize`** — Verifies PR title/description match implementation + light code review. Use before merging. > - **`code-review`** (this skill) — Deep code-only review with MAUI domain rules. Use when you want a thorough code analysis without running tests or modifying the PR. diff --git a/.github/skills/pr-review/SKILL.md b/.github/skills/pr-review/SKILL.md index fa17c664d410..eab358b1d112 100644 --- a/.github/skills/pr-review/SKILL.md +++ b/.github/skills/pr-review/SKILL.md @@ -18,7 +18,7 @@ End-to-end PR review workflow that orchestrates phases to explore independent fi ``` Gate (pre-run) → Already completed by Review-PR.ps1 before this skill runs -Phase 1: Pre-Flight → Gather context, classify files → .github/pr-review/pr-preflight.md +Phase 1: Pre-Flight → Gather context, classify files, code review → .github/pr-review/pr-preflight.md Phase 2: Try-Fix → ⚠️ MANDATORY multi-model exploration → invoke try-fix skill (×4 models) Phase 3: Report → Write review recommendation → .github/pr-review/pr-report.md ``` @@ -26,6 +26,7 @@ Phase 3: Report → Write review recommendation → .g > **Gate and Branch setup** are handled by `Review-PR.ps1` before this skill is invoked. The gate result is passed in the prompt. Do NOT re-run gate verification. **All phases write output to:** `CustomAgentLogsTmp/PRState/{PRNumber}/PRAgent/{phase}/content.md` +**Pre-Flight also writes:** `CustomAgentLogsTmp/PRState/{PRNumber}/PRAgent/pre-flight/code-review.md` --- @@ -44,7 +45,7 @@ Phase 3: Report → Write review recommendation → .g ### Multi-Model Configuration -Phase 3 uses these 4 AI models (run SEQUENTIALLY — they modify the same files): +Phase 2 uses these 4 AI models (run SEQUENTIALLY — they modify the same files): | Order | Model | |-------|-------| @@ -71,10 +72,20 @@ Phase 3 uses these 4 AI models (run SEQUENTIALLY — they modify the same files) > Read and follow `.github/pr-review/pr-preflight.md` -Gather context from the issue, PR, comments, and classify changed files. +Gather context from the issue, PR, comments, classify changed files, and **perform a deep code review** using the `code-review` skill. + +Pre-Flight now has two parts: +- **Part A (Steps 1–6):** Context gathering — read issue, PR, comments, classify files +- **Part B (Step 7):** Code review — independence-first code analysis using `.github/skills/code-review/SKILL.md` and `.github/skills/code-review/references/review-rules.md` + +**Outputs:** +- `pre-flight/content.md` — Context + code review summary +- `pre-flight/code-review.md` — Full code-review output (findings, blast radius, failure-mode probes, verdict) **Gate:** None — always runs. +**Why code review runs here:** The code-review findings (❌ Errors, ⚠️ Warnings, failure-mode probes, blast radius) become **structured hints for Phase 2 (Try-Fix)**. Instead of each model starting from scratch, they receive concrete code concerns to address, leading to higher-quality fix exploration. + --- ## Phase 2: Try-Fix → Invoke `try-fix` Skill (×4 Models) @@ -87,6 +98,8 @@ Even if the PR's fix looks correct and Gate passed, you MUST still run all 4 mod ### 🚨 CRITICAL: try-fix is Independent of PR's Fix +"Independent" means each model explores a **different fix approach** from the PR's fix — not that models are isolated from code-review context. Code-review findings are provided as advisory background to improve fix quality. + The purpose is NOT to re-test the PR's fix, but to: 1. **Generate independent fix ideas** — What would YOU do to fix this bug? 2. **Test those ideas empirically** — Actually implement and run tests @@ -119,10 +132,27 @@ prompt: | - target_files: - src/{area}/{file1}.cs - src/{area}/{file2}.cs + - hints: | + Code review found the following concerns (advisory — use to inform your approach, not as a checklist): + Errors: + - {❌ Error finding 1 with file:line reference} + # Include warnings ONLY if relevant to the root cause: + # Warnings: + # - {⚠️ Warning — omit if unrelated to root cause} + Failure modes: + - {Failure mode 1}: {What happens in this scenario} + Blast radius: {Summary — e.g., "Runs for ALL toolbar items at startup, not just badged ones"} + Code review verdict: {LGTM / NEEDS_CHANGES / NEEDS_DISCUSSION} (confidence: {high/medium/low}) Generate ONE independent fix idea. Review the PR's fix first to ensure your approach is DIFFERENT. + "Independent" means exploring a different fix approach — the code review context above is background + information to help you make better decisions, not a constraint on your exploration. ``` +**Include code review context in the `hints` field** (try-fix's documented optional input). If Pre-Flight code review found no issues, use `hints: "Code review found no issues (verdict: LGTM)"`. If code review was SKIPPED, omit the `hints` field entirely. + +**Selectivity:** Only include ❌ Error findings and failure-mode probes that are relevant to the bug being fixed. Omit 💡 Suggestions. Include ⚠️ Warnings only if directly related to the root cause. + **Wait for each to complete before starting the next.** **🧹 MANDATORY: Clean up between attempts:** @@ -198,7 +228,7 @@ Deliver the final review recommendation. > 🚨 **DO NOT post any comments.** All output goes to `CustomAgentLogsTmp/PRState/`. -**Gate:** Phases 1-3 must be complete. +**Gate:** Phases 1-2 must be complete. --- @@ -207,18 +237,19 @@ Deliver the final review recommendation. ``` CustomAgentLogsTmp/PRState/{PRNumber}/PRAgent/ ├── pre-flight/ -│ └── content.md # Phase 1 output (pr-preflight) +│ ├── content.md # Phase 1 output (context + code review summary) +│ └── code-review.md # Full code-review skill output (findings, blast radius, verdict) ├── gate/ -│ └── content.md # Phase 2 output (pr-gate) +│ └── content.md # Gate output (pr-gate, run separately) ├── try-fix/ -│ ├── content.md # Phase 3 summary +│ ├── content.md # Phase 2 summary │ └── attempt-{N}/ # Per-model attempt │ ├── approach.md # What was tried │ ├── result.txt # Pass / Fail / Blocked │ ├── fix.diff # git diff of changes │ └── analysis.md # Why it worked/failed └── report/ - └── content.md # Phase 4 output (pr-report) + └── content.md # Phase 3 output (pr-report) ``` --- @@ -227,10 +258,10 @@ CustomAgentLogsTmp/PRState/{PRNumber}/PRAgent/ | Phase | Instructions | Key Action | If Blocked | |-------|--------------|------------|------------| -| 1. Pre-Flight | `pr-preflight.md` | Read issue + PR context | Skip missing info, continue | -| 2. Gate | `pr-gate.md` | Verify tests via task agent | Document, continue to Try-Fix | -| 3. Try-Fix | `try-fix` skill (×4) | **4-model exploration (MANDATORY)** | Skip failing models, continue | -| 4. Report | `pr-report.md` | Write review recommendation | Never skip | +| Gate (pre-run) | `pr-gate.md` | Verify tests (run by Review-PR.ps1) | Result passed in prompt — if missing, document and continue | +| 1. Pre-Flight | `pr-preflight.md` | Read issue + PR context + **code review** | Skip missing info; if code review fails, set verdict to SKIPPED | +| 2. Try-Fix | `try-fix` skill (×4) | **4-model exploration with code-review hints (MANDATORY)** | Skip failing models, continue | +| 3. Report | `pr-report.md` | Write review recommendation | Never skip | --- diff --git a/.github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 b/.github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 index db77a90210be..5a94bf00fb2a 100644 --- a/.github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 +++ b/.github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 @@ -274,7 +274,11 @@ try { ) # Add RuntimeIdentifier if specified - if ($platformConfig.RuntimeIdentifier) { + # NOTE: For Windows we deliberately do NOT pass `-r` here; RuntimeIdentifierOverride + # is set in the windows-specific block below to ensure the RID propagates to ALL + # referenced projects (e.g. TestUtils.DeviceTests). Plain `-r` is suppressed on + # non-leaf project references and causes PRI/asset file resolution failures. + if ($platformConfig.RuntimeIdentifier -and $Platform -ne "windows") { $buildArgs += "-r", $platformConfig.RuntimeIdentifier } @@ -296,8 +300,27 @@ try { $buildArgs += "/p:AndroidPackageFormat=apk" } "windows" { + # NOTE: WindowsAppSDKSelfContained MUST NOT be passed via command line because it + # propagates to ALL referenced projects (including library dependencies like + # Graphics.csproj) and breaks them with: + # "WindowsAppSDKSelfContained requires a supported Windows architecture" + # Instead, pass _MauiDeviceTestUnpackaged=true. The + # Microsoft.Maui.TestUtils.DeviceTests.Runners.props file (imported from each + # device test csproj) converts that signal into WindowsAppSDKSelfContained=true + # ONLY on the device test project itself. + # + # Also: use RuntimeIdentifierOverride (NOT `-r`/RuntimeIdentifier) so the RID + # propagates to every ProjectReference (e.g. TestUtils.DeviceTests). Plain + # RuntimeIdentifier is auto-suppressed on non-leaf project references, which + # leaves dependency PRI/asset files in the non-RID output folder while the + # test app itself is built at the RID-specific path, producing PRI175 errors. + # + # See eng/devices/windows.cake (buildOnly task, lines 145-188) for the + # canonical CI pattern. + $buildArgs += "/p:RuntimeIdentifierOverride=$($platformConfig.RuntimeIdentifier)" $buildArgs += "/p:WindowsPackageType=None" - $buildArgs += "/p:WindowsAppSDKSelfContained=true" + $buildArgs += "/p:SelfContained=true" + $buildArgs += "/p:_MauiDeviceTestUnpackaged=true" $buildArgs += "/p:UseMonoRuntime=false" } } From a55edf86557ba8381bbc8eeda78b3042f20b65d3 Mon Sep 17 00:00:00 2001 From: SyedAbdulAzeem Date: Fri, 24 Apr 2026 14:51:43 +0530 Subject: [PATCH 2/5] Fix: Shell top-tab unselected text visibility in Material 3 light theme --- .../Handlers/Shell/Android/ShellRenderer.cs | 4 +- .../net-android/PublicAPI.Unshipped.txt | 4 +- ...UnselectedTextVisibleWhenSwitchingTabs.png | Bin 0 -> 54127 bytes .../TestCases.HostApp/Issues/Issue1418.cs | 63 ++++++++++++++++++ .../Tests/Issues/Issue1418.cs | 27 ++++++++ 5 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs diff --git a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellRenderer.cs b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellRenderer.cs index c54aa140c971..8ccde25f0ffc 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellRenderer.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellRenderer.cs @@ -95,7 +95,9 @@ void IAppearanceObserver.OnAppearanceChanged(ShellAppearance appearance) public static Color DefaultBackgroundColor => ResolveThemeColor(RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#FEF7FF") : Color.FromArgb("#2c3e50"), RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#141218") : Color.FromArgb("#1B3147")); public static Color DefaultForegroundColor => ResolveThemeColor(RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#1D1B20") : Colors.Black, RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#E6E0E9") : Colors.White); public static Color DefaultTitleColor => ResolveThemeColor(RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#1D1B20") : Colors.White, RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#E6E0E9") : Colors.White); - public static readonly Color DefaultUnselectedColor = Color.FromRgba(255, 255, 255, 180); + public static Color DefaultUnselectedColor => ResolveThemeColor( + RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#49454F") : Color.FromRgba(255, 255, 255, 180), + RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#CAC4D0") : Color.FromRgba(255, 255, 255, 180)); internal static Color DefaultBottomNavigationViewBackgroundColor => ResolveThemeColor(RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#F3EDF7") : Colors.White, RuntimeFeature.IsMaterial3Enabled ? Color.FromArgb("#1D1B20") : Color.FromArgb("#1B3147")); internal static bool IsDarkTheme => Application.Current?.RequestedTheme == AppTheme.Dark; diff --git a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt index 05f08d0e825a..1dab12af0653 100644 --- a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt @@ -1,11 +1,13 @@ #nullable enable *REMOVED*~static readonly Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultForegroundColor -> Microsoft.Maui.Graphics.Color *REMOVED*~static readonly Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultTitleColor -> Microsoft.Maui.Graphics.Color +*REMOVED*~static readonly Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultUnselectedColor -> Microsoft.Maui.Graphics.Color ~static Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultForegroundColor.get -> Microsoft.Maui.Graphics.Color ~static Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultTitleColor.get -> Microsoft.Maui.Graphics.Color +~static Microsoft.Maui.Controls.Handlers.Compatibility.ShellRenderer.DefaultUnselectedColor.get -> Microsoft.Maui.Graphics.Color override Microsoft.Maui.Controls.Shapes.Shape.OnPropertyChanged(string? propertyName = null) -> void ~override Microsoft.Maui.Controls.Handlers.Items.MauiRecyclerView.OnInterceptTouchEvent(Android.Views.MotionEvent e) -> bool ~override Microsoft.Maui.Controls.Handlers.Items.MauiRecyclerView.OnTouchEvent(Android.Views.MotionEvent e) -> bool override Microsoft.Maui.Controls.Platform.Compatibility.ShellSectionRenderer.OnHiddenChanged(bool hidden) -> void ~override Microsoft.Maui.Controls.Handlers.Items.RecyclerViewScrollListener.OnScrollStateChanged(AndroidX.RecyclerView.Widget.RecyclerView recyclerView, int newState) -> void -~override Microsoft.Maui.Controls.Handlers.Items.SelectableItemsViewAdapter.IsSelectionEnabled(Android.Views.ViewGroup parent, int viewType) -> bool \ No newline at end of file +~override Microsoft.Maui.Controls.Handlers.Items.SelectableItemsViewAdapter.IsSelectionEnabled(Android.Views.ViewGroup parent, int viewType) -> bool diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png new file mode 100644 index 0000000000000000000000000000000000000000..c672107de345019df890154f7f81639f0d2f4966 GIT binary patch literal 54127 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�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

P`_{5|4maklQ*8 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 literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs new file mode 100644 index 000000000000..f1de24ed581a --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs @@ -0,0 +1,63 @@ +namespace Maui.Controls.Sample.Issues; + +[Issue(IssueTracker.Github, 1418, "Shell top-tab unselected text should remain visible in Material 3 light theme", PlatformAffected.Android)] +public class Issue1418 : Shell +{ + public Issue1418() + { + Tab shellTab = new Tab + { + Title = "Top Tabs" + }; + + shellTab.Items.Add(new ShellContent + { + Title = "TAB ONE", + ContentTemplate = new DataTemplate(typeof(Issue1418PageOne)) + }); + + shellTab.Items.Add(new ShellContent + { + Title = "TAB TWO", + ContentTemplate = new DataTemplate(typeof(Issue1418PageTwo)) + }); + + FlyoutItem flyoutItem = new FlyoutItem + { + Title = "Issue1418" + }; + + flyoutItem.Items.Add(shellTab); + Items.Add(flyoutItem); + } +} + +class Issue1418PageOne : ContentPage +{ + public Issue1418PageOne() + { + Title = "Page One"; + Content = new Label + { + Text = "The test passes if the unselected tabs are visible in view.", + AutomationId = "Issue1418PageOneLabel", + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center + }; + } +} + +class Issue1418PageTwo : ContentPage +{ + public Issue1418PageTwo() + { + Title = "Page Two"; + Content = new Label + { + Text = "The test passes if the unselected tabs are visible in view.", + AutomationId = "Issue1418PageTwoLabel", + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center + }; + } +} diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs new file mode 100644 index 000000000000..f2253f688f62 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs @@ -0,0 +1,27 @@ +#if ANDROID +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues; + +public class Issue1418 : _IssuesUITest +{ + public Issue1418(TestDevice device) : base(device) + { + } + + public override string Issue => "Shell top-tab unselected text should remain visible in Material 3 light theme"; + + [Test] + [Category(UITestCategories.Shell)] + public void TopTabUnselectedTextVisibleWhenSwitchingTabs() + { + App.WaitForElement("TAB TWO"); + App.Tap("TAB TWO"); + App.WaitForElement("Issue1418PageTwoLabel"); + + VerifyScreenshot(); + } +} +#endif From 831004a0b8b940cc337313943a6a646453f97998 Mon Sep 17 00:00:00 2001 From: SyedAbdulAzeem Date: Fri, 24 Apr 2026 16:21:40 +0530 Subject: [PATCH 3/5] Modified the fix --- .../ShellTabLayoutAppearanceTracker.cs | 50 +++++++++++++++++- ...ColorsFollowMaterial3WhenSwitchingTabs.png | Bin 0 -> 60532 bytes ...UnselectedTextVisibleWhenSwitchingTabs.png | Bin 54127 -> 0 bytes .../TestCases.HostApp/Issues/Issue1418.cs | 6 +-- .../Tests/Issues/Issue1418.cs | 4 +- 5 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png delete mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png diff --git a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs index ec04c19b1dc3..b25f6404fbf0 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs @@ -1,4 +1,5 @@ #nullable disable +using System; using Android.Graphics.Drawables; using Google.Android.Material.Tabs; using Microsoft.Maui.Controls.Handlers.Compatibility; @@ -36,12 +37,57 @@ public virtual void SetAppearance(TabLayout tabLayout, ShellAppearance appearanc protected virtual void SetColors(TabLayout tabLayout, Color foreground, Color background, Color title, Color unselected) { - var titleArgb = title.ToPlatform(ShellRenderer.DefaultTitleColor).ToArgb(); + var selectedTitleDefault = GetDefaultSelectedTopTabColor(ShellRenderer.DefaultTitleColor); + var selectedIndicatorDefault = GetDefaultSelectedTopTabColor(ShellRenderer.DefaultForegroundColor); + var selectedTitleColor = ResolveSelectedColor(title, ShellRenderer.DefaultTitleColor, selectedTitleDefault); + var selectedIndicatorColor = ResolveSelectedColor(foreground, ShellRenderer.DefaultForegroundColor, selectedIndicatorDefault); + + var titleArgb = selectedTitleColor.ToPlatform(selectedTitleDefault).ToArgb(); var unselectedArgb = unselected.ToPlatform(ShellRenderer.DefaultUnselectedColor).ToArgb(); tabLayout.SetTabTextColors(unselectedArgb, titleArgb); tabLayout.SetBackground(new ColorDrawable(background.ToPlatform(ShellRenderer.DefaultBackgroundColor))); - tabLayout.SetSelectedTabIndicatorColor(foreground.ToPlatform(ShellRenderer.DefaultForegroundColor)); + tabLayout.SetSelectedTabIndicatorColor(selectedIndicatorColor.ToPlatform(selectedIndicatorDefault)); + } + + static Color ResolveSelectedColor(Color value, Color legacyDefault, Color resolvedDefault) + { + if (!RuntimeFeature.IsMaterial3Enabled) + { + return value; + } + + if (value is null || IsSameColor(value, legacyDefault)) + { + return resolvedDefault; + } + + return value; + } + + static bool IsSameColor(Color first, Color second) + { + if (first is null || second is null) + { + return false; + } + + const float tolerance = 0.001f; + + return Math.Abs(first.Red - second.Red) < tolerance + && Math.Abs(first.Green - second.Green) < tolerance + && Math.Abs(first.Blue - second.Blue) < tolerance + && Math.Abs(first.Alpha - second.Alpha) < tolerance; + } + + static Color GetDefaultSelectedTopTabColor(Color material2Default) + { + if (RuntimeFeature.IsMaterial3Enabled) + { + return ShellRenderer.IsDarkTheme ? Color.FromArgb("#D0BCFF") : Color.FromArgb("#6750A4"); + } + + return material2Default; } #region IDisposable diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png new file mode 100644 index 0000000000000000000000000000000000000000..02ec2981ed9c7eee038b145a166c454e0170af92 GIT binary patch literal 60532 zcmeFZXH-*Z8!n9Fs53gsSdb1gc0oWyIs|&p(jh2OL0ZHRAcQ22j*67TQRz)V zMS&0j>5y0;L0SZXP!lCU=ph71PtLRbzVm(S{5ZeQ`SC6nOBTsap8b^jzV7R~?)~80 zS?7)Gb=Iq?sck&<$ML_^)Yd#zQ(Hg#(^~MCJvZT2;J@DxfBfa5rWU(LP3_h{YHCvO zr(2V1YUqP%YSWk0)a=sL)HH8o*PV9&FRTqX<9u9A1^s*4Soj$HWnJVcmlNxzf7DuU zYWR@aDg%Go9eKht^2+7Nt9FQ+SHXX3hYlXHGC6qIlOWyf6t{`~XLq^_oZ#1>?1t>|TXdQ*D( z@h^W?hlC#1{pr;<-9Px<{~r3~mv+87Mfpz!b7}nR0+sogcdv29D=^2R{f00D*Js-A z^%vX#j8aYQ97Cs9^uzaGgVKKt`u@wKU!Sgme);1+x1dE(`|amdI?(^OcK!Da|DA{b z?uY-Li~oc1Vf_qt)#rx_AxD)ExEJOVD6|aj*_WwlO`0&tbZ*;jQV_x_?IQbBPYx6~ zN6z=uQvFSv?rqc^&EiPh$-G(_8*8NJ#4D)?QRw+A7CrJ23?hF3yBeHpY{BiE-Q(lS zjq%bbp@~y+9(%Du3P0IcH{EL1-0J~%B$t&1U%JHqlt^Jw3Z!XKnD2**6zI zby1KsDSm49g*yeVf8P*w1!q=pI#*kDF>BdYGo2P%rL<}Yh3bF`#dvl^r z$4R@-1S~$;zudSB3M?x(e>i;j2!c*b7Q$lj!wV_8h~6T%*9Jca}8)A2-G|Oy<4(v-JOcA#HyNf6Y7g^o6_z8(74*6TSH1 zzHV~a)wWd6x=^nM7;ia7{(!-)^r|q5`}5SPQ*kThXShfL)p+eDEl-YF&f1c&`Y7}H zGV{t@UZIo9YgqJ7k%1`8Tlu?YemVrqV2*t>p2;x;gXkan>GL_)!OAerMy#k*z$Mwp z$tvue8>=bt3p{BkT;<{*?JvMEId3i>i<1;v(>cn;>Y%O$42~A3^XdaVIb>NR4ZE`m zW`n$C;1F~p$6+1#)Q7oh`kOucF>b!NaWD_Ry!!X{?b|k?Etdr|{z{|yT0Xl*5aR!! zySuv`71*AwO`~x|f@WjtIZhjtxh|PqQV$CHZTE0#^cqkKxd zD~qUU8^GJ%!H?X!w{{}Efb@WmpRvai7(Ei(eJ1`Z6i6X z1T`#-Zon{&O-+ei1w_&XS6fTy0`IEO+BUHyWX^;rHB!Ut#(f{m@`hyBsq&splDieSv%l-qNpQE{Um5`!C+Dn*w%;>@SiY%ZADL^J>BW81cE>j|D?y5#C1 z7^Gx#1cUzJ#0Fyrn(FU$^hvHWWAc0f_s#Fe@*}wPN<0oM?%`jcBZ-qOb=X%$jST8A z>%$dwHQ?=|qG%;-`vG6iaYk7Go8P~0R2~&u@aok*)5ft1!2^>2wj4Y3=|w54#A_=} zIfoo&RjXc}=A}J((sWFPu`!S`Kb9fWOa(8@@cTRMMIZUTm5zk>w`;iS(Gw1(enU~{ zEl;bF90PTj{G5EW&!3)Miz<@mvT=OJ2vMV`2{t#x&@@&3$M=SE4YW^o@vk52u0`?0 z44N`Svj6Y*ch>gW9dXSw-? z#4y3TW9oFXaK(vAYPElsr7;}*gg4H4nBRE!PCTmNAOG0Z;WgVy0H)=LqGBDGm$0EK zFfU-TbUJLKhWl-}CF*n*Z8h7YAT(HRGi3OdH;o5w%33nWWlCtPYK?mm_;|^ z*dvP?#-nr!ZntUel0{iuvyaDbG|5C3n%Y_2fyYJpF1>c8yRqPYCRT)JMFiKVy8{W;%0 z-eU!IUjI_az!*9@mC6>EE2V7wc(2E((7(n3h8OG&SedB^S+)abIYzbh>9bYFK^KLj zuY9m2!vx7lf(2}O;Ed5oaDg2Z`12ZPyTyu}=$?UWk(2m{?~QNHGgorBdD*`js>V*3 zg9U_+TMk(;Vt||Nvf;_q8BM3Q&Rn5-z;U}fWs?%YB$u??3wiA3aQwd*#SFazOu<__Dyhy8ys#Bt(c<-o}rit+7^L*!G3(Ji0&rw zSKGj5g*xn9APS)S1?A2o$5vNe=e}$}kU`vAbO6Ioqzo_h)(A<2KdSnWIMI-RkDV`F zb|8^3JE$?eDd@T?TNJN}XR7jTSXw-TR@SKm6axK4n!h{OxLdg2#3cEQld4wB>2h2S zrS^B*#rU0zM3)S^O1iK!)3W%3@ql5R_}RXpvVxPSw6rvyqHdF8R1lPsy-|u;UUid4 zcu~D$JBR%I`L6HZC*1(WQ?`F-=T95^<##tM5-YENdD$wA~RTD+}l_dyF8sP9)6xKjSG*-w!}uYXZlqS{p_%m zcb_ZOMZQ|d-frUEG+=0F3?+QK$jM*H-c?B^KBohw%3qj=N#E9pl(Kwq7kn=5MsG@l zipKvQ-lqn26Xr+i7{A|H7Z~of*wnvw^d$vPJ}KMpU+xd_%B$2|4y{h>uyi0qh10h`TlE zOT*9C8>+~ByuEi-&}LpGgQB7Z%4mr^c9!$7fX5eg1nSkM>GUvyL!biAmEY7cmIkDc`tirQJ4Ww+s(ROh1 z;uJod_WIuA04&ItQu9ERkesOW=da8SabF_i9EJC8@}neI^GJ!N4g2cm>yc~}h=N+* zK}+8d-fa$jvA2!VpvPk0@M8<|^Yd%I)y;elJbh#z9?q3QTak);DagbjLNs>5R@XW_ z2^lBLieT{PUoFg3SldgUKekxCbo=fGgi>%KrVo@a&5z=pr_Y5vp2V;nzY%oE1XHEdHsKt@1`or$O(NXX-mN{|oRLA-EG&{|BnC|iate7>UrzdP^(l_uuu6XKy1b5|gl6HTkoj>Fb1JyjV?NKC?*YRnL8);)a(}D0EkV zJi*6HmM#d=6;Fjl`v%VzzlVL^plQQ{e~Moqcj3#G%+-H8^AO|vYs@cQMd{z9BAm|P5ws9>3*@c2dV;6c7E zx2P5=0BdP1-*yb(ol#M>s_KJo=T+^`G=f|}bZP>J!DA*OMbgHZZ*3U08YRca$S8Qf zxdq((0I$i#U*XLb_~0c%9lq`G=Z)ZGybT#LMTK^wm~L3=gU5T^rW!z$qk~jmY#EKg zV3Ks5Oi?A}uD>@7QSdmQyVg^3i7WDfkZDiz9wHqM8$1kC)wYceam4Oy6g*EDE1xHF zJZ3Bb;9pSg0YULF6f9*+Fd{`~APix=;f7VU zM(a0h;3l-0GVPVG!fY0G%;Szv2zrY>7$pN0MGnmA-eT^9GQ>?HZ$ll)ZKu0)1G+a7 z<~HIZL8`=9_A7jQ7o+K}Vf~v}Bs&~}=V$!I0ZaW(*sQ!qj~+o7#jBVHZsx1vqsvdv zR%u(~eSM?3-y?McFB`jJYyOm=I?XdOGb533V+H5o@LUV`ix;<Vs4)DNwhqH z>3@C(ZGfFEgR02(ISm7l#cHOE{S)`NWcElgI+;63HaqzJ8_cMlxbFsoIcgk zI(*KZJNK>kE&3U@Iy_^Q-H!Y#ZK*~bf)9yiWBT@>LUN-Ty*-5999GCo|2Mk$A=g>o zuo1glw2T4)U9T|bruVS2eh5W}P)nkwS*c*V;YKgs*&OcVPErCWAv?9RY_13RMt)-y zA9n4lvedVWj6bGsy9;(>`g(?SYxZGDEtH7e?LQg1biDBgRX>7A zKG@{Jx?Y&AGg6Oc4m;yPJtL5BU@|@t+-BvUk@jhhhs#9hd)9Hj3qC*jnM~UfcyR z)!o8Ea*KkypPz~oXQQ|iKKM*qizb^7;Z)NZK--lO0TV?ASDkJMxRc;eCOIJm@~G!iTjW zjCVtsVG(%6fDd?(rMWMKrzsJ`{|GRQlfM{xRU?BMDlPw@swtK%m`!L8R=AHYIBhF& z;s5z*qi>c~*r*4s#?sV=e_IMaoijwmVcTQ&t6TE zesIc`2kO|dks-;*OPDHdLh$9Rqlu1XkvvZb1(F7g@DQUedItW&kyTub%%h(7Ojp#; zYZf+YfdLi?c|U^so;kWcDCpf;nBcj%HI4SyUhD>sYYORd*`;qEJm1Eg4;`*Cw*s|% zmK8Dq#Fc%V44kD9I%(uwRL7tthVqBO!AnQT$S0m@sV4rZ(Ip_4pD#y;ELY274>Y3yEjH51qekkM zF(4^d2c96i6}yk?W1~hZ%x^3l<$tm(s`D4KgZn>U9#|!vDnx()-c=e_-_CFWWuJSg zZw4xENl*|i5#Ca+&IdDW%P~`TSh^Iq+~)rPfPrhBP6VYKs_Hu-sHSzZ<(XS-n6U@B z-M+6d!6&At>D{W;i)$yrYB~S(8SI~pnScp-2UVUCJ4uNJL=;Qmpf%=EK^jDG| zYzOK9XX74{qcq)5IsEE;fsJs_H(;SzH@y+=7YCRphzq;r{ai>r4v+ zn*hTovU7I1xYStlt;3Nk169zi$RC4VIdhcs>LN7$=zAXz2P@;??HxXE$l3ZRmMsBb@^XJ{L6{Om1ajBx;O!{-Yx zukj6)D;qZz=f8b>nC}Uw%Nb>d+)1N(j*M*)tpW2n1yO3HlI~u?r$pF!PTQ+T%QGy- zM*l{0sCtybTTNSAqsH_@+=kWcm!Wu_LD^!>?fk$3XZ<|wrwmsuLlzwE z(kbw&xYi7Kf}6y=$PcG7gz7qnZR*f7sTD8i$JCwlJaB?Dw$|H*%Mi{8c_o)HYtFc4U=})T1B;<&M9hTI2FJzV4g&gS2OtRGM`UI>nWa)% z8lR2bTD3aggPH4w_p84@7d-?|otIt3dMR6GHGhZpW}e!{F{oJPD3#I1NlZVx=m$*S zo2Rm)7GL+Wv9V1H-y&EXr8jrk^7`N|et&9*4_jtk^26P`8mgMci8CIwz>wGbj&A`x zFJ}@|p`JBCmpl8Dw7;N!SlUUNz#qEQ^6XfCAjtre$F14C69p=-CX20kpML)QCGZMg z71w%duSbY+N*wK{g!ujj3@SfbNcIoty#i#-?=;dwR*ir=YN(PsvjtGG6*otxoSf-f zMt!7>UTelMtilH`CTDaP?|VBEqe$Zl^XkExx2UcU*FKFn(s476%)QVAm;NGPuZiWo7@`XL%WQ_nUO|*>8QZbw<7Z57Z+8uoK`?|STJ?L_P8t5)X-?o zD9rm871!GHx<2&Gg(|S+vL4o}P!LDD@b!IfER-!sR4}buV3LmZpsUzKqfM1#)vEQ)+5RMPB z87ts-sbN2@n`eXX5kxQy=i6;z5u;6$c(^D&KHVblY>98}Aztt1g#VvaM&!|VBJQC zeW*|_J-IC4L|w66aR>)jKcSD64g>}WQyoK?(~W+BisLqIJ=?B_weKtSs@P*-_*nNT zQ~YkqZ7@(4|B)2$PWB$xBLvK*M=NDX4wqxb7B=_dT|g90vQ7H*}_pFgLQ z!Z@XVP`QUHDJeMs$Bd`g`59MQ2aiQ$F!nl%`ZO9PrL+3BaaU3%kPr_i`1=cr=p+>* z%C5}~#>dBmw~no^=IBNVdzCYQ1Aai=Gn;Kd=wIsF|3s5*xR6#NsFFUuA8Uu$IG$`NDhGIOOHV0 zgR#+xx>*)|&yL-<@ zCyozCt8f^G(a>H1i*DUJdTZ^Wu)(+c`JSKpGW~z{Wf5&02)FQ)PU?(I%aG|YOl#Ea zt7Scnu&f0UL9vtXzNUu+Z;WmJTOl3S^KXnr|B3r15xdgO&UHE{l7ayIOUe6=vq50Y z=5qJ^89zW_;(4bhqwOV4kAvlz_cj8VVRjzNe*khTYd~f#TOKg~_Ij@c141F`1;o+{ z9>`~xn7fax&dAi%g_A)K@ASj$^J1}Pj45i~C z1}OKq5Yj%|C#?c9M!J1;cur@n_5OYP0EcU5i<-qciQ%E_23uYXHOzhy6!W2Ys)Z z^f+6<;b5E{6zvwh>16@cN~uT0;5t`8@yq-{$p;S<&b!>x&%!k?BxP8jh#H!jtRUnB zV9OqUKSP2M!#F3N7{Vj(*XjEfvz7!TczX1#2aRe1$1V4I(~uA|3qc+bb8`tt$$22! z-4fmZAceon{rdk`CabVd?yTFCgyq*;qh-l(T}`r zU7BQWu52`URs#5EbOe~n_*DuSYZ{|mN^@eUl#};W*1ToGbO?pMkp(vd8MXK^tE^hf zLHsbNEC0kqZ)d&z+>;9hfVJ<%6Q42ke8y3(j^jPSVS<0Jir-u|zbTH7S)3|7#DM5Y zL7J0tKhS~xDvgo)2+Jx2u}UP@Mh3S~J2+}c;gF>q@e?ZjW#S8q)}gbt1q-xhKQ9x&;|)8U^* z(rgwt#GkewCYee^0I=c~t8{Uz8C@EI#dX$3w0B7gB!E-@l}DJp4PBfvkpWc~ z>^$i{)qpS-%RDk37i&FLcPa@l)q@3r#Pty^IkwQlE2L)x5)K;R$DG^-saF|9eF2G} zuzfD*(N;AFV`Q*=ywsGMN?IFyIN&~ zHH+xFYe=bB{!R-1c4RdsSqtU>TmF>DB{~gzeZx?g7)QMPOJ2_u%FL&#WRRro5Ogk1 z2&rmzhTXk;S3q+T=k>q6eu1rcx^qWv)*)N)Bgt_B@aja9kF3C> z7m$To9K}j>0Z`%4Qpm*BFC4hN`qk%+EI-4&9uexp(>3#%A>2SGDmX$*8J0t<_6HCDaWD^{p~?>e1ktXp)87LkyEL6--@!n!JRJ!3!Oc8Wr=2~1<#8SrH4b^~ zu$rrMUY!$;0w%zaqX)?tIqlW1vXux~80~=>TzPkLpu&SK+~X+ntqeadt^$hncj1wb zlhvR1^pvS%-Ujy?eJ8e$1>)cIp{_!5QOyjA@F3Ai@X0O@J6U#&tE}g5&6_!LLLhqc z`~4G41IJ*6-p6~J+U%=<+}cG`-P%PVyJT4jD)QuqsW(3+qZb{8RUlDAR4B<%$y6^m zk+}U--zKO~cfGaNs5k#aqBxJQ_zl1K(a;$bk--j3XEX61!vqnI?|XiPcWX6UVxyXe zc!wbjS$- z@LOdr1!V5gbsPm={w+GX=akm&fY0ymEY9aC{=VQ!o(LU?U7ppxzws0G)7R^Tx!dpl zTus?`;6PHFslwMGhQB&Odfo8Va-5;`>;2JZGJ|+mfBEa@Gr%Eni5aLK^z^ijW$-p$ zF79j+Oey{@Uz-sWXP|`E&Cmc)9c1dQc{L09S_dz&jBR{CRTmidbxAC8j1GiF0T!%s zeffQZn}5jXn9xT# zfc@AkVAv~vHER(6N6!1#c@#h%BE;581Uv7klhpHY;SlnG0J5FeR^)yoqXgg<*sYX` zXyZw4k>fYfIRIR8?`rzD*uqn?w)NcwiIYKgQeAD2yME09=r53_NdzFuW2y}3?FlF* zY%hetY(R+Re~N{$xKLyEzo?r3C`c^u61HRzq>Q~O=egkT!wgt8Pr4*h|vL4-7i$t6DH?DF?2Y@dmD7J zAe9nqQSLjuA{dRfyRzTdI1yk)A`oUFF$S?b-CKqcrh-5o1jN9|$@bxKDiYq zTSiq{fKz4rW6&)lPXI#o@a_L*AfS15;z$am@EzdAcLofD&uVUOVm^&FAiz*d`Qu$m)$}2Z;J;I}RW;Myc!O+wAA>L3vee0MG$P zGt5!fd~Z$#1^~#2w&IC@-WmXaLIwhwdSEzUiN3pX`ga0Uf2Zt5*9Y;iMq0D@XD&BW zw-mCg^u=~o&h#}$t7KRVgXtt{2m-qcM~eiXf6MWa+Q!2_0n+SyUQadg*}i!*3APdx zw<63-+~bcd^_*(mACl&+zy#ThXczxjJ=>)9s~Az!?BVJ>`;5y4rl-sDH9 zHwGHdVkb-WZZ(%fPGdOc=toSZVLXHAfzli_c?DU2K%o(3AE%no!<>TsvghW$$%p-}+Fy@k6NKyTo2d#fmiw0Ps z!+=ewQHW^C&W6~xeJBke9;JB1nZs~`!hDeMmlfUMt!iv*XyvnDh?5QrUsnshepIIe z^G4Bf|JfY7=Dk1$?gT_UB&A64`=R&q?SDA@#$zAY$dC$~2FKf8W9I6cH7?#f;8nK^ zu#(!FH$x~7QqFHF6$OBojOc&(arEims|!v&-m~2JeK&|qR_XK?r_A+lPF}x0|NKs$ zQ3$y9R08O(b_8bxh+k?N^lhIn)s8`X_rKod|9ZGVzWc9t`M=)f|AXG;{~OyU^50N3 z-?7OJ4GzGzp;_!sAwGIU?y5Oo01$1_{mdWL;xNr8Qc-;K2;kFH2zZB zN@g&b?@FjO&W)R%@~jFSP!XtbN3K0be)27FZ__E*Ve!ubem(#7q9j?zG68aSgR-FO z*+*CxLZvA1pyYOeBwBF3K-#!~<8|f$)%#1phsUmTp;^PPx>gMt7&r?jN-iMU9U?l- z*Gzul-LfO_V^?N3v*0*4$mSWuHsr{^0HXJ3r$ALVRoqp3q0oqY6{vG%IN3`4D=DWf zjvA*xcQsiPRUC7$UFR>(uz00ru;-Q62|O+%{{ZPDer(u&{L?IP+oo zL&~{)56&hqryW#AQ9g_YBZzyOJR2^Bbz;)|os0&fgU*k$ZnTLQ^kR!NetB+%lhv+G zcF#jncs1NKW>fcx85Gf9FwQOTlTEl~B6yvPF=+Z?`r_>E7>u;Mf9cwaY_RN1u~u9^ zKB8vN1W1HQH^EM6Av zH(;pB5P!`G?1|}s^w-5YQx+q5beic` z6^9wdaugAKoQU!8n0oRV7%n1tM;KKUuDrb_Vr;W>Q^Zc^p2^A*Pr=EF2IRW&>5}oe zQf9fz>R0yuDdaXyD1U zM6!Lo$I%|o(OK6b+FRHWquQ(U-Da*;<|3n)CCk@)UwTa-G&_ARjH@+X>z(i$6%Nf{ zu1Xh;)=dIMfWCogl2ATpA8pGnN1uNi=20nj5Z-+eA@Vb$C%n)#a*XaxNH(AN#tLZv zNNK)xR7S5gbSi1x44m(`8cB{%XFj7I?*(4TYDZ~5ce$}4KHigt$H`~rv7_Bg9E_fv zw~*_Iyng-qu)M-&)Q2MpPZ<@?!?UeSsFBN+(DbmT>hLHT62Yar@CRgS=<9Uh859^~ zuC_h!VQX&Qj12GBAvrFbj^j?t5Q|?nOk-`))3@;Yhe&4G)m5#i_MFN?Lh=0hx*ct4 zp)C)Xn>Q=gMiEt5yMLrm`u$ z0kL7bX%dS!t9^9e4xl%f2nzCs^#DD3ZjooSfByrOly1#^V2%i}WJ2hFg`OeuWS{&ZC+$sRBHGl>xCjx&4Fx#aMh z{ShVshfd+8FE8q5Fw)Ehenpm=z3$da)GTRpVDsLc)qsVEd|DAp)amr5pM}B8u-W1B z1}fx1oHXQRTxg#`z}x~_m>rvbPJ8@iYkk&t3%ig!G?asc+bjUw+5TA z*t@(WUF+WgM!!(VcLtES;MG20iOB)$4%kN{oSZ@s4r%q%2zob;bcj4l{{X%+Ia8gm z&5X7f%tisDiSBBtp_cy2)UQKrRlu-c95B(Iwitd@@a~TK3E9frs9c>;bGA>M=WLM7 zbxuwI?uS1X4KBKcA?x~IMQ~&N2*-LGPJHPvLj=Cyg|Xk7@IBp-gMB46r&3szQOgrC zDW#4bF`A?7{QU{lvL|p2Ei|rjz9UA8jk#n=d=_{ipOK_^!_tu1X3Hx~cipLPTeY z8-{s(%ru{C4XgVWM5XtyI^xS%2*T|a8Gd~BWDlmhZu@E1T> zr%{(RfqMneR$PQ8ZU--hRqDrG844#0(JnEIuTN82aRIaaHR8vbZdl}0LN>N@Kp-ID z4x>Urh%SqotBVQi3yDyzR=;-gE6^RpBft~MCy0j7%G~3}9hMdd0j)he3r5{swZE@) z;LPafW1Ak(>zlur_*6ALc6HPT%^jWX50yNc-144YY*5Y`g};2UuV%c^>A@bCA_KLV zZfB>PN7$f`=-Hmk86fBmt1_l;3Sj`AyP%02Skoe+nHk-Jjm72S4x)VzHqAq<)V0w z&u`JQU+G7TrsgSkL3Z(Mv7Vr>msgm3^QL@Jv-)_oVx>)+1N46RI(&_Xq4V*EzwY9mR;Q$14S(NN@6QP8-X+siH}(ik zA}DNSns@FS3^-DyiZ7#2kJVj+zaIgo;uoi9u5y+tcXLjCRi`$mw!mRtK3;*LJc1}I z{>~$;zky%g1Spt|k4gYwuw?*C%uAySeYFs^*3+DqMAWZ9oI2rirKiVHG?J$s50$sR zgpS_x7cX9%(gV_RJd!Y@+XeWV>@uk8uGqS_cOaH8o#9x}h;Irr?6GbozGddTm_pN9 z&fcvICb{(qy7cL9qqC%q4_5TOuMnA^P{Kx0793YD`Wt?*dQnjw*w~Q&L13NQs6E4S zZ%FCxZl1Al!hI41Oho#_azs>hnAB&q#c-Hmy)uOs{0`cb{jSGs?qa3`%RTiz~2elm9Z!gbXqk&gQ+KuPSg$=b!7PodOH9$CYVl2 zSRL8qLkoS?GAbFc{%v-|+CB*h4w-NwWzCw+hLWCt-4d9{p+ZEW&CJgG*NDkDapiO) zWEVN?`9q{h*hrlvodnc5x%hm+=$nuCjz?5ntJgCF&H|{jf!#Os`ofCFXC$?@EYrd* zbhaiU!^4TB1#38I?ce~Mdxuys?8=Ne_(4|zBbZC#&#rwO);gmL-rn0E=Y87v*_kw{ zv3ea}_e4k3#`y7ZpzrO!VgBfq?G;u8q=PB z+xj$Qs`k@`{3{{h$F+c?0PL)7AMb7K(8i9HF{bB?hUSLKMSrp#pRoEYm}lD^@bXvO z;KTkv+DG)X%reeml#<}il~mvfwp(wplBeuI5_ACp7WVLd-65`I_xUrjK(E21Fp zi|Lpzb%FHG*Gu>Az7AzpXx^x}25ceBZRJ(<`@qz_NbKX`+Gi*e;YSZGKBu04GgQ?^ z=`0Z&O_dmv>t|VeysKK3Pd+6+)(kXo3ihPvG_IUX-Z1*=vZDn99;+@g1os0e$*gXK zwzZ)iFltB658Lk80UEe+EvS)GT^^+52ga$UYYS{+BOb){AZV zs>8(goOixrkY^PZn>;ZyP!Sk6c3X%dBKsGv4NDkKy#umU=&6Au#~iF^MoZtWGAX{g z^vcMHZW|{_LZK8z&TmUS(9UKDa>B!=uR88uYONS)&c{e7YPrj&!#!cMlM2+z6L@6+ zqQtM!7DY74s%}oWik#4Mx^aouE<976dR6JT??C7_h5GzoT$a=18^s|KZRM|VpCqvL zJ}>X-yive=XFFKJo zavYg}*gr&Bm>;Nc1~&4yYb~fRoOAzx1H*mA3jK;AT*)diZTwkQ^lcZ&)X z*s4UZAiygI#F&czCAm-VGkF{hAK~ZMt zQ|(Sw1^RgbY#zrQ;yftVx4%h;-Be=Gb!!+28UxtWm3g-cQVfj@gh9TqmlA4qO0*0K ziQ3u>3G<+ejTyOC) zj*5G#*}+uSvMO9xl+0p}@Ky(QV_>~^qw-p_3%m9Q)kqa`sOwU=6=X8#u+08p!N3?C z28N;GW0d^i`#V6L^h1sv1{pGD;o1FYTX$gVbg;&p*0a8OoZJU2+C}O1)}oyf`?fX+ zbC(4)C!|~9VxhM@Ng1aX?%d>b0N5Bx>~P4wi3jiNX=avPm-AKxblqC>Yrss?Rd(#Y zPP>*lu)Ns_{^=4lrI*#~`8ULz8bhBN}#&Ret6 zj@RQdS+RIintAM`|&MU9jirr~D=dxQ0#GLrOl zLC-R|3*oG9eaKWLhq!?e_)oMKyX zn#KU_2#2btUY!A^#bjMt)P+hz7T8weHbefObyh3CpaLmGH{+W~Vur>Ob(=Scx7U62 zbo=>;K!qYVPIPl7`ODr`9#6VHI}jR+>+>Au!YP#vnt3Z``9f= zf64IMR|ln=CiN(tVwH*tg%Wql@Do%@L|>mCsFgZv|NS;pm3oEqPnB219P+0OB(X&I z8nD^Ci7s2?yfInd+LY%B;y2{KX|-iTIoNW#CYuWwd1gbVb!Ao9Ah06%8nXPcE^mY2 zB9E70oLqg|goI$KN;tH5VixE>9;laopsCFchW%8CBBlZHhg_|&L%D{;m^r3x#_3v` z#=pNG-R8)C^&3%#ZNU?VSa^($-2457J2|U4kb2kwrnr0g{BXlc8OpUscxyJyZ2Npv zr5KcBh`zS^wUdA;IazI>BIqXltt~sk95S(@)lzr$kp~`u-j~((<9>)fjj7F>T|&yB zA+4F58;ZV&+5^^FM`u;t+S66x$%3snMFiOB!pD4I?#Li%n}>Q%2ud)2LG|6R>fIgS z;WyirL33bkT&1hgqonv8%{?P)Z3DsKL$oeVE-<%2=q7=FN>&@|XSRD?<$;$D6~FPs z@9#$@r;-zZbEx0k@enDnjW*1UKMChldYjMZ^6uSQgT8ShR+-m<$ABdErWz#W zOWn_ThpOXR>IS|JNmu3`V^%jh8xr#2%5_rETCC%*nyBUy?Nz_pNB6 zAUVNbE~=^Fm1+XQ<(~F#*~S)ywo~*A#Ki*(vA!4sW@>TMxlgaA?-aW-}@A9@cqC!V9 zP0E6s>CvU-@PmQqPKQSISuK~$G0xeY9H8P=a`qs6avO7XHKmT$KwD#U(h2Z~(s0K{ofB!USe3|AwqRQ2npByMAQXf^wZf zQUS@%Xp`fW8#xWmz<$-{Km}f_;Lax@UnV**xfQQ6EykngZ37wNpIzyXUYr5T)X#No z0T&d1v`Dvj)-u4@1&Jo4mbG*0Frw+!=sqHx7iv$nc3 zQcWZ)N|EXswDsnEGcUSu8Lll3u$xT_rwxaS1DTV6Z5_7Fi#ue+I+{&x|JPY>Gw7YF zZ7(AzWb<~|Twr9mX23bO&c`#9rLYCz6d#X$MfVn$^mpv!!GAiZbO(@^@BTv5jfL3;uQ0&#+zTS5S5llp=3lDY*cXIGjZ` z%@p;47DpaAxqPlZ9P@;4w1U@|T@47lm;DW|4+k~?&Qzn6g3g-t-xMB;3hC*iJD}dS z3bVf-CU8d^p|WL?>w1N#5UG^=GOf)@BZ**-k3-EAK7VE&-hWoh(M}Sg1yErPx6`R< z5M9rH7d*H$1u|S+5b(Kf3{EKc76V7juKxUTYT}wl!>UJAaYdXotW&Npn5`e~4TC!JtvdxpirE$OD{o%$e+FIuS_7O0m3hy%Fbq(CPJqV*;Opop zB4P0pbnsx$K`}i7f)VNcotvvg;0Xz%;DIlX9L+*a1`Gfj_HfDerNiSWWi`MjJDGoc zlb5>{hq0V_RM0!LH2ak{p%CAw8gymvv}a((d@&9zCrE`HRX$MS$Wc70Y?~ zZzARyEq<$9PJbyh1y6q|Z!d$^n5^1n^+|bNHCt0#IT-t_DD^btVg- zzu1*eBZ(5psoKA*%Z>jTiVoVGBMNJ5D|@|F^O~};CARYbDD;2TcFN=q2vEXs(O>@p z)-G}P1{94tXa6>S)w&H(n^Votms23Vyq)VLW=9{QJS4X#``7Qk)){v_4FMXG9)O0V zCZKk>tk|U<@Y4ZLplH{dVUv9<1KTJ7=9-62evXl51V-7y-QBkX?=K%b7J#jltm8H( zGTiM`P3O_p8T3(VC{)-4=CyafhH!M__ifo*4*^_;nyzcTyJtYapHI@L58eQvqh zszze(+B7>7e!Dt+E)~$}30epD`R$8C3}l(h#%KNQ&{KnTnH7yrOZuN}Cpx{|zS)BO zogdBFl+tOr@DOJ_V)OzCC0%8xVk0v7SYfL9*rbAc_f#S@z$y!+gu&yYSV>7B2Nxao znCdGRi}L(i^mK9Fs-T{lU?G^1&u?mfs9Wz|60_3+kmW;Gn_!bq!9zcS$6DICpfWhK zVh2RNEx-WjdWZqKH$x(){;HOt@#5hM3(9SL_~IDgD(7EyYcvg2BS|U=$FO;{xz<_{ z(pz*j`(SKjxoBpj(~&njS;fKgKcU`Fr(_)}2%E9$$Y-Yz0wGn4iL6K~y zXo~Z?yC&|4s%TCn@07;!w-)B2!7%z&4clq*yaMD+!`nCb98*n97&rqk~Y zP{$da8Alk$LWdDYK@kvgD|epE4cxy>5iR?c?r}_wnh6Q z_(7~K8%Oi%gU*l);;>%iO3@^BMaL)kdftQa>8g=J?t8q~hhH6Dux_4dE5UnBDJsQs zCQE7>+aC|}UmZDC)3!4Z^=F8)(=g`p0dIIS53+i)v}XRd3}#H@ zcdeT}2Qo-mYYz?O-m^1Pwk--H4K58U?mg+P{u+>-vT;z;ipKIt&`Gx$(P?*i7X}BA zc|h~8w?tx;3=SQp7R+I&_k9DOw z#EnX7`!nG8uTP|ol@K~d14q4}J}7WAtZQNf$Xn)hCj>O-#9P(CFY`$a!u*5OiCK5F zqt?Fu#%LGJ=nw;f=QEfGFwKrKFbQ~U>-G`D1e-z^+F!>bUH9WSNZv|-G+MQXR#^?t^hWPOKmVD`M5pGw2} zHFW~@pWa~?9MXqEHX?%4HCp$(qgbt=@=jXny7{7Q3l?6-4+d3sBi-I6Eu@jF7W5a+ zrb(RpN154}r9T}v6L-o7TE12`6#nXvrC~)1k%4eNMabhVkR0?pU^&}!inlQPW97C3 z387<*O{{Rb9L(KVUF!ljb6^=8xh+9^yj)RPxk-n@2ytNETqlz8a8w+|S78>X5C(w= zPN#!c{)#;gs%IK0l@OJm0_8lh#QgV8*M*1wWRIe*{pG z7|I&2@%f^9`_JfIxFL<1D7)Bq+uREBY5S0#S6;PZ)UBXQ(-CrH3DcgoFUI|qvkpy{ z)puxt)k!&%!VG(^KXhmGI_83!*Gj+kT-BR^qb@+{ICfBZZxo;;$7w3LFN{bFZ7zq? zwLd>od1B?LbrGWcHf7uGwIjym!n^Y_XN&nn2FOK-?FBL{>fmkt@f<60VTec@n+xH?%+tt5iJvAAr)fSt*E__*4MG<>5=mvlw z@L7it%@&PA{Gk{IZ~s_&j7+LgEFTT#aLC7QlA9AJPdW8G*p%h=zF6?A?t95?$FePtw~?)QV?9B{G4*F=^O&+z zcvTQwytx>Tlr|f_J*Gl_Yi3j_aY7ceGdcEB|0DlIL zcIqQg(rp!$`Xo%Cml_o?*4bT@Uqp#t$9e*|;?Ql_x8docVSgRbMXdgN#y8hzJO`aD z<{LtDn6RIB4zK#nMAH=)8EKa!Eo~t5XRJzOzTR-X{-?v6^fg9&*iXoVgcvhcR3LdfL8?&8m{LqZ5t{-)~xvjW-8JD@7-R5 zhQ8Ju{s}3Mz<(!JWf;Evz?bLnWj%b^7hleYFX!ZHSojhzzQoNh>B0XW)1*IzI2NTk zCu2tVJK^!5O~v`O+m!Z3Jdz$zMJ@W3|ljOzZpw+VH!H@sRNB{K+ z`FF$J{I@RpHzE0V`sP2G>%W#GUq0feuf9BsBVX3ViEqE`k?+=iIWKm6IXi#(`b!+S zz2-|y{gPh*#P=mR_>vp|!uusT_>vqz2jEL`@Fh7w0PmON;7fAwB{@J|wO^2fFUbM2 zD*l2Td`S+#srn0Y@Fh7|^QAL^x?cYuMGlG@{JvT9Y{%Zcdto?xTYk|?7-V&jLRz9g z1O^daiXCvLZywok)8nEjfAOO~`&GPBdg*{~;!>9uC57d>_MjB_`o*^4Xtm(20Uoc$=r>24M{;bucrt#@kMOKYMz{evXtdJx;0wPr<4EcN-o&sc zHsqQmm^dplEZn+^bh+Kix4e@(1m41R?1^lW#Tgz?S8M)bNBo+K`%Nk83XUlUGp|>` z900@OD@AcIYls9FrsKzIZm#90T4YbD9tCl95U^)ZLF;xVIwB%Ma&!;y)qSUXhuwMh z>z>AMZoK_$%^J7gP8|Ey97d5`rdqaWytXp1{{A79@t7=k}P2|aCc&C7+qY;=y%#kypb^NE0zHi-_ zC?*Mud!3Za4fX|po#jFMo4YSem9gVKg0)%@t0~OXBr3)vC9q*PMt3~U%IybY5U3I# z4V{q!mn+c!>9sZ+vGapZQ~agrz|Gx4^kNs1bR?YhEBspe%5r+Ynk8NADVT8HwaW&- zkP;*`&7D%ha-D)l+KI07@gj#@J`$2d*Nl(hq(Xg9AFcc_H7A(q!qim9>e=czfKs`iaJV_x^Q*&! zg*=bS+TnP|pG+|P)5nfU2Y>!Gp9a#XEB3}Xt{kENZLlY(Mz6Vd=aR(Xb!QXqP8It7 z(Br}i#9z8n|K8Pk9e1&1F%5oTjm_o$-__SXyC0XkrzJrJM33QJj8@vh-yGf!acyf! zL_}15UC8*)@F(|Tc4*H&d+|bkqy_t9Wcyik)c#gJ45^=0^~+z_kq> zM}rt+-OrB#pMF;$=y`*vMZMpat@FMX=H@k_bEC8eyH4R?gc!+bfqxxtejv*e{VXGq z+JihJszpbQ>I)tq2ivVMa7-K|r<$ctVJT0d;X#9ogkz3%xjam*Ar~dN>1;=`BuD&R zt)O98?c#fG_QsQ$OZohUN12P1@A8ddHTlmdySI83hW#H^`FJ2 zflB?ty2_tzG&$C-7E$RN9m1DfwC|HHudwvkCx$=!yfnz*rH3Cr$3RnVI)7KvBzRrq z``15E1d*~AFSfVkmT3phkI6bzyyR8tSS`9OKZte1+Su3xfBqPnf3;^8EVLbND9uQM zQ+W(5ozY_D>pkh8nAR$vxS&(3GSZwZ29|g++m-E(Q7QZvek?~De3!mY^|#Nw!AN_U z-C8Y5>-J(I3(`&jxvWgvP&Vi^n6-s(GPrC7b`Y@!ntSUo%jWMAbP9W^rJi(^yP}w% zV{|4my1iTUCEfe-$b!56ylKC^=~nT1d73R6pvLakA7EwJQ!D21BfqpS@8=RXIG5OO zcgEJ;b|FSSaBg%>aycv%czwEW1XBevHj{E|GW%YrlrjRW^yc2(ZWvd^vp2%Pcqp7T zr&LWMRuxH74(6`wyI42>0!R<4*5p*y9Dr~78Q^O5K@A0&>GpRA+ zxl;LeYd?m{fCHY0`{xQtH^Oj`%x2@sr9o-d>BQ}H`yjkw54c_Y1lzw+u@a1~nQuY` zb~?zJI*Nb=$-7{FA|tP4r3JsB?lq-mM6Yx#Kje})r}0dsXW$GJ7^;9^qS>fo1S6O*a=JuaDUry*vcI7qkd~?AwXolO! z82UX_w)az&x=T|8h7n@4GA9&lV+d!Sc(sPD^X}cASOC^bQNt?sW&4pPvzCyn#qRgs z;>NcJKaHxT_ovuHr&McyuMVXxQiCp$J^$Ek9JtG4xycg;$Bj?3m96D=69di-z2%Pf zd|^oS&^uPrW)K*E7pNairp^|}#A*~XgS>MbD)YErux^T%E%R)P>%BA52&&4;?q|u@ zy_z)_-3}W+Z4c-;Tb@A&>rSRBp;8yDFxn1{W@luCSz&{~#$~!#yo&C~PL)gAMh>(f zG^Fmqw(OJ#<7^3P)%b|yt@v1Fn}T0vV6FOJ?O?91f_4Rqb66#-oVP2w=j(@J9fzJ) zi0-ZNRkbPEm#RE*XvXy%$KEqG* z((!RczgFh3!Wa^PGvDxIfZ1#S^)bn}sS`g`*U;F=Tm%=0*jQNym&7xmrIIk;kPQQ% z6t4vvhKb;tE4alyK6nF8ewEJk>vHRhb&PxWkaAwj%-5U*9gFq*BOW9`IRR3e^KXp5 zUm7;nqPY`Ryv@x6JWps|_n|&kT`pV5-J=T0OeLlHb9t5+Hc+RT`r(B&rAjc_Xqm@- z6fD!&(_qC%(X2wsBS$SbCM;umt^Z<2G;K?3IDW;wiMHybARGAG{A8aNI5llS$pQMH z-C%85H;UekCxNQa%pLU8Dv!~fsZv6zpoH^uZ*gR`i2g6@S;a1BV6CB{t0oBMfWgpr z^TzG_a*|jBe(5v~Fn*552C^^lKYaojnTQ>{DF+<~OWWx)@Ac)Qzs zcWz76TW>Z+3eMU2VqBI{zTdw^Kh-#~E3SR9pV#7wd7{f#!e%X$JNON}`gQVDK(ogl z`pqn~r++NZu)1PnlSKGftLEL66EzDt4$ag^cC#+4$m|AdP#FvtWZ>>%Of9+!T|2YN zhO)AmY1qMg>>?90a*C=$#ldFk*aKG#P8kxUbt2uEg>L*Jy3rg*@}Wy)VF-+>-EJT{ zQ1q^xOPvuu{WNQ9<3pBmn=;5~?bFAeE3GuJluMjkP%QG+Kdw6%+(^Pr8Di){f8O00 z-CsmN-~fy*U9NV&-T@BgTes}ilOh?XB&o61iRy0!Gs|rHS8b1`^!OL|?TDtRmD zAiC!ajEyR#(xReCA;XP6f_)RqVvZRL8)$>K79->YAEsO}Ry_pj1$MoeNqC~?vaud# zzCCW3RK;~gr?Xf0^U#C-yez>FPB25+sbY!cO^kbe{&i=8t)ohbTW=-Hl4p72?LGWZ zKXK)kLw+2bVo6>v??1LLEWQ0$lSPAz}uAV*Ajx?SKYgj<>E z5=PUIeM&>VhSX7&=AMy|P2JXzc1p@yaVmJMMf1vVouy}+*?d-tO|`#wHB+4^Fz@HX zg~d!mNl9y>a((Q5>yO7d8?ystH?!0GSZ~X&M2CrMU!!R+DqzBMOJ}Uy1*Bv_+!CEI z6G>%wds_D8>s$}W%`wh0$hg->{_*AIe^OJ^%cFs~Qf5LvGwT~CJI?{tW`4bi>r}dl zw#UUPNFVw?HzpoPnZhsKH^O~(45|%V7fKIGJU2iZ&UV=NvDXTU3ydBw2P`!iuEK@# zmXO_!!Q-#c!RMlPM|YV+mm)JFexs+GTYO8q?(qHd5Lj?1>!Q8I#fHoHbw8iwR#EOg z-;p>AtLVVjMj}O5+IOo|F1FOd*~O%gU8$gU;iJaMEp>C40Y|$bI+YKJ zUS8$QPhu&;NL$)TR~S`Y`DBF2SeR~fAn@JZ6Ky(-@=7K%(^HxgJQx&w(qj8l-3MW4 z>=BG5`I$={3Yhz*AlI1W?>%9+>``JnP3iOS>f9DjU!p;Al>JzlS=55pr1*{aW%2Dg zV+yn2U~-A71YL-&@s8I`lbK@M#l&bWE&A!bc6b_O)5((!5OQh{Ni*zHl&2+IlbTbx z4Ho1}%}=*2Vm_ZY?D=)4VNJm3N>NvQGFWRIpv(@d)?Oj-7oW-zPT>yp1Z~yam z3Hs<`68ku@1A*o=mT+dOHT;{kj>1-?>tA>#(=Ow3|rpn@9xZ)T?j)xT7}Qq?P*PC)disL^X9>ASieh2A%>NdrszMi&x%R?$XbXTpQHE zL@y*>t_%xf8p_&DOV#Ljk8}k5KmnmCiS`XsRIH`v;~BU(lu}AKd!EVVEj9j6uR%6o zK0oT&Gc>y1wb=Y_A~QlYL{KzFFZDF+SxTQE;H-X|X4hw-H(BZN>=!jJER+Z_T1*;7j<1~?(N`R)Tahb)a|<2 z{QG^H?8DCBWL>|Awd=Spk2*Q>4|rL@k-kt%(MtL}9(GoM?8M<8dhw-E1>r5!d#tpE zabGCS8xxurK1M-2u6=u-R`>bi26F*jC-RIU7IfzCbE>c_e~o6x>GQ5mtJW;7Tp>m( zsZxt(spyQhA-RQ4m$oE07G3sAW*i)KA`Cmp#ITfG9{X;(d}h=XKm5Yc8M66HS4ZUf z(o=%ZSrUFQ3ZB1M7p@>pG+nUWgd5U`Td=P5buT7fm-QXnVKeY4WGc#&pj5v=*cVT4 zc=~ee*3%=Eqjp&otXyJ=Be(l>6W^Wzg?q8sZJFzUOEfm?x{#xu^F+em1Wm`8`ZD;U zU6b{~N2pk4xiMPtp%?X8-_hj65J;dHbm_0c==UP!6K3BJTjv=+?_g!@jLonj5147G z;0})-#@7XmTiQ#jYd+1J&aIIPUb^ruQA;&7XClEk@c_u3B+QNoDLp~F=@r7xhmF${ z1KECcEmn>MW;B{HpXggrZ&~uCB<@uLposI7D)jBE716ya$09FMQ$NG0BjmJ!Jbb_idJ!jiJexQKtJxhqEh1u&VOm`h7LFVbsI$9C8TJ1 zI)du&!HKdP<*uXHNDt{`-UiN^1T_Uh*ATryEzExYI;rvh?-K z_uTSjD9cs|F`W~A3D-MiHTYBhtuvKc6D3=pa`na^W{LLx)JHZrR~&TPK+}gjpKoU= z#~ZPGvI7T)H;$ygn6r3&A@`#K-;>PowR~&6ElE1+P!eV9OE_TBTKZ_6cj`Hvq&br*6~E?Ceu{pe$H-5vGnZYc7+vqY zhzNgN!=pgufH!}9Bhd~*UipEXi5!B+gCi=XZZ*GG<4~I6H~7TTW?`fwlg)=pn(yqL*UP*mig}liZo(RD z19RDzeO=b)?3J=lc5cuZ_HDUi{+|^zH;yZ03wSJ-)2!FkB9Kf^2CAk*!qWzMegf4r zvH7Wnk_}nQhid6a(L|MPPCOlq8I!(gEiYTpcuC6S9%(|B-$T1jyLxBLs3v_u_Blx-r)XxH!k$oT8!|57*uRsdxl6h^u?p8*Uh| zzMfA#N2+EU|&t9{2bk-lJ^yJnmFW<{v$T(#FE6I@)G<%Q^rM35~%;F&L7qP~6 zu#4JfaFgJh?kv%ssBZrogJS1=+o|y}={HN(U36}nl`U-Zo3_op3RY%`RBV0~6I+QV2iM8Y08{ieV?hEBjDpV%@p1 z)e_cO$%+GlhZc1=Dt)IX3d@q}ErQH986EQ7*RL>l-6!|mowSabruzn(4zL}JOJm)` zhAsZc2E8;*e;bSHTyvh{iwkgqzBkXqySr)APn|lY6;zH^I^SAlp4(Zg@59`DSj*Ho z{EwlC?iH;h&En|^0Az!ilh{Zww$n)w*WX>I55VCQ_4JWpKxJQAIYyr#RY_J(SGcWw zo?=-^VRGxUpWn*K$l&KzgYwXg{%g#p&O<{eeMkxVAwt0CA;Y*Apykz8VA0q>kOMfV zO2Cye#g=ztGrK-6rR5*Iv-%bb?q>&T{1y4uTi$9q|M|&VTel6f^tb!ebBYfXr@fzP zdSakyjBc|q);(jB#f+Dxf?^i8r(%Yv*|&R!4qNG*`@0X^4s!m%S8mwIr@c3-NBqA1 z&&|3=KzN1L%!}UQTtQP$Ts*d-r?F|VC2O|aK|gRltleO-M|;|v7+vl?TAOH=UYF>3 zCR!`)bT}ZxXWa#vp5$$qm3keo;o*3XF1wJ8#x^z_%;i4%fv&zJ9q%Fd@%p9I7v7_1 z*v0K8v8eI}*lj8HZdr1O6tTL)Ar6i(R&hk z#U0Fho+r&J7dq#QyhBB%|NHGaH|ldn(A%}3`Ss#jpLGX){t#@H-E)=RWw#g!WrLWJ zoX^E$$KGLI|GfK5umQjZe5ekG8kP|n5urqiu_Flk#=1{CzRkaCbE3GQ*HLqpUMZAy zqYGHZ)3pwjb)YUQ1|h5dO0su8RT3u?<0*OSx%4ScC#1qzaDQ2ZKUM7>FSvx>8I(;v z)wcoOgsgj?*FuhMEyZP&VXVl#Nh zWqJ2RXBwb2+>wWGv@(}7D#PzAx&qM25zOO_7JKMe%24XDB^0sCoe*^ zI*-xsK3AFz2clO)y+SREFgK|UWtN1n^T8DE6YK9r-9@a zkD;1T^@cMTe&aW6qvI+IR!3Kt=hlgQb1b06klUB^?k$YPL(v@U8JNK*}E-eMqAB>C3ahYYzW?^IFg(3?z)euDf_z zRJ@hieBnqzT(-fhA7h3qw!+;%44UYb_#-vE*PZT=3TP7ZQ;^eqLU%xV@~lJg?tBOO zz~@GP$PDA!E2pZw?FrMJHh545)68c8-V08^x%=$OUhnrjcj;Y{4QV-kpUqDXu`MgN z(n>_gU?Xp9gI9S^qAb{U&5it>0Hf9HxDLP}b8LAQ{mi-zhLC8edrYCCR~zL23moe{ z(HUU?d*ocN0GB2J75dwM>0>gbYNA292oRc}A0!`f4on2?w3aKcvK%=FjiO`6($74> z(N&bMaF1>n!*TMSL^+vL}dS72E`86e~k zd0CzAHP8!5Doyk30rQmj&OihuvlR?o97wQy>~nCZbSR0b_9=xuihuXjCLnZ8bYz-I zUw`{X!dXaR2?F(%=lg5ICEA02$YK~=7131%2I>g$r2bU@vTN_y@XZN`TBgl00 z$%?giRPxRQU`+mnUtD}iPV~LnnPma`YwXSv)xMBJ z@RundNpxl%rlvQV+aBzlq- z)Son=9Lg2+lvI@xrX>$tBu0%RkvPIkB_?|q^^6>Yb>^hryO$26buDY9D@#_hgxBmW z=g1HN*^E%Rdc{7EK6e~V#xKW9K*94Ym9n|ZPoWE;=~2c`lN9Ebcs+w`=ep17gQd($ zorXo7#M~oQ>kp>SW$b_hc1w(|3NG;DUw6FdSmEQ&Lupky8mJ*)*aJ;7%gL2HA^Ndl z+9PAB2hzYBM+!Af@(m*ShdfpuMspWUEYPB~-2scT=8Q$k*AA%fp^)x+4tgcj<$>H2 zlU-;30liyWI8E*}rje{vt}S0x(H4FZ0==;f{z5ST_e;Y~)CNU25L=ZFde_FuB4qK3 zn>t&4m2bN-qP2v3v(s5F0D$)6TgVd5&^L?tm9sLGq4HlT_g+}DCTj+6PnT7Tc&&Kt zRBwPyDuKZW|MF*%C452_&^ztHaJ`1b9TB+FAHqwHwk$=WR;0ZqDX0Ax%5x}cO|`z$ zYL^#X#U?6Q9S3AigbFQ!A#6!n$r94Vn zuiOLd@@%{-|DA82hZH|+#f#n1ZbD8+&E&2rKBfVXd+n1~raoj+-hAK*w}IQ`wIc>=vmDbzJG_MnZt9WFjV|GsnjhPY6;6yl znO1kVwGXa;r3OE3i_rp8;nh}5bJ9DpuRez*btwk`7eYq&$SqaT_drsBAhour*8Ko^L^{&Bv2o( zkTB0gVHf(SAKOSQ%eFiRo+5O$44`=+4&5OC;Z7^{$7cP-Zoxwx52cDdDp@6Ndga$H z49`!JsG#i};4?*KydLW>H{0h}@XG?oF_!eCakYNUEQN*}7`YDmF%?FW?3QzbAzZGE zFX#@nfsso>YHW;yZ||On$VeRjE(d4^v;LFQrObSqEU8OJ1e&|z1uX`q@l97E>-Gn} z>-GYtz2GR zE8DmR%kab`A1atM`^@C1L$GItKHHgh=lZk~EQ^qZ z$T>(<2cTbFo$A-(*j8bjXkB#KwCeLvB!b#4HnuN{A5;{{J#f(w_ZE5;t0*%$M9SM_ zU@1cL(f0104mt~!cEWpV`;l!*KR;eq$~^!Um0j1mIHP0sUK|Yxv3UNX)OIn4Yaz)* zn~ED(?7ccQ*s#2{GMZ6JYhmR$ICiVl1X`nIpNCFOB#joFQi;Ha{!riNtFQjCr)=gf z_7Z1H!Bf)GCxq;`1d(TYM@f|2c3B=u)XN z^cg%Gn{0)ELe`XHmc0PzPitPD^`e&OXr?=O`%Gu|riID`{swJBzlYC# zE&8sKee8ppEb3FTnki7%c^S4( zIQw35=R;qbCK0xwCZLgQ&_19)*i2UC+LlD|7a6L+PP&SSW=SQ-kD?1?_t|;G z7|BU(6GG=HLEXUg*d$noKFpJ$DuVh8|J(ZDOF( z%Km!W9mFDGQZ~qj?SW>3&!CK7zuFo7<(Fu4Oz4+fFe^(j3O?98b;LaNS)ZDV8qBR>CFjDr~K3OrI(wfqgZJlu>49*P@g_T;mL)Kv&dF% zeMIy||MH>@zclvlO#d`#?V-ZSZUFeFdnok7hq|FrK^&jnQF%65Zzcvfk`Qe{2NDB)}&#ZE%!cZu=|N13vovDKqga-yQrFqrd2an#+6BOXc?e z{6cZ)!A8|6aEmy|8nu%7=WX z5?EQo{k_F*s~kq)Vls>Aj*&i-bgRU4T&RfJ#kU6FE*wg01s7(S44Q`M_C~wnZnzQpMof6nq*^ZXy z9Q1VLJjwjNiFvF)|)EgF{1I_4ccmgCsWI~m1 z8$hMtnfH#0#Dw5W5#yLPJFMh{NT~DeEf;Suz-te0RG}US!8bNJ#-Q!dl(0tfC&a3Y z-hP+_CA495pdKUf*fx{^+J}tqLjUmCF_40m+lqi0xTP9!d>AUFQZ-U@P_9&0O5KLI zmC;OH0zW&QmP}Z713uW%IA>%-zRF63AUhoN5Wei@v9DY2{fYd&H;So5!2p29Uj>di zUS%6*J>MDx(eB|Fn*B7c&jC+^Ch^6;9?B2Y}XWBsJ;tU zDd{*sA=p4kjQgEg=i7fFRD1d57Ut`tqT!ag6O4E0!J}GmK0%FL_ecu|e3;IWD~vpc zsZz#k@H#jOd2PkfW;YUb#~@%K4db1!va_4Kn|$biB@IFYoqb&F7(j-77xC!;?Ex{^ z$Z4o1Jm1xa<17XxEaZa`K(LV7AcFbXwy3)*lohXRCo8JIat)PfBP~SiG$Rt~XH<*U zE2M}6o1-Vk$2r^1t5iJX&$a9+?-q;4`kJohx7Ljz#4AJLKqy0-y~K1fUVge>nT0c+ z?na#}J#Ke~xbTyi#Pi`g9~lE+@{MGqIzgKJHfxh0aFK!QH?02c2iW?}ddxm>?v_PJ z;S#Gl_84H#!&FaLZA)|Rgtyjpy6tJT8gxgZsc)@w{4wgj>h8Kh(eeU%N)RH>u&IB% zc!5?L`Egr5jutguppocz8pX0Z*)|(m5npC`<972ih|daHm<)m2KFwYlYx4>5ZSF5; z^DzC}fxi-oU0JCb>nt2K8ulKkF{W~TsyGXMJ|Q8nUuuo16}w~!L*Yxy0i%Yc9s>n= zi!Y(`!JUG-M6UV`=ScUTKzyjkA zDjQPv#^>run&mODhQu*}nERwnM5EIO24>KKg4Pr>$`kMXka`$M-p7k6&*4i|Du=TC zdC7iRO^g@E8(p2j+&G(JY$HeGAU^=20OP(ZRHH>zZ*XSiL3c?z$=mKMgvCHqddhYGaCX2FHiz}ycc%^^3mNkRZF z8NTK*K>A`>-++BU#taAo6jfzmFz6cOpXmiTK$Wi3{Oo)i%|hU~$jTel>AkbF>y=4+ zWbDuk2!`S1((gZ~%&}#au}$i}5d%Xft4n^t!O(?1m{<9+PO^G5EUZqt>D8X;P%xuz z%r2gLHsIIjR}43O^Vn0)mR1Xd5i|%rVY?#Q>M8&O^B4^c4NfSq7Pc6O%^58H%=CtA zI|>C9JuUV!dfdl?55BBH*#Uk*LV6$~GBxL_aj-Tay1+(#54cu#Zy#jc}a z+)+QM?s=#z%w{Y^Yl0UgOnaf0MGUllQrP7W9z0m;W3a*tDT@PKxq}?!D~_y0w!~so z1i`fAxZzkmu66K;Ixz;Yu1n+`)R)aB8AHb-V5&_nSD{f=U9;;^Om0}%{{_;sMNBUA z-DK(Zen%k_sI`e*=UAM(Q{J}Zs)R%3jc{PU9c$d)!>SCP4ozEyM1p^9g@-5(2Uf5Z zD8#S%?PBEj&oG(@x#BVO)d5<}=J$93#oE*#rkOY@~%{ zRRVh>dkmNQcaE`w%0Sdsx9$4rhzhJx7^sK^Ks<0EYGVj{PBJtWP=w3D6Ay`D*?DA@ zw9^5F1uM~e%!bfJ2cTAu)r6Zv6QnfPM2s0EsXL620T~vL7ELb#8l}zSI zOx9bP>6W0g$Mxgff7rg&CJ4k``jnYo(^R^$J0*}i-Y^S1VU3jFiSgAkyVDZToc}FR zbjg-D+$y=;FKYY-_HTCa8(>d#KilDoc3RqnNXb8T$`9S-FUDe5rm9xAB_evJV>tEN z!!IAYuE0XAsMWA?FvWqxyy;CJXelUReV10f)!#`vK3m9#zM2sFH5gE_UGCM;F{=e%kOWiT*09Z9z)Z~LIA2t@D~UoBVz1s&gG5uo?8_7E zF1sGlEAL^FvutW8a_HrjGZ~!YcVT2HnuO;lNjRgS%S?{7$- zkR6Op6d!-;9r|jlkm7eK_swwK8J$-nYq)(3?j=jrt$Hv5)!C3n)+Ki>V}TnNHNI|v zq003v9oS88hru)yGSnLelei57LOUnlYkzQm{u7??RlI^T=LID!wvIdC-+c$&>+?`)duCuk8|-pOft{o1 z4nW4m=uPHahH5XF2zFc+!E=+?zj>9X1Jrrkkbl^ezx0)$o1e%`Cx&ANV44W^21+n| zojl=iwAV~ah%9!cVcZKMTP;+Udq)S{TJ)JOHnzmV*N#;7!ecpn#IFBG>0J9lLYWu?%? zDfqs3G8-DHb>;z?gP96M^T~%T7R8s_J3A>{1~%Dv0>b5oz~#uYpTN47Jl z#!XPeU2?XW5Zmmbcd$+tm^AJsgNH`mB};9VBS&3Bxnpe$v7~<39B<2gyHg|jO~Rn8=?`A9`eVCXZe=hMq=yQSCRaoVG%vSl6{T@LxTIWZdQJ z)@;kXET2IK-@)=XoGCcpiwj^f*qqlBg7aUcJ}NaTN`)NeJN~SB?Zcl@;{f@jqH{S7+ER#fsdj8KQF@>Lb*|m0%7SK+Xszu?8}^ww)opO;2>S921iy-pU2d zw>_EMgWbYuGmps?HCTDwyKLzbJZ>xjr>5Z={z4z?BEP5Of`?g;XlC)10dA`5SCeXb z$Qq~h#u*95Z*|}pcL~5r}2fs}EfvglJ>kLsAl8(3T>xO^J z;=k6>l---AdFruBw3Mg7B59dli0jH(oO5u7tN%G)dE&b_gT};Kx2p+ZhTye5JNK) z%oa07VD|Mv1p38>1fH??sddhuRN?SmphEZZp^}U>6`6`~2{fX(46ZIZ5_pu4SrZqn zDZv4CHz36f*};7LBG{dC-XAKGi(j{@nmpZ#;GUA+ER*5@1q0!cy2cH<@a}es=)L9! zYBIkYJ7Q4s*g~g7US6f*Q$dsC%tYs_#2=m&%2Ze7Z=DV4mIm;n!GD4Zg+Bs`y1i&J zt5uo{F;QG=U?p3TFRWh5fpd7Z-`_;?SRKu+#4mqnGm^8w@$ww#uN9tc9KSyA(fKtcJC``-;(nkn!8zS zT67dcAn0lsH!{+fO~=m^N|;16KT%isd%7$}hnr#BWhSi9xP!~yXL{EDzW-Pp_wx6= z9mV7gqA}1pspW; z9f#B$YNoWE1-4gW^C}N-;d&4!i_xfLc4aSbhZuA`!=ly%0>z9C5YI7c2!GZ=11{#- z{qLS_tiiGbL3KZh{16AJgPkFuok@L>?O7+ z7(mU+9mlG?J)bqvIEQFd3=7wvV)VIVQR9eAi7Enl`P~M>V4#f_%rXx7%}Aq3ht!-> zs7!#I_%A_e0*Lx7B{WQ^lJWE9f;o$0gd~rcjK>2RCbl1@-_fT>8>JXG8L4)JLE_nKfOs=&RpC(R~Sc<9=P7?kVR zLcMMAI9gU+lQR2CwQi?{qk%v4$YGdHGrC|9Qk3bENfn89@Ofp=fIBh#i{TuR%++f{ zqjuuzzE_9mWpAyoEw;kikeoZ_8^cu`4$<9^7181LpKq$HfugRnVM0>0BnwT>y7&xS z`S9mun3Xb2SU{t^ClpfdaSp&bG(@b4xc2G3(pUnYnUdswlp+n{1yO6b`KGB(&@0Z4 zo(=-TY|Y+7iSP4^fwXQ2o2RZ(nkcTHX7hC`M7FCZV`m1`(?%hDqC#)Ga)I#ICYp)R zGbgBY#)cpZ*L3;N4{uD@xPI>e)AsS5E^x@9Vq5E^zNU!4wH=7`+Mn*-Qg0C88GKIQ zk-75lE$V5D;zdEJ9n@Bt8?9lh*!nz5wt6Q$-zK;)b{u_yWl*9^n$vu*$^^ImD&d?e zOOS`@APbUD+&;U<>^~}xoK@sKR|Brvh}c)~G(f+Dv+*qr!!fU$*R=DLAqR=oHOj*Q zc@ySBRMz0#zLgg8KJQFiK|nL}u9RmMo1v-U>jC*?cAT;uWnVTo<(mD-##uxt_v3Rs zZScN;M&UY`PgMJLS6)|34*DDa2F)B`NW?TKW=kHCCG_V_`gn!wnWbd4-TG zwPjn4Yzf_xf>+7D=0bPy3r8)o)G5s3fE)pAo1O47zcV(fQnteEt4-Y@Gy)SP?sZJD8GZ(d1=g@#w4-ecPU&TAf z&SghUJ9eUREs#VYdhJ6@^)m+S8sogh=RyN%tO4JRo!OGI9ZjD`Gk;sfn`q*#-#i0) z3hK#b>5uy(_icnHz&O}3*s-aAL_otxT9v$Vy^1$8e<;4(X*i;L??i~&2WU=9nyA=Y z>+rdgo;AZ(j;lZtoCjNxk_LXgXpB1$V0vAs%N$bOr}~Fzwmr@n&Fa=7_!uUKwycBx zB~+)WML7pAwWMr;x%~sX$+NC?2hgXCLRQz7<=hy|`XfmKRc$Z>$A)2rPQmmNGuCas z4cVki`_iE) zxm1&>pye8*S@+D8 zlY}3UCW5<-ONy5vJl@P^4nl?c1N-EZ(iQZ0_C;=VgOHW#!np!IIyx3$Re>ssNHlCo zM5cIbYQVZBIz$w5=^*p6N~xF|RSipCFOoCo4PgF7G*c?!j0h;eN!S?I9`A7de`)Vr zf6_X`0M4>?xVVhfW~*x{Y}r=Qt<}ZKz^brbx20-h&0@WPTB0s0;$;OLw{E7hAE>$| z3P!7O%VJ}v)7Ywr_H^|^TU1<`qJ@Zx1)X>p73EM+_nu6?>~DC#9w6boc`m=_d7n$- zjrX#YVVuRbkHf1o8s%B%f?{(~GiF#56_kigz4`l<97%D3X6@64#$I*Q0tVV8C-DgN zuf3JDlnfB!;$9VeCoxbwl3bSzYJYIdxv+(7qE4f(pD>RRFT5T?syzPoM-iXhpAC;Y zLKGTmFCRD1jd`5N%%Hic{zpg7-1?e(CnA65Z+4>KXZh9k#aGoQHOn=fQm>caI?5d=Bgb^g zW4fI*E0!i0M5IEYaA141!MeeiYczNqPt`mL{|%jh94&PG#0T{~oEjbxoT^P5LN?aW zn$5BIHZWc(1p&K5yPWl{+9a_j{rTL^4;tNUiDl5butt(PESeXaCao@fkcsX*R@yhz z;|&OtD}AO^#*8`6x$gJ0E6px7-!vUr#}yc--EKG2?f=8I{C>3psQLJ6w@0?p>nr0uKQVY5A;)n-qu4E)v1 z!dI5_AGRJoJlb(HdQ{JqWSP6m*R!?p2?3fjWp}7ls!%}dfu@r11#}b8O#s}0ZUVXqAO=^V zi-ax`$icf14ToN=ac93Go2v0*oRd9sn_b5j4aDAO;W*z!^Y1fOvrG0?Zyj zJOE+To@c@^D|Kq{1oX}~k9qCQE7=nNN<=KQY9j7wC{}&I2 Bg_!^V literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png deleted file mode 100644 index c672107de345019df890154f7f81639f0d2f4966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54127 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�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

P`_{5|4maklQ*8 zd&EekuZ2dbPVO;qy_B}dCAPMLt6QEjveOQmuMb%qTiK1ovGW*p&ydIKI{Sxs>ki*U zEBW1NB2hxQ)4L_B<@nLPWx&6y!>jh(_V4I5a;uY*RDr)8d-XE4zp?S9W0>*m+g}!+ znTMDCihFF95Y)g(s9xt$<-E$_;(CHQej%%Rtlr<_K_z+lQA|vxWXW3Qi{pqt7fs}2 z*00Vr;6ylwi0LTR7?eX$xKNzp86T?J)t|Cl`iS{$;tb@tVd8SP)&Z?(s(^?jb_fkI z66uas|H=MC-@mG6q__v|>$JbJ#y=g^Lt zj(XsH&Sval=lA^wKkwVjFL5x7X#LWo%U7<0YZkcdKAL$p=GBa>nRDw7(qXzEe19Qs${ec5Fql1|S-7(rU zaaH7ayn<$|sVdH}z5mzEO5ZAA*4UdE{w84e=@Ukr2h;#FiV2@&@qJ?;}P2Ih%@x)XAdp(g3Fcps7J9Cx*jl z3A<(G>&35st!w#pbHc#8`$ceDXY>m- za77wxk8XJf6n|Ch*)>$T>eCT0@b)a)#nHm}tJ`*;7^dG6pZ&V0-4PNGA zBO{o*-TDN<7oB+(>YFiw_T((VsVN7O7LdSEdYJUo=C~K=MqVz80$!VA!G<@5)!yRD zQ~O^4`}^wr4iId=T#V1Qam)_h#^SLE&S%_Rx;~%BA~=t9am2+Y%>W}DHv!h@-HW2P zz-~%9w24!NZYp`lJBj-9@ke1byXsB;9*_-~P{)X!NQwi$Tbdc?&7tDZ?fx+j!p4^~ z^NHOjfzCxVL8mXzN8Z$IsIKq5^Q}b&d8{gfp1I!gY<2$O&?CPQ)$OXrM*~L#t~8ZE z%2(aR9JOX<6dh8+hvhrC+k*o?dxA)uIzkS}ue_DMQO8u@=TNrIRF=nR#*zJ?N8kd2 zYD?$w+?D8WHU_XYw?{0!;{)#qgV!A~*ZYQjbFJiNZ{t^(fnVHfWHul3gHtW9;|MX& zi9?ERd1H6zyUXGGUatleeRo=1&2Rz)@9=CTchHTaH~o5}lVf2zwPLeMLX_<3+(I|& zcQot%2d^T@t>VSnAdaJNyV@agyB+==+o2`a5e=|XdYlT6BoSj*jla1o5q)%$oNut; z(P_)`dZI!spX$lJCiG<2^%%<#tP5;*gLtF&O7ZIdejhGbTUl9+07U)fY8ro$&}t6(`J<5c zdoF}*@BLjXnxGLn@{tzoVJ{#{)Ypt71usYF(_E{h&)abbR0Ydl5|wz-^78VF4|bZx z&>cmBl$$)7?m^l>3tI;0Nhcx0zur`mML6wO_cE)>&z`#H&l-}BwSE!0@E}VmSHIoY zK&|zJ>ib6gR^?hu6RDHgjjN!kE_g(=Rc!VUHzLXdQ)J^k$&L}{x=MD-8ud*t72qVy zCnMj*E*(1aaeo)T!$A@ua=KYaP7MDz>)(S?h0I4?@j9;|Z1_ZA=hH~#nVsepBCDkA zFwDlF-8Ku0Bl`Z#^DZtf7S_AMmpTc=)q*1zK-)J(NBld98yC(SJ(Ll#j`194n4c8; z7K}IBi7(fMudn3kdI14>Vz=b#(c(F3NkpSDg5b0XlcsG1(Nl-}?;2I!`0<*R{DVia zJAXLI3V1-_BP?DWFKTORtvK#>ulS|6d&@0s-6E9yS1h_h(;;`O8WMD00pn*w2~n&E znB7x5b;Xkbb&>!09Urp-4XWs7OTI-xpiQcFkWYafsdnt5xhL-SR6!)p9!ZN3QH!ef z3X@07+A2~?9SMxR7+tsz7PqF|-9T;fMCNfH`ycORh!&c+ZJM@r3^}Nh!Y>{(o{5R| zU7NN54rS&5#0C?S5fl`pUxY$VAwysRcMExJm(s~$aAhYwg+&3zo639{FE^3%1zNR0 z?5204WxE*c{<=VBFXSDN&ek+&uOAZL*-7!v)8EuTF&37 z^kkwMZ}Cof&IVj4tuMnguZz|hidXDxmknMxvsK%DYctX?YrXUgqtF%_PS%~mQUc~Y z-{o!8eqoR(Q&QaDcqRYZa@JpjpH%OT{aU#0csgY&Ex+P>FVLUeCqu{#nR*tfe$o?X zq!gvyv#lclued`icwtP@!qe_me*TuCTLn;C-OoH4c2>LiEBX^|Ns$W{+hx(sqHx;{ zH+vNM4Vhi2>0~_^gE-=G2cz!^Ncms-`<;XXrM+3Egh<@qJrQf;nh&58PB7(CuIF_ISx1}zUK~k_Vi(Y)6m6H z`DJe)3x`rHK!%q+^klLlnf%6WS1XX0JFTYZSnw~n0C2G@?C3&+nq`WP1Nex+{~?kp z_m*;HC-ocxip}<%xb<`Vl(Ta|Nvg zbd^^uBH-XtH*bd>;ojY<(JJ)uxp$N*8uv6a6t6|*C+)2xopG_UGF%v2Ng;zPSZ%<% z;3}g7j^S{gNq!h&mFblJm5Yx$00CnW&QJ5lDM8My}z$r}barVCI6Rb36yNOaY{GnS_)4J%hkH<@Wc zO@WdTV9ECS80Dr$w`O*yGv*}19zCXT*}3L7EdsW4lvLtUU#K(Ba`6uR}W8&V1> zWv3J+&(?R}`(l#saymOjHJ~_j$R&BoVUR+*m3g+}0jNb&_Htp5PwM&9s775hYD}$@ zJ%X%P(o;RaKj_x|BPX7h4sYp9(NRC;y-u~t&N5Am1E}sKtFkJ4gj)H;qnk@nnr!e1 z_ zp+g&G`?kFIXN^es3%#v$Ogi`6y_a6~eXo-$bi4*i#sgLx0%;*R)e~hG8AG0uZ*^(H zl7%wrK?{&f%7NZ=qFK5@zfgccjQajl=lvf$g}9I& ztfo>vSP;Ho|7bddlFPdG(dtF{Kk>r0-j-!uH@&)j z_?Nt7{@b&%YSnQe;PFeLwKv^2(;x1^9!|VF+ouLwUpB@^kl-KASOXe55<+O3#?#QD zpdL|rYvx0WudMOf^Xbvy$2{f78!it{Q!2%n`O?zH@_ip$UP^xr;aYq z3E|ZtSr^iPYRw`T?*aB(uaNRY;QnUNN`k&qXNg zoS<9QE6F4(1h4&}Zvi=#w)pP@KRo$lJU>}dRQZ5CNK5&kLMcr8TdC^dRn28%Ko}t1 z&#kfchqS^F(txe1r;b9%fy2b3CK$|?{ITl8u+V*tS_2=sK?KV{-5unW->u#r4{Mi; zL(w2vJiL9ce%XCgVc4S%!4UL)N(J*#jBST9z6DhiL?0@Zd&WMfc^i<5x2G(EzhbCyUlaXWDI%<4PzM&2+=NA3E`yu(5;dnk?2S(VHObfgDj`1N8R7LhjFKB@G=MpLwW zG24Shi*$BID@P4~6e4MfH?+)R0W>)+Ugx3rPaw;6Clu)l?bx9eU^nh914>6v|1@{T z8Ph!r*@Z>i62zmGq*p+~r|V*B;40t?XBLPy1z;8pRXj~?N-j_jX^ zQVqk~3in&aP4@o@$=yf0_5g>tnA{k4UGgpV&Smba18mg`It~y9gXfUYzf1gg(g{@H zvEcfmsOFVxfXb5rX$Hb zS`fyhe*K^`6!Ui4^;o*GR@v75Zs>H*U6$??%_;9ti0)fFduGJS}P`uql9nsi3&&-)ua#$KyxWb80S2xH;KEN`M)lfV6Hr9 zYwqgihmg~rgHwAcFF=sEqdA%y&nVuFDq5iIku?L}y<|csBf78xB&TTI-IzC7u| z0GX6o_8p%(k_eM+^NJS$`1W3G$nb6*N%*8EMsvLeF?HX7?ca1HC%YZDUF+2D+Jh*l zEdHEM-~zpB%qB9Z#$P7g?9$gtgG~Dz0S$fLxPJ_ZuXu&$7?@A3kf1l;g`S>2oH(xP z=?a==20&=HDLuirx<}SN<@CJbbD(?VkuUMP{)*pw#VaqI{?_TF?pX3wwVr);XTi51 zAa_$q)ON#?Cf|-l#Sz-)$jN#IM`NeC-d|ITp0HG>*iDg(Kns}rh^k2rDAYOWhVv}q zmcilkCLxCpft$ENGRH{{I*4TL^l9gsiG~HFUtGNU(KUYpZ^-=1m%~Gqzm8| zSBGqBjpg{U@l=7!*M;Hdu3LKGOPi~NGqo(%<>9{pHdG@1mH#4H!{K@#3+XNTkl5T8 zIsYI)i=noS1~0Dqlta6~`St75nD(+e9&b#|vgbu_)35EmYX%B9)j{o#Qpi!8Ws^ia)u9np z^dqF2eOL+AEY1!xk*X21A&+MS{rcnIO6D3RIb(}Z^Q44Du!rv)b*%s1r+#KCg`92> z5O;RF@nM$;1l(zFH|P#VH!*;Ax+Mrue#q=68miqOZ}Jt(D6}E%A<1$)h9bC4;|@R? z!PASV!9X!`B)A?_rK{)H_r|UBkzt(~S$VNl1Yi+AKT{|i&yj>%SunbuY3quY zsEzVlhdq0YoEt@4&pSe(l`N!{)b?QCf_m440bLLgC7}$6sv(j>L+NhCYTW@3mUorS zWa!obyhOyhOocp!Hnog&ugHMRe(0=sorS4|Cs6XH2hQfn5Rx@9Du5Ys;zAQcAi7JS zxf*#B`leo4jATK`1(TLvuzICqi^$uxtBUlhGR03D{Gj@te|DkcNJ>pj&Wgp@1EEOF%OE#By6tUoSa@b!Hl|1O)7m?kOhhA9$F zkD(6s{ylME+Sj?mpiK@FD{@=WaI_a!%Nym*QKXW0Ok@5hpixw4u<=JV?e(cwi{N)) zh(i@@NXSbsrst2n96?p)D&J6}QJXd^+h`UzhIdu^ini&V3i*iyN!Z#uyr_U?6?!@R zH&@)$IZtHhfFS^p`G?jfooV{&8ugz(gf{j?jEOj&EBXj^;nt$%EnNWa?`>?H8amG$ z2cJn+Xk6-#)J)4|PbO1!_39y#Ut^h=qTzT{(Oe-RCf~a$kSz?_n}iX~QlU?tNXK&S zD_|0^5v&nNU`&T@nE9X~r>ro6q`W0&98vjF*jfjsGl9no>VC*#MSXN@sbONSlqAlV z_t3Q5uQIGVAH&YI$n{~WCR&j)LKjj=~Wti^DtDeb-v zo|hOuoE*IW7h>>eTUz#(seX!{_@Jv$Q~99SJFjm9qX5k!4a zEE{pSJD7@_n7F7JU+Ebi&wfPc9+n(<9uU6LtQtqo41RHg%tspYgPLJlNvHj;DrxyT z!SD+ea8q1?ZQUuDeq|x`tLz7{s4jw$4CafSImp)k2Iu2I5J_5HAy z_H8q$cOU~o=qjJsWXDi775qeO_2d&Y12*aCnk`a)oG0v&zdV=`(z^#~@dX3A6U+dd zFlM~j`L)?br;e#EsM0lCKH=tLVH&9)*A1mQOnxjTiaP;}S>pk&O;UG8=JJpyfvJOE zv~ItD4KsR4^6J)Y3DGJZC(fKRDZqs|%q3C2Gfp2ZlN@9t1(7(|V6FT0g14upPQ3AU#`yYSOAGnkPnHYndSjZE`#P~Xs zpQr}N`nj>CmsYzA?6^{T)vCv=tV&?9b6c3+Bq?gn?I(=eH|s+woz8h+Ok;# z`oEj-rRuGMJ*V$BuC*sO$|d8Obu!l1k2%yHjaX&Tb;dYMp&BCyx<*P$23ZD+c`PA{ixePwgRr`N%Xo zg0Rs5{&q7@a-?M+&$^=_&`TbHVc8TRpRD44_Y$;-yv@j5kAFPQ*=5&vAF_4+ z2>1u#F(vZrjRNUL4dTpUv0n!Qp-u{Y^87|sDg6K>E9wSbLO`m>@yia2gLdF@^3?&N ziv1@us!2Dg=sKYat(SG!kjBX2KTf*5srFs{a%F5ZFn%;hb>!2s3SPJv+N`4X(R}v@ zJ>uB&qpQ%s)@WFW3|@B6(GhG2hrSIX+B!n>!Ca+vzBzT;BDxh(ZK7~kZ+|guaY?rC zd(l{%q^$jeM%~H;(#!q`a{$W0ufOo+A5_p)|5MrTZPOxqxjPZs>o8G5Mu|&<1vA)V z>rCF^I(h`)A0^^C+=N6%j!u-j!WdCi*HHp~IlUj9A`VN}jJ% z5Tzk=5@0(cdM{$l9V;sT(>z6k7x$6#|;ne zcLJ3X-(DFe`T38n4&HVElc)yMaSVUA@RzNeLj5YYe;V{g+<^lch7zG-$n;<5P|W8W zWn+*jx%E{xx^HbVc&kr7pJdby0EP7^t~&^D1?V!Rpr67CyN*_?B0jmT324NJC&Ry( z%p~(waB~)%fp8d^ifhR3j1aKVnt=e}_@wsi)w^?pbQ5wfNJ9>576F(Qz#h^uhR(pm z<(%|ARC=)GrSwyUy#nE9>>|nVB+~wHhE9K;wQj`HPPaBQn1oZ6tS|?F%AJI#*H+Hp zzIrkdu6*3dMEJ=R6*J7K))ohL90R#7?Zl*EC@~aK5%y5bzC*ymgXs##D#zxZ1>KXr&6jn_p!+As!h~cu zEpFOAa?lKjr}Y@#ImkSM^K6BCS6KFk|0HGGV5&1MsGH~n0<*rNMBO%M272Bd0Xa)e zWLXdl#fKaI({M8q;CW>6JK5rd&kb;xgV`f|bOs<)=aGTZMH(J&j+B&8sOCl1@+`aF zf8g89`p2YXg1iC}1~mZg(L(0y*7y1(Kn*@RR*jo0HLahiuw+zNntOBCtpK8`N}&%U z0l%_e^s{K;X7dZEb`OTIW0ufV5A}W|=HEnOeyBn0VbO_9y_;bpcNmv-2xNjXdc_}U z7J{Bl0tyop-c?eIF&_H;zz=3f`9g*sTTF~~v%u7NrRmQuXFJnYO8W`Hrv0~(X%FY| zH}^}OCfh;m$J+~_QUH*YVJbHMFM(|0{AlgtyP?S7$y466GvFz41NAQcKp1_9I}lD7 zz;X6Hzx`G=VvSJ^ zN>!dJs>o4pbxD>>CY^v|vJc=pZf9jfdj9L2WRx;faw|8>vv+w8BwECOo++C;sl|T1*CR z_38Ncfi`RRcF50{8%AHWAv)qu&z>lTWW%K+Bfh=89g?)sEVMzmYO&jwC$CWAzW&U} z^(bdaq{PjDW+3 zG68+(^B2EM3BNW-*8r#rrFI})1Mmn^JCLpcn89la(V2|MYix)T7Mhk8AOCXKm;Vq! z-v8(F;*EXJL5E?(2AhA~M*i6#{qbksOzE;n%>hosJ?SZtdIzajlpX_Vkd!6|(r6&f z6_HaQ&5@<017Zf!l1W-gf*D9lMQN!BW+2Uxr8zPZ6{G-~6hH$rkR}JxWoS8|{Pd6g}8!}WgC;$Ke diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs index f1de24ed581a..01efb55c5190 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs @@ -1,6 +1,6 @@ namespace Maui.Controls.Sample.Issues; -[Issue(IssueTracker.Github, 1418, "Shell top-tab unselected text should remain visible in Material 3 light theme", PlatformAffected.Android)] +[Issue(IssueTracker.Github, 1418, "Shell top-tab colors should follow Material 3", PlatformAffected.Android)] public class Issue1418 : Shell { public Issue1418() @@ -39,7 +39,7 @@ public Issue1418PageOne() Title = "Page One"; Content = new Label { - Text = "The test passes if the unselected tabs are visible in view.", + Text = "The test passes if the selected and unselected top-tab colors match Material 3.", AutomationId = "Issue1418PageOneLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center @@ -54,7 +54,7 @@ public Issue1418PageTwo() Title = "Page Two"; Content = new Label { - Text = "The test passes if the unselected tabs are visible in view.", + Text = "The test passes if the selected and unselected top-tab colors match Material 3.", AutomationId = "Issue1418PageTwoLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs index f2253f688f62..872b5b7ab5ed 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs @@ -11,11 +11,11 @@ public Issue1418(TestDevice device) : base(device) { } - public override string Issue => "Shell top-tab unselected text should remain visible in Material 3 light theme"; + public override string Issue => "Shell top-tab colors should follow Material 3"; [Test] [Category(UITestCategories.Shell)] - public void TopTabUnselectedTextVisibleWhenSwitchingTabs() + public void TopTabColorsFollowMaterial3WhenSwitchingTabs() { App.WaitForElement("TAB TWO"); App.Tap("TAB TWO"); From f4e56715263a408dacee0eac48879e5eb26f3832 Mon Sep 17 00:00:00 2001 From: SyedAbdulAzeem Date: Fri, 24 Apr 2026 17:33:36 +0530 Subject: [PATCH 4/5] Fix Android Shell top-tab unselected text visibility in Material 3 light theme --- .../ShellTabLayoutAppearanceTracker.cs | 50 +----------------- ...ColorsFollowMaterial3WhenSwitchingTabs.png | Bin 60532 -> 0 bytes ...UnselectedTextVisibleWhenSwitchingTabs.png | Bin 0 -> 54127 bytes .../TestCases.HostApp/Issues/Issue1418.cs | 6 +-- .../Tests/Issues/Issue1418.cs | 4 +- 5 files changed, 7 insertions(+), 53 deletions(-) delete mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png diff --git a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs index b25f6404fbf0..ec04c19b1dc3 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellTabLayoutAppearanceTracker.cs @@ -1,5 +1,4 @@ #nullable disable -using System; using Android.Graphics.Drawables; using Google.Android.Material.Tabs; using Microsoft.Maui.Controls.Handlers.Compatibility; @@ -37,57 +36,12 @@ public virtual void SetAppearance(TabLayout tabLayout, ShellAppearance appearanc protected virtual void SetColors(TabLayout tabLayout, Color foreground, Color background, Color title, Color unselected) { - var selectedTitleDefault = GetDefaultSelectedTopTabColor(ShellRenderer.DefaultTitleColor); - var selectedIndicatorDefault = GetDefaultSelectedTopTabColor(ShellRenderer.DefaultForegroundColor); - var selectedTitleColor = ResolveSelectedColor(title, ShellRenderer.DefaultTitleColor, selectedTitleDefault); - var selectedIndicatorColor = ResolveSelectedColor(foreground, ShellRenderer.DefaultForegroundColor, selectedIndicatorDefault); - - var titleArgb = selectedTitleColor.ToPlatform(selectedTitleDefault).ToArgb(); + var titleArgb = title.ToPlatform(ShellRenderer.DefaultTitleColor).ToArgb(); var unselectedArgb = unselected.ToPlatform(ShellRenderer.DefaultUnselectedColor).ToArgb(); tabLayout.SetTabTextColors(unselectedArgb, titleArgb); tabLayout.SetBackground(new ColorDrawable(background.ToPlatform(ShellRenderer.DefaultBackgroundColor))); - tabLayout.SetSelectedTabIndicatorColor(selectedIndicatorColor.ToPlatform(selectedIndicatorDefault)); - } - - static Color ResolveSelectedColor(Color value, Color legacyDefault, Color resolvedDefault) - { - if (!RuntimeFeature.IsMaterial3Enabled) - { - return value; - } - - if (value is null || IsSameColor(value, legacyDefault)) - { - return resolvedDefault; - } - - return value; - } - - static bool IsSameColor(Color first, Color second) - { - if (first is null || second is null) - { - return false; - } - - const float tolerance = 0.001f; - - return Math.Abs(first.Red - second.Red) < tolerance - && Math.Abs(first.Green - second.Green) < tolerance - && Math.Abs(first.Blue - second.Blue) < tolerance - && Math.Abs(first.Alpha - second.Alpha) < tolerance; - } - - static Color GetDefaultSelectedTopTabColor(Color material2Default) - { - if (RuntimeFeature.IsMaterial3Enabled) - { - return ShellRenderer.IsDarkTheme ? Color.FromArgb("#D0BCFF") : Color.FromArgb("#6750A4"); - } - - return material2Default; + tabLayout.SetSelectedTabIndicatorColor(foreground.ToPlatform(ShellRenderer.DefaultForegroundColor)); } #region IDisposable diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabColorsFollowMaterial3WhenSwitchingTabs.png deleted file mode 100644 index 02ec2981ed9c7eee038b145a166c454e0170af92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60532 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 Bg_!^V diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android-notch-36/TopTabUnselectedTextVisibleWhenSwitchingTabs.png new file mode 100644 index 0000000000000000000000000000000000000000..c672107de345019df890154f7f81639f0d2f4966 GIT binary patch literal 54127 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�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

P`_{5|4maklQ*8 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 literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs index 01efb55c5190..f1de24ed581a 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs @@ -1,6 +1,6 @@ namespace Maui.Controls.Sample.Issues; -[Issue(IssueTracker.Github, 1418, "Shell top-tab colors should follow Material 3", PlatformAffected.Android)] +[Issue(IssueTracker.Github, 1418, "Shell top-tab unselected text should remain visible in Material 3 light theme", PlatformAffected.Android)] public class Issue1418 : Shell { public Issue1418() @@ -39,7 +39,7 @@ public Issue1418PageOne() Title = "Page One"; Content = new Label { - Text = "The test passes if the selected and unselected top-tab colors match Material 3.", + Text = "The test passes if the unselected tabs are visible in view.", AutomationId = "Issue1418PageOneLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center @@ -54,7 +54,7 @@ public Issue1418PageTwo() Title = "Page Two"; Content = new Label { - Text = "The test passes if the selected and unselected top-tab colors match Material 3.", + Text = "The test passes if the unselected tabs are visible in view.", AutomationId = "Issue1418PageTwoLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs index 872b5b7ab5ed..f2253f688f62 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs @@ -11,11 +11,11 @@ public Issue1418(TestDevice device) : base(device) { } - public override string Issue => "Shell top-tab colors should follow Material 3"; + public override string Issue => "Shell top-tab unselected text should remain visible in Material 3 light theme"; [Test] [Category(UITestCategories.Shell)] - public void TopTabColorsFollowMaterial3WhenSwitchingTabs() + public void TopTabUnselectedTextVisibleWhenSwitchingTabs() { App.WaitForElement("TAB TWO"); App.Tap("TAB TWO"); From 79c900aa4f0028cfbc0eccd50dab208b8abad8df Mon Sep 17 00:00:00 2001 From: SyedAbdulAzeem Date: Fri, 24 Apr 2026 18:40:06 +0530 Subject: [PATCH 5/5] Rename Issue1418 test case files to Issue35125 and update identifiers --- .../Issues/{Issue1418.cs => Issue35125.cs} | 24 +++++++++---------- .../Issues/{Issue1418.cs => Issue35125.cs} | 6 ++--- 2 files changed, 15 insertions(+), 15 deletions(-) rename src/Controls/tests/TestCases.HostApp/Issues/{Issue1418.cs => Issue35125.cs} (58%) rename src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/{Issue1418.cs => Issue35125.cs} (76%) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue35125.cs similarity index 58% rename from src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs rename to src/Controls/tests/TestCases.HostApp/Issues/Issue35125.cs index f1de24ed581a..dc890557f013 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue35125.cs @@ -1,9 +1,9 @@ namespace Maui.Controls.Sample.Issues; -[Issue(IssueTracker.Github, 1418, "Shell top-tab unselected text should remain visible in Material 3 light theme", PlatformAffected.Android)] -public class Issue1418 : Shell +[Issue(IssueTracker.Github, 35125, "Shell top-tab unselected text should remain visible in Material 3 light theme", PlatformAffected.Android)] +public class Issue35125 : Shell { - public Issue1418() + public Issue35125() { Tab shellTab = new Tab { @@ -13,18 +13,18 @@ public Issue1418() shellTab.Items.Add(new ShellContent { Title = "TAB ONE", - ContentTemplate = new DataTemplate(typeof(Issue1418PageOne)) + ContentTemplate = new DataTemplate(typeof(Issue35125PageOne)) }); shellTab.Items.Add(new ShellContent { Title = "TAB TWO", - ContentTemplate = new DataTemplate(typeof(Issue1418PageTwo)) + ContentTemplate = new DataTemplate(typeof(Issue35125PageTwo)) }); FlyoutItem flyoutItem = new FlyoutItem { - Title = "Issue1418" + Title = "Issue35125" }; flyoutItem.Items.Add(shellTab); @@ -32,30 +32,30 @@ public Issue1418() } } -class Issue1418PageOne : ContentPage +class Issue35125PageOne : ContentPage { - public Issue1418PageOne() + public Issue35125PageOne() { Title = "Page One"; Content = new Label { Text = "The test passes if the unselected tabs are visible in view.", - AutomationId = "Issue1418PageOneLabel", + AutomationId = "Issue35125PageOneLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center }; } } -class Issue1418PageTwo : ContentPage +class Issue35125PageTwo : ContentPage { - public Issue1418PageTwo() + public Issue35125PageTwo() { Title = "Page Two"; Content = new Label { Text = "The test passes if the unselected tabs are visible in view.", - AutomationId = "Issue1418PageTwoLabel", + AutomationId = "Issue35125PageTwoLabel", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center }; diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue35125.cs similarity index 76% rename from src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs rename to src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue35125.cs index f2253f688f62..6e40b7f573f8 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue1418.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue35125.cs @@ -5,9 +5,9 @@ namespace Microsoft.Maui.TestCases.Tests.Issues; -public class Issue1418 : _IssuesUITest +public class Issue35125 : _IssuesUITest { - public Issue1418(TestDevice device) : base(device) + public Issue35125(TestDevice device) : base(device) { } @@ -19,7 +19,7 @@ public void TopTabUnselectedTextVisibleWhenSwitchingTabs() { App.WaitForElement("TAB TWO"); App.Tap("TAB TWO"); - App.WaitForElement("Issue1418PageTwoLabel"); + App.WaitForElement("Issue35125PageTwoLabel"); VerifyScreenshot(); }