Most entries are logged by a person. Some are logged for them by a source: a schedule logs Work every weekday, and Weather logs each day’s weather from NASA POWER. Whatever made it, an entry logged for you is an ordinary entry of an ordinary trackable, read, charted and edited like any other. Nothing it holds is something a person’s own entry could not.

What sets it apart is four rules, shared by every source.

It says what made it

The entry’s logged_by names its source: schedule:<id> for a schedule, nasa-power for the weather. The entry panel says so on an entry already logged (“Logged for you by Therapy, a schedule”) and that changing it makes it yours.

Its id is the source’s

A source makes each entry’s id from what it is for: schedule:<schedule>:<day>, nasa-power:<trackable>:<day>. Two devices filling one day therefore write the same row, and sync keeps one. A source can also tell, by id, whether a day’s entry exists or was deleted.

Changed, it is yours

Any change made by hand clears logged_by (the entry hook’s update path). From then on the source leaves it alone: a schedule does not end an interval someone changed, and the weather does not refill or overwrite a day that has an entry.

Deleted, it stays deleted

Deleting an entry logged for you, or one that was and has since been made yours, adds its id to a synced setting, logged-for-you:deleted, and every source skips the ids there, so a deleted day is not logged again on the next fill or on another device. Undo takes the id back off the list. A schedule’s Not today adds that day’s id in the same way.

It is not you logging

A day with only entries logged for you is not a day you used the app: Logged anything leaves them out (daysYouLogged in packages/core/src/logged-anything.ts), so such a day reads as Untracked, and no Rundown item is reported as not answered for it (Issues). This keeps a week away from reading as a week of nothing just because the weather kept arriving.

Schedules · Weather · Readings · Issues · Entry