Skip to content

Update build conventions to 0.14.0 - #1767

Open
gpunto wants to merge 2 commits into
developfrom
chore/build-conventions-0.14.0
Open

Update build conventions to 0.14.0#1767
gpunto wants to merge 2 commits into
developfrom
chore/build-conventions-0.14.0

Conversation

@gpunto

@gpunto gpunto commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Goal

Bump streamConventions to 0.14.0, which renames coverage.sonarCoverageExclusions to coverage.sonarExclusions and wires it to sonar.exclusions instead of sonar.coverage.exclusions. Part of AND-1362.

Implementation

  • Bump streamConventions 0.13.1 → 0.14.0.
  • Rename the streamProject.coverage property to sonarExclusions.
  • Re-record the CallLobbyTest Paparazzi snapshot (see below).

The listed paths are now excluded from all Sonar analysis (coverage, duplication, issues), not just coverage. That is the intent for the binaries and generated code; it also drops core/model from issue analysis, which is acceptable since those are plain model classes already excluded from coverage.

Paparazzi verification was silently skipped

0.14.0 also contains conventions #59, which makes the Paparazzi plugin check lazy. Before, pluginManager.hasPlugin("app.cash.paparazzi") was evaluated before the module applied the plugin, so it was always false and testCoverage only depended on testDebugUnitTest. Now withPlugin wires verifyPaparazziDebug in properly, and since CI runs ./gradlew :testCoverage, snapshot verification actually runs for the first time.

It immediately caught one stale snapshot: CallLobbyTest differed by 23.26%. The committed image predates #1721, which made CallLobby overlay DefaultMediaTrackFallbackContent until the first frame renders. Under Paparazzi no frame ever renders, so the loading spinner permanently covers the inspection-mode avatar placeholder the old image captured. The new snapshot is the correct output of current code, not a regression from this bump: re-recording on 0.13.1 produces a byte-identical image.

Testing

  • recordPaparazziDebug on 0.13.1 and 0.14.0 produce identical output, confirming the snapshot drift is independent of this bump.
  • verifyPaparazziDebug passes with the re-recorded snapshot; 83 tests, only the stale one was failing before.
  • testCoverage --dry-run shows verifyPaparazziDebug present on 0.14.0 and absent on 0.13.1.

☑️Contributor Checklist

General

  • PR targets the develop branch
  • Assigned a person / code owner group
  • Thread with the PR link started in a respective Slack channel

Code & documentation

  • No client-facing changes

Rename coverage.sonarCoverageExclusions to coverage.sonarExclusions,
following the rename in GetStream/stream-build-conventions-android#72.
The patterns now apply to all Sonar analysis (coverage, duplication,
issues) rather than coverage only.
@gpunto gpunto added the pr:internal Internal or infra-only changes label Aug 14, 2026
@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

PR checklist ✅

All required conditions are satisfied:

  • Title length is OK (or ignored by label).
  • At least one pr: label exists.
  • Sections ### Goal, ### Implementation, and ### Testing are filled, or the PR is bot-authored.
  • An issue is linked (Linear ticket or GitHub issue), or the PR is bot-authored.

🎉 Great job! This PR is ready for review.

@gpunto gpunto changed the title Update stream-build-conventions to 0.14.0 Update build conventions to 0.14.0 Aug 14, 2026
@gpunto
gpunto marked this pull request as ready for review August 14, 2026 09:55
@gpunto
gpunto requested a review from a team as a code owner August 14, 2026 09:55
@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: cb893030-b58e-40a0-8474-b30b407911db

📥 Commits

Reviewing files that changed from the base of the PR and between d82741c and b96f3ff.

📒 Files selected for processing (2)
  • build.gradle.kts
  • gradle/libs.versions.toml

Walkthrough

The build configuration renames the Sonar coverage exclusion property and updates the Stream convention plugin from 0.13.1 to 0.14.0.

Changes

Build configuration

Layer / File(s) Summary
Coverage and convention configuration
build.gradle.kts, gradle/libs.versions.toml
The coverage configuration uses sonarExclusions. The streamConventions version changes to 0.14.0.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to b96f3

This PR updates the build conventions and broadens Sonar exclusions as intended; no actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: rahul-lohra, pratimmallick

Poem

A rabbit checks the build with care,
New names hop through settings there.
Exclusions stay in their place,
Conventions gain a newer pace.
Hop, hop—configuration is ready!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the primary change by identifying the update to build conventions version 0.14.0.
Description check ✅ Passed The description covers the goal, implementation, snapshot change, testing, and relevant checklist items; omitted UI and reviewer sections are not applicable.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/build-conventions-0.14.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gpunto
gpunto enabled auto-merge (squash) August 14, 2026 09:57
@github-actions

Copy link
Copy Markdown
Contributor

SDK Size Comparison 📏

SDK Before After Difference Status
stream-video-android-core 12.29 MB 12.29 MB 0.00 MB 🟢
stream-video-android-ui-xml 5.70 MB 5.70 MB 0.00 MB 🟢
stream-video-android-ui-compose 6.19 MB 6.19 MB 0.00 MB 🟢

The committed snapshot predates #1721, which made CallLobby overlay
DefaultMediaTrackFallbackContent until the first frame renders. Under
Paparazzi no frame ever renders, so the loading spinner permanently
covers the inspection-mode avatar placeholder the old snapshot captured.

Conventions 0.14.0 makes the Paparazzi plugin check lazy, so
verifyPaparazziDebug is now actually wired into :testCoverage (it was
silently skipped before). Without this re-record, CI fails with
"Images differ (by 23.258430%)".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-recorded, not a regression from this bump.

The light avatar placeholder in the old image is the stream_video_call_sample vector, drawn by ParticipantVideoRenderer's LocalInspectionMode branch. The new image is DefaultMediaTrackFallbackContent: the baseSheetTertiary background plus a CircularProgressIndicator frozen at animation frame 0, which is the faint speck in the centre.

Cause is #1721, which made CallLobby pass fallbackContent = {} and overlay the loading content while !isVideoRendered. Under Paparazzi no frame ever renders, so onRendered never fires and the spinner permanently covers the placeholder. The old image was last recorded in #1534, well before that.

It surfaced here because conventions 0.14.0 makes the Paparazzi plugin check lazy, so verifyPaparazziDebug is finally wired into :testCoverage (previously hasPlugin ran before the module applied the plugin, so it was always false and verification was silently skipped). Re-recording on 0.13.1 yields a byte-identical image, so the drift predates this PR.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@gpunto gpunto added pr:ci CI / GitHub Actions / workflow updates and removed pr:internal Internal or infra-only changes labels Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:ci CI / GitHub Actions / workflow updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant