lattice.day
Back
product

Changelog: the winter platform release

What shipped

The winter release is the largest one we have put out since the workspace rewrite, and almost all of it came from a single complaint: booking a meeting was fast, but setting up the rules around booking a meeting was not. Six weeks of work later, the rules editor is a single screen, availability is inherited instead of copied, and the embed script is a fifth of the size it used to be.

Nothing in this release changes an existing booking page’s behaviour. If you do not open the new editor, your pages keep the schedule they had yesterday.

Routing forms

A routing form is a short set of questions in front of a booking page. Depending on the answers, the invitee is sent to a different page — a different host, a different meeting length, or a polite “we are not the right fit” screen.

Forms are built from the same field types as the rest of the product, so a question you already ask on a booking confirmation can be promoted to a routing question without retyping it. Answers travel with the booking and land in the meeting thread, which means the host reads them before the call instead of during it.

Routing lives on the Team plan and above. There is no limit on the number of forms, and a form can point at pages owned by different people.

Shared availability rules

Availability used to be a property of a page. If four people ran the same kind of call, the working hours were typed out four times, and they drifted apart within a month. Rules are now named objects that pages reference:

// Availability is resolved at request time: the page's own rule wins,
// then the workspace default, then the host's calendar busy blocks.
export function resolveWindows(page: Page, ws: Workspace): Window[] {
  const rule = page.ruleId ? ws.rules[page.ruleId] : ws.defaultRule;

  return rule.windows.flatMap((window) => {
    const local = toZone(window, page.timeZone);
    return subtractBusy(local, page.host.busyBlocks);
  });
}

Change the rule once and every page that references it moves. Pages that need an exception keep their own inline window and simply stop referencing the shared rule, which the editor shows as a small “overridden” marker.

A faster booking page

The public booking page now renders its first useful frame from a single document request. Slot data is inlined for the first visible month and fetched only when the visitor pages forward, so the common case — someone opening a link, picking tomorrow morning and confirming — never waits on a second round trip.

The embed script dropped from around ninety kilobytes to eighteen. It no longer carries a date library, because the page it opens already formats dates on the server, in the invitee’s zone.

Smaller things worth knowing

Reminder emails can now be sent at two offsets instead of one, and the second offset defaults to fifteen minutes before the call. Cancellations write a short reason into the meeting thread when the invitee provides one. The workspace audit log records availability-rule edits, which is the change most often blamed for a missing slot.

The API version stays the same. Two fields are additive: routingFormId on a booking and availabilityRuleId on a page. Older clients ignore both.

What is next

The next release is about the hour after a meeting: notes that write themselves into the thread, and a follow-up action that can create the next booking without leaving the page. If you want to try either early, the beta switch is in workspace settings, next to the release notes link that brought you here.


Wren Halloway

Related Blogs

Painless Meeting BookingThat Gives You Your Week Back

Get Started