Binary
Count
Duration
Avoid
Four task types, each tracked its own way.
"Did I do the habit today?" isn't one question — it's four different ones depending on what the habit actually is, and forcing all of them through a single yes/no checkbox loses real information. A binary task is the simplest: it either happened or it didn't, like "meditated today." A count task tracks a number that accumulates across the day toward a target, like "drink 8 glasses of water" — you can log progress in pieces and the day completes once you hit the number. A duration task tracks time instead of quantity, like "read for 30 minutes," logging minutes toward a target rather than discrete units. An avoid task inverts the whole model: the habit is defined by something you don't do, like "no smoking today," so the day counts as complete precisely because nothing was logged against it. These aren't cosmetic labels — each type drives a different logging interface, a different progress indicator, and different chain-completion logic under the hood. Picking the right type when you create a habit is what makes the chain actually represent what you're trying to build, rather than flattening a nuanced behavior into a single tap.