Skip to content

Calendar ​

The Calendar surface is a month grid of the work items that have dates, plus a drawer of the ones that do not.

Interval semantics ​

An item's placement is derived from its schedule, never from a stored "day" value:

  • An all-day item starts at the beginning of its start date and ends at the beginning of the day after its end date. Its stored end date is inclusive, so the exclusive boundary is the next midnight.
  • A timed item uses its true instants: start date combined with start time, end date combined with end time.
  • Overlap with a day is half-open at both ends, so an item ending exactly at midnight belongs to the day it ended on and not to the next one.

The four shapes ​

ShapeConditionHow it is drawn
UnscheduledNo start dateNo cell on the grid. It waits in the Unscheduled drawer, never dropped on the floor.
All-dayAll-day, one local dayOne chip, in that day's cell.
Multi-dayAll-day, more than one local dayOne chip per day it covers, each stating its position in the span.
TimedStart and end instants with timesPlaced by its instants. It may cover one day or several — a timed span that crosses midnight is still timed, and reports how many days it touches rather than changing shape.

Only a month grid is offered. Most work items are all-day, and a week view earns its keep through an hour grid — over rows that mostly have no time of day it would degrade into a month grid with seven columns and a lot of empty space. A week view becomes worth building when timed items are common enough to fill one.

Days are your local days ​

Every day boundary is computed in your timezone, with your first day of the week.

This is a deliberate difference from the Chainabit cloud, which computes "today" in the server process's own local time. An item scheduled for 00:30 on the 16th is on the 16th for the person who scheduled it, whatever zone a server happens to run in — so NEXUS uses the zone of the person looking at the screen, and the surface labels say so.

Moving work around ​

The calendar makes exactly one kind of write: it sets an item's start date, or clears it.

  • Drag a chip onto a day to move it there. An existing end date is carried by the same number of days, so a span keeps its length.
  • Drag a chip into the Unscheduled drawer to clear its date.
  • Drag an item out of the drawer onto a day to schedule it, or use the item's schedule menu — Schedule for today, Schedule for tomorrow, Schedule for the first of this month.
  • A scheduled chip's menu offers Move to the previous day, Move to the next day, Move to next week, Move to today and Unschedule. Asking to shift an item that has no date writes nothing and says so.

Nothing moves optimistically. Every write is awaited and then read back, and the surface compares where the item actually landed with where the drop asked for it — "the store accepted the write" and "the item is on the day you dropped it" are different claims. A refused or diverging move leaves the grid as it was and states why in a notice that does not disappear on its own.

What appears here ​

The calendar reads this machine's own store — the items you created. If a sharing phase ever adds items assigned to you elsewhere, this surface is deliberately meant to stay creator-only, so that accepting somebody else's work never starts filling your calendar with it.

When a project is in scope, both the grid and the drawer are narrowed to that project's items.

Where to go next ​

  • Work Items — the four legal schedule states behind these four shapes.
  • Boards — the flow reading of the same items.
  • Projects — narrowing the calendar to one project.

Built with purpose.