Changelog — LocksmithKit
[2026-05-27]
- Customer portal: PIN always required. The phone-only lookup path is gone — every customer signs in with phone + PIN, or creates an account with the same fields. The "I have a PIN" toggle and the "Require a PIN" setting are removed (the setting is now ignored, the API hard-rejects PIN-less lookups). Simpler, more secure.
- Staff logout lands on the staff login. Logging out as admin/staff previously dumped you on the customer portal — now you go back to
/staff. Customers and unauthenticated users still land on /track.
- Admin "New booking" now uses the customer form inline. When admins tap the +New button, the same multi-screen customer form opens embedded in the page (no popup, no new tab) and lands them right on step 1 of the booking wizard. The submission flows through the same pipeline, so what an admin captures over the phone is indistinguishable from a customer's self-booking. The form's URL accepts new
?step=book and ?service=<id> parameters for deep-linking.
- Location pickup now actually asks for permission. The platform was sending
Permissions-Policy: geolocation=() which silently blocks the geolocation API at the browser level — the customer never even sees the "Allow location?" prompt. Switched to geolocation=(self) so the standard browser flow fires.
- Confirmation screen now matches the booking type. For ASAP bookings the timeline reads "Confirming with our team → Driving to you → Arrived" (no false claim that a tech is already dispatched). For scheduled bookings the timeline switches to "On the books → Technician dispatched on the day → Arrived" and the ETA card shows the actual scheduled date/time instead of a generic "25–35 min".
- Home dashboard surfaces Reports / Activity Log / Settings. Added a Quick actions pill right under the summary cards (opens the actions sheet) and a 3-tile Quick Links grid below the Money row — Reports, Activity Log, Settings. Activity Log is also now in the Quick Actions list. Owner-only.
- Staff "New booking" form fixes. Services list now mirrors the public customer form (dropped the catch-all "Other"). A new "Use the customer booking form instead" tile sits at the top — opens the same multi-screen flow customers see, in a new tab, for when you'd rather walk a caller through the real thing. Create button restyled to the amber accent (was the indigo block).
- Staff section moved up + edit support. The Staff card now sits right under Customer-facing so you don't have to scroll past Save to manage your team. Every staff row gets an Edit (pencil) action — change a name or phone number after creation without removing and re-adding the person. PIN changes still live behind the key icon.
- Save settings button restyled. The bottom Save button picks up your amber accent now instead of the platform's generic indigo block — matches the rest of the settings page.
- One-tap-Spanish booking link. Settings → Customer-facing now shows an extra "Español link" row alongside your main customer link. Send this version to Spanish-speaking customers and the booking form opens with Spanish already selected — no need to ask them to tap the EN/ES toggle. The form reads a
?lang= URL parameter, so adding more languages later (Portuguese, French…) is a one-line change.
- Fixed: "This form is no longer available" error when submitting the public booking form on older installs. The booking endpoint now self-heals — if the default form row is missing, it's rebuilt from the canonical HTML on the first submit.
- Staff can do everything except open Settings. Promoted staff permissions across bookings, customers, payments, pricelist, portal, forms, locations and reports — full create/edit/delete on all of them. Settings (and the activity log) stay admin-only.
- ntfy push — set your own topic. Settings → SMS & push now has a dedicated "ntfy push topic" field. Pick any unique string (defaults to your business phone digits) and subscribe to that same topic in the ntfy phone app to start getting native banners. Also added an optional self-hosted ntfy server field.
- Clearer SMS setup. Twilio fields now show concrete placeholders and helper text. The Twilio From number falls back to your business phone if you leave it blank.
- Better recovery when location pickup fails. If the customer's browser blocks location (or returns an error), the booking form now auto-focuses the address input and pulses it amber — making it obvious they can just type the address by hand.
[2026-05-26] — First full release 🚀
LocksmithKit is now a complete field-service app — built for locksmiths, and for anyone who goes out to the customer.
- Design your own booking form. Paste your form's HTML (and optional CSS) under Settings → Booking forms; LocksmithKit renders it on a shareable, embeddable public page. The only requirement is a name and a phone field. Run several forms for different services or markets.
- Every submission becomes a job. New bookings land in a live queue (New → Accepted → In Progress → Completed). Customers are matched or created automatically by phone, so you build a customer list without lifting a finger.
- Instant team alerts. When a booking comes in, your signed-in team gets a real push notification on their device — it feels like a dispatch room in your pocket. One tap to Accept and assign a technician.
- Price after the job, get paid your way. The technician sets the final price once the work's done, then marks it paid or collects online — Stripe and Paystack are built in. Customers can pay their balance from their own portal.
- Customer portal. Customers look up and track their jobs by phone — or with a phone + PIN if you switch that on under Settings.
- Make it yours. Turn modules on or off (online payments, rate card, reports, multiple locations), rename labels, and manage your team — all from Settings.
- Dark by default. Your public pages open in a sleek dark theme; visitors can flip to light, and you can change the default.
[2026-05-14]
- Added a Watch/Read tab on the tutorial page — every lesson now has a written version alongside the video for users who prefer to read.
[2026-04-20]
- Demo and subscribe now work out of the box — finished migrating the app to Pancho's UUID identity model so Try Demo no longer errors with 'We could not start the demo'.
Internal
- Added the
tenant_members table to schema.sql (backed by the platform's _per_user_app_bootstrap_owner() hook).
[2026-04-18] — Renamed
- Renamed from Locksmith Pro to LocksmithKit (slug
locksmithpro → locksmithkit).
- Every display string, marketing copy, schema reference, code-comment, folder path, DB filename, and
subscriptions.app_id value now uses the new slug. Platform had not gone live yet, so old URLs are not preserved.
All notable changes to this app are recorded here. Newest entries on top.
[0.1.0] — 2026-04-16