Skip to content

Remove superplayer-ui, which nothing will now fill - #390

Merged
ramesh130 merged 1 commit into
mainfrom
remove-superplayer-ui
Sep 21, 2026
Merged

ramesh130 merged 1 commit into
mainfrom
remove-superplayer-ui

Conversation

@ramesh130

Copy link
Copy Markdown
Owner

superplayer-ui was a placeholder for an optional Compose player surface: unscheduled by PRD.md Part 4, and empty since Phase 0 apart from a package-info.kt.

The UI work it was reserved for is now planned as a Media3 UI kit in a repository of its own, beside a showcase app. The deciding fact is dependency direction: tokens would depend on nothing, browse components on nothing, and the playback overlay only on androidx.media3:media3-common for the stable Player interface. Not one of them would depend on superplayer-core — so the superplayer- prefix would have been branding rather than architecture, and the kit is usable by anyone on Media3 rather than only by this library's adopters.

Keeping the empty module was not free. It read as a fifteenth built module in every layout, carried a published coordinate and a tracked API surface file, and under ADR-0017 rule 1 would have been tied to every future release at one version. #383 already excludes it from the Maven Central release as "a promise of a UI that does not exist"; this makes that exclusion permanent rather than provisional.

What changed

File Change
settings.gradle.kts the include(...) line
superplayer-ui/ deleted — build file, consumer rules, package-info.kt, and the empty api/superplayer-ui.api
CLAUDE.md 15 modules / 14 published → 14 / 13
PRD.md §2.1 module layout
README.md the empty-placeholder status bullet, and the module table row
THIRD_PARTY.md the sentence in the Compose-modules paragraph
docs/api-surface.md the paragraph explaining why one tracked file is empty
docs/compatibility.md the stability table row
docs/modules.md the table row and the † footnote explaining its absent phase number

Three deliberate non-changes

ADR-0014 and ADR-0015 keep their references. Both argue in Alternatives considered that the TV controls and the debug HUD were rejected from superplayer-ui because it was unscheduled. That is a true record of what was reasoned at the time, and CLAUDE.md makes an accepted ADR amendable by addendum rather than by editing. Nothing here contradicts either record, so neither needs one.

ModulePhaseRuleTest and CompatibilityDocumentTest keep the name as synthetic fixture data — the same files invent superplayer-ads, which has never existed. The unscheduled-module rule they exercise is untouched, and only its one live instance is gone.

docs/compatibility.md keeps the Empty status although no row now carries it, and VerifyCompatibilityDocument's allowed list is unchanged. It is one of the four answers an adopter needs and a legitimate future state.

Verification

./gradlew assemble check --max-workers=2 on this branch: GRADLE_EXIT=0, 1213 tests, 0 failures, 0 errors, 0 skipped across 15 modules, read from **/build/test-results/**/TEST-*.xml rather than off the BUILD SUCCESSFUL line. verifyCompatibilityDocument and verifyModulePhaseRule both pass, which is what holds the two documents to settings.gradle.kts.

No emulator or demo run — this removes an empty module and changes no behaviour.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HeTWwmK1KcFMrfSAre23GS

The module was a placeholder for an optional Compose player surface, unscheduled
by `PRD.md` Part 4 and empty since Phase 0. That UI work is now planned as a
Media3 UI kit in a repository of its own, alongside a showcase app: none of its
three modules would depend on `superplayer-core`, so the `superplayer-` prefix
would have been branding rather than architecture.

Keeping an empty module costs more than it looks. It reads as a fifteenth built
module in the layout, it carries a published coordinate and a tracked API surface
file, and ADR-0017 rule 1 would tie it to every future release at one version.
#383 excludes it from the Maven Central release as "a promise of a UI that does
not exist"; deleting it makes that exclusion permanent rather than provisional.

Three references are deliberately left alone. ADR-0014 and ADR-0015 argue in
their *Alternatives considered* that the TV controls and the debug HUD were
rejected from this module because it was unscheduled — a true record of what was
reasoned at the time, and an accepted ADR is amended by addendum rather than
edited to erase a mention. `ModulePhaseRuleTest` and `CompatibilityDocumentTest`
keep the name as synthetic fixture data, alongside `superplayer-ads`, which has
never existed; the unscheduled-module rule they exercise is untouched. And
`docs/compatibility.md` keeps the **Empty** status with no row carrying it, since
it remains one of the four answers an adopter needs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HeTWwmK1KcFMrfSAre23GS
@ramesh130
ramesh130 merged commit f970dc7 into main Sep 21, 2026
1 check passed
@ramesh130
ramesh130 deleted the remove-superplayer-ui branch September 21, 2026 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant