Skip to content

Conversation

@d4rken
Copy link
Member

@d4rken d4rken commented Sep 14, 2025

Displays a celebratory dashboard card when users reach their SD Maid anniversary (1+ years since installation). The card shows:

  • Installation date and years of usage
  • Total space freed statistics
  • Share functionality with download link for veteran users (5+ years)
  • Year-specific dismissal (reappears next anniversary)

The anniversary card appears for 14 days after the anniversary date to ensure users don't miss it. Only shown for Pro users.

Features:

  • Custom MascotView with party mode for celebration
  • Localized strings with proper pluralization
  • Share text includes space freed and app download link
  • Clean architecture with dedicated AnniversaryProvider

Displays a celebratory dashboard card when users reach their SD Maid anniversary (1+ years since installation). The card shows:
- Installation date and years of usage
- Total space freed statistics
- Share functionality with download link for veteran users (5+ years)
- Year-specific dismissal (reappears next anniversary)

The anniversary card appears for 14 days after the anniversary date to ensure users don't miss it. Only shown for Pro users.

Features:
- Custom MascotView with party mode for celebration
- Localized strings with proper pluralization
- Share text includes space freed and app download link
- Clean architecture with dedicated AnniversaryProvider
@d4rken d4rken added enhancement New feature, request, improvement or optimization General UI/UX User Interface/Experience labels Sep 14, 2025
@d4rken
Copy link
Member Author

d4rken commented Sep 14, 2025

Screenshot from 2025-09-14 16-56-08

@d4rken d4rken merged commit 3935218 into main Sep 14, 2025
13 checks passed
@d4rken d4rken deleted the anniversary-prompt branch September 14, 2025 15:43
@MarkyMarkDE
Copy link

mmhh, I'm pretty sure, that this feature will not working well, if you often need to reinstall SDMaid for testing purposes, right?

@d4rken
Copy link
Member Author

d4rken commented Sep 20, 2025

mmhh, I'm pretty sure, that this feature will not working well, if you often need to reinstall SDMaid for testing purposes, right?

Yeah the timer would reset on re-install. If you just want to see it, you could temporarily advance the system time by 1-2 years.

@MarkyMarkDE
Copy link

MarkyMarkDE commented Sep 20, 2025

mmhh, I'm pretty sure, that this feature will not working well, if you often need to reinstall SDMaid for testing purposes, right?

Yeah the timer would reset on re-install. If you just want to see it, you could temporarily advance the system time by 1-2 years.

is it possible in any way to restore the truth first installation date?
Only an idea to work around: if the user installing SD Maid really new then you create a control file in die hidden .sdmaid dir and in this file you write the current date and if the user uninstall, then you keep the hidden folder in place without changes inside the control file ... I'm little sad that I do lost thus datas, and so i'm not able to celebrate my veterans day 😉 You know how long i'm with you and SDMaid (paid via Playstore and also via sponsoring here on github) ... more than 13 years (long years on SDMaid legacy and since the first Beta SDMaid 2) ...
My first E-Mail inquiry to you in case of SDMaid legacy was at 02.09.2012 at this time I was already a Premium User.

@d4rken
Copy link
Member Author

d4rken commented Sep 21, 2025

My first E-Mail inquiry to you in case of SDMaid legacy was at 02.09.2012 at this time I was already a Premium User.

❤️

Only an idea to work around: if the user installing SD Maid really new then you create a control file in die hidden .sdmaid dir and in this file you write the current date and if the user uninstall, then you keep the hidden folder in place without changes inside the control file ...

Not a fan, as SD Maid is specifically trying to clean after apps that do exactly that (create such files that stay behind). Then SD Maid would be one of those apps that leave behind files to track the user...

One idea could be to try and check the date on the pro purchase, though that is not the day the user first installed it, it might be close? But I also wouldn't know when to just keep the install date, and when to use the purchase date 🤔

And for FOSS builds, there is no option like that.

It's just a fun little easter egg

Could probably also change the system time, then install the app, then restore system time 🤔

@MarkyMarkDE
Copy link

My first E-Mail inquiry to you in case of SDMaid legacy was at 02.09.2012 at this time I was already a Premium User.

❤️

Only an idea to work around: if the user installing SD Maid really new then you create a control file in die hidden .sdmaid dir and in this file you write the current date and if the user uninstall, then you keep the hidden folder in place without changes inside the control file ...

Not a fan, as SD Maid is specifically trying to clean after apps that do exactly that (create such files that stay behind). Then SD Maid would be one of those apps that leave behind files to track the user...

One idea could be to try and check the date on the pro purchase, though that is not the day the user first installed it, it might be close? But I also wouldn't know when to just keep the install date, and when to use the purchase date 🤔

And for FOSS builds, there is no option like that.

It's just a fun little easter egg

Could probably also change the system time, then install the app, then restore system time 🤔

now, you talk about a special benefit, a download link if you reach 5+ years (veteran) and this should be able to get for all paid users, it is open what you mean with this veteran status or with the special download link.

I know, github has some features not includes like Playstore, but the buy date would be a solution, in my case I paid over Play and also the FOSS over github and have long time paid here monthly sponsorship.
My idea with this control file would be maybe much simpler to include, but I understand your reasons why you don't like this solution.

@d4rken
Copy link
Member Author

d4rken commented Sep 21, 2025

with the special download link

It's not "special". Just a link to Google Play (or GitHub) that people might share on social media, a little advertisement for SD Maid.

@d4rken
Copy link
Member Author

d4rken commented Sep 21, 2025

But I also wouldn't know when to just keep the install date, and when to use the purchase date 🤔

Oh it's really simple isn't it? If the google play date is OLDER than the install date 💡.

@MarkyMarkDE
Copy link

with the special download link

It's not "special". Just a link to Google Play (or GitHub) that people might share on social media, a little advertisement for SD Maid.

ahso okay. Thought we get a special SD-Maid Version with maybe more options or something, like a little thanks to the users which hold the App since so long time.

d4rken added a commit that referenced this pull request Sep 21, 2025
…data

  When a user reinstalls the app, use their Google Play purchase date (or GitHub Sponsors date for FOSS)
  as the actual install date if it's earlier than the system-reported install date. This ensures
  long-time Pro users who reinstall maintain their true "first use" date for anniversary features.

  The logic now:
  - Fetches upgrade/purchase date from UpgradeRepo with a 5-second timeout
  - Compares purchase date with saved install date
  - Uses the earlier date to preserve the user's actual first installation

  Example: User purchased in 2023, reinstalled in 2025 - will use 2023 as install date.

```kotlin
18:52:31.280 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): savedInstalledAt: 2025-09-08T14:49:48.161Z
18:52:31.280 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): systemInstalledAt: 2025-09-08T14:49:48.161Z
18:52:31.688 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): upgradedAt: 2023-03-28T17:14:16.958Z
18:52:31.688 SDMSE:Debug:CurriculumVitae               I  updateInstalledAt(): This is a re-install, setting install date to upgrade date.
```

See convo in #1948
@MarkyMarkDE
Copy link

Oh it's really simple isn't it? If the google play date is OLDER than the install date 💡.

in which cases this should happen? Nobody pay today for an App and install it weeks after 😉
By the way: If you pay for an App, Play installs it automatically seconds after successful payment (so payment and install date are identically).

d4rken added a commit that referenced this pull request Sep 21, 2025
…data

  When a user reinstalls the app, use their Google Play purchase date (or GitHub Sponsors date for FOSS)
  as the actual install date if it's earlier than the system-reported install date. This ensures
  long-time Pro users who reinstall maintain their true "first use" date for anniversary features.

  The logic now:
  - Fetches upgrade/purchase date from UpgradeRepo with a 5-second timeout
  - Compares purchase date with saved install date
  - Uses the earlier date to preserve the user's actual first installation

  Example: User purchased in 2023, reinstalled in 2025 - will use 2023 as install date.

```kotlin
18:52:31.280 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): savedInstalledAt: 2025-09-08T14:49:48.161Z
18:52:31.280 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): systemInstalledAt: 2025-09-08T14:49:48.161Z
18:52:31.688 SDMSE:Debug:CurriculumVitae               V  updateInstalledAt(): upgradedAt: 2023-03-28T17:14:16.958Z
18:52:31.688 SDMSE:Debug:CurriculumVitae               I  updateInstalledAt(): This is a re-install, setting install date to upgrade date.
```

See convo in #1948
@d4rken
Copy link
Member Author

d4rken commented Sep 21, 2025

(so payment and install date are identically).

But after a re-install, the pay date is older than the install date.

See example log in #1957

It's not perfect, but easy to add and better than nothing 🙂.

@MarkyMarkDE
Copy link

(so payment and install date are identically).

But after a re-install, the pay date is older than the install date.

See example log in #1957

It's not perfect, but easy to add and better than nothing 🙂.

it's okay for me.

FYI:
SD-Maid Legacy Unlocker

SD-Maid SE

@MarkyMarkDE
Copy link

MarkyMarkDE commented Sep 21, 2025

But after a re-install, the pay date is older than the install date.

yes, you are right. Didn't think about this case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, request, improvement or optimization General UI/UX User Interface/Experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants