Highlights
- Company costs - record your own costs and income (food, equipment, maintenance, a catering job) under categories you create, on top of daily net sales and labour. Monthly lines like rent are entered once and repeat, so editing the amount updates every future month at once.
- Profile pictures everywhere - the picture you upload now shows on every avatar in the app: coworkers on your shift, the rota, active clock-ins, timesheets, the admin inbox, the staff list and the people directory. Staff without a picture keep their initials.
- Back stays in the app - the Back button used to jump out to whatever you were browsing before Wavro. It now returns to the previous screen inside the app, or to your home page when there is nowhere in-app to go. Android's hardware back button follows the same rule.
- Areas are optional - a brand-new company no longer has to create an area before adding its first employee, and the Add/Edit staff form separates the person's area (what they do) from their role (what they can access).
- Honest billing copy - the billing page now quotes the price you are actually charged, and a failed checkout explains what went wrong instead of showing a generic error.
- DPA and subprocessors pages - both are published and linked from the footer for customers who need them on file.
Changes
Features
- feat(company-costs): cost and income entries with company-defined categories, monthly recurrence, and a profit view over labour and sales.
- feat(profile): carry the user's avatar through every service and screen that renders a person, replacing hand-rolled initials circles.
- feat(areas): areas are optional; the staff form picks area and permission role separately, and onboarding offers an optional Areas step.
- feat(dashboard): the Activity card shows each staff member's clock-in time, in the company timezone.
- feat(legal): DPA and subprocessors pages on a shared legal layout, listed in the footer and sitemap.
Fixes
- fix(navigation): Back no longer leaves the app - it counts only in-app history and falls back to your home page; Android's hardware back does the same and only minimises the app once you are already home.
- fix(billing): pricing copy matches the configured Stripe prices, checkout errors surface their real cause, and per-seat billing updates as the team grows and shrinks.
- fix(sample-data): the sample week now loads into the areas model, and no longer fails when the company already has an area of the same name.
- fix(staff): saving or cancelling the staff form returns to the staff list you came from.