Conversation
The engine emits a compacted currentPieces list, so before this change the surviving piece would jump left into the placed slot in a single frame, and because the entrance animation was keyed on the joined ids of all three pieces every placement also re-played the fly-in for the survivors. Move tray ownership into a PieceTrayComponent/TraySlotComponent pair (per-piece, modelled on the Decompose cards sample). The parent reconciles each engine emission by keeping the same slot instance for any pieceId still alive, so survivors retain their UI animation state across placements. In the Composable, LookaheadScope + animateBounds turns each list shift into a fixed-distance leftward slide of one slot width, and the entrance Animatable keys on pieceId so only fresh pieces animate in. Selection state moves from a local Compose var in GameContent into the tray component (Value<TraySelection> — wrapped because Decompose Value requires a non-null type argument). GameContent now reads the selected piece from the component and calls clearSelection() after tap-place, revive, and restart. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
A single soundEnabled flag previously gated background music, placement SFX, line-clear SFX, and voice lines together — so a player who wanted quiet background music with placement clicks (or vice versa) had no way to express that. The Settings screen had one row for "Sound" and that was the only audio knob in the app. Replace the single flag with two independent ones on SettingsRepository: musicEnabled (gates DefaultAudioRepository's music combine) and sfxEnabled (gates the placement / clear / voice helpers). Add a one-time migration in SettingsBackedSettingsRepository that seeds both new keys from the legacy blockblast.sound value and removes the legacy key, so existing muted users stay muted on upgrade. Surface a second toggle row in MainSettingsContent so both flags are user-controllable. Update every test stub and the SettingsStore / SettingsStoreFactory / Mapper plumbing to carry both fields through. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add `music`, `music_subtitle`, `sfx`, and `sfx_subtitle` keys to localized `strings.xml` files for 36 languages. - Provide translated strings for background music and granular sound effect descriptions (placement, clearing, and voice lines) to support expanded audio configuration options.
- Update `composeMultiplatform` to 1.11.0. - Update `metro` to 1.1.1.
Swap the two-step text spotlight for an animated hand + ghost piece that loops the drag gesture, fading out with a confetti burst once the player engages. Remove the now-unused tutorial string resources across all locales. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release 1.5.0 (versionCode 12). User-facing polish plus a couple of internal cleanups.
SettingsRepository.soundEnabled→musicEnabled+sfxEnabled(and matching setters/store/mappers).PieceTrayComponent/TraySlotComponent), keyed onpieceId, so per-slot animation state survives a placement.AnalyticRepositoryImpl→AnalyticRepository.gradle.propertiesand iOSConfig.xcconfig→ 1.5.0 / 12; addedchangelogs/12.txt.Commits
AnalyticRepositoryImpltoAnalyticRepositoryTest plan
./gradlew :composeApp:compileAndroidMainand the iOS build both succeed.🤖 Generated with Claude Code