Who's OOO 0.3.0 is out today. It's a feature release rather than a big architectural change, so this is a short recap of what's in it and the thinking behind a couple of the choices.

Most of the work this cycle went into the calendar feed and the org chart, with public holidays and an in-app news feed rounding it out. Here's what changed.

Customizable iCal feed

Who's OOO has exported an iCal feed for a while, so you can subscribe to who's away from inside Google Calendar, Apple Calendar, or whatever you already use. The problem was that the feed was all-or-nothing. You got everything, every absence for everyone, whether or not it was relevant to you.

0.3.0 adds a customization step. Before you copy the subscription URL, a modal lets you pick what the feed contains. The selection is encoded into the feed itself, so two people on the same instance can subscribe to two different views without any server-side per-user state to manage.

The calendar subscription customization modal in Who's OOO, with Auto and Custom toggles for team members and holiday calendars, a team tree showing who reports to whom, and France, Germany, and Netherlands selected as holiday calendars

The iCal integration settings got the same treatment. It's the kind of feature that's easy to ship as "here's a URL, good luck," and I wanted to avoid that.

Org chart

0.3.0 adds an org chart. It's the view that shows who reports to whom, and it's wired to the same structure that drives a lot of the approval logic underneath. Being able to see and edit those relationships in one place makes the rest of the app easier to reason about, since that structure decides who approves a given leave request.

The Who's OOO organization chart, with an admin at the top connected to four direct reports, and Expand all and First level only controls for changing how much of the hierarchy is shown

Public holidays in the leave request calendar

Public holidays were already available through the Date Nager API integration, but they weren't visible on the new leave request calendar picker. Now they appear directly there, so when someone is picking dates they can see which days are public holidays for their country before they request time off. Less guessing, fewer requests that overlap a day the office is closed anyway.

An in-app news feed

There's now a news feed area inside the app, with a link back to the homepage. It reads from the same JSON feed that powers this blog, so a post like this one can surface inside an instance without anyone having to redeploy or check the site manually. It's a small thing, but it gets the project's updates in front of the people actually running it.

Fixes

Two fixes I want to mention. The invitation confirmation flow had a rough edge that I tightened up, along with the tests around it, so onboarding a new person to an instance is more reliable. And the checkboxes in the calendar customization modal had a styling issue that's now sorted.

In closing

Nothing in 0.3.0 changes how you'd describe Who's OOO. It's still a self-hosted leave planner. But the feed is more useful when you can shape it, the calendar tells you more before you commit to a date, and updates now reach you inside the app instead of waiting for you to come looking.

Who's OOO is open source and free to self-host. The full changelog and the code are on GitHub. If the project is useful to you, give it a star, or consider sponsoring the development if you want to support it.