Add About screen: OSM attribution and real third-party acknowledgements (#48) #107

Merged
robert merged 1 commit from area/about-screen into main 2026-09-05 11:20:31 +02:00
Owner

Closes most of the remaining scope of #48. LICENSE and README.md's licence/OSM sections were already correct from bootstrap (confirmed by reading both, not assumed) — this PR only adds what was actually still missing.

Added

  • An About screen (companion/src/main/kotlin/de/butzei/pedalpebble/about/), reachable from a new button on MainActivity's skeleton screen. Shows app name/version, a reference to the MIT licence (not a full-text dump — see AboutScreen's KDoc for the reasoning), the OSM attribution reproduced verbatim from README.md (D15), and today's real third-party acknowledgements.
  • ThirdPartyAcknowledgements in :companion:core — a plain, JVM-tested list, checked against the real build rather than assumed: PebbleKit Android 2 (io.rebble.pebblekit2:client, Apache-2.0, D49) is a real implementation() dependency of :companion:pebble and is listed. Nothing else is: the 4.0.1 fallback isn't declared yet (that's #4's job), pebblekit2-client-ui is a version-catalog alias nothing implementation()s, and BRouter is not vendored beyond a still-unbuilt AIDL boundary (#27).

Module placement: no new Gradle module. The About screen lives directly in :companion, matching the precedent already set by RideSetupActivity — a screen with real multi-module state still lives in the app module because there's nothing about it to reuse elsewhere; this screen has less going on than that one (no repository, no persisted state). Its one piece of real logic, the acknowledgement list, lives in :companion:core, which is exactly what that module is for.

Explicitly left unchecked: "attribution in exported GPX metadata" — GPX export (#47) doesn't exist in this codebase yet, so there's nothing to embed attribution into. Noted as blocked on #47 rather than building an exporter just to satisfy the checkbox.

Testing: no Compose UI/instrumented test precedent exists anywhere in this project yet, so none was invented here. The one real testable piece — the acknowledgement list — has a JVM Kotest spec in :companion:core. Verified against a real build: ./gradlew :companion:assembleDebug and :companion:core:test both succeed (JDK 21, local Android SDK).

https://claude.ai/code/session_01DAoXbRmJUf2uxNYBfdAXPt

Closes most of the remaining scope of #48. LICENSE and README.md's licence/OSM sections were already correct from bootstrap (confirmed by reading both, not assumed) — this PR only adds what was actually still missing. **Added** - An About screen (`companion/src/main/kotlin/de/butzei/pedalpebble/about/`), reachable from a new button on `MainActivity`'s skeleton screen. Shows app name/version, a reference to the MIT licence (not a full-text dump — see `AboutScreen`'s KDoc for the reasoning), the OSM attribution reproduced verbatim from `README.md` (D15), and today's real third-party acknowledgements. - `ThirdPartyAcknowledgements` in `:companion:core` — a plain, JVM-tested list, checked against the real build rather than assumed: PebbleKit Android 2 (`io.rebble.pebblekit2:client`, Apache-2.0, D49) is a real `implementation()` dependency of `:companion:pebble` and is listed. Nothing else is: the 4.0.1 fallback isn't declared yet (that's #4's job), `pebblekit2-client-ui` is a version-catalog alias nothing `implementation()`s, and BRouter is not vendored beyond a still-unbuilt AIDL boundary (#27). **Module placement**: no new Gradle module. The About screen lives directly in `:companion`, matching the precedent already set by `RideSetupActivity` — a screen with real multi-module state still lives in the app module because there's nothing about it to reuse elsewhere; this screen has less going on than that one (no repository, no persisted state). Its one piece of real logic, the acknowledgement list, lives in `:companion:core`, which is exactly what that module is for. **Explicitly left unchecked**: "attribution in exported GPX metadata" — GPX export (#47) doesn't exist in this codebase yet, so there's nothing to embed attribution into. Noted as blocked on #47 rather than building an exporter just to satisfy the checkbox. **Testing**: no Compose UI/instrumented test precedent exists anywhere in this project yet, so none was invented here. The one real testable piece — the acknowledgement list — has a JVM Kotest spec in `:companion:core`. Verified against a real build: `./gradlew :companion:assembleDebug` and `:companion:core:test` both succeed (JDK 21, local Android SDK). https://claude.ai/code/session_01DAoXbRmJUf2uxNYBfdAXPt
Add About screen: OSM attribution and real third-party acknowledgements (#48)
Some checks failed
dev-artifact / build-pbw (push) Failing after 0s
dev-artifact / build-apk (push) Failing after 0s
dev-artifact / publish (push) Has been skipped
fast-lane / host-c-tests (push) Failing after 0s
fast-lane / jvm-tests (push) Failing after 0s
fast-lane / pebble-build (push) Failing after 0s
fast-lane / lint-and-secrets (push) Failing after 0s
fast-lane / meta-declares-required-jobs (push) Failing after 0s
fast-lane / host-c-tests (pull_request) Failing after 0s
fast-lane / jvm-tests (pull_request) Failing after 0s
fast-lane / pebble-build (pull_request) Failing after 0s
fast-lane / lint-and-secrets (pull_request) Failing after 0s
fast-lane / meta-declares-required-jobs (pull_request) Failing after 0s
a8ffbba1bc
LICENSE (MIT, root) and README.md's licence + OSM attribution sections were
already correct from bootstrap -- confirmed by reading both, not rewritten.

What was actually missing and is added here:

- An About screen (companion/.../about/), reachable from a new button on
  MainActivity's skeleton screen, showing app name/version, a reference to
  the MIT licence (not a full-text dump -- see AboutScreen's KDoc for why),
  and the OSM attribution reproduced verbatim from README.md (D15).

- ThirdPartyAcknowledgements in :companion:core: a plain, JVM-tested list of
  what the app actually depends on today. Checked against the real build
  rather than assumed: PebbleKit Android 2 (io.rebble.pebblekit2:client,
  Apache-2.0, D49) is a real implementation() dependency of
  :companion:pebble and is acknowledged. Nothing else is -- the 4.0.1
  fallback isn't declared yet (that's #4's job), pebblekit2-client-ui is a
  version-catalog alias nothing implementation()s, and BRouter is not
  vendored beyond a still-unbuilt AIDL boundary (#27), so none of the three
  are listed.

Module placement: no new Gradle module. AboutScreen lives directly in
:companion, the same call already made for RideSetupActivity -- a screen
with real multi-module state still lives in the app module because there's
nothing about it to reuse elsewhere; this screen has less going on than
that one. Its one piece of real logic (the acknowledgement list) belongs in
:companion:core, which is exactly what that module is for.

Explicitly left unchecked: "attribution in exported GPX metadata" -- GPX
export (#47) doesn't exist in this codebase yet, so there is nothing to
embed attribution into. Noted as blocked on #47 rather than building an
exporter to satisfy the checkbox.

No Compose UI test added: no Compose UI/instrumented test precedent exists
anywhere in this project yet. The one real testable piece is the
acknowledgement list, which does have a JVM Kotest spec in :companion:core.

Verified against a real build: ./gradlew :companion:assembleDebug and
:companion:core:test both succeed (JDK 21, local Android SDK).

Claude-Session: https://claude.ai/code/session_01DAoXbRmJUf2uxNYBfdAXPt
robert merged commit 1a5468e2da into main 2026-09-05 11:20:31 +02:00
Sign in to join this conversation.
No description provided.