Daily Habit Streak Tracker (w.i.p.)

I could post the macro so far but it's kind of a confusing mess. I'll try just outlining the idea.

Trigger: midnight
Action: enable a specific floating button

But what if the device is off at midnight?

Trigger: Bootup
Constraint Check: certain variable(s) indicating a user-defined daily habit has not been marked complete on this day.
Action if constraint passed: enable the button (pretty sure there needn't be more than one button in the picture)

Trigger: Floating button tapped
Constraint check: string variable called "habitname" is empty.
Action if constraint passed: set "habitname" to user prompt with suggestion to phrase it in the past tense. Let's say user writes "Drawn a smiling face," meaning user endeavors to draw a face every day and see how many days in a row he/she/they manages to go without skipping.
Action: prompt user to set Boolean variable. Text of prompt includes a question. 'Have you 'Drawn a smiling face,' today?" Canceling prompt allows button to persist, natch. True text reads "Yes; Done For Today" and false text reads "No; Snooze Reminder."

IF FALSE
A: disable button trigger
((Set of actions here. I'm deciding between the wait action, tieing the Wait For Trigger action to a stopwatch, or other ways of snoozing.))
A: enable button trigger
END IF

IF TRUE
A: set integer called "streak" to value +1
A: disable floating bubble
END IF

From there, I have ways in mind to add notes and share progress. "(User) has 'Drawn a smiling face' for lv=streak days in a row!"

TO MAKE THIS WORK
I need the macro to tell whether or not a day has been skipped. In that case, set "streak" back to 0.
Also need it not to do the +1 action twice in same day.

Figure I'd do this with two more variables.

New First Action: set a variable named "datetoday" with magic text including Year, Month, & Day. No matter what triggers the macro, "datetoday" will be made correct right off the bat.

Constraint Check: Boolean True (Remember the macro will get this far only after user affirms prompt.)
Constraint Check: lv=datetoday does not match lv=datelastdone
Action: set streak to value +1
Action: set a variable named "datelastdone" with exact same magic text including Year, Month, & Day.

Firstly Anticipated Question
Why don't I just choose from the myriad streak tracker apps on the Play Store?
Well, I've tried a few in the past and they're what got me thinking how to improve upon them. If anyone thinks they know a full-featured one that does everything one could reasonably expect, do tell. Smart money says it doesn't have all the features I plan to add, though.

My Questions For the Forum
Best way to make the macro tell if a day has been skipped?
Most days, if an integer corresponding to "datetoday" is greater than "datelastdone" +1, it works to set "streak" back to 0. I confess I'm scratching my head a bit, though, on what it should do on the 1st of each month.

Broadly, is there a way to do it with system time?

Would the constraint I need be a feasibe feature request?
We already have "Macro Invoked/Not Invoked" within the past fixed amount of time.
My idea is "Macro Invoked/Not Invoked on current calendar date." I'll probably go ahead and post this.

Or are there existing actions, constraints, etc. that would serve my purposes that I'm missing, here?

Overarchingly, what's the most efficient way to set up the functions I've described?
 
Top