Skip to content

Releases: stephenWanjala/Multiply

Release Build #22

22 Apr 19:24
9529cc7

Choose a tag to compare

What's new

  • Timed Mode for quizzes — beat the countdown on every question
  • Animated timer ring, low-time alerts, and streak tracking
  • Answers auto-advance and reveal the correct choice instantly
  • New in-quiz settings sheet to toggle Timed Mode on or off
  • Timed-out questions now show up separately in your recap

Full Changelog: v21...v22

Release Build #21

17 Apr 09:15
1402746

Choose a tag to compare

Multiply v21 — Release Notes

A big refresh focused on a cleaner, more consistent look across the entire game — plus a major build tooling upgrade and a tidier architecture underneath.

✨ What's new

A refreshed look and feel

Every screen has been rebuilt with a cleaner, more playful design system.

  • Welcome screen — new hero card with an animated mascot, a dedicated high score banner, and a pulsating Play button that reacts to your latest stats.
  • Game mode selection — replaced the heavy neumorphic cards with a bright hero header and a step-by-step mode → difficulty flow.
  • How to Play — bullet lists are out; clear, icon-led step cards are in.
  • Settings — reorganized into tidy sections with tile-based difficulty and theme pickers, plus cleaner audio toggles.
  • Bubble Mode gameplay — a new HUD bar with stat chips, a redesigned spherical math bubble with a countdown progress ring, a simpler pause overlay, and a friendlier game-over dialog with animated score counting.
  • Quiz Mode — polished question cards, new answer tiles with a satisfying selection stripe, a circular score indicator, and streamlined question-by-question recap rows.

Redesigned recap and celebrations

  • New star rating system (up to 3 stars) based on your accuracy.
  • Animated score counter and circular progress ring.
  • Stat cards showing correct, wrong, and accuracy at a glance.
  • Confetti effects when you do well. 🎉
  • Haptic feedback on score milestones.

Typography and color refresh

  • Comic Sans has been retired in favor of the Nunito font family across the whole app.
  • New vibrant Material 3 color scheme with improved light and dark theme support.
  • A new MultiplyColors semantic palette (success, warning, star, etc.) for consistent meaning across screens.

A proper design system

Introduced a reusable set of building blocks:

  • AnimatedFloatingSymbolsBackground
  • MultiplyButton, MultiplyCard, MultiplyStaticCard, MultiplyDialog
  • A shared Spacing system so everything lines up the way it should.

🔧 Under the hood

New architecture

  • New GamePreferencesRepository centralizes all high score and difficulty settings via DataStore.
  • Both GameViewModel (Bubble Mode) and QuestionsViewModel (Quiz Mode) now use this repository.
  • Migrated from the older onAction pattern to an MVI-style onEvent + effects (Channel) approach — cleaner state handling and better separation of one-shot side effects.
  • Navigation renamed from MutiplyNavMultiplyNav and updated for the new event-based ViewModels.
  • Utility classes (Particle, BitmapFromDrawable, RandomOffset) moved from utlisutil.

Build tooling upgrade

  • AGP 8.13.2 → 9.1.1
  • Kotlin 2.3.0 → 2.3.20
  • Gradle 9.2.1 → 9.4.1
  • kotlinx.serialization → 3.4.0
  • Koin BOM → 4.2.0-beta4
  • Also bumped: Compose BOM, Material3, Navigation Compose, and other dependencies.
  • Migrated to the new Android DSL: compileSdk { version = release(37) }, targetSdk 37, android.builtInKotlin, android.newDsl.
  • Dropped the standalone kotlin-android plugin (now built in via android.builtInKotlin).
  • Added foojay-resolver-convention for automatic JDK toolchain provisioning.

CI improvements

  • The release workflow in .github/workflows/build-signed-apk.yml now uses job-level contents: write permissions instead of an explicit GITHUB_TOKEN.

Full Changelog: v19...v21

Release Build #19

19 Jan 12:03
e896739

Choose a tag to compare

build: Upgrade Compose BOM, Koin, and Material3 dependencies

- Update `composeBom` to `2026.01.00`.
- Upgrade `koin-bom` to `4.2.0-beta3`.
- Update `material3` to `1.5.0-alpha12`.

Release Build #18

13 Jan 10:28
9edb891

Choose a tag to compare

v18

design: Shrink application png assets

Release Build #17

18 Dec 10:58
32c2a28

Choose a tag to compare

refactor: Migrate from Hilt to Koin and optimize custom modifiers

- Replace Dagger Hilt with Koin for dependency injection; updated `MultiplyApp` to initialize Koin and converted `AppModule` to use Koin DSL.
- Update ViewModels (`GameViewModel`, `QuestionsViewModel`) to remove Hilt annotations and switch navigation injection to `koinViewModel`.
- Refactor `neumorphicShadow` custom modifier to use the `Modifier.Node` API (via `ModifierNodeElement` and `DrawModifierNode`) instead of `composed` for improved performance.
- Upgrade `kotlin` to `2.3.0` and `agp` to `8.13.2`.
- Bump `composeBom` to `2025.12.01`, `material3` to `1.5.0-alpha11`, and `activityCompose` to `1.12.2`.
- Add `com.github.skydoves.compose.stability.analyzer` plugin to build scripts.

Release Build #16

05 Dec 14:28
c870426

Choose a tag to compare

build: Upgrade Gradle to 9.2.1 and overhaul R8 optimizations

- Upgrade Gradle Wrapper to `9.2.1` and update accompanying shell scripts.
- Enable R8 full mode and optimized resource shrinking in `gradle.properties`.
- Rewrite `proguard-rules.pro` to apply aggressive optimizations, strip `android.util.Log` calls, and remove Kotlin intrinsic null checks.
- Update dependencies: `composeBom` to `2025.12.00`, `material3` to `1.5.0-alpha10`, `activityCompose` to `1.12.1`, and `kotlinxSerialization` to `3.3.3`.
- Remove deprecated `release.sh` and `release-notes.md` files.
- Update application assets, including launcher icons and mascot images.

Release Build #15

19 Nov 21:53
154dc02

Choose a tag to compare

build: Upgrade dependencies and refine Kotlin compiler options

- Bump `lifecycleRuntimeKtx` to `2.10.0` and `activityCompose` to `1.12.0`.
- Update `composeBom` to `2025.11.01` and `material3` to `1.5.0-alpha09`.
- Upgrade `datastorePreferences` to `1.2.0`.
- Migrate `kotlinOptions` to the newer `kotlin.compilerOptions` block in `app/build.gradle.kts` using `JvmTarget`.
- Add `-Xannotation-default-target=param-property` to free compiler args.

Release Build #14

16 Nov 12:57
a4581ea

Choose a tag to compare

feat(game): Implement predictive back gesture on GameMode screen

- Replaced `BackHandler` with `PredictiveBackHandler` on the GameMode selection screen to support Android's predictive back gesture.
- Added animations to the screen content (scaling, translation, and alpha) that react to the back gesture's progress.
- Enabled the `enableOnBackInvokedCallback` attribute in `AndroidManifest.xml` for the main activity.
- Updated various Gradle dependencies, including Android Gradle Plugin, Kotlin, Compose BOM, and Material3.

Release Build #13

03 Nov 09:31
175ea98

Choose a tag to compare

v13

GameMode selection Screen To draw Edge to Edge

Release Build #12

26 Oct 03:53
16a655f

Choose a tag to compare

feat(ci): Rename signed APK in workflow for consistent output naming

- Added a step to rename the signed APK to `Multiply.apk` after signing.
- Updated environment variable `SIGNED_APK` to reflect the new file path.