A derived lifecycle over the three stored statuses. Archived and published are read straight from status; anything else with a valid future or today's date is scheduled, and a date already past makes it overdue. Each state has a one-line hint explaining what it means, and the filter row is ordered so the states that need a decision come first.
Also called: post status · upcoming posts · which posts are late · content filters
- 1postLifecycle() compares scheduled_for against today by DAY, not by instant — a post due today is due, not overdue since midnight.
- 2LIFECYCLE_ORDER puts overdue, scheduled and draft ahead of published and archived in the filter row.
- 3Each chip carries its hint: 'Its publish date has passed and it hasn't gone out — usually because it isn't finished.'
- 4The filter defaults to everything, and one click narrows to a single state.
Keith's request is quoted in the file: "we need the ability to filter, previously posted and upcoming … I also want to be able to distinguish the difference between a draft and something that has been scheduled. Because something that is scheduled needs to be reviewed sooner than something that's in draft mode." The code then argues it is a data-model gap, not a UI one: "status only knows three words… so a post with a date on the calendar and a post nobody has scheduled are the same word. They are not the same thing at all." And OVERDUE earned its own name from a real case: "a stub scheduled for 21 August, three days past, held back six times by the publish gate for being 96 words. Nothing anywhere said 'this is late'."
- Scheduled and unscheduled drafts were indistinguishable.
- A post past its date had no name and no visibility.
- Published posts, the least actionable set, dominated the list.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →