Skip to content

Modernize changelog UI - #7279

Open
TimoPtr wants to merge 5 commits into
mainfrom
feature/modern_changelog
Open

Modernize changelog UI#7279
TimoPtr wants to merge 5 commits into
mainfrom
feature/modern_changelog

Conversation

@TimoPtr

@TimoPtr TimoPtr commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

This PR removes the old changelog UI into a more customizable one (actions, more content, ...).

Checklist

  • New or updated tests have been added to cover the changes following the testing guidelines.
  • The code follows the project's code style and best_practices.
  • The changes have been thoroughly tested, and edge cases have been considered.
  • Changes are backward compatible whenever feasible. Any breaking changes are documented in the changelog for users and/or in the code for developers depending on the relevance.
  • I have read the Open Home Foundation AI Policy.

Select exactly one option that describes AI usage in this contribution:

  • I have not used AI for this contribution.
  • AI assistance was used for this contribution.
  • AI fully generated the code for this contribution, but I've reviewed and understood it before submitting and will respond without AI during review.

Screenshots

image

Any other notes

It reuse the shared preference of the old library. @jpelgrom we could maybe use our settings storage instead ?

Copilot AI review requested due to automatic review settings July 30, 2026 16:59
@TimoPtr
TimoPtr requested a review from jpelgrom July 30, 2026 16:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR replaces the legacy changelog popup/UI (and its third-party library) with a new Compose-based changelog experience that supports richer content (platform tags, actions) and can be shown automatically after updates or opened from Settings.

Changes:

  • Replaced the old info.hannes.changelog-backed flow with a new changelog/ feature (repository + ViewModels + Compose UI) and an auto-show navigation effect.
  • Moved the current release’s authored changelog content into :common string resources (strings_changelog.xml) and a structured currentChangelog model.
  • Updated navigation/tests/screenshots to cover the new changelog UI and removed the old XML changelog and library dependency.

Reviewed changes

Copilot reviewed 38 out of 44 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
gradle/libs.versions.toml Removes the legacy ChangeLog library version and catalog entry.
common/src/main/res/values/strings.xml Adds new user-facing strings for the new changelog UI (title, labels, tags).
common/src/main/res/values/strings_changelog.xml Adds dedicated string resources for the current release’s changelog entries (HTML-styled).
common/src/main/kotlin/io/homeassistant/companion/android/common/compose/composable/HADivider.kt Adds a vertical divider wrapper for HA Compose UI usage.
build-logic/convention/src/main/kotlin/AndroidApplicationDependenciesConventionPlugin.kt Drops the legacy ChangeLog dependency from app dependency conventions.
automotive/gradle.lockfile Removes the legacy ChangeLog artifact from dependency locks.
app/gradle.lockfile Removes the legacy ChangeLog artifact from dependency locks.
app/src/test/kotlin/io/homeassistant/companion/android/util/ChangeLogTest.kt Removes tests for the deleted legacy ChangeLog wrapper.
app/src/test/kotlin/io/homeassistant/companion/android/launch/LaunchActivityTest.kt Updates LaunchActivity tests to no longer expect the legacy changelog popup call.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/ui/ChangelogScreenTest.kt Adds Compose UI interaction tests for the new changelog screen content.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/navigation/ChangelogNavigationTest.kt Adds navigation tests for auto-show behavior and back navigation.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/ChangelogViewModelTest.kt Adds unit tests for version parsing, URL building, and platform selection.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/ChangelogTest.kt Adds unit tests for section ordering and empty-category omission.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/ChangelogShowViewModelTest.kt Adds unit tests for the “show once” decision logic.
app/src/test/kotlin/io/homeassistant/companion/android/changelog/ChangelogRepositoryTest.kt Adds unit tests for last-seen version tracking logic.
app/src/screenshotTest/kotlin/io/homeassistant/companion/android/changelog/ChangelogScreenshotTest.kt Adds screenshot coverage for the changelog rendered with real current-release content.
app/src/main/res/xml/changelog_master.xml Deletes the legacy XML changelog file used by the old UI/tooling.
app/src/main/kotlin/io/homeassistant/companion/android/widgets/todo/TodoWidgetConfigureActivity.kt Allows opening widget config without a preselected entity (nullable entityId).
app/src/main/kotlin/io/homeassistant/companion/android/widgets/mediaplayer/MediaPlayerControlsWidgetConfigureActivity.kt Allows opening widget config without a preselected entity (nullable entityId).
app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt Allows opening widget config without a preselected entity (nullable entityId).
app/src/main/kotlin/io/homeassistant/companion/android/widgets/camera/CameraWidgetConfigureActivity.kt Allows opening widget config without a preselected entity (nullable entityId).
app/src/main/kotlin/io/homeassistant/companion/android/util/compose/HANavHost.kt Registers the new changelog destination in the app navigation graph.
app/src/main/kotlin/io/homeassistant/companion/android/util/ChangeLog.kt Deletes the legacy ChangeLog wrapper and dark-theme variant.
app/src/main/kotlin/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt Removes legacy “show changelog” presenter API and wiring.
app/src/main/kotlin/io/homeassistant/companion/android/settings/SettingsPresenter.kt Removes the legacy presenter contract method for showing changelog.
app/src/main/kotlin/io/homeassistant/companion/android/settings/SettingsFragment.kt Routes “changelog” settings click to the new ChangelogFragment.
app/src/main/kotlin/io/homeassistant/companion/android/settings/SettingsActivity.kt Makes the QSTile deeplink’s tileId optional (supports “open tiles settings” without preselect).
app/src/main/kotlin/io/homeassistant/companion/android/launch/LaunchActivity.kt Adds Compose auto-show effect and removes legacy popup invocation.
app/src/main/kotlin/io/homeassistant/companion/android/frontend/navigation/WidgetType.kt Allows building widget config intents without an entityId (nullable).
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ui/ChangelogScreen.kt Implements the new Compose changelog UI (header, sections, tags, actions).
app/src/main/kotlin/io/homeassistant/companion/android/changelog/navigation/ChangelogNavigation.kt Adds type-safe route + nav destination + auto-show effect.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogViewModel.kt Adds ViewModel for changelog state, URL generation, and “mark seen” behavior.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogShowViewModel.kt Adds ViewModel for the “should show changelog” consumed decision.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogRepository.kt Adds repository for persisting/reading the last-seen changelog version code.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogModule.kt Adds DI for a dedicated LocalStorage instance backed by the legacy prefs file name.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogFragment.kt Hosts changelog content inside Settings (Fragment + ComposeView).
app/src/main/kotlin/io/homeassistant/companion/android/changelog/ChangelogContent.kt Defines the structured current-release changelog content and actions.
app/src/main/kotlin/io/homeassistant/companion/android/changelog/Changelog.kt Adds the changelog domain model (platforms, categories, entries, actions, sections).
Comments suppressed due to low confidence (1)

app/src/test/kotlin/io/homeassistant/companion/android/changelog/navigation/ChangelogNavigationTest.kt:122

  • Avoid runBlocking here; use runTest so the suspend preference write doesn’t block the test thread.

@jpelgrom

Copy link
Copy Markdown
Member

It reuse the shared preference of the old library. @jpelgrom we could maybe use our settings storage instead ?

Yes I don't see why we should reuse the old shared preferences. Doesn't really have anything special, just storing version numbers to compare. There is already a changelog related preference in our settings storage.

@TimoPtr

TimoPtr commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

Once reviewed and agreed I'm going to update the device docs too.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants