Skip to content

ChangeLog Navigation Via DeepLink#10987

Open
shamim-emon wants to merge 13 commits into
thunderbird:mainfrom
shamim-emon:fix-issue-10897
Open

ChangeLog Navigation Via DeepLink#10987
shamim-emon wants to merge 13 commits into
thunderbird:mainfrom
shamim-emon:fix-issue-10897

Conversation

@shamim-emon
Copy link
Copy Markdown
Collaborator

@shamim-emon shamim-emon commented May 6, 2026

What this PR does

  • It adds deep-link navigation support for the changelog feature. You can now programmatically open either the full changelog or the “recent changes” screen from anywhere in the app (or even from external intents) using the existing FeatureLauncherTarget system.This brings the changelog in line with the newer navigation architecture while still supporting the legacy UI code.
  • This change also converts the Changelog/Recent Changes screen to a fully Compose-based implementation.

Key changes

New module

  • feature/navigation/changelog/api – a clean Kotlin Multiplatform navigation API.
    • ChangelogRoute (serializable, base path app://changelog/{mode}).
    • ChangelogNavigation interface.
    • ChangeLogMode enum (CHANGE_LOG / RECENT_CHANGES) (Pre-existing but now moved into this module).

Launcher updates

  • FeatureLauncherTarget.Changelog data class that builds the proper deep-link URI.
  • FeatureLauncherNavHost now registers the changelog routes.

Clean-up

  • Removed RecentChangeActivity & ChangelogFragment.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

Validation Passed: All report and feature-flag labels are correctly set.

@shamim-emon shamim-emon added the report: exclude Exclude changes from user-facing reports (internal, minor, or not relevant to users). label May 6, 2026
@shamim-emon shamim-emon force-pushed the fix-issue-10897 branch 3 times, most recently from ebfeb7e to f576d0c Compare May 13, 2026 14:21
Copy link
Copy Markdown
Member

@wmontwe wmontwe left a comment

Choose a reason for hiding this comment

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

Thank you!

Just some small findings and I think the namespace should be feature:changelog instead of feature:navigation:changelog.

Optional tasks:

  • The library used for the changelog handling is deprecated and needs to be replaced. Maybe something for you?
  • The UI could be moved to feature:changelog:internal

Comment thread settings.gradle.kts
https://developer.android.com/build/jdks#jdk-config-in-studio
""".trimIndent()
}
include(":feature:navigation:changelog:api")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is already added above

}
}
private suspend fun loadState() {
Log.i("EMON1234 MODE:${mode.name}")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This could be removed

modifier: Modifier = Modifier,
onShowRecentChangesCheck: (Boolean) -> Unit,
modifier: Modifier = Modifier,
onBack: () -> Unit,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

onBack should be placed before modifier

.navigate(R.id.action_aboutScreen_to_changelogScreen)
is Effect.OpenChangeLog -> {
FeatureLauncherActivity.launch(
context = context,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please use requireContext() here.

FeatureLauncherActivity.launch(
context = context,
target = FeatureLauncherTarget.Changelog(changeLogMode = ChangeLogMode.CHANGE_LOG),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

newline could be removed

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

While this is indeed about navigation, the changelog library is deprecated and we need to replace it by our own implementation. With the already migrated UI, it make sense to move this to feature:changelog.

}
sourceSets {
commonMain.dependencies {
implementation(libs.kotlinx.serialization.json)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

kotlinx-serialization-json is not needed as it's part of our kmp library already.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

report: exclude Exclude changes from user-facing reports (internal, minor, or not relevant to users).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Changelog Via Feature Launcher

2 participants