v0.7.0
Analytics & Reporting
- Staff performance stats — staff card now shows aggregated service counts (e.g. "373 piercings, 13 check-ups") with pie chart distribution and average check metric, filterable by period (1M / 2M / 6M / 1Y)
- Most popular services ranking — new analytics widget showing a numbered leaderboard of most-booked services with progress bars; supports period selection (1M / 3M / 6M / 1Y) and staff filtering; also available as bar/pie chart
- Net profit per procedure — admin view in staff services list now shows commission %, commission amount, and net profit per service, color-coded green/red
- Average check filtering — average check analytics now support minimum amount threshold, staff filter, and event type filter
- Dynamic widget discovery — "Add Widget" modal now shows all available analytics metrics from the server instead of a hardcoded list; new backend metrics appear automatically
- Widget period persistence — selected time range is saved per widget and restored on next page load without requiring edit mode
Service Categories
- Service categories — group services by category (e.g. Ear Piercings, Body Piercings, Consultations) for better organization and analytics aggregation
- Category management — admin-only page for creating, editing, and deleting categories with assignment toggles per service
- Categories in services list — new column in the services table showing assigned categories
Inventory Enhancements
- Margin tracking — inventory table now shows margin percentage (admin-only, color-coded green/red) and margin details in the product modal
- Product popularity — new sortable "Sold" column showing total units sold per product
- Product filtering — filter inventory by dynamic attributes (color, volume, etc.), text search, and categories
- Editable imported products — price, cost, quantity, and description can now be edited even for externally-imported products, with badge indicating overridden values
- Sale history per product — inventory item modal now shows sale history for that specific product
- Redesigned product modal — proper sections (Product, Pricing, Stock) with bordered layout and standard loading indicator
- Fixed: price columns now use minimum width, preventing content clipping
Staff Management
- Staff-specific service duration — each staff member can now have a custom service time per service, alongside custom pricing
- Services grouped by category — staff services section now shows collapsible category groups with search
- "Provides Services" toggle — admins can mark staff who don't provide services (e.g. administrators); hides Services and Performance Stats sections accordingly
Calendar & Events
- Event type management — create, edit, and delete event types with color picker in Configuration → Calendar section
- Event reference status — calendar event badges in Sales now show visit status (green dot for completed, gray for planned)
- Fixed: staff avatars now display correctly in Week/Day view column headers with tooltip (name, position, shift time)
UI & Usability Improvements
- Configuration page polish — tab icons added, URL anchor navigation (#general, #booking, etc.) with browser back/forward support
- Smooth grid filters — filter panels animate on open/close, skeleton loaders during first data load, no more twitch when expanding price filters
- Consistent button icons — standardized Create (plus-circle) and Save (checkmark) button icons across the entire application
- Customer visit history collapse — visits collapse to 5 most recent with "Show more" button when count exceeds 5
- Mobile UI improvements — removed search field gap, icon-only buttons on mobile, dashboard in sidebar, auto-collapse sidebar on navigation
Bug Fixes
- Fixed inventory grid price columns being clipped on narrow screens
- Fixed staff avatars not loading in calendar Week/Day column headers
- Fixed pie chart breaking when switching chart type on ranking widgets
- Fixed filter panel animation jump caused by fixed max-height value
- Fixed sidebar double icon when collapsed with service categories submenu
- Fixed parent menu item highlight when a subitem is active
Internal
- Inventory field management supports 3 modes: CRM-managed, imported-overridable, imported-read-only
- Analytics metrics now include type indicator (plain vs group) for frontend rendering decisions
- Product cost captured at time of sale for accurate historical margin calculation