Updates
Release history — Hester Group
v7.27 — July 2026
Exempt-day productivity accuracy, draft protection, and account fixes.
- Exempt days no longer dilute Prod/Hour: days whose status is flagged Exempt in Setup (Training, Event, etc.) are excluded from Prod/Hour — both their hours and their sales — and from the daily-productivity average. Sales on exempt days still count toward the store’s totals, and each exempt day on a report carries a note saying so.
- Clear hours breakdown: the report form, emailed report, and preview now show Total Hours, and — whenever a week has exempt time — Exempt Hours and Productive Hours (Total − Exempt), so nobody wonders where the hours went.
- Live summary in the report editor: the Report Center editor now shows the same Week Summary tiles as the employee form, updating live as you change hours, sales, or day statuses. Exempt statuses are drawn with a dashed outline.
- Store Dashboard: new Productive Hrs KPI tile and per-employee / per-week Prod Hrs columns alongside total hours. Tables in the side-by-side cards no longer wrap awkwardly.
- Historical recompute tool (admins):
admin_backfill_productivity.php recomputes past reports in bulk after you change exempt settings — preview first, apply on confirm, safe to re-run, never touches submission times or employee-entered content.
- Draft protection: opening a blank form can no longer overwrite a saved draft for that week — the server refuses empty-over-nonempty saves, and picking an earlier week now offers to Restore that week’s existing draft.
- Change Password fixed: the My Dashboard button previously bounced signed-in users to the report form. It now opens a proper change-password page (current password + new password with the same strength rules as setup, plus an “email me a reset link” option).
- Print / Save as PDF: every report view now has a 🖨 Print / Save PDF button that opens a clean, print-ready copy of the report (no menus or buttons) — use the browser’s print dialog and choose Save as PDF to file it.
- Choose how far back missing reports are tracked: keep the rolling lookback (last N weeks), or pick From a fixed start date in the new Missing-Report Tracking selector (Setup → Options) to check every week since a date — so a missed report can never quietly age out of the window. New-hire start dates are still respected either way.
- Options page now heals itself: settings added in newer versions (like Missing-report lookback, On-time grace period, and Business time zone) were invisible on databases installed earlier. Opening Setup now adds any missing option rows automatically — your existing values are never changed.
- New-hire fairness everywhere: the per-person Reports Expected From date (Setup → People) is now honored by reminder emails too — and when it’s blank, the system automatically uses the week the account was created. Nobody gets nagged or flagged for weeks before they started — and the start-week math now honors your configured week-start day (Monday or Sunday), so Sunday-start stores compute a new hire’s first expected week correctly.
- Goal “done” is now impossible to miss: instead of a small checkbox, every selected goal shows an amber Mark done button that turns green (✓ Done) when tapped — on the report form and the editor. And if you try to submit with goals still unmarked, the form lists them and asks whether to go back and mark them or submit as-is, cutting down on reports being sent back.
- Phone & tablet quality-of-life: tapping any field no longer makes iPhones zoom the whole page in (form controls are now 16px on phone widths, app-wide); hours/minutes/sales fields bring up the numeric keypad on phones; and the login field no longer auto-capitalizes or autocorrects usernames.
- One unified build: the device-aware UI layer (phone/tablet/desktop detection, phone-friendly card tables, and the modern table styling) is now part of the main system — there is no longer a separate “UI upgrade” version to track.
- Installer schema consolidated: everything the old MIGRATION_v7.18–v7.26 files added is now built into
schema.sql, and the separate migration files were removed. Fresh installs get the complete, current database in one step; existing databases need nothing.
- Hardening: migration
.sql files, editor backups, and the file manifest are no longer web-readable; a leftover template backup was removed from the tree.
v7.26 — June 2026
Send-back loop, draft visibility, edit reporting, and in-app badges (stage 2 of 2).
- Return for correction: a manager can send a report back to the employee with a reason. The employee sees an action banner in My History, fixes it in the same editor, and resubmits — which clears the returned state and notifies the manager. The original submission time is preserved, so returning and resubmitting never affects on-time status or streaks.
- Drafts in progress: a new manager/admin view lists reports employees have auto-saved but not yet submitted, with a read-only look at what they’ve entered. Linked from the Report Center.
- Edit activity report: totals, manager vs. employee edits, average edits per report, and average edit time vs. average original completion time (tracked separately), plus top editors and most-edited reports.
- In-app badges & notices: Returned / Edited / Awaiting-review badges in the Report Center and on employees’ own report lists, a returned-count badge, and an “edited by” note for employees.
- Setup fix: drag-to-reorder handles now respond reliably to a normal mouse click-and-drag (they previously only caught after an awkward motion).
- Resubmit + status fixes: a manager correcting their own returned report now properly clears the “returned” status on resubmit (it previously stuck). The edit-and-resubmit screen now matches the regular report form (numbered goal pickers, day cards, status chips). Report status now reads “Awaiting review” / “Resubmitted · awaiting review” / “Reviewed” so it’s clear whose turn it is, and the “Re-send” button is now labelled “Re-send for review”.
- Return-for-correction fixes: the email sent when a report is returned now links correctly (a line-wrap was corrupting the URL) and takes the employee straight to the edit-and-resubmit screen. Their My Dashboard now shows a clear “Action needed” banner with the reason and a resubmit button. Employees without review access are sent to their own dashboard instead of the Report Center (they can still open their own report by direct link).
- Analytics chart + Edit Activity polish: the “Avg Daily Productivity by Week” chart now scales correctly with the dollar value shown above each bar (it previously collapsed to thin slivers), and the Edit Activity report now uses the same tile styling as the rest of the Report Center.
- Editor matches the form: the report editor now uses the same Glow/Grow prompt chips, day-status chips, and category-grouped goal choices as the employee form. Per-day store editing and the coaching reflection are no longer duplicated on the report view — everything is changed in one place via Edit, which is versioned and reversible. Managers can also delete stale drafts, and the Edit Activity report shows both total and focus completion time.
v7.25 — June 2026
Full report editing with version history (stage 1 of 2).
- Edit any field: opening a report in the Report Center now has an Edit button (for users with the edit permission). A manager can change the week, goals, each day’s status/accomplished/hours/sales/store, and the Glow/Grow/Notes. Productivity totals are recalculated automatically on save.
- Streaks are protected: editing never changes the original submission time, so on-time/late status and submission streaks always reflect when the report was first submitted — an employee is never penalized for a correction.
- Full version history: every edit is saved as a version. The report view lists all versions and lets you pick any two to compare side by side, with a summary of what changed. Edits also email the employee and their manager and are logged, and a reviewed report returns to “awaiting review” when its content changes.
- Coming next (stage 2): a “send back to employee” option so an employee can make the correction themselves.
v7.24 — June 2026
Consistent store names, and coaching edits to a report’s reflection.
- Store names are uppercase: store names entered under Setup → Stores are now stored in uppercase (e.g. “Leland” → “LELAND”) and shown uppercase as you type, so they’re consistent everywhere. A one-time migration normalizes existing names.
- Coaching edits to Glow / Grow / Notes: opening a report in the Report Center now includes a “Coaching edits (reflection)” panel for users with the edit permission. After a coaching conversation, a leader can enhance or correct the employee’s reflection; saving updates the report and the Store Dashboard, emails the employee and their manager, and is logged. The original submission timing and review status are preserved. (Superseded in v7.26: reflection is now edited on the unified, versioned Edit page.)
v7.23 — June 2026
Report corrections now notify the employee and their manager.
- New “Edit / correct reports” permission: correcting a submitted report is now governed by its own permission (
reports.edit), separate from reviewing. It’s granted to Super Admin, Administrator, and Store Manager by default, and can be adjusted per role or per person under Setup → People → Access.
- Email on correction: when a reviewer changes a report’s store attribution, the system emails both the employee and their direct manager a summary of what changed, with a link to the report — so totals or details that were off can be confirmed or fixed. Every change is also written to the audit log, as before.
v7.22 — June 2026
Correct a report’s store attribution without deleting it.
- Per-day store editor: opening a report in the Report Center now shows a “Store attribution (per day)” panel (for users who can review reports, and only when the employee has more than one store). Set which store each day’s sales and hours count toward and save — the Store Dashboard updates immediately. This corrects reporting only; it doesn’t alter the submitted report text, and every change is written to the audit log. (Superseded in v7.26: per-day store is now edited on the unified, versioned Edit page.)
v7.21 — June 2026
The report form now shows who’s submitting, and their email.
- Your name is shown: when signed in, the report form now displays the submitting employee’s name in the Associate field (previously it was filled in behind the scenes but not shown on screen).
- Email now displays: the Email field shows the signed-in employee’s own email address. It was being recorded correctly but left blank on screen; that display gap is fixed. (This field is the employee’s address; who actually receives each report is set under Setup → Email Settings.)
v7.20 — June 2026
Per-day store selection, and a Store Dashboard review-rate fix.
- Pick a store for each day: employees assigned to more than one store now get a “Store for this day” selector on every day of the report, defaulting to their primary store. That day’s hours and sales are attributed to the store chosen, so a week split across two stores shows correctly on each store’s dashboard. Single-store employees are unaffected — their one store is applied automatically.
- Review Rate fixed: the Store Dashboard review rate was counting day-rows instead of reports, so a reviewed report could read as high as 700%. It now correctly shows the share of reports that have been reviewed (0–100%).
v7.19 — June 2026
Critical fix: the Employee Report Sheet works again.
- Report form restored: a section heading on the form had run onto the same line as the code right after it, which switched off the entire form’s on-page logic. That single line is why the This Week button did nothing, your name wasn’t filled in from your login, the Associate list was empty, and goals/day rows didn’t build. Corrected — the form now loads and behaves normally.
v7.18 — June 2026
The Store Dashboard now sees reports again.
- Reports are attributed to a store: the Store Dashboard rolls everything up by the store on each day of a report. Submissions weren’t recording that store, so the dashboard showed zeros. Each day now defaults to the employee’s store automatically — their only store if they have one, otherwise their primary store.
- Existing reports backfilled: a one-time migration (
MIGRATION_v7.18.sql) fills in the store on past reports for single-store employees and for multi-store employees who have a primary store set.
v7.17 — June 2026
A reliability fix for the report form, plus easier management of your signed-in devices.
- Report form hardened: the weekly report form no longer breaks if a profile or store name contains an unusual character. Previously a single bad character in a name could leave the form with an empty Associate list and blank identity fields; it now loads reliably for everyone.
- Active Sessions list scrolls: under My Dashboard, the list of signed-in devices is now a height-capped, scrollable area so a long list no longer stretches the page.
- Sign out all other devices: a new one-click button signs out every device except the one you’re currently using — handy after losing a phone or using a shared computer.
v7.16 — June 2026
More of the tool is now configurable from Setup — no code changes needed.
- Rename the feedback sections: under Setup → Form, you can now rename “Glow” and “Grow” (for example to “Wins” and “Challenges”), edit their prompts, rename the Notes box, and turn Notes on or off. The change flows through the report form, emails, and reports automatically. Existing data is untouched.
- Editable reminder wording: under Setup → Email Settings, you can now edit the reminder email’s intro line and button label, with
{name} and {week} merge tokens.
v7.15 — June 2026
Drag-and-drop now works on phones & tablets, plus accessibility improvements.
- Touch drag-and-drop: the grip handle now works on touchscreens, not just with a mouse — so you can reorder lists from a phone or tablet. The up/down arrows still work everywhere too.
- Screen-reader support: the up/down reorder buttons now announce “Move up” / “Move down”, and the decorative grip icons are hidden from screen readers to reduce noise.
v7.14 — June 2026
Drag-and-drop reordering across the Setup page.
- Lists in Setup can now be reordered by dragging the grip handle (☷) as well as the up/down arrows. A clear handle appears on each row so it’s obvious you can drag.
- This now works consistently on the top-navigation menu, the Setup side menu, Stores, Goal Categories, Day Statuses, and Glow/Grow chips.
- Reordering correctly ignores rows hidden by the Active/Archived filter, so a filtered view can’t scramble the order of items you can’t see.
v7.13 — June 2026
Consistent, auto-sizing text boxes everywhere.
- The auto-growing text boxes from the report form now apply across the admin pages too — the Setup fields (goals, keywords, email templates, notices, notes) and the reminder message box all grow to fit their content, with no resize handle.
- This keeps every text box in the system looking and behaving the same way.
v7.12 — June 2026
Cleaner, friendlier text boxes on the report form.
- Auto-sizing text areas: the Glow, Grow, Notes, and daily accomplishment boxes now grow to fit what you type — no more cramped, cut-off text.
- No more resize handle: removed the small drag handle in the corner that could pull boxes out of shape; text areas now always fill their space at full width.
v7.11 — June 2026
Timestamps now follow your business time zone, with automatic daylight saving.
- Time zone now drives the clock: every date and time shown in the app uses the business time zone set under Setup → Options → General — with the correct label (EST/EDT, CST/CDT, etc.).
- Automatic daylight saving: times shift correctly between standard and daylight time on their own (and zones without DST, like Arizona and Hawaii, correctly stay put). No toggle to manage.
- Clearer time-zone picker: the dropdown now shows friendly names like “Eastern — EST/EDT (UTC−5/−4)” and adds UTC, so it’s obvious what you’re choosing.
v7.10 — June 2026
Documentation pass — no behavior change. Makes the code easier to review and edit by hand.
- Added a short purpose header to every file.
- Documented the highest-risk and least-obvious logic: the People save loop (with a warning about the indexing that, if broken, caused the past admin-lockout issue), the role-based permission model, and email recipient routing.
- Left simple, self-explanatory code uncommented on purpose to keep it readable.
v7.9 — June 2026
Internal cleanup — no visible change, but a leaner, more consistent codebase.
- Removed unused legacy authentication/lockout helper functions left over from before the current role-based system.
- Removed a redundant database query on the employee dashboard.
- Consistency fix: the “Current Streak” on My Reports now uses the same calculation as the dashboard, so the numbers always agree and honor the configured week-start and grace settings.
v7.8 — June 2026
UI cleanup: removed duplicate settings and fixed two display bugs reported from the field.
- No more duplicate settings: “Week Starts On,” reminder/flag email toggles, and the notice toggles now appear in exactly one place. The Options page no longer repeats settings that have a dedicated home, so the two copies can’t drift out of sync.
- Fixed a stray blank field under “Reports Expected From” on the People form (a duplicate input rendered incorrectly).
- Fixed My Reports history layout: each row now stays readable in the narrower dashboard column, with clear labels on sales, hours, productivity, and goals instead of cramped, wrapping text.
v7.7 — June 2026
Reliability, correctness, and security hardening from a full system review.
- “Week Starts On” now works: the Monday/Sunday setting is honored everywhere (report form, dashboards, deadlines). It previously saved but had no effect.
- Business time zone setting: set your store’s zone under Setup → Options → General. All week boundaries and on-time cutoffs follow it.
- Consistent week math: all week calculations now share one source of truth, removing a rare midnight-boundary mismatch between the dashboard and saving.
- Faster dashboards: streak calculation now uses a single database query instead of one per week.
- Security hardening: email subject/sender lines are sanitized against header injection, and the autosave endpoint now strictly requires its expected request type.
v7.6 — June 2026
Late vs. on-time tracking, multi-week missing reports, and fairer handling of new hires.
- On-time vs. late: a report submitted after the deadline now counts as submitted but is marked late. Set the grace period under Setup → Options → Reports.
- Two streaks: employees see a submitted streak (any week they turned it in) and an on-time streak (weeks they beat the deadline). Filling in a past week late no longer fakes an on-time streak.
- Missing-report lookback: the manager dashboard now flags people with gaps over the last several weeks, not just the current week. Adjustable under Setup → Options → Reports.
- New-hire fairness: a Reports Expected From date on each person (in People) keeps new hires from being flagged for weeks before they started.
v7.5 — June 2026
Important fix for report saving, plus a manual Save button.
- Fixed data loss: reports for a past week (e.g. finishing last week’s report) were being rejected by the server and kept only in the browser. They now save to the database correctly.
- Fixed a time-zone edge case that could mis-judge the current week near the Sunday/Monday boundary.
- Added a Save Now button to the report, with clear “saved” or “couldn’t save” feedback.
- Auto-save now triggers on any meaningful content (daily logs, hours, Glow/Grow), not just the top fields.
v7.4 — June 2026
Faster email entry and small clean-ups.
- Email domain shortcuts: add your common domains in Email Settings; tap a chip in People to finish an address (e.g. type a name, tap @gmail.com)
- Enable/disable or remove domain chips anytime; manage them under Email Settings (requires email-settings access)
- Login screen wording updated to reflect the single sign-in & access-role model
v7.3 — June 2026
People-editor reliability and polish, plus an important safeguard against accidental lockout.
Fixed
- Adding a new person now shows Stores & Access Role immediately (no save-and-return needed)
- Each person's stores & access role now stay correctly tied to them when adding or reordering rows
- Store checkboxes no longer overlap on tablets & phones
- Names auto-format to Title Case and phones to (555) 555-5555 as you type
Safety
- The system now refuses any save that would remove the last account able to manage access — preventing a full lockout
v7.2 — June 2026
Actionable dashboards, a manager attention queue, and faster Setup editing.
Dashboards
- Manager dashboard: a "Needs Your Attention" queue — flagged reports, unreviewed reports, and who hasn't submitted this week
- Scope is configurable by org-chart tier (direct reports, or further down) in Setup → Options
- Team "this week at a glance" submitted count
- Employee dashboard keeps its status + streak focus
Setup speed-ups
- Click variable & function chips to build calculation formulas
- Click merge-token chips to build email subjects & bodies (per channel)
- Sort A–Z button on Stores, People, Job Titles, Goal Categories, Calculations & Keywords
v7.1 — June 2026
Automatic reminders, a configurable Setup sidebar, live permission & goal charts, and a key reliability fix.
New
- Automatic weekly reminders — pick a frequency and the day(s) to send
- Side / Section menu editor — reorder & rename the Setup sidebar (labeled Top vs Side)
- Live Access Roles × Permissions chart, printable, always current
- Live Job Titles × Goals chart, printable, always current
Fixed & Changed
- Fixed a field-name clash that could copy access-role keys into job titles
- Finished renaming Roles to Job Titles throughout Setup
- Renamed the Setup page file to setup.php
- Reminder sending is now shared by the page and the scheduler (identical output)
v7.0 — June 2026
Granular permissions, configurable settings, cleaner access model, and security hardening.
Access & People
- Role-based permissions: build access roles from specific page/action permissions
- Built-in roles (Super Admin, Administrator, Store Manager, HR / Compliance, Viewer) plus custom roles
- Per-employee Access Role; menus & Setup sections show only what each role allows
- "Roles" renamed to Job Title (drives goals & report display, not access)
- Leader status now auto-derived from who reports to whom — no manual checkbox
- Reports-To picker lists everyone with name, job title & email, matched by ID
Configuration & Security
- Self-describing settings registry — the Options page builds itself
- Consolidated Email Settings with per-channel routing & leader-chain tiers
- IP geolocation over HTTPS; audit-log retention housekeeping
- Installer enforces a strong APP_SECRET
- Legacy access code & unused files removed for a clean install
v6.0 — June 2026
Privacy, safety, and Setup management upgrades.
Privacy & Safety
- Editable pre-login notice on the sign-in page
- Privacy Notice in the Employee Guide with pop-out
- First-login privacy acknowledgement (re-prompts on version change)
- Acknowledgement audit report (searchable in Audit Trail)
- Keyword flagging of submitted reports for safety review
- Flagged Reports review page with severity & status filters
- Flag-notification email with custom templates
Setup Management
- One-section-at-a-time Setup navigation with counts
- Setup reorganized into focused sections
- Goal categories: archive with Active/Archived/All filters
- Collapsible, key-sorted Calculations
- Store sorting (Name / Store #)
- People sorting (Last name / Role / Permissions)
- Keyword Flagging & Options sections in Setup
v5.0 — June 2026
Full system rebuild on MySQL with Dax Pro typography, Hester Group brand design, mobile-first layout, and role-based access control.
Employee
- 2-page report: Info & Goals + Daily Log
- Glow, Grow & Notes on Info & Goals page
- Prompt chips for Glow & Grow
- Day status chips (Day Off, Sick, Vacation…)
- Database auto-save every keystroke
- Draft restore banner with source label
- Preview before submitting
- My Dashboard with draft, history, sessions
- Self-service password change
- Revoke own sessions from dashboard
Manager / Admin
- Report Center with review workflow
- Store Dashboard with aggregated metrics
- Feedback tab (Glow & Grow responses)
- Full Setup: stores, roles, goals, people, form, menu, calculations, email
- Reminder emails for missing submissions
- Audit Trail with device, IP, location, ISP, VPN detection
- CSV export of audit log
- Role-based access: None / Viewer / Admin / Superadmin
- install.php auto-deletes after setup
- Username generation fix (first initial + last name)