MG Jobs — what's new
Current version: 9.48 · Download installer · Buy a license
The installer is not code-signed yet, so Windows may say
“Windows protected your PC” and list the publisher as unknown: choose More info,
then Run anyway (why). Check you have the
genuine file first:
Get-FileHash .\MG-Setup.exe -Algorithm SHA256 should print
ab0147033545c452994cac6e87156d65e8984201d0c35ce40bafc1e3dcd4bb3b
9.48 — Clearer customer requests and connected owner tools Release candidate
October 2026 — not yet published
- Files say where they are saved — mixed uploads report each actual result and retry only failures. Supported photos can sync; documents and unsupported or oversized images remain clearly marked local-only.
- Customer follow-ups keep their attachments — allowed attachments are stored with the correct business and request before success is shown. Failed forms keep their text, refreshing a successful request does not resend it, and preferred times are requests awaiting business confirmation.
- A more consistent customer portal — shared dark and light styling, business branding, clearer upload help and accessible correction feedback.
- Readable partner links — owners can choose a share name while previously shared links keep working. Partner pages reflect paused programs and reserved payouts that need review, without changing historical money.
- Secure Owner Companion pairing — an updated desktop and hosted service can pair through a short-lived one-use link without exposing the business sync credential. Notes and status changes confirm actual saves; older unsent edits have an explicit private recovery flow, never silent deletion or automatic delivery to another business.
- Working Pipeline and membership views — existing jobs, leads and follow-ups feed the Pipeline; owners can search maintenance memberships, see verified lifecycle status and open the matching provider administration page. Existing feature opt-outs are respected.
9.47 — Referral agreements and clearer owner controls
October 2026
- Agreements belong to each promoter — owners can configure purchase and renewal commissions, rates and holds. Published changes apply to new referrals; existing referrals keep their captured terms.
- A separate promoter portal — promoters can see their own redacted earnings and statements without access to business customers, technicians, private owner notes or other promoters.
- Review before recording a payout — owners can hold suspicious referrals, review refunds and reconcile reversals after a payout. A reservation is not a payment, and recording an external payment never sends money automatically.
- Stronger sign-in separation — tenant and vendor browser sessions carry an explicit business audience. Older browser sessions may need to sign in again; saved jobs, licenses and passwords are not reset.
- A current desktop bundle — the release candidate packages the current interface and preserves account-domain download authority. Windows publisher signing remains waived; trusted update signatures are still required.
9.46 — Current schedules and safer recovery Release candidate
October 2026
- One current visit schedule — customer status, calendar downloads, appointment management and confirmation use the linked job's current schedule. Confirm checks that interval and its duration for conflicts; missing or ambiguous schedules need review instead of falling back to the old request.
- Reminders remember delivery — moving a visit away and back does not resend an already acknowledged reminder. Uncertain past delivery stays blocked from automatic replay.
- ETA where owners work — owner and office job views show the technician's reported arrival estimate, when it was set and whether it needs updating. This does not start location sharing or reveal coworkers' locations to technicians.
- Routes use confirmed locations — route suggestions use confirmed address pins. Stops without a confirmed location keep their scheduled order, and a suggestion does not open an external maps service automatically.
- Safer reconnects and restores — hosted-origin evidence stays with deleted and restored jobs. Restoring settings cannot silently revive an old payment connection's approval.
- Storage problems stay visible — failed database saves preserve recovery evidence and refuse further changes when the stored copies cannot be reconciled safely. System health distinguishes pending database copies from unresolved or incomplete evidence; it does not erase damaged records.
- Privacy and small-screen fixes — expired location cleanup also runs when a request is refused. New backups exclude the obsolete geocoding cache, map keyboard order follows the phone layout, and license-copy feedback waits for the clipboard result.
9.45 — Owner-controlled collection and safer checkout Release candidate
October 2026
- You choose who collects — owners can give each technician a separate Collect payments permission in Team accounts. It starts off and takes effect only after the hosted business confirms it. Price visibility alone does not grant collection access.
- My work, not company finances — permitted technicians can record money already received or request a card payment link for their own assigned jobs and recorded completion history. Completed service details stay read-only; other people's work and company finances remain private.
- Checkout follows the current balance — card links are checked again after the payment provider responds. A changed balance, currency, permission or connection refuses the stale checkout instead of presenting it as current.
- Replies stay with their job — switching jobs or accounts during a payment no longer copies the old job's link or leaves its confirmed balance stale. Unsent notes and job edits are preserved.
- Personal history survives sync — a technician's recorded completed work remains in My work. A missing older record triggers one scoped recovery pull without discarding pending local edits.
9.44 — Service map and private shift sharing
October 2026
- See service locations together — owners with the map entitlement can filter confirmed customer locations by payments and upcoming work. Every location stays available in the list, including addresses without confirmed coordinates. Nearby pins open an identity-preserving location list.
- Publish deliberately — saving a manual pin on this computer is separate from publishing it to your connected business. The app marks a pin server-backed only after the server confirms its current source and revision. Private saved views belong to the owner and connection.
- Sharing is a technician's choice — the phone starts with location off. An on-shift technician can explicitly share an approximate latest position with the business owner. Pause, clock-out, offline and hiding the page stop sharing; reopening never resumes it automatically. Other technicians and customers do not receive the owner staff feed.
- Customer tracking stays job-specific — visit links show only a valid, fresh, explicitly shared point for that customer's assigned technician and on-the-way job. No location history or automatic arrival-time prediction is created.
- Optional street background — locally bundled maps work without external tiles. A reviewed server provider and explicit business opt-in are both required for street backgrounds; unconfigured or unavailable backgrounds stay clearly labelled.
- Restore without reviving consent — location consent and latest staff readings are excluded from backups and exports. Repairs, restores and storage transitions advance consent generations instead of reactivating old sharing.
9.43 — Safer reconnects and sync
October 2026
- Old replies stay with the old connection — reconnecting or changing an authorized hosted connection during sync stops pending replies from being saved under the new connection. The connection check and save now happen together, including photo acknowledgments and error cleanup.
- Your saved work stays — previously saved jobs and unsent local edits are kept. If the connection changes, MG Jobs explains that pending changes were not saved and asks you to sync again with the current connection.
- Stronger business-boundary tests — added checks for both directions of business access, forged business selectors, anonymous document access and late sync replies. These tests do not replace checks on a live installation.
9.42 — Every payment counted, taxes that follow you
October 2026
- No payment slips through — when a deposit or another payment comes in, MG Jobs tries to close the old Stripe or Square balance link. If that link is paid again, or two payments land at the same moment, each verified payment is recorded once and any overpayment is flagged for review and refund. A payment in another currency is never counted against your invoice; you get a notice to review it.
- Invoices show what was paid — the customer's invoice and your printed copy list the payments received, the balance still owed and a PARTIALLY PAID stamp. The issue date stays the date the job was first billed.
- Taxes follow your settings until you bill — jobs not billed yet pick up your current province and tax rates when saved, and GST, HST, PST and QST print on their own lines. Setup now asks for your province. The tax summary counts the tax on every invoice you've billed, paid or not. Billed invoices never change.
- Tax sync says what happened — jobs can finish syncing while the website's taxes still need attention; Settings shows the reason and an owner-only retry.
- Mark paid tells you what is owed — on a part-paid job it says how much is still due instead of quietly doing nothing.
- Accepted amounts stay accepted — a job made from an accepted estimate keeps its agreed total. Tax evidence that doesn't add up asks for review instead of inventing a new split.
- Deposits only when owed — the customer portal no longer offers a deposit on a paid job, and never asks for more than the balance.
- Cleaner exports — Xero exports no longer send unknown item codes (the job number goes in Reference), and QuickBooks exports exclude your private job notes. Review the import preview and reconcile totals in your accounting package.
- Stock and editing — parts added from stock come off stock once, even if Save is clicked twice; an uncertain save asks you to review inventory. Plain templates clear old itemized rows, and fractional quantities keep their value.
- Invoices and settings — the invoice labels the service date, and you can add your tax registration number in Settings. Settings saved at the same moment from two places no longer undo each other. Website money cards show what is owed with tax and what was received. Emails are never signed "us", and the website admin has a Business name setting.
- Encryption failures stop safely — if business-record encryption or new data-key protection cannot complete, the save is refused instead of writing plaintext or using a key that was never saved. A new business's first saves made at the same moment all keep their data. Existing records are not overwritten.
- Smaller fixes — the job form's Save button stays in reach, Free Offline no longer offers to sync, amounts show their cents, tax fields have screen-reader labels, unexpected-reply logs never quote response bodies, the booking page fits phones, and the free Pro trial link opens the trial.
9.41 — Payment links, exports and small screens
October 2026
- Payment links ask for what is still owed — a link now charges the balance, after any deposit or payment already received, and an invoice that is already paid gets no link. A link made before a payment came in is no longer shown to the customer.
- Same tax on the website — MG Jobs sends your province and tax rates to the website, so jobs booked online or added by a technician use the same GST and PST. Invoices that were already billed keep their amounts and their dates.
- Xero and QuickBooks — the export writes one row per invoice line with its own tax code (taxed or exempt), with exact tax code names set in Settings → Accounting export. Review the import preview and reconcile totals in your accounting package; supported import modes can differ.
- Fits smaller screens — MG Jobs opens sized to your monitor, and the side menu scrolls so Sign out is always reachable.
- Fewer sync hiccups — when the server sends an unexpected reply, Sync and Check for updates try again once and then say so plainly instead of showing a JSON error. Nothing is lost.
9.40 — Itemized invoices with GST and PST
October 2026
- Itemized invoices — an invoice or estimate can now list each part and labour line, with quantity and price, instead of one lump sum. Pick lines from your price book or your stock to save typing.
- Choose your province — pick it in Settings and MG Jobs fills in GST and PST (or HST, or GST and QST) for you. Each tax prints on its own row on the invoice, so your customer sees exactly what they paid.
- Not taxable — untick Tax on a line (a permit fee you pass on) and it is left out of the tax.
- Tax report — the tax summary shows each tax separately, so GST and PST add up the way you file them.
- Same on the web — the invoice link your customer opens, their customer page and the PDF invoice show the same lines and taxes as your desktop; the receipt shows each tax on its own row.
- Payment links charge the full amount — the payment link now asks for the full amount with tax.
- Nothing changes on old invoices — invoices you already sent keep their amounts and look exactly as before.
- Settings fix — saving the hub admin Settings now saves your Timezone too. Before, it was quietly left unchanged.
9.39 — Replace your sync token
October 2026
- New sync token — the business owner can replace the desktop sync token from admin Settings, and System health warns when the token is too short to be safe. After replacing it, paste the new token into MG Jobs on each computer.
9.38 — Trade calculators checked against published references
October 2026
- Garage door springs — spring rates now use the standard torsion-spring formula (the previous figures were about half the real rate), door weights follow a published chart (a 16×7 insulated door is about 170–190 lb), turns include the extra cable-tension turn, and each spring pick shows its stress-based cycle rating. Always weigh the door and confirm with the manufacturer's chart.
- Electrical — aluminum conductors use their own ampacity and resistance tables, small conductors respect their breaker limits, and service size is estimated with a clearly named method: NEC standard, NEC 220.82 optional or CEC 8-200.
- Plumbing — pipe sizing follows the IPC or UPC demand tables, so adding a fixture can never shrink the main; tankless sizing uses your incoming water temperature, sizes electric units in kW and amps, and says when one unit is not enough.
- HVAC — heating and cooling estimates follow the climate zone, round up to real equipment sizes, size the furnace by AFUE and point to CSA F280 / Manual J for the real calculation.
- Free download counts — the vendor admin shows how many people downloaded the free installer today, this week and this month, and from which page. Bots are excluded and no IP addresses are stored.
- Roofing — waste is labelled correctly, overhangs, rakes, hips and low slopes are handled, and ice & water coverage follows the IRC or the National Building Code of Canada.
9.37 — Choose your trade
October 2026
- Choose your trade in Settings — businesses that set up before trade packs existed can now pick their trade under Settings, which turns on that trade's calculator (for example the door & spring calculator).
- Ready for stronger separation — the hosted app's shared data now lives in the app's own site folder, so our host can isolate the app from the licensing system.
9.36 — New jobs always reach your desktop
October 2026
- Hub changes always reach the desktop — if the hub's change counter is ever lost or reset, new changes are still numbered after everything your desktop has already seen, so website requests, bookings and technician edits are never skipped.
- New setup video — the midnightgrid.com homepage shows the first-run setup, from download to first job.
9.35 — Safer sessions and restores
October 2026
- Jobs keep their original customer — restoring a deleted job keeps its saved local customer and property links, even if its contact details changed before deletion. Undoing a refused deletion and keeping the server's copy use the same checks. An unavailable link leaves the snapshot pending instead of guessing a replacement.
- Removed accounts lose access — an existing browser session no longer falls back to owner access when its user is removed or deactivated.
- Notice edits leave other settings alone — saving the launch notice no longer rewrites an older copy of your other settings if another request changed them at the same time.
- Website lead failures are reported — booking maintenance reports a failure when an old website request cannot reach Inbox. The request stays saved for correction.
9.34 — Website quote requests reach your Inbox
October 2026
- Website leads in the desktop Inbox — a quote request from your own website's form now also arrives in the MG Jobs Inbox as a website request, with its photo, not only in the admin Leads list. You still get the same single email; nothing extra is sent to you or the customer.
- Earlier website leads too — open leads saved before this update (not marked Converted, Lost or Spam) are added to the Inbox once, noting the date the customer asked. No emails or phone notifications are sent for them.
9.33 — Launch notice you can edit
October 2026
- Edit the launch notice from the admin — the vendor owner can change or hide the early-access notice on midnightgrid.com from Site Content, without editing the website files. The notice is plain text only, and visitors still see the built-in notice if the account site cannot be reached.
9.32 — Named dialogs and safer routing repair
October 2026
- Dialogs identify themselves — desktop dialogs announce their current title to screen readers, including when one dialog replaces another. Keyboard focus still returns to the control that opened the dialog.
- Routing repair preserves the host — the repair console uses the generated routing candidate for each site. It preserves the exact recognized cPanel PHP handler, refuses unsupported custom handlers and stops if the live configuration changes during repair. Garage packages now include their rendered repair candidate.
9.31 — Safer restores, smoother keyboard and small-screen use
October 2026
- Restore checks before writing — restoring a backup checks every store first. Unreadable database rows, pending recovery journals and changes to the root database connection block ordinary restore without replacing data. Connection migration belongs in vendor maintenance; individual business-data files can be restored without settings.
- Plans page answers every press — “Start Pro trial” and checkout now take you to the field still missing, or show their message where you are looking; before, the trial button seemed to do nothing on a phone. The monthly and annual choices say which one is selected to keyboard and screen-reader users.
- Owner console on smaller screens — workspace panels wrap more comfortably and wide tables scroll within their own containers. Dialogs take keyboard focus and hand it back when closed; save errors stay available to assistive technology.
- The desktop app by keyboard — dialogs keep focus inside until closed and return it after; menus open on their first item and close with Escape; working through the Inbox moves on to the next item. Settings fits a narrow window, so a license can be pasted on a tablet.
9.30 — Ready at sign-in, ready to book, ready to bill
October 2026
- Switch users without restarting — signing out and signing back in works immediately. Jobs, undo history, Inbox, Website and private Settings details clear before the next account loads; late replies from the previous account are ignored.
- Bookings arrive when you sign in — a saved sign-in starts its first sync as soon as the account loads, rather than waiting for the next background interval. PIN protection still holds the sync until unlock.
- Managed sync recovers safely — when the hub rejects a sync key this app has verified as license-issued, MG Jobs fetches the current key and retries once. An older key whose origin cannot be proved is never replaced automatically: the owner can choose a separately explained, business-wide reset in Reconnect. A team member’s own key is not silently promoted to the master key.
- Find work that needs closing — the dashboard and Jobs filter identify past, unfinished work with no invoice or payment. The Unpaid card counts billed work less payments, not every open job.
- Customer cancellations reach Inbox — an online cancellation, including one after a deposit, stays visible for follow-up instead of disappearing with completed bookings. A booking you cancel from the job board leaves Inbox.
- One full booking page — the appointment link opens the live booking experience, including available times, packages and instant confirmation where enabled. The established package button follows a renamed package, an unknown service address remains optional on the garage site, and Website Intel counts bookings made there. Cache-busted assets help customers see the updated form after a release.
- Service defaults stay current — leaving the Website tab’s service list empty keeps the garage site’s standard services as defaults, so changing or ending a package changes what customers are offered without having to erase a copied list.
- Settings keep responding — an ordinary background refresh no longer causes the current owner's Settings, website guide or copy buttons to silently ignore their own replies; former-account replies remain blocked.
- Finish setup in your own currency — the wizard saves your currency and sends your business name and phone to your hosted account. If that update cannot be confirmed, it asks you to retry rather than claiming success. Text-message and payment details are shown as saved but untested until verified.
- Less noise, clearer timing — the welcome note no longer covers sign-in or asks an activated owner to redeem a license. An untimed job says “No time set,” and the team clock appears only where relevant.
- Update progress stays accurate — overlapping progress checks no longer move the indicator backward, and assistive technology receives its status.
9.28 — Renewals that keep your account, money to the cent
September 2026
- Renewing keeps everything where it is — Renew or upgrade, on your account page, from the app’s Upgrade button or from a reminder email, now renews the license you already have, so your jobs, customers and settings stay put. It used to fail at checkout, or sell a second, empty account.
- Plan changes you can trust — the plans page shows the license you are renewing and its current plan, the time you have left carries over, a trial becomes exactly the plan you pick, and moving to a new plan ends the old subscription so you are never charged twice.
- A declined card never cuts you off early — MG Jobs keeps syncing while Stripe tries your card again and tells you once how to update it; cancelling keeps the month you already paid for; a monthly purchase is one month, not two.
- Your account page tells the truth — an ended license says when sync stops instead of “Active”, a failed payment or ended subscription is explained with the way to fix it, prices show their cents, and you can free the seat of a computer that died. Recovering a lost license by email sends every license on that address.
- Backups that restore on a new PC — set a backup password once and every backup, the Google Drive one included, opens on a new or reinstalled computer, with its settings, logo and photos. Export everything now includes every photo.
- Money to the cent, everywhere — tax is exact on invoices, reports, payroll and exports; a job with tax is paid only once the tax is; money owed counts only billed work less what was paid; QuickBooks and Xero exports carry only billed work in your currency; “12,50” means twelve fifty; negative and broken prices are refused.
- Nothing saved at the same moment is lost — two edits, payments or stock changes made at once no longer undo each other, and a purchase order is received once.
- Times and repeats that behave — “2” or “4:30” on your schedule is the afternoon, “9h30” and “noon” are read as times, online booking reads your times the same way so it never books over them, and monthly, quarterly and yearly repeats land on the same day each time.
- Your team, your rules — technicians can’t see or change prices they aren’t allowed to, can’t open your books, remove others’ payments or empty the recycle bin; accounts are added by you, within your seats; and when a license lapses past its grace period, technicians’ phones stop syncing too.
- Safer by default — the app hands out nothing while signed out or PIN-locked, first-time setup can’t be run again over a finished install, customer and supplier text can never run as code, wrong sync tokens are turned away, your website form only links “Back to” your own sites, a custom domain must be proven with a DNS record, and a renewed license is only ever emailed to the address on file.
- Free Offline stays offline — it no longer goes online by itself; it checks for updates only when you ask.
- One look everywhere — install and repair pages are readable in light mode; invoices, estimates, warranties, the portal and the visit tracker wear your business colour and no longer say “garage door” for every trade; admin buttons and status pills share the same colours; and every page uses the Midnight Grid typeface and mark.
9.27 — Safer sign-in, customers that stay linked
September 2026
- Stronger passwords and PIN — sign-in passwords and the app PIN are stored with a much slower hash, and yours upgrade automatically the next time you sign in or unlock. Five wrong tries in a row pause sign-in for a short while, even when the tries all arrive at once.
- Customers stay linked to their jobs — web bookings, synced jobs, duplicated, recurring and imported jobs are all filed under their customer, a job you keep after the server refuses its delete goes back under its customer, and a technician’s sync no longer removes customers you created on this computer.
- Website form code that works the first time — the Website tab shows your form code only after your hosted account confirms its key, and an account set up before this version adopts the key your app already uses, so a form you publish is never disconnected.
- Clearing a detail clears it everywhere — removing your business phone or review link in Settings removes it from the customer portal too — even when you saved while offline — and details you did not touch stay as they are.
- Renewal wording matches your plan — annual plans are prepaid for one year and do not renew on their own; the reminder email and the account, help and buy pages all say so, and a monthly subscription, which renews by itself, no longer gets an “ends soon” email.
- Online booking never double-books you — times you already filled in the app, including a booking you moved, are no longer offered to customers, and the booking calendar stays quick with years of jobs behind it.
- Booking really starts in your time zone — a business that never chose a zone now starts from this computer’s zone; it showed UTC.
- Your website form sends customers back — after sending the request form on your own website, customers get a link back to your site.
- Membership plans charge for the period they name — a new business’s trade plans bill yearly or monthly as named; a garage-door business no longer offers its one-time Quiet Lift Package as “$499 / month”, and a business set up earlier has that default corrected.
- Technicians and the office agree — the technician app uses the same “In Progress” as the desktop, and the customer’s tracking page shows “on site” either way.
- Today’s schedule runs in time order — the dashboard, the week board and the route list put 9:00 AM before 1:00 PM however the time was typed.
- The live demo stays a demo — trying the demo no longer asks you to “Convert my data” the next time you open the app.
- Records that cannot be read are never overwritten — if the server finds a stored record it cannot read, it leaves it untouched and reports it instead of saving over it.
- Pages promise only what ships — the Owner Companion app is marked “not available yet” everywhere, the free tier is called Free Offline throughout, and the company is spelled Midnight Grid.
- One look, light or dark — the account, license, changelog and legal pages follow your light or dark setting; invoices, estimates, warranties and the customer portal share the same colors and keyboard focus ring; light-theme text is darker and easier to read; and headings use the Midnight Grid typeface on every page and in the app.
- Safer pages — the sites load only the exact library files they use, verified by their fingerprint, and never show technical error details to visitors.
- Updated components — the encryption library and other components are on their latest releases, including a newer OpenSSL.
9.26 — Setup, booking and settings that keep their word
September 2026
- Your business name on the window — the title bar and sidebar show your business name instead of only “MG Jobs”.
- Setup is shorter — pasting a signed license suggests your company name on the next step, and a brand-new install no longer shows an upgrade screen at the next sign-in.
- A license that cannot be used says what to do — an incomplete copy, a license from a newer signing key, or an expired license each explains the next step in plain words.
- Website settings keep your edits — saving one section of the Website tab no longer undoes changes typed in another, and a refused save keeps what you typed next to the message.
- Booking starts in your time zone — if no time zone was ever saved, online booking starts from this computer’s zone.
- Customers check how you will reach them — the booking work order shows their name, phone and email before they book, and only promises a confirmation email when one will be sent.
- Portal codes that arrive — the customer portal offers sign-in codes only by email or text that is set up, and otherwise shows your phone number.
- Technicians see the day — upcoming jobs in the technician app name their day, and the app keeps working offline.
- Your account page names your plan — the account page shows the tier and billing you bought and whether cloud sync is connected.
9.25 — Licenses that activate the first time
September 2026
- Pasting your signed license just works — on a computer that has no license yet, MG Jobs takes the company name and account from the license itself, so a different spelling of your company name no longer blocks it.
- A refused license says why — for example that it belongs to a different company or account — instead of a generic activation message.
- See plans opens the plans page — the upgrade buttons on the Website and Inbox tabs open the plans and prices page.
9.24 — Sync that tells you what is wrong
September 2026
- Sync explains a missing connection — instead of “not provisioned”, MG Jobs now says whether the license server could not be reached, did not recognize the license yet, or has no cloud sync assigned, and what to do next. Reconnect shows the same reason.
- Older installs find the license server again — installs that saved the old marketing-site address move to the account site automatically, so activation and sync work without re-entering anything.
- Your settings file is better protected — a failed license check can no longer rewrite the saved settings that hold your license and encryption key.
9.23 — A clearer, safer release
September 2026
- Help and release notes open reliably — they now use the Midnight Grid account site, even in Free Offline mode. API documentation stays on the app site.
- The light theme is easier to read — selected navigation, setup states and error text have stronger contrast; sign-in and license fields keep visible labels.
- Software links lead to the right place — old buyer links on the garage-service site go to the software account site, while garage-service privacy stays with the repair business.
- Report a bug or request a feature from Help — the desktop opens the right support route without sharing a password, token, or customer record.
- Owner Companion pairing works across the right domains — the companion on the app site can reach an eligible garage-hosted owner API, while unrelated websites receive no CORS access.
- Release trust is checked against the actual installer — the unsigned Windows release path verifies that both executables are truly unsigned. Ed25519-signed updates and licenses remain required.
9.22 — Online booking, one inbox, and data that stays yours
September 2026
- Customers book real open times online — a hosted booking page for your Google profile, texts and truck QR codes, and a one-line widget for your own website. Every booking lands in your schedule, and times you are already booked, or busy in a calendar you connect, are never offered.
- The Website tab runs it — your booking link, the code for your site, hours, services and deposits, with a plain explanation when a plan does not include online booking.
- One Inbox for bookings, missed calls, texts and leads — answer customers from one place; replies go out through your business number.
- Your saved jobs can no longer be locked away by a Windows change — if Windows cannot unlock the key that protects your data (after a password reset or profile change, for example), MG Jobs now says so on screen, refuses to save over it, and keeps the key so everything opens again once you sign in as the right Windows user. Previously it could replace the key and leave older jobs unreadable.
- Data your hub cannot read is shown, not hidden — if part of your business data on Midnight Grid Cloud cannot be read, the app says which part and that nothing is being overwritten, instead of showing it as empty.
- A copy of the app missing a piece says so — rather than quietly running without its styling.
9.21 — Midnight Grid runs the cloud for you
September 2026
- You install an app, not a server — what you download is the Windows desktop app. On a paid plan, Midnight Grid Cloud runs the sync, backups and job images behind it. There is no web host to rent, no database to configure, and no connection details for you to keep safe.
- Your connection sets itself up — when your signed license is accepted, the app receives and stores its own cloud connection automatically. The sync and database fields that used to sit in Settings are gone, because they were never yours to change.
- The self-hosted PHP package has been retired — the buyer download is now the desktop app and its license only. Existing Hosted Lifetime licenses stay grandfathered and keep working.
- Enterprise "bring your own database" is now something we do for you — tell us what you need and Midnight Grid configures the connection, tests it end to end, and switches you over once it verifies. It is available to Enterprise licenses after review.
- Setting up for the first time is a short, guided flow — five steps that start by asking how you want to run MG Jobs: Free Offline, entirely on your own computer, or activated against Midnight Grid Cloud.
- Signing in keeps working during a database outage — a hosted database that cannot be reached no longer blocks the login page.
- Staff accounts can no longer see owner credentials — the admin page used to include the owner's password hash and two-factor secret in the data it sends to every signed-in user, including office and technician accounts. It now sends only whether each secret is set.
- A booking can no longer write into your calendar — a customer could put line breaks in their details and have extra entries appear in the calendar feed you subscribe to. Those details are now escaped properly.
- The desktop app treats customer details as text, never as code — a crafted phone number arriving from your booking form could run script inside the app window when you clicked to copy it.
- The desktop app's local connection is locked to itself — the token it uses to talk to its own background service was reachable by any other program serving a page on your computer. It is now scoped so nothing else can pick it up.
- The installed app trusts only Midnight Grid's signing keys — which keys it accepted for licenses and updates could previously be redirected by an environment variable. The shipped build ignores that.
- You are told if your email password cannot be encrypted — on a machine where Windows encryption is unavailable it was stored unencrypted with nothing said. It now warns in the log so you can act on it.
9.20 — Safer syncing, recovery, licensing, and updates
August 2026
- Syncing between devices is now more reliable — conflicting edits from different devices are detected and resolved safely instead of the app just picking whichever change happened to arrive last.
- The desktop app is now built from clearly separated modules (jobs, customers, finance, inventory) instead of one large file, making future updates safer and faster to ship.
- Subscription renewals and cancellations are now more reliable — a billing-system fix means a monthly or annual renewal payment correctly extends your license every time, and a cancelled add-on subscription correctly pauses sync without ever affecting a grandfathered Lifetime license.
- Licensing and pricing now stay in agreement — checkout, account settings, and the public plans/help pages use the same current plan, seat, price, and trial details instead of copying figures between pages.
- Owner Companion is available with Pro and Enterprise — owners can securely review business totals, customers, and jobs from a phone. Existing Hosted Lifetime customers remain supported.
- Health checks can safely repair encrypted backups — repair uses your configured backup passphrase, rejects the wrong one without changing data, and keeps test or maintenance work out of your real backup folder.
- Windows packaging and update checks are stricter — the desktop bundle now includes every screen dependency, and release archives refuse mixed or incomplete update files before anything is replaced.
- Midnight Grid now puts MG Jobs first — the vendor site leads with the product, plan comparison, support, and an accessible video with captions and a visual transcript, while the separate garage service is clearly labeled.
9.19 — Properties on file
August 2026
- Customer profiles now show the properties on file for that customer — the address and any notes, right in the same profile you already open from the Customers tab.
9.18 — Data review polish and a real update-signing fix
August 2026
- Fixed: signed updates were silently failing verification — the app was checking downloads against the wrong domain. Signed updates now actually verify correctly for the first time.
- Migration review is more thorough — jobs sharing a phone number with a different name are now flagged so you can confirm they're not the same customer, matching the review flags for uncertain estimate outcomes.
- The one-time upgrade screen is safer — "Convert my data" stays disabled until you've looked at every flagged item, shows a real progress count, and resumes correctly if the app closes mid-conversion.
9.17 — Customers and properties, linked automatically
August 2026
- Your jobs are now linked to real customer and property records behind the scenes — the groundwork for seeing your full history with someone at a glance, without retyping anything. (The customer/property views themselves are coming in a follow-up update.)
- One-time upgrade screen — the first time you open the app after updating, it shows you exactly what it found before making any changes, and keeps a backup of your data from just before the upgrade.
9.16 — Signed releases and safer field work
August 2026
- Updates and licenses are now independently signed — the app verifies vendor signatures before trusting a license or installing a download, while existing customers move across through a guarded compatibility bridge.
- Safer links and sign-in — customer documents use revocable, purpose-limited access; broader portal history requires a separate verification step; machine credentials stay out of URLs and server logs.
- Offline work is protected on shared devices — queues, photos, and private caches belong to the exact signed-in user. Signing out requires pending work to sync, export, or be explicitly discarded.
- Integration hardening — automation webhooks are DNS-pinned, reject private/internal destinations and redirects, and cannot inherit server proxy credentials.
- One authoritative release version now drives the app, installer, website, Windows metadata, and deterministic packages, preventing mismatched builds.
- Buyer and vendor surfaces are now physically separated — buyer archives exclude Midnight Grid operations, the owner's service-business website, and every vendor admin/licensing endpoint; the release scan fails if any of them reappear.
- Safer hosting upgrades — routing rules ship as a validated candidate and are applied only after an explicit, backed-up, atomic install step with one-click rollback.
- Windows release trust is enforced — the app is signed before entering the update package, the installer is signed afterward, both are independently verified, and unsigned development output is permanently marked non-publishable.
- The exact packaged Windows app now has to complete its isolated 424-check self-test before the build can create an update archive, catching frozen-app-only failures that source tests cannot.
- Development EXEs and ZIPs are isolated from website downloads, and every buyer/vendor archive rejects a non-publishable development marker.
- Timezone and daylight-saving correctness — sync orders mixed offsets as real instants, impossible spring-forward times are rejected, repeated fall-back times require an explicit choice, and appointment dates remain in the business timezone.
- Automated upgrade/rollback and backup/restore drills now join the package, routing, privacy, and owner-canary evidence required before a public release.
9.15 — Mileage, live team clock, referrals & two fixes
August 2026
- New: mileage log — track trip distance and get an estimated deduction at your set rate, kept local to your own computer.
- New: live team clock — see who's clocked in right now on the dashboard, refreshing on its own.
- New: referral credit tracking — see which customers you owe (or paid) a referral credit to, worked into every revenue total.
- Fixed: "Create account" and "Forgot password" doing nothing on the login screen — the dialog was actually opening, just hidden behind the login screen; it now shows correctly.
- Fixed: Starter/Pro accounts could see a "run your own database" panel they weren't entitled to use — that panel is now shown only to the Enterprise tier it's actually meant for, matching what saving already enforced.
- Under-the-hood security hardening: stronger key handling, no plaintext fallback, signed updates, HTTPS enforced.
9.13 — Starter, Pro & Enterprise
August 2026
- New: license tiers — Starter, Pro, and Enterprise, so you pick (and pay for) only what your business actually needs.
- Pro unlocks your own domain + the REST API — run MG Jobs under your own website address, and connect Zapier, your website forms, or anything else that talks to the API.
- Enterprise added a dedicated database option — this originally allowed a self-managed connection. Since 9.21, Midnight Grid configures and verifies the optional bring-your-own database for Enterprise customers after review; buyers do not enter database credentials in MG Jobs.
- Already licensed? You're covered — every existing license was automatically set to Starter, with everything you already had left exactly as it was. Nothing you're using today gets switched off or locked out.
9.12 — Your data, protected and in your hands
August 2026
- New businesses now get real MySQL hosting by default — sturdier, faster, and easier for us to back up and recover than the old file-based storage, with no setup required on your end.
- Lost your license key? Get it back yourself — "I don't have my key" on the account page emails it straight to the address on file, no waiting on support.
- Your account page now shows your whole team — every tech's own phone-app link, ready to copy and send, right where you manage your license.
- New: "Download everything" on your account page — every job, customer, invoice, and setting as plain, readable JSON you can open anywhere, no MG Jobs and no internet required. Yours to keep, always.
- Team logins now survive a lost or replaced computer — a fresh install of the app automatically re-learns your team's accounts and roles the next time it connects, instead of leaving you locked out of every tech's login.
- Edits made from a tech's phone and edits made from the desktop app now merge into one combined history, so you can see who changed what no matter which device they used.
- Under-the-hood durability and security hardening across sync, licensing, and account recovery.
9.11 — Every business now gets the automation, not just the first one
August 2026
- The biggest fix in this release: warranty reminders, annual tune-up nudges, quote follow-ups, day-before appointment reminders, and after-the-job review requests were silently running for the very first business on the shared hub only — every other business never got a single one of these automated emails sent to their customers, even though the feature looked fully set up in Settings. Fixed with a proper per-business version of all five, running independently for everyone.
- Fixed the "still want that done?" quote follow-up link having the same wrong-business bug already fixed elsewhere for invoices/warranties last release
- Found and removed a handful of leftover hardcoded references to our own business name/phone number in a few automated emails that should have always shown YOUR business details instead
- Updated the server setup instructions with the complete, correct list of scheduled tasks — several were built but never actually documented as things to turn on, which meant they silently never ran
9.10 — Website connections that actually connect
August 2026
- Fixed a real bug that broke customer links for buyers on the shared hub — the app only learned which company it belonged to from a rare, best-effort background check, so it could go a full day (or longer, for anyone who set up sync by pasting in a URL/token) without knowing. Every invoice, warranty, and portal link built during that gap silently pointed at the wrong business's book — the exact cause of "secure link not found" and links seeming to open someone else's site. Now the app learns this on every single sync, not just occasionally.
- Fixed estimate-approval links being completely broken for every business except the very first one — a customer clicking Approve on their quote always hit "Estimate not found" because the page never checked which company's quote it was looking at
- Your "connect your website" code now looks like YOUR site — it's a real styled form with your business name and brand color built in, and customers can pick "Book appointment" or "Get a quote" right on the form (used to require hand-editing the code to switch)
- New: step-by-step website setup guide — More menu → "Connect your website (step by step)", or the link right next to the code box in Settings. Walks through connecting sync, copying the code, pasting it into WordPress/Wix/Squarespace/anything else, testing it for real, and what to check if nothing shows up — so you don't have to ask
9.9 — Under-the-hood correctness pass
August 2026
- Demo data you can actually use — "Load demo data" now drops a filled sample week into your REAL book (tagged separately) so you can explore reports, checklists and invoices without typing fake jobs by hand; "Clear demo data" removes only those tagged jobs, your real work is never touched
- New: Site Builder — edit your public website's business name, phone, colors, and other brand details from the admin panel, and one-click seed your website's pages from your industry instead of starting blank. (Found and fixed a real bug along the way: your website's content was being stored in one file shared by every account instead of privately per business — now correctly isolated.)
- KPI dashboard now shows monthly revenue, revenue growth %, technician utilization, and jobs scheduled this week, not just weekly totals
- Fixed a customer-approved estimate not being recognized as approved by the rest of the app (different code paths used different status names for the same thing)
- Fixed website quote requests landing on a status that didn't show up in any filter
- The warranty-expiring reminder now also tells YOU it's a good time to call that customer, not just the customer
- Fixed the sellable product package missing 34 files it actually needs, plus 2 files with real customer data that should never have shipped
9.8 — Polish & a white-label sweep
August 2026
- Fixed a crash on Invoice / Estimate / Work order — clicking any of the three from a job's menu could throw an error instead of opening the document. Found and fixed.
- Checklists: "Load checklist" button — jobs that existed before you set up your checklist templates (or whose service type didn't auto-match one) can now pull in your Default checklist with one click instead of typing every item by hand
- Fixed Settings sometimes reporting a database-license error on save even when you weren't touching database settings at all — that check now only runs when something database-related actually changed
- White-label sweep — every customer-facing document, page, and admin JS template now wears the licensed business's own name, phone, and details instead of ours. Covers invoices, estimates, receipts, work orders, warranties, the customer portal, the public booking page, the blog and forum, marketing/SMS templates, and the desktop installer
- Fixed a broken buyer package — the sellable product zip was missing 34 files that shipped pages actually call at runtime (job editing, invoices, receipts, work orders, the booking form, payroll, and more all silently failed). The build now ships everything the app references and refuses to build if anything's missing, instead of a hand-maintained list that could silently drift out of date
- Fixed the public site pulling business hours, phone number, and pricing from our server instead of yours on any domain other than ours
- Fixed every emailed invoice/receipt/notification footer linking to our website instead of yours
- The one-time bootstrap password used before you set your own is now unique to your install, not the same for every copy of this product ever sold
- Sitemap, robots.txt, and forum links now point at your own site, not ours
- The last 4 static pages (the booking page, the PWA "add to home screen" manifest, the offline screen, and the not-found page) are now rendered per-tenant too, same as everything else — the booking form and calendar itself are unchanged, only what used to be permanently baked-in text
9.7 — Feels Finished
August 2026
- Real progress when updating — the exe and the installer now show an actual progress bar while downloading/installing, instead of an unresponsive window that suddenly says it's done
- Inspection checklists got an actual editor — add/remove checklists and items with buttons instead of typing raw text, and shops set up before this feature existed now automatically get their trade's starter checklist filled in instead of a blank slate
- Customers now see the completed service checklist on their own portal page, not just the tech
- Security: closed a gap where a technician account could read a subscriber's full sync token (complete read/write access to their data) from admin page source — same class of bug already fixed for licenses, now fixed for settings too, on both places it showed up
- Added Square as a second payment option alongside Stripe, and Xero invoice export alongside QuickBooks
9.6 — Stockroom & Trade Modules
August 2026
- Know where every part actually is — stock now lives in real places: your unit and each truck. Move parts between them, count what's on a shelf, and see the value sitting in each location. Your existing stock stays exactly as it is until you count it in, and moving parts around never changes your totals
- Suppliers and purchase orders — keep your suppliers with their account numbers and terms, then raise a proper printable PO. Anything below its minimum turns into a suggested order grouped by supplier, so the reorder list writes itself
- Part-load deliveries handled properly — receive what turned up, and the order stays open until the rest arrives
- What you actually paid, over time — every delivery records its unit cost, so you can see a part creep from $14 to $16 instead of only ever seeing today's price
- Scan a barcode or QR — a USB scanner or the camera finds the part instantly, then receive it, count it, or check its history
- Calculators for more trades — roof take-off (squares, bundles, underlayment, ice & water, ridge cap, drip edge), electrical service load and voltage drop with a suggested wire size, water heater sizing and supply-pipe sizing, and heating/cooling load with duct CFM. Each shows only for your trade
- Roofing joins the trade list with its own parts categories, starter stock, service prices, and an inspection checklist — plus a storm/insurance checklist built for adjuster documentation
- More on the scoreboard — response time (booked to on site), completion rate, customer satisfaction, stock value, and how many items are below minimum
9.5 — Trade Tools
July 2026
- Door & spring calculator (garage trade) — enter the size and construction and get the door weight, turns, required spring rate with the three closest stock springs, correct cable size and expected spring life. The maths you normally leave the app and open a supplier chart for, done on the driveway
- Results copy straight into the job notes, and every result carries the safety warning — spring sizing is an aid, never a substitute for the manufacturer's chart
- Built as an industry module, so other trades get their own tools without changing anything else
9.4 — the Any-Trade release
July 2026
- Built for your trade, not just garage doors — pick your trade at setup and the whole app follows: parts categories, starter stock, service plans, inspection checklists and invoice wording. Plumbing, HVAC, electrical, appliance repair, locksmith, cleaning, handyman and garage doors all included
- Website bookings arrive even when the window is closed — the app now keeps syncing in the background from the tray, so a job booked on your site pops up a notification straight away instead of waiting until you reopen it
- Move your tabs — drag the sidebar tabs into whatever order suits how you work; it remembers per user
- Fixed: blank business details could print the software vendor's name and phone on your invoices instead of yours
9.3 — the Field release
July 2026
- "On my way" texts + live tracking — a tech taps On my way in the phone app and the customer gets a text with a live status page (Booked → On the way → On site → Done, with an ETA). No app for them to install
- Inspection checklists — set reusable checklists in Settings; they auto-attach to new jobs by service type, and your tech ticks them off from their phone
- Mark up photos — techs can circle the problem right on a job photo before it uploads
- Certification tracking — record each tech's licenses/tickets with expiry dates (WHMIS, ladder, driver's abstract…); you're warned in Team and in the weekly email before they lapse
- Zapier / Make ready — fire events (job created, completed, paid, estimate approved) to any automation, plus new REST actions to update jobs and add notes (docs)
9.2 — the Insights release
July 2026
- Scoreboard — a live business dashboard in Money: this week's revenue vs last, jobs completed, average ticket, first-time-fix rate, money still owed, and revenue by technician
- Unpaid / aging — see exactly who owes you, bucketed by how overdue (0–30 / 31–60 / 61–90 / 90+ days), so nothing slips through
- One-tap route optimization — the dashboard can reorder today's stops into the shortest driving loop and open it in Maps
- Switch from other software — import your customers & history from Jobber, Housecall Pro or ServiceTitan, not just QuickBooks
- Get more reviews — completed-job messages can include your Google review link automatically
- Fixes a display issue that could leave parts of the app blank on some screens
9.1 — Connect Your Website
July 2026
- Put a booking / quote form on your own website — copy one snippet from Settings and paste it on any site (WordPress, Wix, plain HTML). Appointments & quote requests land on your board with a notification
- Faster auto-sync (every 3 minutes) so those website requests show up quickly
- Under the hood: automatic database integrity check on startup that self-heals from a backup if the file is ever damaged, plus write-lock & storage tuning
9.0 — the Fixes & Roles release
July 2026
- Techs are properly limited — an employee signing in sees only their own jobs, no prices, and no settings/sync/license
- Login fixes — "keep me signed in" works across restarts, your username is remembered, and you can create an account or reset a password right from the sign-in screen
- Tech phone app sign-in fixed — "Open my jobs" now works for your own crew
- Fewer false "something glitched" pop-ups; sync & database controls are hidden on plans that don't include them
8.9 — the Grow release
July 2026
- Recurring service plans — offer memberships (e.g. "$199/yr tune-up plan"); customers subscribe on your portal and it bills automatically to your Stripe
- Online booking — customers pick a real open time slot and it lands on your board; plus they can approve estimates and message you right from the portal
- Route on the tech phone app — one tap opens the day's stops in Maps, in order
- Net pay & pay stubs — payroll now figures deductions and prints a stub per tech; and a weekly business-summary email
8.8 — the Field & Self-Serve release
July 2026
- Phone app for your techs — send each tech a link; they see only their own jobs and can change status, add photos, capture a signature, and clock in/out right from their phone. No install
- Estimates & quotes — mark a job as an estimate, print a proper quote, and convert it to a real job when the customer says yes
- Manage your account online — see your plan, seats, and renewal, download the installer, and (monthly) update your card or cancel through Stripe
- Nightly off-site backups of every account's data on our servers, plus a plain-English software license
8.7 — the Hardening release
July 2026
- Security — locked down bring-your-own-database and outbound webhooks so they can only reach real public servers, never internal addresses
- Your customers see your currency — the portal, invoices and warranties now show £/€/¥ (whatever you use), not just dollars
- Clean-up controls — purge a former buyer's data in one click, live database-health indicator, plan-based storage that never blocks your real work
- Backups spell out local-vs-off-site, one-tap upgrade page, and a fix so an unreachable database can never stall a sync
8.6 — the Hub release
July 2026
- Run your sync on MySQL — far steadier than files when a whole team syncs at once. Turn it on in the web admin (uses the database you already have); Lifetime licenses can point the app at their own database too
- Automatic daily backups (recommended, on by default) — a rolling local copy of everything
- Upgrade right inside the app, live storage meter, and generous plan-based storage limits
- Your customers' emails wear your name — invoices and portal messages go out under each buyer's own business, not ours
8.5 — the Books & Portal release
July 2026
- Replace QuickBooks — the Money view is now a full back office: record expenses, run payroll from job timers & wages, reconcile bank statements (CSV auto-match), and print a real profit & loss, quarterly tax summary, and balance sheet
- Import FROM QuickBooks — bring your customers and invoice history over in one click (Customers → Import)
- Customer portal — every job has a 🔗 shareable page: history, invoices, warranty countdown, photos, pay-by-card, and "request an appointment" that lands straight on your job board — under your business name
- Keep me signed in now actually works (the saved sign-in survives restarts)
- Outbound webhooks for Zapier/Make, in-app Help & support with one-click diagnostics, crash logging, faster database writes
8.4 — the Integrations release
July 2026
- Get paid online — connect your own Stripe account in Settings and send customers a secure payment link from any job or invoice; jobs mark themselves paid automatically
- QuickBooks — one-click export of your invoices in QuickBooks-ready format
- REST API — connect your website forms, Zapier, or anything else to MG Jobs (docs)
- MySQL option — point your sync server at a MySQL/MariaDB database for larger fleets
- Remember-me login, more industry templates (plumbing, HVAC, electrical & more), appointment notifications, announcements from your admin, owner-only audit trail, per-plan seat limits
8.0 — the Enterprise release
July 2026
- Licensing & setup wizard — 2-minute branded setup; unlicensed installs run free in offline mode
- Team accounts — owner/tech roles, per-user passwords, sign out & switch user
- Job templates, recurring jobs, checklists, priorities, follow-ups
- Partial payments with live balance on the invoice, signature pad, GPS check-in, per-job timer
- Parts inventory — categorized residential catalog, low-stock alerts, use-stock-on-job, reorder list, two-way sync with the web admin
- Route planner, calendar (.ics) export, communication log, auto-invoice on completion
- Your branding everywhere — name, logo, colors, services & prices, invoice wording, custom job fields, feature switches
- Resizable columns, cleaner status menus, encrypted-at-rest data, audit log, desktop notifications
7.0 — the modern shell
July 2026
- Complete UI rebuild on the proven offline engine: dashboard, drag-and-drop week board, customers, money view, Ctrl+K palette, photos, day sheets
5.x–6.x — the business rounds
Spring 2026
- Offline sync with tombstone-safe deletes, recycle bins, bulk actions, CSV import/export, voice notes, time clock, payroll, auto-update