Skip to content

refactor(core-ui): extract shared UI into :apps:flipcash:core-ui - #1233

Merged
bmc08gt merged 1 commit into
code/cashfrom
refactor/extract-core-ui
Aug 13, 2026
Merged

refactor(core-ui): extract shared UI into :apps:flipcash:core-ui#1233
bmc08gt merged 1 commit into
code/cashfrom
refactor/extract-core-ui

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

What

Extracts the shared Compose UI out of :apps:flipcash:core into a new :apps:flipcash:core-ui module.

Why

core-ui can depend on :apps:flipcash:shared:featureflags, which core cannot without a dependency cycle. This unblocks shared UI (e.g. the appreciation badge) from reading feature flags / other higher-level shared state, and gives the shared composables a dedicated home instead of living in the base core module.

Changes

  • New :apps:flipcash:core-ui module — depends on featureflags, material3, and the haze bundle (the non-transitive libs the moved composables use).
  • Moved all composables under core/ui/** (plus internal/ui/previews) into core-ui, keeping the com.flipcash.app.core.ui package so call-site imports are unchanged.
  • SteppedFlowRoute stays in core — it is a route type, not UI — relocated to the com.flipcash.app.core.navigation package (updated its two references).
  • Wiringcore-ui is added to feature modules via the feature convention plugin, excluding core, core-ui, and featureflags to avoid a dependency cycle (core-uicorefeatureflags). The two non-feature-plugin consumers (app, chat-ui) get an explicit dependency.
  • Moved FlowProgressTest into core-ui.

Almost entirely renames (42 files, +38/−2). No behavioural change: CurrencyAppreciationLabel (incl. the existing AppreciationStyle) moves across unchanged.

Verification

  • ./gradlew :apps:flipcash:app:compileDebugKotlin — SUCCESS (no cycles)
  • :apps:flipcash:core-ui:testDebugUnitTest — passes
  • :apps:flipcash:core:compileDebugUnitTestKotlin — compiles

Move the shared Compose UI out of :apps:flipcash:core into a new
:apps:flipcash:core-ui module so it can depend on :shared:featureflags
(core cannot without a dependency cycle).

- Move all composables under core/ui (+ internal/ui/previews) to core-ui,
  keeping the com.flipcash.app.core.ui package so call-site imports are
  unchanged.
- Keep SteppedFlowRoute (a route type, not UI) in core, relocated to the
  core.navigation package.
- Wire core-ui into feature modules via the feature convention plugin,
  excluding core, core-ui and featureflags to avoid a cycle; add explicit
  deps for the two non-feature-plugin consumers (app, chat-ui).
@github-actions github-actions Bot added type: refactor Code restructuring, no behavior change area: build-system Gradle, convention plugins, build-logic labels Aug 13, 2026
@bmc08gt
bmc08gt merged commit fbf59d4 into code/cash Aug 13, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the refactor/extract-core-ui branch August 13, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: build-system Gradle, convention plugins, build-logic type: refactor Code restructuring, no behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant