Skip to content

feat: DVD bounce mode easter egg with achievement unlock#1216

Closed
jeremybernstein wants to merge 1 commit intoutkarshdalal:masterfrom
jeremybernstein:jb/dl-screen-easter-egg-pr
Closed

feat: DVD bounce mode easter egg with achievement unlock#1216
jeremybernstein wants to merge 1 commit intoutkarshdalal:masterfrom
jeremybernstein:jb/dl-screen-easter-egg-pr

Conversation

@jeremybernstein
Copy link
Copy Markdown
Contributor

@jeremybernstein jeremybernstein commented Apr 14, 2026

Description

Adds a preference for using "DVD bounce mode" by default, but hiding it behind an easter egg for fun. On the download ambient screen, shaking the device during idle download triggers "DVD bounce mode" (added by @Producdevity). Now, that also triggers a "Shaken, Not Stirred" achievement notification (first-time only) and unlocks a hidden "DVD bounce mode" toggle in Interface settings.

  • First shake shows achievement with app icon, sets dvdModeUnlocked pref
  • Unlocked toggle appears in Settings > Interface to make bounce mode the default
  • When enabled, idle downloads auto-enter DVD bounce mode after the existing idle timeout
  • Achievement name localized across all 14 locales (Bond reference)

Recording

dvd-bounce-easter-egg-web.mp4

Test plan

  • Start a download, wait for idle, shake device → achievement shows with app icon
  • Shake again → no achievement (first-time only), toggles DVD/normal mode
  • Settings > Interface → "DVD bounce mode" toggle visible after unlock
  • Enable toggle, start new download → bounce mode activates after idle timeout
  • Disable toggle → normal ambient download screen resumes
  • Verify fade-in shows normal progress text (no black screen)

Checklist

  • If I have access to `#code-changes`, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.
  • I have attached a recording of the change.
  • I have read and agree to the contribution guidelines in `CONTRIBUTING.md`.

Summary by cubic

Adds a hidden “DVD bounce mode” easter egg to the ambient download screen. Shaking the device while idle toggles bounce, shows a one-time “Shaken, Not Stirred” achievement, and unlocks a Settings toggle to make bounce mode the default.

  • New Features
    • First shake during idle toggles bounce; shows the achievement and unlocks the setting.
    • Achievement uses the app icon; text localized across 14 locales.
    • New prefs dvdModeUnlocked and dvdModeDefault; toggle appears in Settings > Interface after unlock.
    • When dvdModeDefault is on, idle downloads auto-enter bounce mode after the existing timeout.

Written for commit 3ad47fe. Summary will update on new commits.

Summary by CodeRabbit

Release Notes

  • New Features
    • Added a hidden DVD Mode easter egg that unlocks via shake gesture
    • Once unlocked, a new toggle appears in settings to enable DVD Mode by default
    • When active, displays an animated bouncing icon during downloads
    • Full localization support added across 14+ languages

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 14, 2026

📝 Walkthrough

Walkthrough

Adds a DVD-bounce feature: two new persisted prefs (unlock + default), wired into the ambient download overlay to set/flip DVD mode and show an unlock notification, plus a conditional settings toggle and localized strings across multiple languages.

Changes

Cohort / File(s) Summary
Preference Configuration
app/src/main/java/app/gamenative/PrefManager.kt
Added two boolean prefs: dvdModeUnlocked and dvdModeDefault with getters/setters using existing getPref/setPref, defaulting to false.
Ambient overlay & unlock logic
app/src/main/java/app/gamenative/ui/screen/library/components/ambient/AmbientDownloadOverlay.kt
Uses PrefManager.dvdModeDefault to set isDvdMode on idle; shake toggle sets dvdModeUnlocked on first use and calls AchievementNotificationManager.show(...) with easter_egg_dvd_mode.
Settings UI
app/src/main/java/app/gamenative/ui/screen/settings/SettingsGroupInterface.kt
Conditionally composes a SettingsSwitch for DVD mode only when PrefManager.dvdModeUnlocked is true; switch state initialized from and persisted to PrefManager.dvdModeDefault.
Base strings
app/src/main/res/values/strings.xml
Added easter_egg_dvd_mode, settings_dvd_mode_title, and settings_dvd_mode_subtitle.
Localized strings (many locales)
app/src/main/res/values-*/strings.xml
values-da, values-de, values-es, values-fr, values-it, values-ko, values-pl, values-pt-rBR, values-ro, values-ru, values-uk, values-zh-rCN, values-zh-rTW
Added translations for the three new string resources across listed locales.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ShakeDetector
  participant AmbientOverlay
  participant PrefManager
  participant AchievementNotificationManager

  User->>ShakeDetector: shake
  ShakeDetector->>AmbientOverlay: notify toggle
  AmbientOverlay->>PrefManager: get dvdModeUnlocked
  alt unlocked == false
    AmbientOverlay->>PrefManager: set dvdModeUnlocked = true
    AmbientOverlay->>AchievementNotificationManager: show(easter_egg_dvd_mode, iconUrl)
  end
  AmbientOverlay->>PrefManager: toggle/get dvdModeDefault as isDvdMode
  AmbientOverlay-->>User: update UI (DVD bounce)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • phobos665

"I shook a setting, gave it a hop,
A bouncing DVD that just won't stop.
Prefs unlocked with a jolly cheer,
Strings for many tongues appear.
— 🐰"

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main feature: adding a DVD bounce mode easter egg with achievement unlock mechanism to the codebase.
Description check ✅ Passed The pull request description is comprehensive and well-structured, including objectives, recordings, test plans, and required checklist items completed.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@app/src/main/res/values-es/strings.xml`:
- Line 1371: The Spanish locale is missing translations for
settings_dvd_mode_title and settings_dvd_mode_subtitle (only easter_egg_dvd_mode
exists), causing English fallback; open values-es/strings.xml and add localized
entries for settings_dvd_mode_title and settings_dvd_mode_subtitle (use the text
from values/strings.xml as the source and provide appropriate Spanish
translations), ensuring the keys exactly match the identifiers
settings_dvd_mode_title and settings_dvd_mode_subtitle so the toggle is fully
translated.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7e6d9099-5083-44b8-9ca0-753ca91942e3

📥 Commits

Reviewing files that changed from the base of the PR and between a29bb89 and 4850cbf.

📒 Files selected for processing (17)
  • app/src/main/java/app/gamenative/PrefManager.kt
  • app/src/main/java/app/gamenative/ui/screen/library/components/ambient/AmbientDownloadOverlay.kt
  • app/src/main/java/app/gamenative/ui/screen/settings/SettingsGroupInterface.kt
  • app/src/main/res/values-da/strings.xml
  • app/src/main/res/values-de/strings.xml
  • app/src/main/res/values-es/strings.xml
  • app/src/main/res/values-fr/strings.xml
  • app/src/main/res/values-it/strings.xml
  • app/src/main/res/values-ko/strings.xml
  • app/src/main/res/values-pl/strings.xml
  • app/src/main/res/values-pt-rBR/strings.xml
  • app/src/main/res/values-ro/strings.xml
  • app/src/main/res/values-ru/strings.xml
  • app/src/main/res/values-uk/strings.xml
  • app/src/main/res/values-zh-rCN/strings.xml
  • app/src/main/res/values-zh-rTW/strings.xml
  • app/src/main/res/values/strings.xml

Comment thread app/src/main/res/values-es/strings.xml
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 17 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="app/src/main/res/values-es/strings.xml">

<violation number="1" location="app/src/main/res/values-es/strings.xml:1371">
P3: Only `easter_egg_dvd_mode` is translated here; `settings_dvd_mode_title` and `settings_dvd_mode_subtitle` (added in `values/strings.xml`) are missing from this locale — and from every other non-English locale in this PR. The settings toggle will fall back to English for all non-English users. Add translations for both strings across all locales.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread app/src/main/res/values-es/strings.xml
shake during idle download triggers "Shaken, Not Stirred" achievement
on first discovery, unlocks DVD bounce mode toggle in Interface settings.
when enabled, idle downloads auto-enter bounce mode after timeout.
@jeremybernstein jeremybernstein force-pushed the jb/dl-screen-easter-egg-pr branch from 4850cbf to 3ad47fe Compare April 14, 2026 06:32
@utkarshdalal
Copy link
Copy Markdown
Owner

Please don't add PRs without discussing in #code-changes. I'm closing this for now.

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.

2 participants