[{"data":1,"prerenderedAt":271},["ShallowReactive",2],{"$f2vb9wg6mir0vr":3,"mdc-xacwse-key":15},{"release":4,"newer":10,"older":12,"page":14},{"tag":5,"name":5,"publishedAt":6,"url":7,"prerelease":8,"markdown":9},"v1.0.3","2026-02-26T20:42:47Z","https:\u002F\u002Fgithub.com\u002Fanhourtec\u002FBookYourPTO-SaaS\u002Freleases\u002Ftag\u002Fv1.0.3",false,"## New Features\r\n\r\n#### Per-User Holiday Override Toggle\r\n- Added a \"Use custom holidays instead of organization defaults\" toggle to the **Edit User > Holiday Overrides** tab\r\n- When enabled, the user no longer follows the organization's public holidays — admins can configure a custom country, exclude specific holidays, or add custom ones\r\n- When disabled, the toggle clears any previously set custom holiday country\u002Fregion and the user reverts to organization defaults\r\n- Dashboard calendar, leave requests, public holidays, and email digests all respect the new setting\r\n\r\n#### Carry-Over Expiry Date\r\n- The carry-over balance now supports an optional expiry date — expired carry-over days are automatically excluded from balance calculations\r\n- Expiry is evaluated using the organization's timezone to prevent off-by-one date issues across time zones\r\n- The expiry date is cleared automatically when carry-over balance is set to zero\r\n\r\n#### Improved Leave Balance Calculations\r\n- Manual carry-over adjustments are now included on top of automated carry-forward calculations in balance views\r\n- User-specific carry-forward day limits now correctly override the organization-level cap\r\n- Carry-forward eligibility threshold is now exposed in organization settings for accurate frontend display\r\n\r\n## Bug Fixes\r\n\r\n#### Date of Birth Timezone Handling\r\n- Fixed date of birth shifting by one day in western timezones (e.g., Feb 25 displaying as Feb 24) by using the organization's timezone instead of UTC\r\n- Prevented selecting future dates in the date of birth picker\r\n\r\n#### Department Filter Toggle\r\n- Fixed the users filter modal where unchecking \"All departments\" did not deselect individual department checkboxes\r\n\r\n#### Leave Balance Carry-Forward Edge Case\r\n- Fixed an issue where setting a user's custom leave allowance to `0` was incorrectly treated as \"use organization default\" instead of zero\r\n\r\n#### Guided Tour Popover Appearing After Logout\r\n- Fixed guided tour popovers occasionally persisting on the login page after signing out\r\n- Tour state is now fully reset on logout, preventing stale tour data from carrying over between sessions\r\n\r\n### Improvements\r\n\r\n#### Quick Edit via Avatar Click\r\n- Clicking a user's avatar on the Users page now opens their Edit Profile modal directly\r\n- Available for Administrators, Executives, and Department Heads (restricted to their own department members)\r\n\r\n\r\n#### Leave Allowance Tab\r\n- Simplified the Edit User leave allowance tab with a cleaner, settings-focused layout\r\n\r\n#### SSO Domain Validation\r\n- Added validation to prevent public email domains (e.g., gmail.com, yahoo.com) from being added to SSO allowed domains\r\n- Instant client-side feedback with inline error messages\r\n\r\n#### Plan Downgrade Handling\r\n- Paid integrations (notification channels, calendar sync) now gracefully pause when an organization downgrades and automatically resume on re-upgrade without losing configuration\r\n",{"tag":11,"name":11},"v1.0.4",{"tag":13,"name":13},"v1.0.2",3,{"data":16,"body":17},{},{"type":18,"children":19},"root",[20,29,36,69,75,93,99,117,123,129,142,148,156,162,179,185,198,205,211,224,230,238,244,257,263],{"type":21,"tag":22,"props":23,"children":25},"element","h2",{"id":24},"new-features",[26],{"type":27,"value":28},"text","New Features",{"type":21,"tag":30,"props":31,"children":33},"h4",{"id":32},"per-user-holiday-override-toggle",[34],{"type":27,"value":35},"Per-User Holiday Override Toggle",{"type":21,"tag":37,"props":38,"children":39},"ul",{},[40,54,59,64],{"type":21,"tag":41,"props":42,"children":43},"li",{},[44,46,52],{"type":27,"value":45},"Added a \"Use custom holidays instead of organization defaults\" toggle to the ",{"type":21,"tag":47,"props":48,"children":49},"strong",{},[50],{"type":27,"value":51},"Edit User > Holiday Overrides",{"type":27,"value":53}," tab",{"type":21,"tag":41,"props":55,"children":56},{},[57],{"type":27,"value":58},"When enabled, the user no longer follows the organization's public holidays — admins can configure a custom country, exclude specific holidays, or add custom ones",{"type":21,"tag":41,"props":60,"children":61},{},[62],{"type":27,"value":63},"When disabled, the toggle clears any previously set custom holiday country\u002Fregion and the user reverts to organization defaults",{"type":21,"tag":41,"props":65,"children":66},{},[67],{"type":27,"value":68},"Dashboard calendar, leave requests, public holidays, and email digests all respect the new setting",{"type":21,"tag":30,"props":70,"children":72},{"id":71},"carry-over-expiry-date",[73],{"type":27,"value":74},"Carry-Over Expiry Date",{"type":21,"tag":37,"props":76,"children":77},{},[78,83,88],{"type":21,"tag":41,"props":79,"children":80},{},[81],{"type":27,"value":82},"The carry-over balance now supports an optional expiry date — expired carry-over days are automatically excluded from balance calculations",{"type":21,"tag":41,"props":84,"children":85},{},[86],{"type":27,"value":87},"Expiry is evaluated using the organization's timezone to prevent off-by-one date issues across time zones",{"type":21,"tag":41,"props":89,"children":90},{},[91],{"type":27,"value":92},"The expiry date is cleared automatically when carry-over balance is set to zero",{"type":21,"tag":30,"props":94,"children":96},{"id":95},"improved-leave-balance-calculations",[97],{"type":27,"value":98},"Improved Leave Balance Calculations",{"type":21,"tag":37,"props":100,"children":101},{},[102,107,112],{"type":21,"tag":41,"props":103,"children":104},{},[105],{"type":27,"value":106},"Manual carry-over adjustments are now included on top of automated carry-forward calculations in balance views",{"type":21,"tag":41,"props":108,"children":109},{},[110],{"type":27,"value":111},"User-specific carry-forward day limits now correctly override the organization-level cap",{"type":21,"tag":41,"props":113,"children":114},{},[115],{"type":27,"value":116},"Carry-forward eligibility threshold is now exposed in organization settings for accurate frontend display",{"type":21,"tag":22,"props":118,"children":120},{"id":119},"bug-fixes",[121],{"type":27,"value":122},"Bug Fixes",{"type":21,"tag":30,"props":124,"children":126},{"id":125},"date-of-birth-timezone-handling",[127],{"type":27,"value":128},"Date of Birth Timezone Handling",{"type":21,"tag":37,"props":130,"children":131},{},[132,137],{"type":21,"tag":41,"props":133,"children":134},{},[135],{"type":27,"value":136},"Fixed date of birth shifting by one day in western timezones (e.g., Feb 25 displaying as Feb 24) by using the organization's timezone instead of UTC",{"type":21,"tag":41,"props":138,"children":139},{},[140],{"type":27,"value":141},"Prevented selecting future dates in the date of birth picker",{"type":21,"tag":30,"props":143,"children":145},{"id":144},"department-filter-toggle",[146],{"type":27,"value":147},"Department Filter Toggle",{"type":21,"tag":37,"props":149,"children":150},{},[151],{"type":21,"tag":41,"props":152,"children":153},{},[154],{"type":27,"value":155},"Fixed the users filter modal where unchecking \"All departments\" did not deselect individual department checkboxes",{"type":21,"tag":30,"props":157,"children":159},{"id":158},"leave-balance-carry-forward-edge-case",[160],{"type":27,"value":161},"Leave Balance Carry-Forward Edge Case",{"type":21,"tag":37,"props":163,"children":164},{},[165],{"type":21,"tag":41,"props":166,"children":167},{},[168,170,177],{"type":27,"value":169},"Fixed an issue where setting a user's custom leave allowance to ",{"type":21,"tag":171,"props":172,"children":174},"code",{"className":173},[],[175],{"type":27,"value":176},"0",{"type":27,"value":178}," was incorrectly treated as \"use organization default\" instead of zero",{"type":21,"tag":30,"props":180,"children":182},{"id":181},"guided-tour-popover-appearing-after-logout",[183],{"type":27,"value":184},"Guided Tour Popover Appearing After Logout",{"type":21,"tag":37,"props":186,"children":187},{},[188,193],{"type":21,"tag":41,"props":189,"children":190},{},[191],{"type":27,"value":192},"Fixed guided tour popovers occasionally persisting on the login page after signing out",{"type":21,"tag":41,"props":194,"children":195},{},[196],{"type":27,"value":197},"Tour state is now fully reset on logout, preventing stale tour data from carrying over between sessions",{"type":21,"tag":199,"props":200,"children":202},"h3",{"id":201},"improvements",[203],{"type":27,"value":204},"Improvements",{"type":21,"tag":30,"props":206,"children":208},{"id":207},"quick-edit-via-avatar-click",[209],{"type":27,"value":210},"Quick Edit via Avatar Click",{"type":21,"tag":37,"props":212,"children":213},{},[214,219],{"type":21,"tag":41,"props":215,"children":216},{},[217],{"type":27,"value":218},"Clicking a user's avatar on the Users page now opens their Edit Profile modal directly",{"type":21,"tag":41,"props":220,"children":221},{},[222],{"type":27,"value":223},"Available for Administrators, Executives, and Department Heads (restricted to their own department members)",{"type":21,"tag":30,"props":225,"children":227},{"id":226},"leave-allowance-tab",[228],{"type":27,"value":229},"Leave Allowance Tab",{"type":21,"tag":37,"props":231,"children":232},{},[233],{"type":21,"tag":41,"props":234,"children":235},{},[236],{"type":27,"value":237},"Simplified the Edit User leave allowance tab with a cleaner, settings-focused layout",{"type":21,"tag":30,"props":239,"children":241},{"id":240},"sso-domain-validation",[242],{"type":27,"value":243},"SSO Domain Validation",{"type":21,"tag":37,"props":245,"children":246},{},[247,252],{"type":21,"tag":41,"props":248,"children":249},{},[250],{"type":27,"value":251},"Added validation to prevent public email domains (e.g., gmail.com, yahoo.com) from being added to SSO allowed domains",{"type":21,"tag":41,"props":253,"children":254},{},[255],{"type":27,"value":256},"Instant client-side feedback with inline error messages",{"type":21,"tag":30,"props":258,"children":260},{"id":259},"plan-downgrade-handling",[261],{"type":27,"value":262},"Plan Downgrade Handling",{"type":21,"tag":37,"props":264,"children":265},{},[266],{"type":21,"tag":41,"props":267,"children":268},{},[269],{"type":27,"value":270},"Paid integrations (notification channels, calendar sync) now gracefully pause when an organization downgrades and automatically resume on re-upgrade without losing configuration",1790889965267]