Inklate Docs
Scheduling

Calendar and drafts

All posts is a calendar of everything scheduled and published — with a drafts tray, drag-to-reschedule, and conflict-safe moves when a teammate or agent edits underneath you.

All posts is the calendar view of your organization’s work: scheduled, publishing, and published posts on the days they go out, plus a tray of drafts waiting to be placed. You reschedule by dragging, and Inklate keeps moves honest when more than one person — or an agent — is working at once.

The calendar view

The calendar opens on a month grid and switches to week or day. Each post shows as a chip on the day and hour it’s scheduled for, tinted by status, with its channel icons. In the day view, the surface is 24 hour rows for the cursor’s day; the current hour is marked, and past hours are muted and not droppable.

Where you drop a card decides what changes: a drop on the month or week grid changes the date and keeps the time of day, while a drop on an hour row in day view changes the time. Clicking an empty slot starts a new post scheduled at that moment.

The drafts tray

The drafts tray is a collapsible rail on the left holding unscheduled work and failed posts. Collapsed, it’s a thin spine showing the backlog count; open, it’s a draggable list. Anything an agent drafts over MCP or the API lands here on the next refresh — same rows, no separate sync.

To schedule a draft, drag it out of the tray and onto a day. The drop schedules it in place. Failed posts surface here too, with their error inline, so a placement that didn’t land is one drag away from being rescheduled and retried.

Drag-to-reschedule is permission-aware

Dragging a card schedules or moves a post, which requires the content:publish permission. A member without it sees the drag handle hidden and the card stays edit-only — no card that lets go into a server refusal. The server remains the source of truth; the affordance only reflects what a drop would actually do. Permissions are set per member in your organization.

Conflict handling

Every reschedule carries the version of the post you dragged (expectedUpdatedAt). If a teammate or an agent moved or edited that post since you picked it up, the server refuses the write with a 409 rather than clobbering their change:

This post was changed by someone else — reload to see the latest.

The card snaps back to where it started, and Inklate refetches so the calendar shows the change that beat you. This optimistic-concurrency check means concurrent editing never silently overwrites — the last writer doesn’t win by accident.

Where to go next