Browse businesses Browse shifters How it works Pricing For businesses For shifters Help About
Sign in Sign up free

← All posts

Pick up a shift, stretch it, drop it where it belongs

A new Day view with a real time axis. Drag a shift to move it. Drag the edges to resize it. Drag across days on Week or Month. And a dozen other things that make the calendar feel like a calendar.

  • feature

Yesterday we shipped the calendar. This morning we made it draggable across days. Tonight, the day view that makes it actually a calendar landed.

Day view

Switch to Day in the toolbar at the top of /business/calendar or /shifter/calendar. You'll see one column. The y-axis is hours, marked top to bottom from midnight to midnight. Shift blocks live in the column, anchored at the time they start, sized to the time they run.

If today is the day you're looking at, there's a live emerald line crossing the column at right now. It moves with the clock.

Drag-to-move

Grab any non-completed shift block. Drag up to make it earlier, down to make it later. The block follows your cursor with a ghost preview and snaps to 15-minute increments so you don't end up with shifts that start at 9:37 unless you actually want one.

When you let go, a confirmation modal opens pre-filled with the new times and asks you to send. If the shift was pending, the other party gets a counter-offer. If it was accepted, the modal shows a warning that the shift will return to pending until they re-confirm.

Drag-to-resize

Grab the top edge of a shift block. Drag it. The start time changes; the end stays put. Grab the bottom edge instead, and you're moving the end time while the start stays put. Both edges have a thin handle along the inside; you'll see your cursor turn into a vertical resize handle when you're on it.

Same modal opens on release. Same confirmation step. The resize is just a different way to say "I'd like to change this shift to be these times."

This is the gesture that's been missing. A shift went a little long? Drag the bottom down twenty minutes, confirm, done. Need it to start half an hour earlier? Drag the top up. The conversation that used to happen in messages now happens in the calendar.

Click an empty slot to schedule on it

If you're a business and you click an empty time on the day view, you'll bounce to your dashboard with the broadcast send-shift modal already open, the date pre-seeded, AND the start time pre-seeded to the time you clicked. End time defaults to one hour later. So clicking 2 PM Tuesday gets you a 2 PM-3 PM Tuesday shift, ready to broadcast.

If you're a shifter, you'll bounce to open shifts filtered to that day so you can see what's already available before scheduling around it.

Week view got the same treatment

The Week view used to be a horizontal strip of seven day-cells, each listing its shifts top-to-bottom. That was honest but flat. As of today, Week is also a time-axis: seven columns side-by-side, each with the same vertical hour grid as Day. The sticky header at the top tells you which column is which day.

Drag works horizontally too. Grab a shift on Tuesday, drag right to Wednesday at a different time, drop. Both the day and the time update in one gesture. The same modal opens with the new date and times pre-filled, ready to confirm.

Resize works the same as in Day. Top edge for start, bottom edge for end.

Month is still Month

Month view stays as a 7×6 grid of day cells; the at-a-glance overview is what it's for. Cross-day drag on Month is date-only (you can't reach into a day cell to grab a specific time block — they're not big enough). For granular work, switch to Day or Week.

Pending and accepted shifts are draggable in all three views. Cancelled, superseded, and completed shifts aren't — those are settled state.

A note on accepted shifts

When you drag an accepted shift, the modal shows a clear warning at the top: "This shift is currently accepted. Sending will return it to pending until [the other party] re-confirms the new terms." That's important. Both sides agreed on a time; one side proposing a new time means the other has to actively agree to the new one before the shift is firm again.

Behind the scenes the same superseded-original + new-pending-child mechanism kicks in, so the negotiation history stays honest.

What you can do today

Open /business/calendar or /shifter/calendar. Click Day. Find a shift. Pick it up. Drag it. Stretch it. Drop it. See what happens.

Full release notes →