Skip to content

chore: update kotlin to 2.3.10 and target sdk 36 [WPB-20393]#4590

Merged
MohamadJaara merged 17 commits intodevelopfrom
mo/epic/update-kotlin
Feb 13, 2026
Merged

chore: update kotlin to 2.3.10 and target sdk 36 [WPB-20393]#4590
MohamadJaara merged 17 commits intodevelopfrom
mo/epic/update-kotlin

Conversation

@MohamadJaara
Copy link
Member

@MohamadJaara MohamadJaara commented Feb 10, 2026

https://wearezeta.atlassian.net/browse/WPB-20393


PR Submission Checklist for internal contributors

  • The PR Title

    • conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • contains a reference JIRA issue number like SQPIT-764
    • answers the question: If merged, this PR will: ... ³
  • The PR Description

    • is free of optional paragraphs and you have filled the relevant parts to the best of your ability

What's new in this PR?

Issues

#4575
#4576
#4577
#4578
#4579
#4587

Dependencies (Optional)

If there are some other pull requests related to this one (e.g. new releases of frameworks), specify them here.

Needs releases with:

  • GitHub link to other pull request

Testing

Test Coverage (Optional)

  • I have added automated test to this contribution

How to Test

Briefly describe how this change was tested and if applicable the exact steps taken to verify that it works as expected.

Notes (Optional)

Specify here any other facts that you think are important for this issue.

Attachments (Optional)

Attachments like images, videos, etc. (drag and drop in the text box)


PR Post Submission Checklist for internal contributors (Optional)

  • Wire's Github Workflow has automatically linked the PR to a JIRA issue

PR Post Merge Checklist for internal contributors

  • If any soft of configuration variable was introduced by this PR, it has been added to the relevant documents and the CI jobs have been updated.

References
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

@AndroidBob
Copy link
Collaborator

AndroidBob commented Feb 10, 2026

New ADR(s) in this PR 📚:

10. Tablet dialog navigation parity after Compose Destinations upgrade

Date: 2026-02-06

Status

Accepted

Context

Before the Kotlin/navigation migration (commit 18a563754), the app used DestinationStyle.Runtime and AdjustDestinationStylesForTablets() to switch 17 destinations at runtime:

  • tablet -> DialogNavigation
  • phone -> SlideNavigationAnimation or PopUpNavigationAnimation

After the migration, generated destination styles became immutable (val style), so mutating Destination.style at runtime was no longer possible. This caused tablet screens to be shown as phone-style transitions, and not as true dialogs.

We also need to preserve:

  • true dialog presentation semantics on tablet (not only animation changes)
  • existing phone behavior for the same destinations
  • one source of truth for the target destinations

Decision

We introduced an app-level nav host engine wrapper and centralized route policy:

  1. WireNavHostEngine (app module) mirrors default Compose Destinations engine behavior.
  2. For each destination registration, style is resolved by resolveTabletDialogParityStyle(...):
    • if tablet + route is in parity list -> force DialogNavigation
    • otherwise -> keep existing behavior (manualAnimation ?: destination.style)
  3. The parity list of 17 routes is defined in TabletDialogRoutePolicy.
  4. TabletDialogWrapper receives the same route matcher and applies rounded clipping for tablet parity routes as well, so visual corners match dialog expectations.

Implementation files:

  • app/src/main/kotlin/com/wire/android/navigation/WireNavHostEngine.kt
  • app/src/main/kotlin/com/wire/android/navigation/TabletDialogRoutePolicy.kt
  • core/navigation/src/main/kotlin/com/wire/android/navigation/wrapper/TabletDialogWrapper.kt

Both app nav hosts use rememberWireNavHostEngine(...):

  • MainNavHost
  • nested host in HomeScreen

Consequences

Positive

  • Restores pre-migration tablet behavior for the 17 destinations as true dialogs.
  • Preserves phone behavior without changing navigation call sites.
  • Keeps route ownership centralized, making future additions/removals explicit.
  • Keeps compatibility with Compose Destinations 2.3.x immutable destination style generation.

Trade-offs

  • We maintain a small custom engine implementation that mirrors upstream behavior and should be kept in sync when upgrading Compose Destinations.
  • Wrapper clipping now depends on an injected route matcher, which is another integration point to keep aligned with route policy.

Maintenance rules

When adding/removing tablet dialog parity screens:

  1. Update TabletDialogRoutePolicy.destinationBaseRoutes.
  2. Add/update tests in TabletDialogRoutePolicyTest.
  3. Verify both tablet and phone behavior manually.

When upgrading Compose Destinations:

  1. Diff upstream default engine behavior against WireNavHostEngine.
  2. Re-validate style resolution and manual animation precedence.

@MohamadJaara MohamadJaara changed the title Mo/epic/update kotlin chore: update kotlin to 2.3.10 and target sdk 36 [WPB-20393] Feb 10, 2026
@codecov
Copy link

codecov bot commented Feb 10, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (ba45119) to head (64c1ffd).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #4590       +/-   ##
===========================================
- Coverage    48.74%       0   -48.75%     
===========================================
  Files          576       0      -576     
  Lines        20013       0    -20013     
  Branches      3349       0     -3349     
===========================================
- Hits          9755       0     -9755     
+ Misses        9224       0     -9224     
+ Partials      1034       0     -1034     

see 576 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ba45119...64c1ffd. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pull-request-size
Copy link

Ups 🫰🟨

This PR is too big. Please try to break it up into smaller PRs.

@sonarqubecloud
Copy link

@MohamadJaara MohamadJaara added this pull request to the merge queue Feb 13, 2026
Merged via the queue into develop with commit bbe7ef0 Feb 13, 2026
23 of 24 checks passed
@MohamadJaara MohamadJaara deleted the mo/epic/update-kotlin branch February 13, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants