Today

⁂︎❦︎
0day run
Protocol0/0
Extras0/0
School0/0
Timers. Tap the dial on a step to start its dwell. The ring fills clockwise as it runs and the row sweeps behind it; both go teal when the time is up. A check says you shampooed — the timer says you left it on long enough.

Non-daily items live in Settings › Full schedule, whether or not they're due today. Change the days there and it sticks; you don't need a rebuilt file.

The day ends at 4am, not midnight — a routine finished at 1am counts for the night you were awake. The run counts days where every core step got checked, and one missed day never breaks it; two in a row do. Your best run is kept whatever happens to the current one. See Settings › Streak & history.
Build -. The middle code is a fingerprint of this file's own code. If two devices show different fingerprints, one is on a cached copy — hard-refresh it.

Everything overdue, longest first. A row that has been overdue three weeks is not a reminder any more, it is furniture — do it, change its interval, or take it off the board.

This page cannot notify you. A browser tab has no access to Reminders, Calendar or the Clock, and on iOS its timers stop running the moment you switch apps or lock the phone \u2014 so a dwell that finishes while you are elsewhere rings late, when you come back, or not at all. Everything below hands off to iOS instead of pretending otherwise.

Add

Hand timers to the Clock

With this on, starting a dwell here also starts a real timer on your phone, so it rings on the lock screen whether or not you are looking at this page. It needs a Shortcut to receive the duration \u2014 the recipe is below.

Shortcut
One off

The one-off is for anything not on the board \u2014 laundry, a rest between sets, something in the oven. It goes straight to the Clock and never touches this page.

1. Protocol Timer — receives a duration from this page and starts a real timer.
New Shortcut, named exactly what you put in the Shortcut box above. One action: Start Timer. Set the unit to seconds and tap the number field, then pick the Shortcut Input variable. That is the whole thing. Test it by turning the toggle on and tapping any dial on the board.

2. Protocol Reminders — writes your alerts into Reminders each morning.
Actions in order: Get Contents of URL pointed at your sync URL, with method GET and a header x-sync-key set to your sync key (both are on the Sync tab). Then Get Dictionary Value, key alerts. Then Repeat with Each. Inside the repeat: Get Dictionary Value key l from Repeat Item for the title, Get Dictionary Value key atPretty from Repeat Item, then Text reading Today at followed by that value, then Get Dates from Input, then Add New Reminder with the title and that date as the alert. End Repeat.
Then in the Shortcuts app under Automation, add a Time of Day automation for whenever you wake, running that shortcut, with Run Immediately on and Notify When Run off.

Alerts here are a published list, not a live connection. Change a time and the Shortcut picks it up the next morning — or run it by hand to see it now.

The chain is one view of this and it is the most fragile one. The grid is the honest one — a bad night is one square in a season, which is what it actually was.

lessall clear

One missed day never breaks the run. Two consecutive missed days do. Completing anything renews the grace, so the only way to lose a run is to actually stop for two days — not to have one late night.

Everything in the app uses this, not just the streak — the board stops clearing itself out from under you, and a routine checked after midnight logs against the evening it belonged to. Set it later than you have ever been awake, earlier than you have ever woken up.
One row per day: date, core steps done, core steps due. The heatmap lives in synced storage, so this is how you get it somewhere permanent — a spreadsheet, a note, anywhere that is not one Worker away from being gone.

Everything that isn't daily, whether or not it's due today. The grid is the next seven days starting with today — fixed weekday items in plain text, floating and anchored ones in italic on the day they actually land, with an overdue count if they're already late. Tap any row in the list below to open its schedule.

Grouped by what happens if you cut it. Every price and duration is editable — these are ballpark drugstore figures, not live prices. Put in what you actually pay and the math becomes yours. Duration is months per unit at daily use.

There is no single correct price — the same 8oz Living Proof bottle sells for $14 to $40 depending on seller, and the cheap end is usually marketplace resellers where haircare gets diverted or counterfeited. Prices here are brand-direct anchors. Overwrite with what you actually paid.

Duration is the number that matters more and the one nobody can look up. Hit Opened one today when you start a bottle and Ran out when it's done — after one cycle the estimate becomes measured, and the monthly figure becomes real.

Ceilings are generic category defaults and they are the weakest numbers here — they can’t know that your hair type or skin puts you in a sub-category with a higher floor. When a research chat establishes what a category actually costs for you, overwrite the ceiling. That’s the number that makes the orange flags mean something.

What each thing actually is, what it's for, and why it earns a step. Read once — you shouldn't need it twice.

Keeps this file's state on a server you own, so your streak survives a new copy of the file and your phone and desktop show the same thing. Local storage stays the source of truth — the server is a mirror. Lose signal and nothing breaks; it catches up when you're back.

Stored separately from your routine data, so restoring a backup won't wipe it.

These are baked in — you shouldn't need this. It's here for the night you swap something and don't want to wait on a rebuilt file. The type is what rewrites the instructions, sets the timers, and decides which steps exist; the name is just so the step says what's in your hand.