Changelog

Pre-launchAlpha

Profiles, working days, and accessibility

ProfilesLeaveAccessibilityPerformance

Per-user weekend override

Managers and admins can now set custom weekend days for individual team members. Useful for part-time schedules or regions with non-standard weekends. Leave calculations respect the override.

Temporary address

Users can add a temporary address to their profile for when they’re working from a different location. The field appears conditionally and stays separate from the primary address.

Profile header improvements

Your own profile now shows a “You” badge. Timezone display was extracted into a dedicated local time component for cleaner rendering.

Accessibility pass

Added ARIA labels to radio groups, icon buttons, and toggle groups across leave settings, member management, and public holidays. Decorative icons are now hidden from screen readers. Form inputs specify type and autocomplete attributes.

Phosphor Icons bundle optimization

Configured optimized package imports for the icon library, reducing bundle size by avoiding full-library imports.

Leave booking redesign

LeaveUX

Holiday type breakdown

The leave duration breakdown now distinguishes between public holidays and organization holidays. Previously it just said “holiday” — now you know which kind.

Booking form rework

Started exploring a new approach to the leave booking form. Date selection uses a single date range picker instead of separate start and end fields.

Layout and notifications polish

NotificationsNavigationInternal

Ops notification indicator

The admin dashboard now shows unread notification counts. Ops users get the same notification bell that regular users have, routed to the right context.

Sidebar triggers on every page

Added sidebar toggle and breadcrumb separators across all app page layouts. Every page now behaves the same on mobile.

Planning page placeholder

Added a proper “Coming soon” placeholder for the planning page with the new design principles for placeholder pages.

Type safety cleanup

Removed loose types from organization and user data handling. Stricter TypeScript across admin pages.

Icon migration and on-demand holidays

Design SystemLeaveHolidays

Phosphor Icons

Migrated the entire icon library from Lucide to Phosphor Icons. Every icon across marketing, auth, app, and UI components was replaced. Server components use the SSR variant to avoid hydration issues.

On-demand holiday import

When you submit or edit a leave request, the system checks if holidays have been imported for the relevant year and fetches them automatically if not. No more gaps when booking leave into next year.

Style guide explorations

Added an icon comparison page to the internal style guide for evaluating Phosphor, Tabler, and Remix icon libraries side by side.

Public holidays, working days, and analytics

HolidaysLeaveAnalyticsNavigationSettings

The biggest day in this batch. Most of the work centred on making leave calculations accurate for teams spread across different countries.

Public holiday management

Organizations can now manage public holidays with local name support, recurring holidays, and per-country configuration. Holidays import from an external API and fall back gracefully if it’s unavailable.

Work country override

Individual team members can now have a work country that differs from the organization default. Managers can set this for their reports. Public holidays and working day calculations respect the override.

Working days in leave calculations

Leave requests, history, and pending approvals now show working days accurately — accounting for weekends, public holidays, and organization holidays.

Holiday import failure notifications

When a holiday import fails (unsupported country, API down), platform operators are notified. The system continues without blocking the user.

Sidebar reorganization

Replaced the collapsible submenu sidebar with a flat, sectioned layout. Three sections: top-level pages, Team, and Time Off.

Settings default cascade

Implemented a three-layer settings cascade: platform defaults → organization → user. New members inherit org defaults, which inherit from platform defaults.

Analytics dashboard improvements

Added daily session and daily active user charts to the admin analytics page. Added IP address display to session tables.

UI consistency pass

Unified focus ring styles across all input, select, and textarea components. Updated the time-off export section to use calendar popovers instead of plain date inputs.

Layout refinements

NavigationDesign System

Page widths and typography

Adjusted max-width settings across app pages for better use of screen space. Updated global font settings and nav component text alignment.

Active route matching

Sidebar nav items now support pattern-based active state detection, so parent items highlight correctly when you’re on a child route.

Rename “Leave” to “Time off”

UXLeaveEmails

Renamed the entire leave system from “Leave” to “Time off” across 72 files. Old URLs redirect to the new ones.

Full terminology rename

Updated sidebar labels, page titles, breadcrumbs, button text, toast messages, email subjects, notification titles, settings pages, profile sections, admin dashboard, and marketing copy.

Cross-organization isolation tests

Seven automated tests confirming users in one organization cannot access another organization’s data.

QA, performance, and design system

PerformanceAccessibilityDesign SystemSEO

React best practices pass

Performance optimizations across the leave management system. Deferred analytics, parallel data fetching, dynamic imports for below-the-fold components.

Web interface guidelines pass

Accessibility improvements: ARIA labels on calendar nav, focus indicators, touch-manipulation on buttons, text-balance on headings.

OG and Twitter share images

Added Open Graph and Twitter card images with local font rendering. Removed decorative elements for better legibility at small sizes.

Design Principles document

Created the Design Principles documentation defining the monochrome-first visual language, typography hierarchy, component patterns, and anti-patterns.

Sidebar restructure

Refactored sidebar components with tooltip support, smoother transitions for collapsed states, and removed redundant imports across layout files.