A small release for Jobora, the field-service tool, with one fix worth reading about.
Try the Jobora demo ↗Live, on sample data, no sign-up.
What was wrong
Jobora numbers quotes, invoices and jobs from counters in its settings (Q-0001, INV-0001, JOB-0001, prefixes editable). The demo data set — "Northside Property Services", loaded from Settings → Load demo data — wrote its rows with hand-picked numbers and left those counters at 1. The first real quote created after a demo load was therefore handed Q-0001 again, the database's uniqueness rule refused it, and the save failed with a server error instead of a quote.
We found it on our own public demo while recording a walkthrough. Anyone who installed Jobora, loaded the demo data to look around, and then raised a quote would have met the same wall.
What changed
- The demo seed now points every counter past the highest number it wrote.
- Both number generators step past a number that already exists, so an import, a restored backup or an old demo database can never make a save fail on a duplicate number.
- Ten tests cover the case, including the exact save that failed. The suite stands at 166.
Why the generators changed too
Fixing the seed alone would have left every 1.0.0 installation that had already loaded the demo data with counters still sitting at 1. So the second guard lives where the number is issued: when Money::nextNumber() or Jobs::nextNumber() is about to hand out a number that a row already carries, it steps forward until it finds a free one, still inside the same locked transaction that keeps two simultaneous saves from sharing a number. A restored backup, a CSV import that brought its own numbering, or a prefix you changed halfway through the year are covered by the same rule. Numbers keep their four-digit padding and your prefixes; nothing is renumbered.
What to do
If you own Jobora, download 1.0.1 from your order page and copy app/ over your installation — no migration, no settings change; your data is untouched. If you had already loaded the demo data on 1.0.0, the generators in 1.0.1 recover on the next save without any action from you. The public demo runs 1.0.1 already.
Nothing else moved. Same one-time purchase, same files, one bug fewer.