=== EmpRoster ===
Contributors: thealiflab
Tags: employee management, leave management, attendance, schedule, roster
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.8.22
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Self-hosted staff rostering and shift scheduling for WordPress. No per-user fees. Your data, your server.

== Description ==

EmpRoster is a self-hosted WordPress plugin for managing staff schedules. Everything is stored in your own database — no external APIs, no SaaS dependencies, no per-seat pricing.

Core features:

* Visual weekly and monthly roster views
* Shift creation with direct assignment or open-slot mode
* Clock in / clock out attendance with break tracking
* Leave requests with manager approval workflow
* Weekly availability management per employee
* Shift swap requests between employees
* Payroll calculations with optional tax
* Daily labour budget tracking
* Email notifications for key events
* Frontend employee portal via shortcodes
* Profile Mode to restrict employee WordPress logins

== Installation ==

1. Upload the plugin folder to /wp-content/plugins/
2. Activate via Plugins > Installed Plugins
3. Navigate to EmpRoster > Settings to configure
4. Assign the Roster Manager role to your scheduling staff

== Screenshots ==

1. Weekly roster view showing staff schedules across the week
2. Shift creation modal with employee assignment and availability hints
3. Employee clock in/out interface with break tracking
4. Leave request approval workflow for managers
5. Timesheet summary with payroll calculations
6. EmpRoster Settings panel view of various options

== Changelog ==

= 2.8.22 =
* Casual staff can no longer request annual or sick leave. Casuals do not accrue paid leave, so those two types are now hidden from the leave request form and rejected if submitted, leaving Personal, Unpaid and Other available. This applies on both the admin screens and the front-end leave page, and a manager cannot switch a casual employee's existing request over to annual or sick either.
* Full-time and part-time staff are unaffected and can still request every leave type as before. Supervisors with no employment type set on their record are treated as full-time rather than casual, so their leave requests keep working.
* Removed the "Made with ☕ by thealiflab" credit from the plugin's admin footer. The Support, Docs and Free Plugin links are unchanged.

= 2.8.20 =
* The Upgrade page now opens with a straightforward "Choose a Plan" action, and the note beneath it explains that you can upgrade or change plans at any time.
* Plan-status messages no longer quote a fixed promotional period, so they stay accurate as pricing changes.

= 2.8.19 =
* Fixed staff on approved leave disappearing from the Week and Day views of the shift calendar. Anyone on leave was only shown if they also had a shift rostered that week, so leave showed up correctly in the current week but vanished as soon as you navigated to a future week where nothing had been rostered yet — even though the same leave was visible the whole time in Month view. Week and Day view now list everyone who has either a shift or approved leave in the period, matching Month view.

= 2.8.18 =
* The shift calendar now fits the screen you are actually using. Week view previously needed about 1156 pixels for the staff column plus seven days, which is wider than the working area of a 13" or 14" laptop once the WordPress menu is open — so the roster scrolled sideways and the last day or two of the week sat off screen. The columns now size themselves to the space available.
* Day view no longer stretches each shift across the full width of the screen. Shifts are laid out as cards that sit side by side where there is room and stack where there is not, so they stay a readable width on any monitor.
* Month view fits a portrait tablet without scrolling sideways, and on a shorter laptop screen the day cells are a little more compact so the whole month is visible at once instead of needing to scroll.
* On smaller screens the shift blocks tighten up rather than truncate: shift titles wrap to a second line instead of being cut off mid-word, and the location line is dropped from the week view where the columns are narrowest.
* The hourly pay rate in the staff column now sits on its own line under the role, reading "Employee · Full-time" then "$25.00/hr" beneath it. It is easier to scan and it narrows the staff column, which is the change that buys the most room back on a small laptop.

= 2.8.16 =
* Your Brand Colour setting now applies across the whole plugin instead of just the main buttons and links. Set it once under EmpRoster > Settings and it flows through every screen.
* The "today" highlight in the shift calendar, the weekly roster and the daily budget row now use your brand colour — the day cell, its top accent bar, the highlighted date circle and the TODAY label.
* Button hover glows, input focus rings and toggle focus outlines now tint to your brand colour rather than staying blue.
* Soft blue panel borders, the availability panel and the setup wizard rows now follow your brand colour.
* The printed roster PDF and the public roster shortcode now match your brand colour too. Both render outside the main app, so they previously stayed blue no matter what you set.
* Shifts and locations you have not given a colour to now fall back to your brand colour instead of the default blue. Colours you picked yourself are unchanged.

= 2.8.12 =
* Any pay rates you already entered stay stored against each staff record, untouched. Nothing is erased, reset, or zeroed, and the figures reappear exactly as they were if the site later moves to a product that includes payroll.
* Fixed: A staff record could still accept a pay-rate value sent directly to the server even though no screen offered the field. That write is no longer performed here.


== Frequently Asked Questions ==

= Do I need to pay monthly? =

No. EmpRoster uses annual licences, not subscriptions. One payment per year.

= Is my data stored on your servers? =

No. All data stays on your WordPress server. The plugin has no SaaS dependency.

= Can employees access without logging into WordPress admin? =

Yes. Five frontend shortcode pages let employees view shifts, clock in/out, submit leave, and set availability without accessing WP Admin. Profile Mode can block employee logins entirely.
