September 2026 23 updates
🏷️ Your stickers, your address (Team plans)
- NEWYour live QR stickers and door tags can use a web address your company owns, like tags.yourcompany.com, instead of equipment-tracker.com. In Settings, open QR Codes & Stickers, then Your stickers, your address (on the dashboard: Account Settings, QR CODES & STICKERS), tick the Before you start checklist and press Save address. We connect it on our side and show you the exact records to add where you bought your domain, and email them to you too. We check every 30 minutes and email you once it says Working. From then on, new stickers carry your address. For the owner and managers, on the phone and the dashboard.
- NEWStop using this address takes it off again. New stickers go back to equipment-tracker.com, and the app warns you first that stickers already printed with your address stop opening their pages. We email you the records you can then remove where you bought your domain.
- NEWDownload my sticker pages (Share my sticker pages on the phone) saves a copy of every live sticker page, with its photos and a spreadsheet of every sticker, laid out at the same addresses your stickers use, so any website host can answer them.
⚙️ Settings & updates
- IMPROVEDSettings is sorted into sections: YOUR COMPANY, QR CODES & STICKERS, NOTIFICATIONS & DATA, ACCOUNT, HELP & SUPPORT and ABOUT. PM & Maintenance Plan Pricing is now inside Company Profile. QR Codes & Stickers holds Take over a location's QR codes (what Claim QR Code Ownership was) and Your stickers, your address. Check for Updates, Crash Log and Device Report are under HELP & SUPPORT, Troubleshooting. The dashboard's Account Settings has the same sections.
- NEWWhen a newer version of the app is in the Play Store or the App Store, the home screen says so, with UPDATE to open the store page and LATER to be reminded in a few days.
🛠️ Work orders
- NEWSEND TO CONTRACTOR now opens three choices. Send in the app is what it did before, for a contractor with their own Equipment Tracker Pro account. Send as a PDF and Send as text are for anyone else: the whole job, where it is, the equipment’s details, parts to bring, photos in the PDF and the last few service visits, with none of your prices or costs. Afterwards it asks Did you send it? and notes who it went to on the job. On the phone the PDF or text opens your share screen; on the dashboard the PDF opens ready to print or save, and the text can be copied or opened in an email.
- NEWIf a job was already sent that way, SEND TO CONTRACTOR first says who it went to and when, and asks who it is going to this time: the same contractor again, or a different one.
- IMPROVEDA work order’s page is sorted into six sections, on the phone and the dashboard: THE JOB, WHO HAS IT, WORK DONE, PHOTOS, BILLING and HISTORY, with links at the top to jump to each. A contractor’s finished report has its own card under WORK DONE with their name and date, separate from your own logs. HISTORY is one dated list of what happened, oldest first.
🏢 Company Profile
- IMPROVEDCompany Profile is sorted into COMPANY DETAILS, PRICING, GETTING PAID and INVOICE DUE DATES & NUMBERS, on the phone and the dashboard. Every rate and markup is under PRICING, with PM & Maintenance Plan Pricing last. On the dashboard, the invoice rates and the payment setup moved into Company Profile from the Invoices page; SETTINGS & PAYMENTS there now opens it.
- IMPROVEDClosing Company Profile with changes you have not saved now asks before it throws them away.
🖨️ Printing
- FIXEDIf a print took too long to get ready, every print after it said Could not open print dialog until you closed the app. A slow print now stops on its own and the next print works straight away. This covers door tags, door signs, plan previews and visit reports.
- FIXEDPrinted door tags now show the unit's code beside the unit, as the unit screen says they do.
- IMPROVEDUnder PRINT DOOR TAG (PDF) and PRINT ALL TAGS: If the preview is blank, your printer may be off. Tap the printer name at the top and choose Save as PDF.
Read more: Work orders explained
📱 The app itself
- IMPROVEDWhen you open the app and an update is waiting, the launch screen shows each step as it happens: Checking for updates, Downloading update, Installing update, then Restarting. Until now the app waited on the plain launch picture for up to ten seconds while it downloaded, with nothing on screen to say why.
- IMPROVEDWith no update waiting, the app opens straight away on the version it has.
- IMPROVEDThe restart after an update stays dark, with no white flash.
📅 Plan calendar & plan links
- NEWMaintenance plan visits are on the calendar. Each task that repeats (Repeat every 6 months) takes a start: a month, and if you like a week of it or an exact day. Set start for all tasks sets many at once, and each task's row says when it starts. Nothing needs an exact day: a visit due in a week shows as Week of Oct 8, and one due in a month shows as October. Plan visits appear on the Maintenance Calendar on the phone and the Calendar on the dashboard, where Pick day and Assign to set the day and the technician, who is emailed.
- NEWEach plan has a Year calendar with its default technician, and Download PDF prints it. Your customer sees the year's visits, without prices, on their signed plan link and on the location's QR page.
- NEWCustomers can ask to move a visit. On their signed plan link, Request a different date takes any day up to the end of next year. You get a notification and an email, and the request waits in the Inbox (the Tenants tab on the phone, Dispatch then TENANTS on the dashboard) with USE THIS DATE, PICK ANOTHER DATE and DISMISS. USE THIS DATE moves only that one visit. The rest of the plan, its price and the signed agreement stay as they are. The note your customer reads before asking is yours to write, under BEFORE A CUSTOMER ASKS TO MOVE A VISIT in the plans' pricing settings.
- NEWSEND CALENDAR UPDATE on a plan's Calendar tab sends your customer their signed plan's link with a message that the calendar has changed. The tab shows when you last sent it, and tells you when the calendar has changed since.
- NEWA plan's customer link can be turned off or replaced. On the Proposal tab, the CUSTOMER LINK card has TURN OFF THIS LINK and REPLACE LINK, then SEND A NEW LINK once it is off. The old link then only says it has been turned off and to ask you for a new one, with your phone and email. The plan itself does not change. For the owner and managers, on the phone and the dashboard.
- NEWA customer whose signed plan renews automatically can always cancel the renewal, even from a link you turned off. That link shows the plan's name, when it renews and a Cancel automatic renewal button, and nothing else.
- IMPROVEDIf a newer price for a plan is still waiting on your phone, the dashboard asks before it sends, hands over or marks accepted the older price it is showing.
- IMPROVEDA plan's Price tab says when your company's own plan terms were never saved, names the standard terms the plan is using, and opens PRICING SETTINGS.
🧾 Invoices, rent & getting paid
- NEWRent has its own tab. Rent, Invoices & Receipts (the home tile's new name) has three tabs: INVOICES, RENT and RECEIPTS. RENT shows the rent owed and overdue, every unit with rent and the last month it was billed, BILL RENT, and the rent bills grouped by property and unit. INVOICES no longer mixes rent bills in. On the phone and the dashboard.
- NEWSEND TO CUSTOMER fills in your customer. EMAIL IT opens your mail app with their address, the subject and the message already in, TEXT IT opens Messages with their number, and OTHER APP still shares anywhere else. Each box says where the address came from, and only the person the invoice is billed to is ever filled in. The dashboard has the same sheet.
- NEWTURN OFF THIS LINK on an invoice stops its online payment link. Anyone opening the old link reads that it has been turned off and to ask you for a new one, and the next time you send the invoice it gets a new link. For the owner and managers, on the phone and the dashboard.
- NEWOn a rent bill, TURN OFF THIS LINK asks Turn off online rent payments? and then stops every way the tenant can pay that unit's rent online: the links already sent for every rent bill still owed, and Pay rent on the door tag, for rent billed later too. A payment page the tenant already had open is closed as well. You switch it back on with Pay rent from the door tag on the unit, and sending one bill again turns that bill back on.
- IMPROVEDDiscounts, coupons and rewards on a scanned receipt are read as their own lines and marked Business expense, so the receipt adds up and your customer is still billed the shelf price.
- IMPROVEDDATE THE MONEY ARRIVED, when you record a payment, is a date picker.
🤝 Work orders & contractors
- NEWA job your contractor sent back complete closes with their report: CLOSE OUT WITH THEIR REPORT on the contractor card, on the phone and the dashboard. COMPLETE also opens already filled in from their report, instead of a blank form.
- NEWYour contractor's bill goes on your invoice. + ADD WORK OR RECEIPT lists a returned job's bill under CONTRACTOR BILLS, at their price plus your own Subcontracting markup, which you set under SUBCONTRACTING MARKUP (%) in Settings, Company Profile on the phone, or in Account Settings, Company Profile on the dashboard. Both keep it under PRICING. It is separate from your parts markup, and a bill can only be billed once.
- NEWManagers can send jobs to outside contractors: SUBCONTRACT, recall a job, take it back, add the PO and see the bill that comes back. Whatever comes back reaches the owner and every manager. Techs still cannot send work out.
- NEWYou can send a job to a contractor who works on another company's team. It lands in the team they work in, and recalling it, taking it back and their return all work as with any other contractor.
- NEWDeleting a job that is still with a contractor warns you first that it is still with them and that deleting it withdraws it from them. Confirming withdraws the job, then deletes it.
- NEWReminders for a team's work orders ring the phone of the person the job is assigned to, not every phone on the team. Each work order has its own reminder time, like a PM, and the account owner can switch on Work orders assigned to my team under Settings, Notifications to be reminded as well.
- NEWVideo links. Paste a share link from YouTube, Google Photos, Google Drive, iCloud, Dropbox or OneDrive onto a work order, a PM completion or a maintenance plan visit. The app names the service, warns you if the video will not open without signing in, and How do I get a link? shows the steps for each service. The video appears as Watch video on the QR page's service history and on the visit report.
- IMPROVEDClosing a work order raised from a PM puts the visit in that PM's history, marked Billed on work order, so it can never be billed a second time from the PM. The dashboard's PM editors now show the same COMPLETION HISTORY.
- FIXEDPUT ON HOLD, START WORK, RESUME, CANCEL and COMPLETE on a work order keep what you typed. Typing a new description or requester and then pressing PUT ON HOLD without SAVE CHANGES threw the typing away.
- FIXEDThe same work order buttons no longer put back an older assignee, piece of equipment or parts list. A change that came in from another phone or the dashboard after you opened the job is kept.
📋 PM schedules
- IMPROVEDThe big green COMPLETE shows only on a PM that is overdue or due today. Every other card's button shows its due date, for example DUE OCT 5, in a quiet outline, and opens the same completion sheet. On the phone and the dashboard.
- IMPROVEDThe completion sheet says what it will do in one line just above the button, for example: Completes "Check intake filters" · next due 09/28/2026 → 10/05/2026.
- IMPROVEDVISITS TO DOUBLE-CHECK on PM Schedules lists each visit with its date, location, address and equipment, and asks YES, IT WAS the PM or IT WAS A DIFFERENT PM, instead of an orange count with nothing to press.
🏘️ Tenants & door tags
- NEWA guided setup for tenants and door tags. In a location's Site Info, UNITS, TENANTS & RENT opens with a TENANTS & DOOR TAGS button. A location with no units yet takes you through four steps: the units (one house in one tap, or several at once, such as 1-12 or Apt 1-4), each unit's tenant if you want to add one, who gets tenant alerts, then creating the door tags and printing them all as one PDF. Units and tenants are free; tenant alerts and door tags need Pro. A location that has units lists each one with its tenant, its rent and whether its tag is ready, with CREATE MISSING TAGS, PRINT ALL TAGS and ADD SEVERAL UNITS. The Rent tab's SET UP TENANTS & DOOR TAGS opens the same screen. On the phone and the dashboard.
- NEWTenant requests can be turned off for a single unit, with Accept tenant requests from this unit's tag beside the location's own switch. That unit's door tag then says requests are turned off, and still shows the emergency instructions, the contact line and Pay rent.
- FIXEDDeleting a location turns off its door tags, its location code and its vendor door sign, and removes its tenants' details. A door tag from a deleted location used to keep opening a working request form. The delete question now says so.
🏠 Home & every screen
- IMPROVEDEvery screen that scrolls shows More below at the bottom while there is more to see. Tap it to scroll down. On the phone and in every dashboard window.
- IMPROVEDOne PARTS USED section on the service log, every PM completion and every work order completion: the stock picker, the parts you typed, their cost if you want to add one, and receipts. The cost goes on the invoice once, as the Materials line. On the phone and the dashboard.
- IMPROVEDThe home section is now called LOCATIONS, EQUIPMENT & PARTS, and the billing tile Rent, Invoices & Receipts.
- IMPROVEDOn screen, unit now means an apartment or suite only. A piece of equipment is called equipment everywhere, for example 3 pieces of equipment on the locations list and SELECT EQUIPMENT in pickers.
- IMPROVEDThe warning that a cooling figure looks like a heating figure has an Open button for each piece of equipment it is about, which takes you to where you can correct the figure, keep it, or scan the nameplate again.
- FIXEDBacking out of a new service log with work typed in asks before throwing it away, like New Equipment does. It used to be lost without a word. Every edit screen on the phone now asks the same way, including the iPhone swipe back.
💻 Web dashboard
- NEWScan a nameplate while adding equipment on a location's page. The scan fills in the empty boxes and asks about anything you had already typed. Add Equipment also has the phone's extra spec boxes and GENERAL NOTES.
- NEWPhoto Coverage Checklist under Reports: how many photos are missing, the coverage rate, and each piece of equipment with its installed parts, by location.
- NEWCopy Specs on a piece of equipment's page, with the same choices as the phone: copy the text, email it, or share it with a photo.
- NEWCopying parts between equipment suggests equipment with the same model number, lets you pick which parts, and asks first about a part that is only similar to one already there.
- NEWLink and unlink spares. A Links button on every spare shows where it is used, with Unlink on each, and + LINK links it to equipment or to an installed part. On the phone and the dashboard, a spare MATCHED BY SIZE can now be unlinked too.
- NEWA unit's door tag opens in the label designer, for any label size, from Tenants & door tags.
- NEWCtrl+K finds Tenants & door tags and Rent.
- NEWThe phone's four notification switches are on the Account page: subcontracted work, incoming transfers, guest QR submissions and maintenance reminders.
- IMPROVEDA scanned invoice's pages are saved on the new service log as After photos, as on the phone.
- IMPROVEDEvery form with typed work asks before throwing it away: closing a work order, a PM schedule, a service log, a part or a completion, and leaving the page by the sidebar, a link or the browser's Back button.
- FIXEDThe invoice editor keeps what you have typed. Flipping a Ways to pay switch, marking the invoice sent or recording a payment used to put the saved invoice back over the form, wiping unsaved Internal notes.
🔄 Sync
- FIXEDA change made with no signal and synced a day or more later now reaches the other phones on your team. A phone that had synced in between never picked it up.
- FIXEDSigning out and back in no longer opens the last notification you tapped a second time.
Read more: Work orders explained PM scheduling explained Cloud sync guide
🧾 Invoices & Receipts
- IMPROVEDSaving a new receipt tells you which location it was filed to, where to find it again, and how to bill its parts: open an invoice for that location and tap + ADD WORK OR RECEIPT.
- IMPROVEDWork or a receipt that is already on an invoice with no number yet now reads Already billed on a draft invoice, on the phone and the dashboard. It used to show the invoice's internal code, a string of letters and numbers.
🏠 Home screen & Inventory
- IMPROVEDThe home tile that files a bill for work on one piece of equipment into that equipment's history is now called Add a service bill to equipment, so it is no longer mistaken for the receipt scanner. A parts receipt you bill to a customer still goes under Invoices & Receipts.
- IMPROVEDThe Stock tab on the Inventory screen is now called Spare Parts & Supplies, on the phone and the dashboard, in every language.
❄️ Refrigerant logs
- IMPROVEDThe EPA leak-repair warning on a refrigerant log names the right system size: 50 lbs for R-22 and other ozone-depleting refrigerants, 15 lbs for the rest. It said 15 lbs for every system.
Read more: EPA 608 guide Parts & inventory guide
🏘️ Tenants & rent
- IMPROVEDA unit can hold its tenant's rent under RENT & LEASE: MONTHLY RENT, RENT DUE DAY, LEASE START and LEASE END, with calendar pickers for the dates. Only the owner and managers can set or change them.
- IMPROVEDBILL RENT on a saved unit makes that month's rent bill as a draft invoice to the tenant, due on the next rent due day. You check it, then send it like any other invoice. If the month is already billed, it opens that bill instead of making a second one. On the phone and the dashboard, for the owner and managers.
- IMPROVEDPay rent from the door tag: while a rent bill is out and unpaid, the tenant's door tag shows a Pay rent button. The tenant types the email or phone number you have on file for them and lands on that bill's own payment page, with the ways to pay you switched on for it. Each unit has its own switch, so turning off repair requests does not turn off rent.
- IMPROVEDRent bill emails say which month the bill is for and greet the tenant.
- IMPROVEDTENANT DOCUMENTS on a unit keeps the lease, ID and notices as PDFs or photos. Only you and your managers can open them. They are kept in cloud storage, which is part of Pro.
- IMPROVEDUNITS & TENANTS in Site Info is now UNITS, TENANTS & RENT, and a unit opens in one order: the unit, its tenant, rent and lease, documents, then its door tag. A location asks what kind of place it is. One home opens straight to that home with no list of units; Apartments or suites lists every unit.
- IMPROVEDDoor tags are made for each unit, from that unit. A single house is one unit.
- IMPROVEDSite Info says what to press instead of talking about codes: TURN ON TENANT ALERTS, then add an email or a text number. The location's on and off switch is named for what it controls, the vendor sign and the tenant door tags.
📱 iPhone
- IMPROVEDOn iPhone, a picker opened from inside a form now opens. Choosing the location on NEW PM SCHEDULE did nothing, and so did 18 other pickers: the location, equipment and date choices when creating or completing a work order or a PM, due dates and the visits calendar on PM schedules, a custom field and the condition scan notice on equipment, Remove permanently in the archive, and the link in Smart Sync. Android was never affected.
🧾 Invoices & Receipts
- IMPROVEDThe Invoices screen has a CREATE INVOICE button where you can see it.
- IMPROVEDReceipt lines are marked Bill a customer, Business expense or Personal, with a key on the screen that says what each one does. They used to read Billable, Business and Personal.
📋 PM schedules
- IMPROVEDOpened from a location, NEW PM SCHEDULE says which location it is for, and offers the whole location as well as a single piece of equipment.
🔄 App updates
- IMPROVEDPressing UPDATE while the next update is still downloading no longer says Up To Date.
- IMPROVEDAfter the app installs an update it says ✓ Updated to the latest version, whether the update came in when you opened the app or from the UPDATE button.
🏁 Walkthrough
- IMPROVEDThe first-run walkthrough starts with a welcome card, then takes one step for each home section, including BILLING, PLANS & TEAM, with a Try it line naming the real button to press. It has Back, a progress bar and an X to skip, and it ends by offering Add My First Unit or Scan a Nameplate. A technician or viewer is shown what that section holds for their role.
Read more: PM scheduling explained
📱 The app itself
- IMPROVEDThe new app icon and the dark launch screen, followed by a loading screen that says what the app is really doing while it starts. On Android the launch logo is sized so the round mask no longer cuts off its corners.
- IMPROVEDAndroid: no more Something went wrong / Check that Google Play is enabled message when opening the app. It came from a Google Play check that is now switched off, starting with this version.
- IMPROVEDiPhone: the camera and photo messages now say exactly what the app uses them for, and the app no longer asks Android for the microphone.
🏠 Home screen
- IMPROVEDWORKFLOW holds the four things you use every day: Inbox, Work Orders, PM Schedules and Maintenance Calendar. Invoices & Receipts, Maintenance Plans and Team move to a new BILLING, PLANS & TEAM section at the bottom.
- IMPROVEDThe bar along the bottom reads ORDERS, CALENDAR, PM, INBOX and INVOICES. INBOX takes the place TEAM had.
- NEWAI TOOLS & REPORTS is now TOOLS & REPORTS, and scanning a bill you received moved to CREATE & IMPORT.
- IMPROVEDThe Invoices list has a SETTINGS & PAYMENTS button for the owner and managers, and the Maintenance Plans list has PRICING SETTINGS.
🏢 Site Info & tenant requests
- IMPROVEDSite Info is in six cards, on the phone and the dashboard: SITE DETAILS, LOCATION PHOTOS, CUSTOMER & OWNER, QR CODES & PUBLIC PAGES, VENDOR CHECK-IN and UNITS & TENANTS. Units moved out of the billing card into UNITS & TENANTS.
- IMPROVEDA tenant door tag can be printed or shared, and tenant requests turned on, only once the location's tenant alert list has an email or a text number. If requests are on and nobody on the list can be reached, Site Info says so in red.
- IMPROVEDA tenant repair request is pushed to your managers' phones as well as yours.
- IMPROVEDA repair request sent from a unit's own door tag now emails and texts the location's tenant alert list. Until now only requests from the location's tag reached that list.
- IMPROVEDA unit's door tag is printed from that unit under UNITS & TENANTS, and the WHICH UNIT? picker is gone.
💳 Getting paid
- IMPROVEDSEND TO CUSTOMER shares a link to the invoice's own page with a message already written: the invoice number, the amount and the due date. SEND AS PDF still sends the file.
- IMPROVEDSHOW TO CUSTOMER puts a QR code on your screen for a customer standing in front of you: SHOW INVOICE, PAY WITH PAYPAL and PAY WITH VENMO, with OPEN ON THIS PHONE if they would rather pay on yours.
- IMPROVEDCard and bank payments go through Stripe into your own Stripe account. The invoice marks itself paid and your phone gets a notification. This is Pro, and Equipment Tracker adds a fee of 0.5% per payment, capped at $10, on top of Stripe's own. Set it up under Settings, Company Profile on the phone, or Account Settings, Company Profile on the dashboard. Both keep it under GETTING PAID.
- IMPROVEDPayPal and Venmo links carry the amount owed and are free. A payment made that way is recorded by hand with RECORD PAYMENT.
- IMPROVEDEach invoice can switch each way to pay on or off for that invoice alone. Once it is paid, SEND RECEIPT sends the customer a paid receipt.
🧾 Invoices & Receipts
- IMPROVEDScan a supply-house receipt and the AI reads each line, the tax and the total. Mark each line Billable, Business or Personal, file it to the property, and attach it to the job.
- IMPROVED+ ADD WORK OR RECEIPT on an invoice lists the finished PMs, work orders, maintenance-plan charges and visits, and the saved receipts at that location, with a search box, a filter for each kind, and sections that fold. SCAN, FROM PHOTOS and TYPE IT IN add a new receipt without leaving the invoice, and it comes back ticked.
- IMPROVEDReceipt parts are billed at cost plus your parts markup, set in Settings. PARTS MARKUP ON RECEIPT LINES changes it for one invoice, and each receipt line shows its cost and markup on your screen only, never on the customer's copy.
- IMPROVEDThe Invoices list sorts by newest, oldest, due date or amount owed, and groups by status, customer or location, each group folded until you open it. The home tile is now Invoices & Receipts.
📋 Maintenance plans
- IMPROVEDA new version of an accepted plan shows Changes from the version the customer signed: every area, item, task, package, add-on and price added, removed or changed. Discard this draft puts the plan back to the signed version, for plans accepted from now on.
- IMPROVEDThe customer's page for a new version says it replaces the plan they accepted, and on which date.
- IMPROVEDA one-time PM that is finished reads DONE with its completion date and One time, with no COMPLETE button. The copy the customer signed is now headed as a signed plan, not as a proposal.
Read more: Maintenance logs guide
📊 Reports
- IMPROVEDA location's LOCATION MANAGEMENT row has a new Reports tile beside Site Info, History and Inventory, and a unit has REPORTS beside FIND MANUALS, QR CODE and COPY DATA. Each opens Reports for that one location or unit, listing only the reports that have something in them, with ALL REPORTS to go back to the full list.
- IMPROVEDOn the dashboard, a 📊 Reports button on a location page and on a unit page does the same, with an All reports link back out.
- IMPROVEDA Filters or Belts report for some of the units at a location no longer lists stock used by another unit there as ORPHANED STOCK.
📝 Service logs and PM schedules
- IMPROVEDA service log has a PM schedule row: Mark done on a PM already set up there, Start a new PM, or Same as last to repeat the one you started last time. The next due date is the one you type.
- IMPROVEDEach installed part you tick in a service log gets a switch, Update Last Replaced → the log's date. It is on unless you turn it off, and it never moves a date backwards. Parts you only typed under PARTS USED are offered too. Until now the date changed without asking, and on the phone typed parts were skipped.
- IMPROVEDThe technician and company boxes remember the names you have used on every form that records a service, including LOG SERVICE & ADVANCE on a PM and work orders. Use my info fills in your name and your company's name.
- IMPROVEDA Show on PDFs switch sits beside the company name, in Company Profile under Settings on the phone and on the dashboard's Account page. Turn it off if your logo already shows the name and you do not want it printed twice.
📦 Inventory and spare stock
- IMPROVEDOn a phone-sized screen the Inventory tabs sit in a grid of three by two, so all six are in view. They used to be one row you had to scroll sideways, with the last tabs off the edge of the screen.
- IMPROVEDOut of Stock lists exactly the cards that show 0 on the other tabs, on the phone and the dashboard. A spare at 0 now moves there instead of also staying on the Spares tab, and the dashboard's Out of Stock, which listed only spare parts, now lists filters and belts at 0 too.
- IMPROVEDA Belt or Filter card counts the same stock as the spare behind it, on the phone and on the dashboard's Inventory and location pages. One belt card read 6 while its spare, the units and the picker all said 4. Shelf stock no spare counts gets a card of its own, marked No spare profile counts this stock.
- IMPROVEDA card's + and − and its Edit change only that card's own shelf rows. They used to act on whichever row the screen listed first, which was a different row on the phone and the dashboard.
- IMPROVEDA spare's own page has + and − on TOTAL ON HAND again, the same stepper as an installed part's page. It was taken off in August.
- IMPROVEDAn installed part's TOTAL ON HAND counts a shelf row once when two spares share it. It could read 6 on a shelf of 3.
- IMPROVEDPressing SAVE on a spare's page no longer renames the shelf rows linked to it. An AX32 spare could relabel A32 belts as AX32.
- IMPROVEDAUTO-SEARCH still lists a part or unit you unlinked, marked You unlinked this, but no longer ticks it for you. Ticking it yourself links it again.
- IMPROVEDShelf stock that has no spare page now shows on the phone's Spares tab. Only the dashboard showed it.
- IMPROVEDA stock change, from the phone or the dashboard, now updates the QR pages that show that stock. A spare used in a service log could keep saying 1 in stock on its own sticker page and on the units it fits.
- IMPROVEDAccepting a share no longer brings back stock you had deleted. On the phone, every screen that accepts a share now tells you when it left out stock you had deleted or links you had removed.
📷 Stock photos
- IMPROVEDA stock card shows only the spare's own shelf photos, never a photo of a unit or of a part installed on one. A new filter spare could show a rooftop unit as its picture.
- IMPROVEDSET MAIN on a spare's photo now changes the card's picture. On the dashboard, open a stock card's photo and press SET MAIN under the one you want.
📥 Importing and scanning
- IMPROVEDImporting a spreadsheet with a filter or belt size column now asks whether those sizes are parts installed on each unit or spare stock on the shelf, and files them that way. They used to go onto the unit record, where nothing matched them to your stock.
- IMPROVEDA nameplate scan of a 90-ton Trane IntelliPak rooftop unit fills in its cooling capacity from the model number. The plate itself prints none.
🌐 Website
- IMPROVEDThe pricing page shows the 7-day free trial on Team as well as Pro. Every plan has one; the Team card never said so.
Read more: Parts & inventory guide PM scheduling explained Reports guide
🔧 Installed parts
- IMPROVEDUnlinking a spare from a part now sticks. It used to be matched straight back by its number, rating or size the next time the screen loaded. Unlinking a unit from a spare also stops the parts on that unit from pairing with it, and linking the unit again brings them back.
- IMPROVEDPressing SAVE on a part no longer writes the count the screen was showing back onto the shelf, which could undo stock added from another phone in the meantime. Only the stock buttons and ticking a part used change a count.
- IMPROVEDTicking a part from stock really takes it off the shelf when the shelf row carries the part's number but was never linked to it. When there is nothing on the shelf, the message says so.
- IMPROVEDInside an installed part, tap any spare it draws from to open it. The section is labelled as your shelf stock, and adding to a count adds exactly what you tapped.
- IMPROVEDThe screen that makes a part now says whether it is an INSTALLED part on the unit or a SPARE part on the shelf.
- IMPROVEDA filter or belt size read off a new unit's nameplate is offered as a part on that unit, instead of being stored on the unit where nothing matched it to your stock.
- IMPROVEDTwo capacitors that both print a voltage match only when the voltages agree.
📦 Spare stock
- IMPROVEDTicking a part used takes only from the shelf its count came from. A second spare sharing the model number could have its own shelf emptied, while the log said one came off.
- IMPROVEDA spare added from Inventory and pointed at one unit is saved as a spare that fits that unit, not as a part installed on it with a copy on the shelf.
- IMPROVEDThe quantity you type is the quantity saved when a spare is attached to units, and Add to existing adds that number instead of 1. Choosing an existing spare while linking a part moves no stock at all.
- IMPROVEDCancelling the duplicate question no longer leaves the saving screen stuck.
- IMPROVEDUnlinking one part from a spare keeps a unit you linked to it by hand.
- IMPROVEDEditing a stock card on the dashboard keeps the spare's links and unlinks, sends only what you changed, and now reaches the phone.
- IMPROVEDA capacitor written with its tolerance or frequency (±6%, 50/60 Hz) matches the same can written plainly.
- IMPROVEDA view-only team member can no longer link or unlink spares. Their phone showed the change, but it never reached the account.
Read more: Parts & inventory guide
🔧 Installed parts
- IMPROVEDA part is a capacitor because of what it is, not because its plate lists a µF rating. A motor keeps the rating it needs without being mistaken for one.
- IMPROVEDEvery installed part's card shows its model number. A gas valve with a good model number used to read blank.
- IMPROVEDAdding a part to a unit no longer offers to link it to other parts there. That offer could only turn the part into a spare with a made-up count on the shelf.
- IMPROVEDCapacitors match only on the same rating. A printed 145-174 MFD is one rating with a tolerance, not a range of values that fit. Links you made yourself are left alone.
- IMPROVEDA part number read off a nameplate is kept when you save. The save used to write the empty box back over it.
📷 Scanning
- IMPROVEDThe long scanning explanation appears once per phone, not on every scan.
- IMPROVEDAdding a unit no longer locks the screen behind a scan message you could not close. Save while it reads and the specs still land on the unit.
- IMPROVEDIf your phone closes the app while the camera is open on a new part or service log, what you typed and the photo come back.
🏢 Site Info
- IMPROVEDSite details and photos are at the top. Customer / Billing, QR codes, Vendor Check-In and Tenant Service Requests fold away, each saying what is inside. Same on the dashboard.
- IMPROVEDA SAVE SITE INFO bar stays at the bottom and says whether you have unsaved changes. Typing never saved on its own.
- IMPROVEDThe Android back button no longer throws away what you typed without asking.
🔍 Search
- IMPROVEDThe home search remembers what you looked for, with an × to remove each one, and a part result names the unit it is on. The dashboard search finds parts by part number and filter or belt size too.
🖨️ QR tags
- IMPROVEDA resident's tenant tag no longer advertises specs, vendor check-in and service logging. It says REPAIR REQUEST, which is all it does.
- IMPROVEDPrinting a QR tag with no signal used to produce a sheet with an empty square where the code goes. It now tells you instead of printing a tag that does not work.
🔄 Smart Sync
- IMPROVEDLinking a photo to a location no longer deletes the file it just linked, and photos pulled from the cloud no longer land under a location called unknown.
- IMPROVEDA finished Smart Sync action says it finished, and the counts refresh after it instead of judging with the old totals.
🌍 Language
- IMPROVEDWork-order refusals from the server appear in your language on the phone and the dashboard.
- IMPROVEDThe opt-in confirmation text, the one with STOP and HELP, arrives in the account owner's language, and vendor check-in times are written the way your language writes dates.
Read more: QR creator guide Parts & inventory guide Cloud sync guide
📷 Scanning
- IMPROVEDAll four AI features — nameplate scanning, condition scans, invoice scanning and diagnostics — were running on a quarter of the memory they needed. A batch of photos could exhaust it while the request was still being read, before any of the app's own checks could run, so what came back looked like a problem with your photo. All four now have four times as much.
- IMPROVEDYou can send about twice as much as before: a batch of photos up to roughly 14 MB, and a single photo up to about 10 MB.
- IMPROVEDCondition scans, invoice scans and diagnostics photos now go out at the same quality as a nameplate scan. They had been shrunk to a fraction of their size first, which is a great deal to throw away from a photo you are asking the app to read.
- IMPROVEDIf a batch still will not fit, you are asked rather than overruled: crop to the plate, or send this one at a lower quality. The message says why it happened, and that sending fewer photos at a time keeps them all at full quality.
🧰 Spare units
- IMPROVEDA spare machine filed against a unit was being drawn inside that unit's INSTALLED COMPONENTS list — so a pump could appear to have a spare copy of itself fitted inside it. Spare units now stay on the spares list, where they belong, on the phone and on the dashboard.
🧮 Where a number came from
- IMPROVEDA cooling capacity worked out from the model number now says so wherever it appears: the unit screen, the printed report, the PDF and the public QR page. A figure read off the nameplate carries no such note, so you can always tell which is which.
🌍 Language
- IMPROVEDSpanish now addresses everyone the same way throughout. Thirty-one lines used the familiar form while the rest of both Spanish catalogues used the formal one, which reads as the app changing its manners halfway through a screen.
Read more: Parts & inventory guide
📷 Your photo keeps its quality
- IMPROVEDThe picker no longer resizes what you take. Quality is the whole point of a nameplate photo, and a reduced one that still cannot be read has cost you the retake as well.
- IMPROVEDA photo the app could not open was being reported as a photo that was too big. They are opposite problems with opposite fixes — one wants a retake, the other wants a crop — and they were producing the same message.
- IMPROVEDA scan that comes back empty now tells you to crop tight to the plate, in your own language rather than in English.
- IMPROVEDA form can no longer be submitted while its photos are still being prepared, which was quietly sending the form without them.
🗓️ Schedules and links
- IMPROVEDA PM schedule created on the dashboard against a whole building was being reported by the phone as belonging to a deleted unit. The two platforms now agree about what a building-level schedule is.
- IMPROVEDAn invoice and a service log can now open the building or unit they belong to, instead of being a dead end.
- IMPROVEDThe public QR page shows heating figures as well as cooling.
🌍 On the dashboard and the website
- IMPROVED136 lines of the dashboard rendered in English no matter which language you had chosen, and thirteen more had been translated into all six languages and then never actually read by the screen. Both are fixed, and a check now fails the build if it happens again.
- IMPROVEDBreadcrumbs are on every page of the website below the home page, so a search result shows where a page sits rather than a bare address.
Read more: Web dashboard guide
🔄 The app stops restarting itself
- IMPROVEDComing back to the app after a few minutes away could tear it down and restart it to apply a pending update — so instead of the screen you left, you got the loading screen and a download running in front of you. Nothing is lost by removing it: the update is already downloaded and applies the next time you open the app from closed. The update button in Settings still applies one the moment you press it.
🗓️ PM schedules
- IMPROVEDA schedule due six months out went OVERDUE the instant you edited its date. The date picker hands back one format while every due-date comparison expects another, and the screen you create a schedule on converted it while the screen you edit it on did not. Fixed at the one place every screen actually calls, on the phone and the dashboard, so schedules already saved the wrong way read correctly without anything to re-enter.
- IMPROVEDYou can copy a PM schedule IN from another unit, from the form you are already standing in. The existing tool only pushed a schedule outward from the unit that had it, which is the wrong direction when you are walking a roof with fifteen units doing the same task on each. It brings the title, description and frequency, all still editable before you save.
- IMPROVEDPM schedules now appear on the public QR page, soonest first, with a control to hide them — so what is DUE on a machine sits beside what was DONE to it. Staff names never leave the account, since anyone who can photograph the label can read that page, and a schedule you have paused is not published at all.
- IMPROVEDThe service log on the QR page has a Newest or Oldest control, and can be filtered by visit type rather than by date alone.
Read more: PM scheduling explained
🗓️ The PM schedules screen
- IMPROVEDTap a card and it opens a screen of its own, carrying the task description the card never showed, the frequency in words, who it is assigned to, and the history of every time it has been completed — read as "last done 12 June, 3 months ago" rather than as a timestamp.
- IMPROVEDDelete and edit moved off the card and into that screen, along with the invoice buttons that only appeared on some rows. COMPLETE stays on the card: one action per row.
- IMPROVEDThe list sorts, and collapses by location.
- IMPROVEDA schedule can be copied to other units.
⏳ The loading screen
- IMPROVEDThe launch screen now reports what it is actually doing, including the real status of an update it is fetching, instead of holding on one line.
Read more: PM scheduling explained
🛟 Smart Sync
- NEWSmart Sync no longer deletes the real file out of your local backup. It had been treating name.jpg and name (1).jpg as the same photo, keeping one at random and removing the rest — and because it then matched names loosely, the folder still looked complete afterwards, so no later run ever offered to restore what had gone.
- IMPROVEDThe delete buttons now refuse to remove a last remaining copy of anything.
🏢 A Location is called a Location
- IMPROVEDFifteen labels on the phone still said building — including a Locations list whose empty state said NO LOCATIONS YET above an ADD NEW LOCATION button while its own spinner underneath said Loading buildings. The spare-parts search across sites, the export button, the global search results and the diagnostics equipment picker all said it too.
✨ Startup
- IMPROVEDThe splash logo had been showing the grey and white checkerboard that stands in for transparency since 5 June. Replaced from the original artwork.
- IMPROVEDThe launch screen no longer flashes white before the app draws.
📄 On the website
- IMPROVEDThe blog was finishing every paragraph twice on some posts, and three live articles carried claims that did not match what the software does.
- NEWCreate Free Account opens the create-account form rather than the sign-in form.
Read more: Cloud sync guide
📥 A re-import asks
- IMPROVEDImporting a CSV that contains a unit you already have now asks what to do with it: Update This One, Skip This One, Update All Remaining or Skip All Remaining. Until now every matching row was dropped and counted as "skipped", so none of your edits were applied, on either platform.
- IMPROVEDAn update only changes a field the sheet actually carries a value for. An empty cell means "no opinion", never "make it empty" — so a sheet with columns trimmed out cannot blank serial numbers or install dates across every unit it matched. The record keeps its own id, so its photos, service history, parts, work orders and the QR label on the machine all stay attached.
- IMPROVEDA default you set in the import wizard is no longer treated as something the spreadsheet said. The wizard fills in a type and a location when the sheet is silent, and on an update that invented default was being offered as a change to your real record.
- IMPROVEDThe phone now recognises a repeat row the way the dashboard does. A row with no serial number and no model number — most of a hand-typed sheet — was never matched on the phone, so importing the same file twice made a second copy of every unit.
🖼️ Photos from the cloud
- IMPROVEDPhotos loaded from the cloud on the Transfer Inbox, the AI diagnostics photo picker and Smart Sync are now decoded at the size of the box they are drawn in. On Android a full-resolution photo was being decoded whole to fill a 68-pixel thumbnail, four at a time, on a screen you open straight from a notification.
🌍 Language
- IMPROVED143 more strings are translated across German, Spanish, Spain Spanish, French, Italian and Brazilian Portuguese.
📄 On the website
- IMPROVEDThe privacy policy, the terms of service and this changelog were checked line by line against what the software actually does. Three whole entries were missing from this page, and the largest feature shipped since invoicing — sending a work order to another contractor — had never been written down at all.
- IMPROVEDSixty corrections were applied across the marketing site after an audit checked every claim against the code — the report-type count, the EPA thresholds, the offline and cloud-sync wording, the Settings → Language row, the dashboard screen names. The two corrected strings that sit on a translated surface were re-keyed in all six catalogues in the same change.
Read more: Cloud sync guide
✳️ Required fields are marked
- IMPROVEDAdding a piece of equipment shows fourteen boxes, and only two of them are needed: a name and a location. Nothing on the screen said so, so the first machine you ever add looks like a wall of work when it is really two fields and a save. Seven labels across the equipment, equipment-edit, part-edit and both service forms now end in a star, the same way TITLE and LOCATION / SITE already did on the work-order form. Each one was checked against what the save actually rejects, rather than marked because it looked important.
⏰ The reminders summary
- IMPROVEDThe line at the bottom of the reminders screen read "7 days before for equipment and parts, 3 days before for PM schedules" — with a work order sitting directly above it saying it was using your general setting. The setting governing the row in front of you was the one kind the sentence left out. It now names all three, work orders included.
🔔 Work order due dates
- IMPROVEDA due date on a work order now raises a reminder, like equipment, parts and PM schedules already did. The default is one day before, deliberately shorter than the three days a PM gets: a PM is a visit you plan, and a job somebody is waiting on wants the evening before. Change it for everything in Settings, or for one job on the reminders screen.
- IMPROVEDJobs that are on hold, cancelled or already finished do not remind you, and putting a job on hold takes its reminder back down again.
💬 Two messages that blamed the wrong thing
- IMPROVEDA brand-new account opening the locations list was told "No locations match your search." — with no locations and nothing typed into the search box. Creating your first location and looking at it said "No units match your search in this location." seconds later. Both now say what is actually true: that there is nothing here yet, and where the add button is.
- IMPROVEDRefreshing a QR page that cannot be refreshed told you it was "usually an inactive or out-of-date subscription". It never was. A public page published without an owner recorded on it is frozen for everybody, including the account that published it, and no subscription can affect that. The phone now says what the dashboard has always said, and printing a fresh label no longer sends you to check your billing.
📍 Creating a location
- IMPROVEDCreating a location no longer opens the customer and billing panel on top of it. The reward for naming a site was a form about invoicing — customer name, vendor emails, tenant phones, billing address — with the EQUIPMENT tabs and ADD EQUIPMENT TO THIS LOCATION rendered underneath. Nothing is gone: SITE INFO opens the same panel, one tap away.
🖥️ Dashboard
- IMPROVEDInbox has moved out of the More dropdown and into the main navigation, with a count on it — the same place and the same count the phone has had since 24 August. Until now a tenant reporting no heat, a guest service report and an offer of work all arrived in complete silence for anybody working at a desk.
- IMPROVEDAccepting shared equipment merged a unit into one you already had, silently, whenever the name and building matched — no serial number check, and no question. The merge is the one path that never writes the incoming unit's own details, so its serial number, model number, manufacturer and install date were dropped while its parts and photos came through. The dashboard now stops and asks, with the incoming photos and part count in front of you, exactly as the phone does.
Read more: Work orders explained Web dashboard guide
🗑️ Deleting a tenant request
- IMPROVEDDelete this request and its photos is on the phone Inbox, and DELETE is on the dashboard TENANTS tab. The photos go first and the request last, so if a photo cannot be removed the request is kept and you can try again. Viewers do not get the control.
- IMPROVEDThe phone Inbox had no viewer check of any kind. A Viewer is now refused there the same way they are on the work order screens.
🖥️ Dashboard
- IMPROVEDRequests already marked handled are listed in a collapsed Handled requests drawer under the pending ones. Every list on every surface showed pending requests only, so the accumulated history could not be seen or removed anywhere.
Read more: Web dashboard guide
🔩 Filter stock counts
- IMPROVEDAdding a filter to a building's stock recorded a count of one, no matter how many you had. The form had no quantity box at all — the one beside the size was hidden on that screen, and the INITIAL QUANTITY ON HAND field is hidden whenever the filter sizes are open — so there was nowhere to say twelve, and the app filed one without telling you it had picked the number. This is the main way filters get added to stock, from the + on the Inventory screen's Filter tab.
👤 Who added a record
- IMPROVEDWho created a unit, a part or a tool was lost whenever that record arrived on a second device — a tablet, another phone, or a teammate's. Three of the twelve kinds of record that sync were not carrying the name across.
- IMPROVEDWorse, editing one of those records then stamped it with whoever touched it, and the next sync pushed that wrong name up and removed the real one everywhere, including from every backup taken afterwards. Both halves are fixed, and a device that does not know who made a record can no longer delete the answer from one that does.
🗄️ Deleting a site from the dashboard
- IMPROVEDDeleting a whole site from the dashboard kept only the unit names in your Archive — the parts list and the entire service history of every unit on it were destroyed, even though the box you type DELETE into promises they stay readable. Deleting the same site from the phone always kept them. Every unit is now archived in full, the same way.
- IMPROVEDWork orders on a deleted site could be left behind on the board for ever, pointing at a unit that no longer existed and opening nothing. The ones filed under Unassigned or General were the ones that got stranded.
- IMPROVEDPhotos attached to those work orders stayed in cloud storage for ever with nothing pointing at them.
🖥️ Dashboard: a tenant request becomes a job
- IMPROVEDA resident's request on the TENANTS tab could only be marked handled. Turning it into a job meant picking up the phone and opening the identical record there — and a request handled from the desk produced no work order at all: nothing on the board, nobody assigned, no assignment email, and the report simply closed. CREATE WORK ORDER is now on the request, as it has been on the phone. The job carries the unit the resident scanned, their photos are copied onto it, and the request is marked handled only once the work order exists.
👀 Viewers and work orders
- IMPROVEDA Viewer could open a work order and drive it from start to finish — start it, put it on hold, resume it, complete it, cancel it, reopen it, log an update, save changes, reassign it, swap the linked unit, add photos — and every one of those looked like it had worked. None of it ever left the phone. Sync stops for a Viewer before anything is uploaded, so nothing was refused and nothing was reported; the next sync quietly put the job back the way it was, sometimes while they were still looking at it. Fourteen separate writes on that screen had no role check at all. A Viewer no longer sees the controls, and one who reaches a write anyway is told plainly that their role is read-only.
🛠️ Everything else
- IMPROVEDCreating an account told you a verification link had been sent and to check your inbox and verify before signing in. You were already signed in, and nothing has ever required verification — so it invented a job for you and sent you out of the app to do it, in the first minute. It now says the account is made, that you are ready to go, and that the email is there if you want it later.
- NEWAI CONDITION SCAN HISTORY on the equipment profile now shows how many assessments it holds, the way AI DIAGNOSTICS HISTORY above it already did, so you can find it on a long profile.
- IMPROVEDThe account-deletion warning said it would destroy your “local database, and subscription”. Neither was true. The records on this phone are not touched, and a subscription bought through Google Play or the App Store keeps billing until you cancel it in that store — only a website subscription is cancelled with the account. The warning now says exactly that, on the phone and on the dashboard, from one shared text.
- IMPROVEDThe Team card on the paywall now says how to get back off Team before you buy it: switch to Individual Pro on the same screen, for nothing — and during a free trial, not by cancelling and re-subscribing, which spends the trial. A customer on 31 August bought Team, wanted Solo, and went looking in the store instead.
- IMPROVEDRe-importing a shared building could store the same photo a second time. Both importers name a copied photo after the source photo's id, so a repeat import overwrites its own earlier copy; when that id could not be read, the fallback name came from the clock on the dashboard and from a random id on the phone, and matched nothing. The fallback is now derived from the photo's own address, on both, so the same photo lands on the same name every time — checked afterwards against the stored files on two accounts, with not one photo held under two different imported names.
🖥️ Dashboard: scanning
- IMPROVEDSCAN NAMEPLATE works on a spare part and on a tool, not only on a unit. The part form gained the customer-number box a scan can fill, and a tool scan reads brand, model, serial and a name — which is all a tool's plate says about the tool. A filter, belt or refrigerant entry has no plate, so it is not offered there. Same AI, same free-scan count and the same review-before-apply as the phone.
- IMPROVEDThe invoice scanner is on the equipment page beside the nameplate and condition scans. It writes nothing itself: it reads the invoice and opens the existing LOG SERVICE form pre-filled, anything you had already typed wins, and the save goes through the same form as always. AI Diagnostics is now the only AI tool that is phone-only.
- IMPROVEDA finished scan you had not yet reviewed was thrown away by a page reload — an answer your account had already been charged for. It survives a reload now. Closing the tab still ends it, and a scan that is still running cannot survive either.
🖥️ Dashboard: your account
- IMPROVEDYou can close your account from the Account page on the dashboard. Somebody who signed up on the website and never installed the app had no way to delete it themselves. If the browser has been signed in too long to allow it outright, the dashboard asks you to prove it is you again in place — Google, Apple or your password — rather than sending you away to sign in and start over. Delete Account is linked from the site footer too.
🌍 Language
- IMPROVEDThe Dispatch page on the dashboard was in no catalogue at all — 56 strings, including ✅ ACCEPT and ✕ DECLINE, the two buttons a subcontractor presses to answer a job, were English in every language. Its Spanish is now formal, like the rest of the app.
- IMPROVEDEvery refusal the server sends to a screen — a stale invite code, a username already taken — reached the phone and the dashboard in English whatever your language. Forty-seven of them are translated, and the ones built around your own text, such as “No account found for username …”, go through a translator that keeps the slot.
- IMPROVED“Failed to save parts needed” on a work order was assembled at the moment it failed, so the translation of it had been sitting unused in all six catalogues; and eight refusals in the dashboard's invoice screens were outside the catalogues altogether. Both are translated now.
Read more: Parts & inventory guide Work orders explained Web dashboard guide
☁️ Restores and sync
- IMPROVED“Replace from Cloud” and Restore from ZIP Backup left the sync cursor claiming the phone was already up to date. The five kinds of record the restore itself does not rebuild — tenant panels, building units, building owners, invoices and invoice payments — were then only asked for as changed since the last sync, so anything older never arrived. Proved on a real phone: a restore dropped a building unit, a building owner and an invoice, and the same restore with the fix brought all three back. If you ran a restore before this update those rows are still missing — run FULL SYSTEM RESTORE once more and they come back.
- IMPROVEDA building's tenant panel — the office contacts, what counts as an emergency, shutoffs, utilities, building information, notices and document links a resident sees when they scan a tag — was pushed to the cloud and never pulled back. A second phone showed a blank panel, a reinstall restored everything else and left it empty, and a panel typed on the dashboard never reached the phone at all. Saving a single edit from a phone that had never received it pushed a blank panel over the real one. It is pulled now, and deleting a site deletes its panel with it.
- IMPROVEDThe note typed when a tool is checked in, and the mark on a return that nothing had signed out — both added on 27 August — reached the cloud and never came back down, so a second phone and every reinstall showed the return with no reason. Nothing was lost. The cloud held the notes all along, and the next sync delivers them.
- IMPROVEDA Full System Restore onto a phone that already held a work order kept that phone's unit for the job and ignored the cloud's. The same restore was repaired for the parts columns on 31 August and this column was missed; every restore and pull statement is now checked for a column that is written once and never updated, so the same mistake cannot ship a fourth time.
- IMPROVEDA photo over 10 MB never reached cloud backup. The server refuses any image at or over 10 MB and nothing on the phone checked first, so the same upload was tried again on every sync, silently, for ever — the only sign was the one-per-session “Some photos haven't backed up to cloud — check Smart Sync”. A photo that size is now resized to 2048 pixels wide for the cloud copy, in background sync only and never while the camera is open; the original on your phone is untouched.
🚀 Launch and updates
- IMPROVEDThe app tells you what it is doing at launch again. “Checking for updates...” was removed on 28 July, and the check itself now finishes in about 55 milliseconds, so even when it was put back it was gone before the screen could draw it. It now shows from the first frame and stays under a second while the database opens underneath it; “Downloading update...” and “Installing update...” follow when there is one.
- IMPROVEDThe home screen lit up the pulsing UPDATE button and “Your app just got better. Claim it.” on launches where the update had just installed. The flag it read stays set after every successful start-up download, including the one the app is already running — and the same flag made the app restart itself after five minutes in the background, to install the update it was already on, in the middle of whatever you were doing. Both now compare the downloaded update with the running one. A real pending update still shows the button, and so does anything uncertain, so a critical fix is never hidden from you.
💳 Billing
- IMPROVEDThe line that made a customer pay twice on 22 August was still in two of the three purchase paths. The fix in the 29 August entry covered buying Pro; buying a Team plan and Restore Purchases could still throw away a purchase the store had already completed, and show “Your payment was processed but Pro status could not be verified” with the buy button live again. One rule now decides all three, and what the store granted is never reported as failed.
- IMPROVEDThe paywall told a Team subscriber who had never invited anyone that their teammates would lose access on a switch to Individual Pro. With seats bought and nobody on the team, it now says nobody loses access.
📄 CSV import
- IMPROVEDImporting a CSV read nine of the columns the app's own export writes, and the dashboard read ten. The rest were not lost — they were flattened into the notes field as “Imported Extra Details” text — so export, edit in a spreadsheet, re-import handed you back equipment whose filter size, belt size, capacitor size and refrigerant had become a paragraph that no stock matching could read. The phone and the dashboard now read thirty-seven of the thirty-eight columns (only the record id is deliberately not read back), out-of-service comes in as a status rather than as text, and the same spreadsheet imports identically on either.
Read more: Cloud sync guide
🩺 Device Report
- IMPROVEDSettings → Device Report, next to Crash Log. One screen with the version and the update you are actually running, your account and seat state, how many records of each kind you hold, what is on disk, any crashes recorded and any photos still waiting to upload — with COPY, SHARE and SAVE, so it can go straight into a support message. Your stored data is listed by name and size rather than by content, and only a short list of sync timestamps, ids and file paths is printed in full. The one exception is a crash message, which is kept word for word because that is what makes it useful, and the report says so where it appears. Nothing is sent unless you send it.
💳 Subscriptions and billing
- IMPROVEDThe SWITCH TO INDIVIDUAL PRO card disappeared whenever the store had not sent prices yet — no signal, or Google Play being slow — so a Team subscriber was left with no way down and nothing to say why. It stays on the screen now, with its buttons greyed and a line saying the prices could not be loaded and to reopen the screen.
☁️ Photos, sync and storage
- NEWSmart Sync's backup button could create the very orphan it was pressed to clear. Android will not overwrite a file whose name is already in the backup folder — it writes a second one with (1) on the end — and that copy matches nothing in the app, so it turned up as In Backup Only on every scan from then on. The button now looks in the folder first and leaves a file that is already there alone. Copies it already made stay until you delete them.
🛠️ Everything else
- IMPROVEDThe sign-in screen was showing a stock factory robot-arm icon where the Equipment Tracker logo belongs — the first thing anybody sees when they open the app. It is the app icon now.
- NEWCreate Account and Sign In were the same screen with one line changed, so tapping Create Account looked like nothing had happened. Create Account now has a green FOR YOUR ACCOUNT badge, a green title and three lines saying what an account adds: ten free AI scans, somewhere for a subscription to attach so it follows you to a new phone, and cloud sync and backup once you go Pro. Sign In is untouched — somebody coming back does not need a pitch.
Read more: Reports guide Cloud sync guide
August 2026 7 updates
💳 Subscriptions and billing
- IMPROVEDA subscription now has to be attached to an account you are signed in to. Started while signed out it belonged to nobody at all — the store had no name to give it back to, so it could not be restored, could not follow you to a new phone, and was not recognised by the app that had just charged for it. The paywall asks you to sign in first, and says why.
- IMPROVEDIf you paid while signed out, the app now asks the store what your account owns whenever it finds you signed in with no subscription, and turns on exactly that — nothing to tap, and nothing granted that the store does not confirm.
- IMPROVEDAnnual subscribers on Google Play were being filed with no plan name. The two stores spell the annual plan differently and only the Apple spelling was recognised, so a paid annual subscription bought on Android was recorded without saying which plan it was — and, if it had been moved between accounts, was marked as not renewing. Nobody lost Pro over it; the bookkeeping behind the subscription was wrong, not the access.
- IMPROVEDNine places in the app told paying subscribers they had not paid.
- IMPROVEDWhen the paywall could not load prices from your store it showed US figures — $9.99, $79.99 — whatever your store was about to charge you, and the per-month line under the annual plan put a dollar sign on a number that was already in your own currency. A price the app does not have is now a dash, the per-month figure is the store’s own, and the website checkout says its prices are in USD.
- IMPROVEDAn invoice total could come out a hundred times too large in French, German, Italian, Spanish and Portuguese. Those languages write the decimal as a comma, and the total was reading that comma as a thousands separator.
- IMPROVEDThe dashboard no longer sits on “checking your subscription” for ever. It was waiting on an answer that had already been decided against sending.
- IMPROVEDThe app’s automatic subscription check could take Pro away from someone who pays on the website. When the phone believed it was Pro but found no subscription record, it asked the app-store billing service — which has never heard of a website subscriber — and wrote that answer back over a live subscription. The same check then filed the account as a one-seat plan, which is what sent a team owner a false “over capacity” notice. It now leaves a website subscription to the website’s own billing, records no plan and no seat count on a no, and gives up after ten seconds instead of hanging.
- IMPROVEDA subscription bought in the moment before the app had told the store who you were was filed against a random anonymous id instead of against your account. Six purchases are on record in that state, four of them live Google Play trials: the money went through, the app never saw the subscription, and cloud photo backup refused, because it reads the same record. The server no longer files a purchase under an anonymous id — it holds the event aside until the store links that id to a real account — and the store message that says two ids are one person, which the webhook used to ignore entirely, is now acted on.
- IMPROVEDTeam subscribers can switch to individual Pro from the paywall. That screen offered only other team sizes, so anybody who had bought Team and wanted less had nowhere to go. Teammates lose access when the switch takes effect, and it says so before you tap.
- IMPROVEDOn Android, changing plan inside your 7-day trial now happens straight away and the trial keeps running, whichever way you move. Once you are paying, more seats arrive today and fewer seats wait for the period you already paid for to end. Every plan change used to replace the subscription immediately — during a trial that is how the trial ends early and a charge lands.
🔩 Parts and spares
- IMPROVEDThe dashboard can copy a parts list from one unit onto another identical one. It was phone-only, so a run of matching rooftops had to be built up one phone screen at a time.
- IMPROVEDA copied part no longer inherits what belonged to the original. The QR label, the serial number, the photo and the last-replaced date all stay behind, because those describe one physical part rather than the model it is.
- IMPROVEDWhether a spare fits a unit is decided in one place now, instead of by two pieces of code that were free to disagree.
- IMPROVEDA stock link the app removes at launch — a spare attached to a part filed under a unit rather than the building's general stock — came straight back on the next sync, then went again at the next launch, for ever. The removal now reaches the cloud, the way every other unlink already did.
☁️ Photos, sync and storage
- IMPROVEDA photo whose equipment had been deleted uploaded itself to the cloud again on every single sync, for ever.
- IMPROVEDA photo could be kept twice in cloud storage — once under parts, once under equipment — because re-uploading it after a spare was linked to a unit wrote to the other folder and left the first copy behind. An upload now finds the existing copy, Cloud Smart Sync recognises a cross-folder twin and keeps the one your records point at — it compared only the file name before, which is identical in both folders, so it passed over nearly every pair — and a team member who cannot clear one is told the workspace owner has to, instead of being asked to retry a check that can never succeed for them.
- IMPROVEDA PNG that went into the local backup under a .jpg name was flagged as a problem on every check, and stayed flagged no matter what you did.
- IMPROVEDMaking a ZIP backup of your own data is free again. It was free when the app launched, and a change in June put a PRO badge on the button and sent you to the paywall instead — while the paywall screen itself still listed local backups as free. Restoring from a ZIP was never blocked, which is what gave it away. Cloud backup and sync are still Pro; a ZIP on your own phone is not.
- IMPROVEDA restore from the cloud brought every work order back with the parts missing — what was used and what was still needed — and said it had succeeded. The job went up to the cloud complete and came back down short, because the restore listed every column but those two. Restoring again brings them back.
🛠️ Everything else
- IMPROVEDA reminder set for a time that had already gone past today fired immediately, instead of waiting for tomorrow.
- IMPROVEDThe confirmation before wiping the app said “Nuke” and “Restore Matrix?”. It now says what it actually does, which is the last thing you read before losing everything.
- IMPROVEDThe Terms described the invoice screens and called them the data, and the AI tile named the wrong screen to go to.
- IMPROVEDOpening the app while a restore was still being applied could make it vanish. The launch was deleting the database file while your screens were already up and could be reading it, which is a native crash — nothing logged and nothing to catch. It now closes the database first and holds everything until the copy is in place, as the in-app restore always did.
- IMPROVEDThe upgrade page on the website listed photo capture and push reminders as Pro. Both are free on every tier — the phone attaches photos and schedules its own reminders with no subscription. It now says what Pro really adds: your photos backed up to the cloud, and QR labels that open a hosted page anyone can scan.
- IMPROVEDThe QR sharing screen’s LINK mode is now called WEB LINK, and its translations changed from a verb to a noun. It shared its text with the action that links a spare to a part, so a German phone offered a QR mode called VERKNÜPFEN — connect it — beside TEXT and JSON.
🖥️ Dashboard
- IMPROVEDStart 7-Day Free Trial on the pricing page answered with a bare sign-in form and no explanation, then two silent redirects. It now opens on Create account, says why an account is needed before a trial can start, and carries on to the paywall you were headed for.
- IMPROVEDSign-up and sign-in were the same page with three words changed. Sign-up now has a FREE ACCOUNT badge and its own heading, and offers the two things a visitor can actually do: install the free app — App Store and Google Play buttons, and a QR code to scan — or go Pro to work at a desk. It also says plainly that a free account on its own does not open the dashboard, which it never had. Create a free account is a proper button rather than a small grey line, and the two dark buttons that looked like black rectangles have edges now.
Read more: Parts & inventory guide Cloud sync guide Web dashboard guide
🚚 Subcontracting
- IMPROVEDSend a work order to another contractor. SUBCONTRACT on a job takes their email address or their @username — they need an Equipment Tracker Pro account, because a free account cannot receive work and the finished job would have no way to travel back to you. The job stays open and stays due on your own list while it is out: a badge says where it is (Sent — awaiting reply, With subcontractor, Returned complete), and RECALL takes it back for as long as they have not answered. TAKE IT BACK ANYWAY and GIVE THIS JOB BACK are there for a job stuck on either side.
- IMPROVEDOffered work lands in your Inbox, in a new Offers tab, with ACCEPT and DECLINE. Accepting creates the job on your phone with the site, the machine, its installed parts and its photos, and the Inbox count on the home screen goes up, so nobody is left holding a slot open waiting to hear back. Finishing it sends it home by itself, with your hours, rate, materials, parts and photos, and you can ask for a purchase order number at the same time. The payer issues the purchase order from the job; you can add your own invoice number when you send the job back, and again once the purchase order arrives, so their accounts department can match one document to the other. Nothing here moves money — the figures are recorded so both sides are looking at the same ones.
- IMPROVEDYou are told when a job is offered to you, answered, sent back, given a purchase order number or taken back again, and those alerts have their own switch: Settings → Notifications → Subcontracted Work (Push).
🔳 QR codes you can switch off
- IMPROVEDEvery QR code now has an off switch. Site Info carries “These QR codes are active” for the whole location, and one switch each for “Accept tenant requests”, “Accept vendor check-in” and “Show the vendor log” — on the phone and on the dashboard, each sitting inside the box it disarms. A switch writes the moment you flip it, because a code gets turned off when something is going wrong right now, and it tells you if the write did not land rather than reading OFF on screen while the code carries on answering scans.
- IMPROVEDOff means off. The server refuses a tenant request or a vendor check-in on a switched-off code even for somebody who kept the link, and every unit tag printed for that building follows the building’s switches, so turning a building off cannot leave a tag on one door still accepting. A location with no code printed yet shows the switches greyed out and says why.
📸 Photos and the app closing
- IMPROVEDAdding equipment with a photo no longer closes the app. On Android the phone was reclaiming the app while the camera was in front of it, so it came back to the home screen with the unit unsaved. Nothing about it was ever recorded as a crash, which is why it was hard to find. The app now holds far less memory while a camera is open.
- IMPROVEDIf it ever does happen, your work comes back. What you had typed, and the photo you took, are restored the next time you open the form instead of being lost.
- IMPROVEDPhotos you take and then abandon no longer pile up. Captures left behind by a form you backed out of are cleared automatically after two days.
- IMPROVEDPhoto previews stopped decoding at full camera size. A twelve-megapixel photo was being expanded in full to fill a thumbnail the size of a postage stamp.
- IMPROVEDPhotos taken on a work order and attached as you completed it could stay on the phone for ever, never reaching the cloud and never appearing on another device. The app queued them under a record it had just moved into the service log, then re-uploaded the same photo on every sync without it ever landing anywhere. A photo whose upload was interrupted — the phone into a pocket the second you pressed Complete, a restore running, cloud backup switched off and on — was lost just as silently, and on a teammate's phone a failed upload was never retried at all. Every photo now waits its turn like every other record, follows the job into its service log, and the ones already stranded are swept up once and sent.
⏰ Reminders your phone owns
- IMPROVEDMaintenance reminders are scheduled by your phone, not by a server. They arrive at 8am on YOUR clock — a technician in California was previously notified at 5am, because the reminder fired on Michigan time for everybody — and they work with no signal.
- IMPROVEDEvery reminder can now be set on its own. Settings → Notifications → Set each reminder individually lists every PM and every replacement date separately, each with its own days of warning, its own time of day, and its own on/off switch. A PM can warn you the morning it is due while a belt you need time to order warns you two weeks out. Anything you do not touch keeps following your general setting, and one tap puts it back.
- IMPROVEDYou can still set the general default for everything at once. Settings → Notifications has Maintenance Reminders at the top: the hour, the minutes, how many days ahead of a replacement date to warn you, and how many days ahead of a scheduled PM.
- IMPROVEDOn Android 13 and earlier the reminders are set as exact alarms and arrive at the minute you picked. On Android 14 and later the phone only permits that once you switch on Alarms & reminders for Equipment Tracker under Settings → Special app access — and the app does not ask for it yet — so until you do, a reminder can land a few minutes late, and later still in battery saver.
- IMPROVEDThe seven-day window itself was being worked out on Michigan time. Anything due on the edge of that window could be missed entirely for anyone outside US Eastern.
- IMPROVEDAnd you stopped getting each one twice. With your phone scheduling the reminders, the server was still sending its own copy of the same thing, at its own hour. It now only sends reminders for work assigned to somebody else, which is the one case a phone cannot cover.
- IMPROVEDNotifications could be switched on and still never arrive. If the phone granted permission but the registration with the notification service failed — a weak connection, a Google Play services fault — nothing said so: every switch in Settings read ON and no dispatch, transfer or tenant alert ever came. Twenty-six accounts were in that state. Settings now checks that the phone actually holds a token the server can send to, says plainly when it does not, and offers TRY AGAIN rather than sending you to the phone's own settings screen, where there is nothing to change.
🔩 Spare parts
- IMPROVEDA spare part you create starts with one in stock, not zero. Six different paths could save a new spare and they disagreed with each other, so the number you got depended on which button you pressed.
- IMPROVEDA spare that replaces an installed part no longer claims to replace the whole unit. The profile was showing a whole-unit compatibility that was never actually recorded.
- IMPROVEDScanning a spare for specs works in the background. A spare entered from a building used to pin you to the screen until the scan finished, and threw the result away if you left.
- IMPROVEDScan the QR label on a spare pump or motor kept in stock and the page now says what it replaces. It used to be headed “General Spare Parts Stock”, which led nowhere, and it never named the units the spare fits — even though your part profile did. There is a REPLACES block now, with each unit as a link.
- IMPROVEDTwo spare profiles with the same part number no longer collapse into one card. Creating a second motor with SEPARATE PROFILE showed one card reading 3, and renaming one changed nothing on it. Each profile is its own card now, on the phone and on the dashboard, and each card counts its own stock rather than whichever matching row came first.
- IMPROVEDDeleting a part no longer leaves a dead link on the spares that were linked to it. The reference is cleared in the same step the part is removed.
- IMPROVEDA spare could be filed against a unit instead of against the location’s spare stock, and that made it a different kind of record: no LINKS card, no + LINK, no AUTO-SEARCH, and it showed up as an installed part of the very unit it was a spare for. Three paths did it — the new-part screen when it could not name a location, a shared unit accepted on the dashboard, and a part received from a dispatched work order. All three now file a spare under the location’s general stock with the unit kept as a compatible link, and the new-part screen refuses to save a spare it cannot place at a location rather than filing it somewhere it will not be found.
- IMPROVEDUnlinking a spare from an installed part and then linking it again could lose the second step the next time the app started. The unlink reached the cloud late, carrying a copy of the record taken before the relink, and the phone then pulled that copy back over its own. Both now go to the cloud straight after the local save, and the relink reads the stored record instead of the stale copy on screen.
- IMPROVEDLogging a service visit from the dashboard's equipment page now takes the parts off the shelf. It already drew down refrigerant, but PARTS USED was a free-text box that touched nothing — so a filter change logged on the phone dropped the count and the same change logged on the dashboard did not, and the two never agreed again. The equipment page has the same spare-parts picker the work-order completion uses.
- IMPROVEDA nameplate scan on a part raised a conflict card for values that agreed. The part screen compared readings with a stricter rule than the equipment screen, so 28 against 28.0, or 208 against 208V, produced a red OVERWRITE / KEEP MANUAL card that came back on every open until you answered it — and R-410A against R410A did the same on equipment. Both screens use one rule now, which can only ever turn a disagreement into an agreement; a cogged AX32 and a plain A32 still differ. And a field reading UNKNOWN no longer argues with the figure you just paid a scan to read — the reading goes in.
- IMPROVEDSharing stock with another user has never sent the spare parts. Filters, belts and refrigerant travelled, because they are inventory rows; the spare-part profiles that give them a home on the recipient's Spare Parts tab never did, in any share type, since the feature existed — the recipient ended up with the counts and an empty tab. The share is completed on the server now, so it works for anyone still on an older build, and the confirmation lists what was actually sent instead of reporting success on the absence of an error.
- IMPROVEDAccepting the same share a second time doubled every shelf count it touched — a filter at 16 became 32. Your count is now left exactly as it is and the import fills in only what you were missing; a brand-new row is still taken whole.
- IMPROVEDA stock share sent from one dashboard to another arrived with no stock rows at all, and accepting a building share sent from the dashboard overwrote the receiving phone's own contact details and notes for that building with nothing. Both fixed.
📱 The equipment screen, tidied
- IMPROVEDPhotos come first on the equipment screen. The nameplate is what you open a unit to look at, and it sat four sections down behind cards that mostly said “none”. The order is now photos, Installed Parts, MAINTENANCE, AI TOOLS, then the buttons. ADD PHOTO is a tile at the head of the photo strip instead of a button competing with everything else; Service Log, PM Schedules and Work Orders fold behind the MAINTENANCE header, closed by default, with an open work order still showing in red on the closed row; SCAN NAMEPLATE, AI CONDITION SCAN and AI DIAGNOSTICS fold behind AI TOOLS. That leaves FIND MANUALS, QR CODE and COPY DATA on one clean row, and every caption was cut to fit in all six languages rather than only in English. The parts screen gets the same cleanup.
- IMPROVEDQR CODE is its own button on the equipment, parts and tools screens. It was hiding inside Share — which is where you send a record to another technician, not where you make a label to stick on a machine.
🔧 Tools and work orders
- IMPROVEDChecking a tool in no longer erases why it was taken out. Both notes are kept and shown separately on the tool history — Taken and Returned.
- IMPROVEDAttaching a file no longer freezes the app. Picking a backup, a CSV or an invoice copied the whole file on the main thread first, which is what made the app stop responding — worse when the file came from Google Drive.
- IMPROVEDAn invoice over 10MB is refused before it is copied rather than after.
- IMPROVEDSeveral prompts in Inventory and Work Orders did nothing at all on Android. Editing a spares count or a quantity, and four prompts on a work order, now open properly.
- IMPROVEDPutting a tool back that nothing had signed out now leaves a record. The status changed and the history said nothing at all, so a tool moved and there was no trace of it. The return is written to the history and marked as having no matching checkout.
- IMPROVEDA job sent to an outside contractor now carries the unit's installed parts — filter sizes, belt, capacitor rating, part numbers and their photos — so the technician who accepts it knows what to bring instead of working it out on the roof. Only the machine's own photos travelled before. What is fitted travels; how many the sender has on the shelf stays behind, and a part the contractor already holds for that unit is matched rather than added again.
- IMPROVEDA contractor sending a finished job back could type an invoice NUMBER but never send the invoice. Now they can attach a PDF or a photo of their own, or raise one through the app's Invoices, and that document travels with the job — on the phone and on the dashboard. The company that ordered the work opens the invoice itself instead of a reference to paper that never arrived. Only that one kind of file is accepted, from the app's own storage, so nothing else can be written onto another company's record.
- IMPROVEDAn invoice raised from a job on the dashboard in the evening, anywhere in the Americas, was dated tomorrow — it was stamping the UTC calendar date — so an invoice due today could print as already overdue.
- IMPROVEDA finished subcontract could fail to reach the company that ordered it, and the message said to complete it once more — which a finished job cannot do. Three things stood in the way: the phone was posting the completion to a dispatch a re-send had already replaced, the server was refusing every return with the single word INTERNAL, and when either happened there was no second attempt. The completion now goes to the live dispatch, the server accepts it, and a job that is done but never went back shows THIS IS FINISHED BUT NEVER WENT BACK with a SEND IT BACK AGAIN button — on the phone and on the dashboard — that resends the stored completion exactly as first sent. When a send does fail, the alert says what went wrong instead of one word.
- IMPROVEDWhen the company that sent you a job takes it back, the job now says so — a red banner naming who withdrew it — and gives you two ways out: BILL FOR WORK DONE, which opens the normal completion sheet for the hours and parts you had already put in, or DELETE THIS JOB when nothing was started. Before, the withdrawal was a line of grey text most of a screen down, and the only button left, COMPLETE, was refused by the server every time with advice that could never work. A withdrawn job can be billed once and stays withdrawn, and the sender is told which it was. You are also no longer offered SEND TO CONTRACTOR on a job that was sent to you.
- IMPROVEDDeleting a work order on the dashboard was offered to a Viewer, who cannot delete one. The control now follows the phone's rule — owner and manager only — and deleting your copy of a subcontracted job from the dashboard hands it back to the sender instead of leaving it stranded.
- IMPROVEDOverdue means the day has gone by, everywhere. A PM schedule due today was painted red as OVERDUE on some screens and listed as due on others; it is DUE TODAY, in amber, on every screen now, and turns red the day after. Work orders always worked this way.
- IMPROVEDThe building view no longer stamps OVERDUE on a schedule you paused. It was the one PM screen with no PAUSED badge, so a paused schedule sat red with nothing on the card to contradict it, and the header above it counted paused schedules under ACTIVE. Paused schedules carry a PAUSED pill now, and a schedule with no date set is no longer called overdue either.
- IMPROVEDA work order on hold is no longer counted as overdue on the home screen. The badge turned red for a parked job while the Work Orders screen filed that same job under On Hold and showed nothing late.
- IMPROVEDOn iPhone, the keyboard no longer covers the field you are typing into at the foot of a work order or an invoice. Android slides the whole window up; iOS drew the keyboard over the form, so the notes, labour and parts boxes at the end of a long job could sit behind it. Android is unchanged.
- IMPROVEDYou could not put a job on hold unless you had already started it. PUT ON HOLD only appeared on a job in progress, so arriving to find the part missing meant pressing START WORK on a job you had not started, purely to be allowed to say you were waiting. It is offered on any open job now, on the phone and on the dashboard, and the dashboard offers the same reasons the phone does — Waiting on parts, Waiting on approval, Callback scheduled — so a hold made at the desk counts in the phone’s waiting-on-parts number.
- IMPROVEDA job on hold past its due date was painted OVERDUE on the home badge, the work-order cards, the calendar and the dashboard, while the list it opened filed it under On Hold. A held job is parked, not late, and no longer counts as overdue anywhere. The dashboard’s location and equipment pages also stopped painting a paused schedule red, and call it Paused now rather than Inactive.
- IMPROVED“Due this week” now starts tomorrow on both platforms. The dashboard counted from today, so a job due today sat in the due-today chip and in the due-this-week chip beside it, and the two numbers could not be added up. And a PM schedule due today, which was neither overdue nor due this week, appeared nowhere on the dashboard at all — it has its own chip and filter now.
🌍 Language
- IMPROVEDIf you use an iPhone, the app now speaks your language. It read the phone’s language setting in a way the current app framework no longer answers, so every iPhone quietly fell back to English whatever it was set to — six languages had shipped and, as far as the code can tell, not one of them had reached an iPhone. Android phones were never affected.
- IMPROVEDTranslated phrases were losing the space they were written with, in every language — “Encaja:5 filtros” instead of “Encaja: 5 filtros” — wherever a translated label sits beside a number or a list.
- IMPROVEDThe Work Orders badge on the home screen was glued together from fragments (German read “3offen · 1 waiting on parts”), and “Next due:” and “Assigned:” on the PM Schedules screen were English in every language. Both are whole translated sentences now. French and Italian abbreviated a work order one way on the home screen and another way on the screen it opened, German’s abbreviation read as a heat pump, and a long PM badge ran off the edge of the card in French and Italian. All fixed.
- IMPROVEDThe WORKFLOW subtitle on the home screen was being cut off — in English, and for far longer in Spanish, French and Italian. It now reads “Work orders, invoices, PMs, calendar & team” and fits in every language. French “DUE TODAY” said the day but not the state; it is “DÛ AUJOURD’HUI” now.
- IMPROVEDThe dashboard’s vendor log management page was in English whatever language you set — every word of it, including the delete confirmation. Its sister page had been translated for months.
- IMPROVEDThe warning shown before you transfer a location to somebody else was English in every language — and nothing could report it. An apostrophe in “the location’s” was being read as an opening quote and cutting the sentence in half before it ever reached a translator.
- IMPROVEDMessages like “Saving the tenant notification list did not answer in time” were English on every phone. The sentence was assembled at the moment of failure, so it was in no catalogue and could not be.
- IMPROVEDFifty-one more strings translated, including every refusal shown to a Viewer and the report preview’s own headings.
- IMPROVEDAn invoice said how much and never what it meant. On a phone not set to English the overdue total, the word under each balance — outstanding, settled, overpaid by — the due date, the line types and the payment methods were all still English. The overdue total could not have been translated at all as it was written, because five of the six languages put the amount in front of the word.
- IMPROVEDDates and times on the PDF your customer receives follow your language instead of American English. So do the times, the day headings and the on-site durations on the vendor log.
- IMPROVEDThe reports you hand to a customer are translated. Every report type shared one title block and footer that were always English, whatever language you use the app in.
- IMPROVEDThe Wear-and-Tear Guide a landlord hands a tenant printed in English whatever language you use, though every line of it had been translated months earlier — the preview on the phone looked the translations up and the PDF never did. Its body and its title follow your language now, as do the subtitle, the footer and the share dialog on every landlord document, and the heading on the other four.
- IMPROVEDThe fire damper inspection record is translated, including the certification paragraph an inspector signs and the thirty column headings of the CSV export.
- IMPROVEDNotifications speak your language. Twenty-two scan notifications, and the reminders themselves, were being delivered in English to everyone.
- IMPROVEDPush notifications from the server are sent in the language of the account that receives them. Tenant-request emails and texts follow the building owner's language.
- IMPROVEDThe pages a QR code opens were brought up to date across all seven languages.
- IMPROVEDThe signed-in dashboard is translated. Until 21 August it was English in every language — equipment, buildings, inventory, invoices, work orders, teams, the account page and the login errors — so a Spanish reader could be sold to in Spanish on the homepage and then handed an English product behind the login. Every page behind the login follows your browser language now, and the Account page carries a language picker beside Units for anybody working on a machine set to English. Your phone has its own language setting, and changing one does not change the other.
- IMPROVEDInvoicing, billing on jobs, the per-invoice labour rate, the diagnostics list and the crash log were English on every phone set to Spanish, European Spanish, German, French, Italian or Brazilian Portuguese — 956 strings, about one in five of the app, most of them shipped on 20 August. All six catalogues are complete again, and a check now refuses a build that leaves a language behind.
- IMPROVEDThe delete confirmation read half in English and half in your language. Sentences that were assembled from pieces — that one, the overpayment warning, the auto-link result, the Viewer refusal — are translated whole now.
- IMPROVEDA printed invoice says which currency it is in. A bare dollar sign is the peso sign in Mexico and reads as R$ in Brazil, so a Spanish FACTURA for a job priced in US dollars understated it roughly twentyfold; every invoice now carries a line naming the money it is in — All amounts are in USD, for a dollar job. VOID — NOT PAYABLE was English in every language and is translated. Brazilian Portuguese called every invoice a nota fiscal, a tax document this app cannot issue; it says fatura.
- IMPROVEDThe countdown shown after each free AI scan — the pitch you read while you are deciding whether to pay — was English in every language, and so were the backup, restore, export and database-failure messages beside it: ninety strings in all, across seventeen modules the string extractor had never been able to see. Translated.
🏁 The first run
- IMPROVEDThe walkthrough no longer opens underneath the backup reminder. The two arrive from separate checks that race, and the reminder could land on top of a tour that cannot be dismissed until it finishes. The reminder waits now, and appears on its own once the tour closes.
- IMPROVEDCHOOSE BACKUP FOLDER no longer refuses the folder it just asked for. Arriving from the SET UP LOCAL BACKUP button on that backup reminder, the switch above it was still off, so picking a folder answered that local backup was disabled in Settings and left the folder linked to nothing. Picking the folder is what turns it on.
- IMPROVEDThe walkthrough scrolls to the section it is describing. Since one home section opens at a time, closing the previous one moved the target up the page after the scroll had already been aimed, so steps 2 to 5 sailed past and left the ringed heading cut off above the screen — worst on the very first launch, when the home screen is slowest to lay out. The tour waits for the page to stop moving before it aims now, and corrects itself if a late layout moves the target.
🖥️ Dashboard
- IMPROVEDSubcontracting works from the dashboard too: the same SUBCONTRACT block on a work order, an OFFERS tab on the Inbox that accepts, declines and sends finished work back, a sent-to-contractor pill on the work-order cards, and a contractor box that remembers who you have sent to before. A work order now opens as a full page instead of a narrow rail down the side.
- IMPROVEDA PM schedule you had paused was still shown as overdue on its card in the PM list. The glance badges stopped counting paused schedules in the 16 August round; the list itself was the copy nobody had counted. It reads the same rule as everything else now, and the overdue and due-this-week counters beside each other no longer both include today, so the two numbers can be added up.
- IMPROVEDOpening a unit showed an error page instead of the unit — “Cannot read properties of null” — from the 20 August release until it was fixed on 21 August. Two copies of React had ended up in one bundle; there is one now.
- IMPROVEDThe service log on a unit and on a building could put the oldest entry at the top. Service dates are stored in two formats and four of the sorts compared them as plain text, so a single 2026-08-10 row sat above every 08/21/2026 row however old it was. Every sort reads the date before comparing it now.
- IMPROVEDSCAN NAMEPLATE on the dashboard only offered a file dialog, so the photo somebody had already taken in the plant room and attached to that very record could not be scanned from a laptop. The panel now offers the unit’s own photos as tickable thumbnails, with the file picker still underneath for a photo that only exists on the computer, and a scan is refused before it is charged if none of the chosen photos can be fetched back.
- IMPROVEDRaise a work order from a location’s Work Orders tab, or from the unit itself, with the location and the unit already filled in. Before, both could only send you to the hub, where you re-picked the location you had just been looking at. The form asks for the location, then the unit, then the title — the order you think about it in.
- IMPROVEDThe calendar button in every date box was drawn black on a dark background, so it looked as if there was no picker; it is visible now. Nine colours the pages asked for had never been defined, so the Reports tables, the Tools cards and the work-order part picker were rendering without them, and a late work order’s date on a location page was grey instead of red. A location that exists only because stock is held there is offered on the work-order page, the TENANTS tab on the Inbox is styled like the others, and an Inbox link pointing at a specific tab lands on it.
🛠️ Everything else
- IMPROVEDUpdates now install while the app is opening, instead of needing a second launch. It waits up to ten seconds and then opens on what you already have, so a bad signal never leaves you staring at a splash screen.
- IMPROVEDA Viewer no longer sees invoices. The 20 August entry said a read-only Viewer could see them without writing them. A Viewer seat is for a trainee, and a trainee has no business in the shop rate; the property owners, tenants and vendors who need to see paperwork are served by the public pages, with no seat at all. Invoicing is the owner and the managers alone now, viewing included: the INVOICES item in the Workflow bar, the Invoices tile on the home screen and the invoice list itself are all hidden from a Viewer. And the account owner is no longer told “Not part of your access” on the invoice list for the first moments of a cold open while the app is still working out the role — it says it is checking.
- IMPROVEDThe AI TOOLS fold on a unit or part profile can be seen. It was a dark card with a faint chevron on a near-black page; it now has a green SHOW / HIDE chip and a lifted, green-bordered card, the same on both screens.
- IMPROVEDThe Inbox is on the home screen now, first under WORKFLOW, with a count of everything waiting on you. Tenant requests, guest service reports and transfers were three taps deep behind the Settings gear, filed as account business rather than as work somebody is waiting for — and a tenant request raised no count anywhere until you opened the inbox and saw it. The Settings entry is gone. The dashboard page is called Inbox as well, instead of Dispatch Center; its web address has not changed, so the links in emails you have already received still work.
- IMPROVEDExport CSV Data on the Inventory screen never exported your stock. Its eleven columns were equipment fields; the quantity was read and thrown away, so the file had no counts in it. It is gone, replaced by Export Stock — every shelf row with its quantity, size and storage location — and Export Equipment, a 38-column file the import wizard accepts. The dashboard has the same two buttons and produces the same files; it could not export a file at all before. Both are Pro, as the old button was.
- IMPROVEDThe fire damper CSV opened in Excel with a garbled Location column — the dot between building and unit. The file now carries the marker Excel needs, so accents and symbols survive.
- IMPROVEDA finished work order on the dashboard now has a CREATE INVOICE button on it, and a PM schedule that has had a visit has an Invoice button on its row — the doorways the phone has always had. The dashboard could raise the invoice only from the Invoices page, by finding the job again in a list.
- IMPROVEDAn ACH trace number typed into the dashboard when recording a payment was thrown away — the Reference box only appeared for check and card, and the save nulled the value. It is kept now, as the phone has always kept it.
- IMPROVEDA voided invoice printed from the dashboard was headed INVOICE, and every heading on a printed invoice was English whatever language the dashboard was set to. It prints VOID — NOT PAYABLE, as the phone does, in your language.
- IMPROVEDWhen your subscription check cannot get an answer, the dashboard now takes you to the plan page after eight seconds instead of holding you on “Still checking your subscription…” with nothing to press. If the answer arrives inside those eight seconds you go straight through. Nothing decides you are not a subscriber on silence.
- IMPROVEDAfter every website update, the dashboard pages could keep serving the previous build for up to an hour, so a fix that had already gone out looked unfixed and a hard refresh changed nothing. They are no longer cached.
- IMPROVEDLogging a Fire Damper Test from the dashboard's equipment page saved a record with none of the 23 NFPA 80/105 values the phone records, and the Reports page then printed that damper as FAILED, in red, directly above the inspector's certification that every result was accurately recorded. The dashboard has the full damper form now — fusible link and panel signal shown only for the damper types that have them — and a record with no test data prints NO TEST DATA rather than a failure. A damper that genuinely failed still prints as failed.
- IMPROVEDChanging anything on a dashboard job assigned to somebody without an account — a subcontractor, an outside tech — deleted them. The edit drawer only knew assignees by account, so a name-only assignee arrived blank and the save read blank as unassigned; editing the due date on a job assigned to Dave removed Dave, silently. The dashboard now has the phone’s “Someone else…” choice and keeps the name.
- IMPROVEDWho called a job in — the REQUESTED BY that the Dispatch inbox stamps on a tenant or guest report, which the phone shows and edits — never appeared on the dashboard. It does now.
- IMPROVEDThe refrigerant leak rate on a service log was not annual. 40 CFR 84.106 triggers on an annualised rate — pounds added over the full charge, scaled by 365 over the days since the last charge — and the phone was leaving the time term out, so the figure beside Annual Leak Rate could only ever read lower than the real one. Five pounds into a fifty-pound commercial rack 180 days after the last charge showed 10.0%, safely inside the 20% limit; the true annualised rate is 20.3%, over the trigger with a repair clock already running. The phone, the maintenance record and the website's EPA calculator now share one calculation, and with no last-charge date on the record the figure drops the word Annual and asks for the date instead. If you logged a charge in the last year and read the rate off the phone, look at it again.
- IMPROVEDSigning in on a phone that already held somebody else's workspace could wipe that phone's database without asking. Two checks that run at start-up compared the account that had just signed in with the workspace on disk and, on any difference, deleted the local database and rebuilt it from the new account's cloud — no prompt, no progress, no undo — even though the sign-out dialog promises that your local data will remain on this device. It now asks first whenever the phone holds records that would be lost, reconciles silently only when there is nothing to lose, and an interrupted switch leaves a note saying what happened instead of nothing.
- IMPROVEDThe Contact screen says that anything at all is welcome and which channel is quickest: the form and support@equipment-tracker.com are one inbox and the fastest way to an answer, and Instagram and LinkedIn join Facebook, TikTok and YouTube as the slower route. It no longer promises we will be in touch shortly, because nothing behind it could be held to that.
- IMPROVEDOne home section open at a time. Opening LOOK UP, CREATE, WORKFLOW or any other section closes the one that was open, and the app remembers which one you left open, so that is the one you land on at the next launch. A phone that had three sections open finds the first of them open and the rest closed. The home screen is a launcher, not a comparison screen — a second open section was only extra scrolling between you and the thing you came for.
- IMPROVEDThe Team plan card on the paywall no longer promises the whole of Pro to every member. A Viewer writes nothing and a Tech cannot touch an invoice, so it now says what the website already said: every member gets their own login, cloud sync and the dashboard, and what each person may do is set by their role.
- IMPROVEDCreating an account shows, and links, the Terms of Service and the Privacy Policy, on the phone and on the dashboard. Neither screen did before, while both created accounts. The public QR page and the vendor check-in page now carry the privacy notice the tenant page already had — both take details from people who never installed the app.
- IMPROVEDA Viewer can no longer scan a nameplate, run the invoice scanner, start an AI diagnostics conversation or create a work order. Those four had no role check while the buttons either side of them did, so a read-only seat could spend a free AI scan and write specs onto a unit it is only meant to read, and a work order raised that way would have been refused by the cloud and left stranded on one phone. Every refusal now says whether it is because you are a Viewer or because the app is still working out your role, instead of calling an owner a Viewer while the check runs.
- IMPROVEDThe WORKFLOW header shows what is on your plate while it is closed. Beside the chevron: how many work orders are open, as N WO, and how many PM schedules are overdue or due today, as N PM. Red means something of that kind has gone past its date, amber means something is due today. The description line underneath stays where it was — the counts sit in their own slot rather than on top of it — and neither figure appears when nothing is open and nothing is due. Inside the section, the Work Orders row keeps its open pill and PM Schedules has a badge of its own now.
- IMPROVEDSettings now tells you when this phone cannot be notified at all. A tenant request could save correctly and the alert could be sent, and nobody was told, because the phone had never been granted notification permission — while every switch under Settings → Notifications still read ON. Those switches are preferences, not delivery. A red “Notifications are off” panel now sits at the top of Settings, saying that this phone cannot be told about a tenant report, a vendor check-in or an assigned job, with a TURN ON NOTIFICATIONS button.
- IMPROVEDThe language picker was hidden from every account but the owner’s. Language is the first thing in Settings now, for everybody; a fresh install still follows the phone.
- IMPROVEDAdding a unit to the location you were already in did not offer it on the tenant tag picker until you backed out and came back. It appears at once now. And a location saved with a trailing space could hide its own units from every list — closed before anybody hit it.
- IMPROVEDThe dashboard's Team tab is always in the navigation and accepts an invite code, as the phone always has. It was hidden from anybody not already on a team, and typing /team sent an invited technician to the paywall, so the person holding a six-character code from their boss had nowhere to enter it.
- IMPROVEDA nameplate scan that contradicts what you typed asks which to keep. It used to keep your value and throw the reading away without saying so, so if you typed a voltage from memory and then photographed a plate that disagreed, you never found out.
- IMPROVEDThe first minute of a new install promised free scans it then refused, hid the way past sign-in, and nagged about backing up nothing. The walkthrough now says the ten free scans come with an account, which is true; USE IT WITHOUT AN ACCOUNT is a full-width button under the sign-in screen's heading, saying what a guest gives up, instead of grey text below the bottom of the screen; and the reminder to set up a backup waits until there is something to back up.
- IMPROVEDA brand-new install opens on CREATE. It opened on LOOK UP, where every button searches records a new install does not have yet — and anyone who finished the welcome tour then landed on WORKFLOW on every launch afterwards, because the tour saved each section it walked through as though you had picked it. Being shown a section no longer counts as choosing it.
- IMPROVEDThe dashboard shows a tool’s checkout history. It has been recording it for as long as tools have existed and never displayed it anywhere except the public page you hand to a customer — there is a History button on each tool card now.
- IMPROVEDReturning a tool from the dashboard no longer erases the note saying why it was taken out, and a return with nothing signed out is recorded instead of quietly changing the status and leaving no trace.
- IMPROVEDVendor check-in emails show the time in the building owner’s timezone. They were stamped in Central time no matter where the building was.
- IMPROVEDAccess to contact-form uploads and account data was tightened. The screenshots people attach to a support message were readable by anyone who could name the file; any signed-in account could list every telephone number in the product, including the tenants and vendors on customer notification lists; and the pages behind a vendor door sign could be listed to walk off with every customer contact. All three are shut, and the last one was checked against the live rules rather than assumed.
- IMPROVEDDeleting an account reaches five kinds of record it never touched: the cached AI scan results, the uploaded diagnostic error reports, the record of when the account used the AI features, the shares you had sent to other people, and any building transfer code you generated with the copy of the building behind it. The confirmation no longer claims all associated data is gone, either — it names what deletion does not reach, the public QR pages, the check-in sheets and anything you sent to support, and points at equipment-tracker.com/delete-account, which lists them in full.
- IMPROVEDA payment that had already gone through could be charged a second time. Fixed.
- IMPROVEDPressing SAVE on a part profile used to erase the links on it — the save was written from a stale copy of the record, so a link you had just made was gone the next time you opened the profile.
- IMPROVEDSaving a QR label into your photo gallery works again. The move to a newer app framework broke it, and it was caught and fixed before this build went to the stores.
- IMPROVEDCloud Smart Sync no longer reports a location as missing when nothing is missing. It was counting one building twice, because a name typed with a trailing space had quietly created a second copy in the cloud.
- IMPROVEDThe app now reports how long it took to start, and the text of any error it catches, to the service that builds and delivers its updates. Each report carries a random identifier made fresh at every launch and is not linked to your account — Section 2 of the privacy policy describes it.
- IMPROVEDAlso in this round, on the website: the homepage, pricing and contact pages read in Spanish for a Spanish-set browser; typing a tag code into a search engine now lands on equipment-tracker.com/scan, which explains the code formats and what to do when a tag is not one of ours, and a tenant page whose code is not active points there too; /delete-account describes what deleting an account removes and what it does not; /support, the address printed in the App Store listing, reaches the contact page instead of the homepage; and two new demo videos joined the homepage, with every clip re-encoded so the page loads in a fraction of the time.
Read more: QR creator guide Parts & inventory guide Work orders explained
🧾 Invoices
- IMPROVEDINVOICES joins the Workflow bar, and it is free. ORDERS, CALENDAR, PM, TEAM and now INVOICES, with an Invoices tile on the home screen under WORKFLOW. Raising, issuing, printing and recording payment on an invoice carries no PRO chip. What is Pro is the cloud backup of those rows, exactly as it is for a work order — and the dashboard, as the whole dashboard always has been.
- IMPROVEDBill the job you have just finished. Completing a work order offers CREATE INVOICE on the alert that follows, and there is a CREATE INVOICE button on the work order itself. Completing a PM visit offers the same, and offers CREATE A SECOND when that visit has already been billed. Or start one from nothing with the + button at the top of the invoice list.
- IMPROVEDSay who it is addressed to. BILL TO gives you SITE, OWNER, TENANT and TYPE IT IN, and TENANT asks which unit. An address you type prints on that one invoice and is never written back to the location. If the location has no address on file the card says NO ADDRESS ON THIS LOCATION and offers ADD TO SITE INFO or USE ON THIS INVOICE ONLY.
- IMPROVEDYour logo heads the document. The company name, logo and technician details from Settings → Company Profile head every invoice you make, on any plan.
- IMPROVEDPayments, including part payments. RECORD PAYMENT takes an amount, a date and a method — CASH, CHECK, CARD, ACH or OTHER, with a reference for the three that carry one. Pay half and the invoice sits under PART PAID with the balance beside it. The list is grouped OVERDUE, PART PAID, SENT, ISSUED, DRAFT, PAID and VOID, headed by TOTAL OUTSTANDING and how much of that is overdue. Recording a payment is bookkeeping: no card is taken and no money moves through the app.
- IMPROVEDThe balance is never a stored number. There is no paid column to go stale — what is outstanding is worked out from the payments themselves every time it is shown.
- IMPROVEDSales tax is its own line. One rate, set in Settings and overridable on the invoice, applied to the taxable subtotal and printed as its own figure. Money is held in whole cents and the rate in basis points from end to end.
- IMPROVEDAn invoice you have sent never changes underneath the customer. Lines and totals are frozen onto the document when it is issued, so editing the job behind it afterwards cannot restate paperwork somebody is already holding.
- IMPROVEDVOID first, delete after. A live invoice is voided rather than deleted, and the PDF the phone produces for a voided one is headed VOID — NOT PAYABLE rather than INVOICE. DELETE VOIDED INVOICE then removes the record, and the number it used is never given to another invoice: the counter only ever climbs, and the server refuses to lower it for anybody, including you.
- IMPROVEDGetting it to the customer. On the phone, SHARE PDF hands the document to whatever you send things with, and SAVE PDF TO DEVICE writes it to a folder you pick on Android. On the dashboard it is PRINT / SAVE PDF.
- IMPROVEDWhat this invoicing is not. No payment processing and no card capture, no QuickBooks or Xero sync, no recurring billing, no credit notes, and nothing is emailed from inside the app or the dashboard. It is a document you raise, print or share, and record the money against.
- IMPROVEDBilling is done by the owner and by managers. A technician records the hours, parts and materials an invoice is raised from; the Invoices section is not shown to them. A read-only Viewer could see invoices without writing them when this shipped; that was withdrawn the following week — see the 29 August entry.
🧮 Billing Details on Every Job
- IMPROVEDBILLING DETAILS sits on work orders and PM visits. LABOR HOURS, RATE ($ / HOUR), PARTS / MATERIALS COST ($) and PARTS & MATERIALS USED, on the phone and on the dashboard. The section is shut on a job with no figures on it and opens itself on a job that has some, so it is never in the way of a technician who is not billing.
- IMPROVEDA PM visit records money for the first time. Completing a PM wrote four empty columns and produced a blank invoice. The billing section is on the completion sheet now, so a PM you bill arrives with the hours and the parts already on it.
- IMPROVEDCorrect the figures afterwards without reopening the job. EDIT BILLING on a finished work order changes the money and nothing else — the job does not reopen and its completion date does not move. On the phone's PM list the same sheet is behind the $ icon on the row; on the dashboard it is a Billing details window.
💵 A Rate That Belongs to One Invoice
- IMPROVEDLABOR RATE FOR THIS INVOICE ($/HR). Every invoice carries its own labor rate, filled in from DEFAULT LABOR RATE ($ / HOUR) in Settings when the invoice is raised — behind DEFAULTS on the dashboard's Invoices page, which has no Settings screen of its own. Price one job differently and no other invoice moves.
- IMPROVEDChanging it moves the lines that were following it, and only those. A labor line you priced by hand keeps the price you typed, and a line still sitting at the old rate is re-priced. A rate of 0 means this invoice bills labor at nothing and is never quietly swapped back for the shop rate, and a typo in the rate box is refused rather than read as a blank.
- IMPROVEDThe one case it cannot tell apart. A price you typed by hand that happens to equal the invoice's current rate looks exactly like a line that was following the rate, and moves with it.
🤖 AI Diagnostics, Scanning & What They Leave Behind
- IMPROVEDEvery saved diagnosis is listed on the unit. AI DIAGNOSTICS HISTORY on the equipment profile shows the three most recent sessions with VIEW ALL behind them, and the full list holds every session on that unit, newest first, with no age limit. Tap one to pick the conversation back up, or delete a single session behind a confirm that names it. These records stay on the phone: they are not pushed to the cloud and they do not appear on the dashboard.
- IMPROVEDDiagnostics answers the question it was asked. Asking a unit how many BTU of cooling it has returned a 460V lockout warning, a demand for symptoms and "Summary of Diagnosis: Awaiting initial symptom reporting" — for a question that was never a fault report. A diagnosis summary now appears only when there is a diagnosis, and safety warnings attach to the step that needs them rather than to every sentence.
- IMPROVEDA condition scan is a record on the unit now. The assessment used to live only on the screen that produced it, so walking away destroyed something your account had already been charged a free scan for. AI CONDITION SCAN HISTORY sits on the profile, newest first, tap to reopen, delete a row at a time. Like the diagnostics sessions, it stays on the device.
- IMPROVEDThe dashboard scans a nameplate. SCAN NAMEPLATE is on the equipment page now, through the same AI, the same free-scan count and the same fill-and-agree rules as the phone. A scan you walk away from — switching tabs, or pressing browser Back — used to be charged for and then thrown away, and the answer is now waiting when you come back. AI scanning needs a connection, on either platform.
🔩 Parts & the Screens Around Them
- IMPROVEDInstalled Parts, not Install Parts. The screen that lists the filters, belts and motors already fitted to a unit was labelled as an instruction to go and fit some. It reads Installed Parts on every surface that names it now — the profile card, the screen itself, both dashboard tabs, both PM completion pickers and the invoice scanner. Links you have bookmarked still work.
- IMPROVEDBelt and filter sizes lead the parts form and have left the equipment profile. A size typed on an equipment record was a loose string that matched no stock; a size on an installed part is what stock matching and per-size spare counts key off. The two fields now sit directly under the part name on the installed-part form, with the other fourteen specs behind one NAMEPLATE SPECS group. Nothing stored was touched — anything already on a unit shows in a read-only SIZES STORED ON THIS UNIT panel with its live stock, an ADD AS AN INSTALLED PART button and a confirmed clear.
- IMPROVEDA scan you start on a new part keeps running when you walk away. ADD REPLACEMENT PART trapped you behind a full-screen scanning message with no close button, and it swallowed the Android back button. That screen is ordinary now — and saving the part while a scan was running no longer wipes the QR code, customer number, storage location and count you had already typed.
🛡️ When the App Closes on You
- IMPROVEDCrash Log, in Settings under Contact Us. If the app closes unexpectedly the reason is written down before it goes. Settings → Contact Us / Support → Crash Log lists what happened, with COPY and SHARE on each record and CLEAR CRASH LOG at the bottom. It stays on your phone unless you choose to share it — nothing is uploaded and nothing syncs.
Read more: AI scanning guide Parts & inventory guide
🏢 Buildings Are Now Locations
- IMPROVEDThe Buildings tab and the screens around it now read "Location". Some addresses are complexes rather than single buildings, and the stats bar had said LOCATIONS for months while the tab beside it said Buildings. The tab, Add Location, the PM and work-order filters, table headers, the delete and transfer dialogs, that tab's empty states, and the QR and vendor copy all moved together. Screens further out still say BUILDINGS — the Inventory screen's empty state, and the spare-parts screen's search for spares in other buildings — and are still to do.
- IMPROVEDYour data is untouched. Nothing was renamed inside a record, and every QR sticker already screwed to a unit keeps working.
- IMPROVEDDASHBOARD gets you out of the PM list again. Pressing "PM due this week" in the glance strip put the PM list on screen without changing the address bar, so pressing DASHBOARD navigated to the page already showing and nothing happened — the only way out was leaving the page entirely. A type or manufacturer filter did the same thing, and because filters are remembered between sessions, a filter left set could trap a cold load before you had touched anything.
🌍 Metric Units (app + dashboard)
- IMPROVEDChoose Metric or Imperial in Settings, beside Language. Refrigerant and stock weight, pressure, airflow, capacity and temperature read in the units you work in, on the phone and on the dashboard.
- IMPROVEDWhat is stored never changes. Values are held in pounds and US units and converted only on the way to and from the screen, so switching back and forth can never shift or lose a number you typed.
- IMPROVEDSizes stay exactly as printed. Filter sizes, belt codes, capacitor microfarads, voltage and phase do not convert — "20x25x1" is a product you can order, 508x635x25mm is a filter nobody stocks, and converting it would break inventory matching and per-size spare counts.
- IMPROVEDOn metric the EPA leak-repair checks are hidden rather than relabelled — the verdict, the header badge and the warning icon all go. Those thresholds are United States federal law, and restating "15 lbs" as "6.8 kg" would assert an obligation a technician in Ontario or Munich does not have. A note explains the absence and points at the EU F-Gas rules instead. The public EPA calculator on this website stays in pounds for the same reason.
🚪 Tenants, Units & Their Tags
- IMPROVEDTenant alert numbers really save on a location somebody shared or transferred to you (app + dashboard). The chip appeared beside the field and nothing was written — on the phone and on the dashboard both — so when a resident scanned the door tag and reported a leak, nobody was texted. A save that fails now takes the chips back off the screen and says so, instead of leaving them looking saved.
- IMPROVEDOne location's tenant recipients no longer show up under another. If a location's check-in record could not be read, the list from the site you had open before it stayed on screen — another property's residents listed under this one.
- IMPROVEDThe tenant alert list is Pro on the phone, as it always was on the dashboard. A free or lapsed account could type recipients into it, watch them save, and wear a PRO chip beside the field it had just accepted. Nothing was ever mis-delivered, because a resident's submission has been Pro-gated throughout — but the phone was selling and then accepting a paid feature it should have refused.
- IMPROVEDVendor Check-In works after you rotate a check-in code. A unit's public page carried a copy of the old code and was trusted whenever it was present, so the one case never checked was the case where the copy was wrong. A vendor standing at the equipment pressed Vendor Check-In and landed on a dead page until somebody happened to republish that unit.
🔗 What You File on the Dashboard Reaches the Sticker
- IMPROVEDA service log added on the web now shows up on the scan. Adding, editing or deleting a service log on the dashboard wrote the record and stopped there, so a vendor scanning that unit's tag was correctly told there was nothing newer to bring in. Five more dashboard paths did the same — completing a PM, completing a work order, a work-order progress note, an EPA compliance log, and an import.
- IMPROVEDA refresh no longer half-lands for your team. The refresh read the importable half of a published page in a way the server only ever allowed the account holder, so on a manager's or a tech's screen the page updated and the importable half quietly did not — and that stale half then overrode the fresh page on the next scan.
- IMPROVEDThe page is rebuilt, not appended to. An edited service log could sit on a public page twice, and a deleted one could never leave it.
- IMPROVEDA service log you deleted stays deleted. Removing a log wrote nothing to remember the removal, so the next scan of that unit offered it straight back — and again after every delete after that.
- IMPROVEDDeleting a log on one unit leaves every other unit alone. Two rooftops getting the same quarterly PM on the same day from the same tech produce word-for-word identical entries; deleting one used to block the other unit's copy from ever being brought in again, on any device, with nothing on screen to say why.
- IMPROVEDScanning a unit you already have opens it from Browse too. The home screen has recognised that case since 11 August; scanning the same sticker from Browse still reported it missing and offered to import a second copy of a unit already owned.
- IMPROVEDAn approved guest visit shows who did it. Three approval paths wrote the entry onto the public page without the technician or the company, so the visit appeared on the label with both blank.
🗓️ PM Schedules
- IMPROVEDA monthly PM completed at month end comes due next month. Completing one on the 29th, 30th or 31st skipped the following month entirely — Jan 31 became Mar 3, Aug 31 became Oct 1 — and drifted further every cycle. On a filter change or a safety inspection that is a whole visit missed. The dashboard already had this right.
- IMPROVEDPausing a PM stops it counting against you. A paused schedule went on being counted as overdue in the glance badges, which is exactly what pausing it was meant to stop, and a one-time PM counted as overdue for ever once it was finished.
- IMPROVEDA one-time PM keeps the date it was planned for, whichever device finishes it. The phone was overwriting the planned date with the day the work happened to get done, the dashboard was keeping it, and whichever synced last won.
- IMPROVEDDeleting a unit clears its PMs and work orders everywhere. The phone removed them from that device only, so the dashboard went on counting a deleted unit's PM in its overdue badge with nothing behind it to open.
🔒 Site Transfer
- IMPROVEDHanding away a location is Pro on the dashboard too. The phone has always charged for it; the web gave it away — every unit, every log, and the routing behind every QR sticker on the site. Calling a code back stays free on both, deliberately: a lapsed subscription must never leave you holding a live code you cannot revoke.
- IMPROVEDInvalidate Code is on the dashboard now. There was no such button on the web at all, so a code generated at your desk had to be revoked from a phone — and until it was, every unit in that location read as mid-transfer indefinitely, because an expired code does not clear that flag.
- IMPROVEDA transfer belongs to the workspace owner. The dashboard let a manager mint a code the server would then refuse; it now says so up front, the way the app does.
- IMPROVEDA handed-over sticker serves the new owner's history. A published unit is two records and only one of them changed hands, so after a handover the copy left with the sender overrode the fresh page and a scan returned the service history from before the transfer.
🔩 Spare Counts & Stock
- IMPROVEDPounds of refrigerant are not spare parts. A compressor advertised 78 spares; there were none, there were 78 pounds of R-410A. The refusal that exists for exactly this sat below the branch that answered first, so it had never run.
- IMPROVEDThe location page shows the count the phone shows. The dashboard was printing the old stored number instead of counting the stock actually on the shelf, so the same part could read 47 on the web and something else in your hand.
- IMPROVEDA substitute belt is named as one, on both platforms. Five A32 on the shelf against an AX32 on the drive now says they are a substitute and shows what they are, instead of being folded into a plain number you would read as a match.
- IMPROVEDAn import cannot overwrite a shelf count you already keep. A shelf you already stock in a shared location collided with the incoming one by construction, and the sender's quantity was written over yours with nothing on screen to say so. Yours stands now, and the import fills only the fields you are missing.
- IMPROVEDCancelling a duplicate spare really cancels it. The shelf row was written before the duplicate question was asked, so pressing Cancel left behind the row you had just declined — and "add to the existing count" both topped up the existing stock and kept a second row.
- IMPROVEDUnlinking a part from stock sticks for anything created on the dashboard. The unlink was remembered under a name that could not be taken apart again when either side's id contained an underscore, which every dashboard-created id does.
- IMPROVEDCreating an inventory item from a part is the same act as creating any other. The location page and the Inventory page each carried their own copy of that code and both got the same three things wrong.
🏷️ Printed Tags & Signs
- IMPROVEDThe vendor door sign prints on one sheet again. It was laying out a third too large for the page, so it came out clipped on the right and spilled onto a second sheet unless the print dialog happened to shrink it.
- IMPROVEDA tool tag printed from the phone shows "Last Inspected". The phone and the dashboard each wrote a tool's public page from their own hand-typed list of fields and the two had drifted apart. Tool history also stops changing order depending on which one published it last.
⚡ Pro Gates & Free Scans
- IMPROVEDEight more Pro controls stop refusing you while your subscription loads (app + dashboard) — the ones that answer as the screen paints rather than when you press them, so nobody had to tap anything to be turned away. Your vendor and tenant notify lists on Site Info, Push Username and Cloud Backup in Settings, and the same cards on the dashboard. Cloud Backup was the worst of them: "● LOCKED" beside a backup switch reads as a claim your data is not being backed up.
- IMPROVEDA subscriber is no longer congratulated on their free scans. Scanning a nameplate on a cold start greeted paying customers with "8 free scans left — Go Pro", or with a Go Pro button and "the AI has gone on strike", for the feature they pay for every month.
- IMPROVEDRunning out of free scans shows the upgrade screen, not an error. AI Diagnostics and one other flow answered "out of free scans" with "AI Helper Error — your photos are safely saved locally", which reads as the feature being broken and offered no way to subscribe. It also left an empty conversation behind in your database.
- IMPROVEDThe free-scan countdown fires when the AI runs. Scanning an invoice charged the scan at the moment of the scan and said nothing, then announced "8 free scans left" when you tapped SAVE MAINTENANCE LOG — a step that runs no AI at all.
👥 Teams & Roles
- IMPROVEDA Viewer cannot create equipment by scanning. A read-only account on somebody else's workspace could scan an unrecognised code from the home screen and be offered Create New or Link to Existing — putting a unit into the owner's database, or re-pointing an existing unit's tag. Browse has refused that all along; the home screen did not, on two of its four scan outcomes.
- IMPROVEDA tech's photo cleanup stops being refused silently. Tidying duplicate photos on a location page asked for a write only a manager or owner is allowed, so for a tech it was recalculated and refused on every single page load, for ever, with nothing on screen saying so. Nothing was ever lost.
📄 Reports, the Clock & Stability
- IMPROVEDA report includes the first day you asked for. West of Greenwich, work logged on the start date read as the evening before it and fell outside the range — missing lines in a document you print and bill from.
- IMPROVEDThe dashboard's "today" moves at midnight. Left open on an office monitor it kept the date it was opened on, so "Due today" went on listing yesterday's jobs and anything that became overdue overnight was not counted until somebody reloaded the page.
- IMPROVEDA rare crash on startup is closed. The startup health check shared the app's own database connection and could close it out from under work still running on another thread — reported from real devices through the Play Console, and the kind of fault that takes the whole app down rather than showing an error.
Read more: Parts & inventory guide PM scheduling explained Reports guide
🏢 A Building Knows Its Owner and Its Units
- IMPROVEDRecord the building's owner — the person or company that owns the property, kept separate from the site contact a vendor calls and from the tenant in a unit. Three different people, never mixed up, and the owner is never published to a public page.
- IMPROVEDSuites & Tenants lists every unit, including empty ones. A unit is a suite, an apartment or a tenancy; it exists whether or not there is equipment in it, and a vacant one says so rather than disappearing.
- IMPROVEDWho is in it now — name, phone, email and notes per unit. Only an account owner or manager can set a tenant, the same rule the site contact already follows.
- IMPROVEDRenaming a unit moves the machines with it: rename 4B to 402 and the equipment labeled 4B follows. Past work orders keep the unit they were actually done in, because an invoice has to keep matching its own paperwork.
🚪 A Tag for One Door, Not One Building
- IMPROVEDEvery unit can have its own tenant tag. A resident scans the tag inside their own door and the request already knows which unit it came from — nobody types a unit number, and nobody gets a job for 4B labeled 12C.
- IMPROVEDThey are not asked for a phone number or an email. The contact comes from the unit's own record when the request arrives, so the person reporting a broken boiler fills in what is wrong and nothing else.
- IMPROVEDPrint it as a door tag or as a label — a letter-size page, or 4 × 6, 4 × 2 and 2 × 2 label stock, with the unit already printed on it. A label size sets the page size, so a label printer is told 4 × 6 rather than handed a letter sheet.
- IMPROVEDReplacing a tag kills the old one. A card that goes missing can be replaced, and the card in somebody's trash stops working immediately.
📄 What the Tenant Page Says, Per Unit
- IMPROVEDFill the page in once for the building — office name, phone, email and hours, an after-hours number, what counts as an emergency, shutoff locations, fire safety, utilities, trash and parking, notices, and links to documents.
- IMPROVEDThen change only what is different for a unit. The shutoffs are behind the pantry in one apartment and in the hall closet in another. A unit stores only its difference, and a button copies the building's text in so it can be edited instead of retyped.
- IMPROVEDYour own sections too — pool rules, snow removal, the gate code policy, whatever this building needs that nobody thought to put on a form.
- IMPROVEDIf somebody says they smell gas, the form disappears and is replaced by a phone number, because filling in a form is the dangerous act. Leave first, call from outside.
- IMPROVEDThe page reads in the visitor's language, with a switcher at the top.
🧾 Requests That Become Work
- IMPROVEDA Tenant Requests tab sits with the transfer inbox. Turning a request into a work order asks who to assign it to, from your team list, the same as any other work order.
- IMPROVEDA separate notify list for tenant requests, email and text, kept apart from the vendor check-in contacts — and now on the dashboard's Site Info rather than buried inside an edit form.
- IMPROVEDEach number shows whether it has actually registered SMS consent. An unregistered number is accepted and then silently never texted, so the page now says so instead of leaving you to wonder.
🔎 Finding One Unit's Equipment
- IMPROVEDFilter a building's equipment by unit, on the phone and on the dashboard, including a "no unit set" option for the machines nobody has labeled yet.
- IMPROVEDWork orders carry the unit they were done in, and the tab count shows how many are actually open rather than how many have ever existed.
Read more: Equipment management guide
🔧 Parts Used Come Off the Right Shelf
- IMPROVEDA unit that takes two filter sizes now lists each size on its own line, with its own quantity box and its own "deduct from building stock" checkbox — four of one size and eight of another, entered as exactly that.
- IMPROVEDChecking a size draws from that size. Previously a draw could take units off a different shelf entirely and still report success, which is the fault behind counts that drifted for no visible reason.
- IMPROVEDThe number beside a row is the number that row can actually reach. A row can no longer advertise stock a tick cannot move.
- IMPROVEDA cogged belt now shows as a substitute — an A32 row with AX32 belts on the shelf tells you they are there and marks them as the different product they are, instead of showing nothing. It never adds them into the count and never deducts them for you; fitting one is your call.
- IMPROVEDHand-linked stock is counted once. A crate linked by hand to a profile covering several sizes used to appear on two rows at the same time, so the same units could be used twice.
- IMPROVEDGuest work orders submitted from a live QR code carry the same per-size amounts, and deduct on approval rather than being logged as prose.
- IMPROVEDA filter or belt saved with no size now says what that costs — a spare count that can only ever read zero — and lets you save it anyway if the part genuinely has no standard size, like media cut from a roll.
- IMPROVED"Last Replaced" updates itself when a PM or work order records that part being changed, and can never land on the wrong unit. Service dates can be back-dated; they cannot be dated into the future.
🔗 Printed QR Pages Keep Themselves Current
- IMPROVEDA scanned QR page now refreshes itself when it is read. An edit made on the dashboard reaches a printed label without waiting for a phone to republish it — the reason a renamed unit could scan as its old name indefinitely. (Correction, 16 August 2026: this held for equipment field edits and not for service records. Of the eight dashboard paths that write a service record, only three published anything, so a service log added, edited or deleted on the web reached nothing until the fix in the latest entry above.)
- IMPROVEDNothing is written to do it, so a page can never flip back and forth between two versions.
- IMPROVEDYour labour rate, material costs and margin are structurally excluded from what a scanned page can return — the response is built from a fixed list of fields rather than by removing private ones.
- IMPROVEDThe app no longer republishes every QR page each time it launches. On an account with 195 pages that was roughly 585 cloud operations per launch, spent whether or not anything had changed.
- IMPROVEDThe QR scanner accepts your printed tags again. It had been rejecting the large majority of real, correctly-printed labels.
🚪 Tenants Can Request Service
- IMPROVEDA new printable tag for the inside of a tenant's door. Scanning it opens a request form — not a service log — so the person reporting a problem is not asked to file maintenance work.
- IMPROVEDPhotos are allowed, up to three, and they are private: readable only by you and your active team after signing in, never by the public.
- IMPROVEDRequests land in Dispatch for review and never create a work order on their own.
- IMPROVEDA separate notify list for tenant requests, kept apart from your vendor check-in contacts — a vendor should not be told what is broken inside somebody's home.
- IMPROVEDOne request per code per hour, so a tag on a door cannot be used to flood your inbox.
💲 QR Codes: What Is Free
- IMPROVEDText and JSON QR codes are free, on the phone and on the dashboard. Both write the details onto the sticker itself, so there is nothing hosted and nothing to pay for.
- IMPROVEDOnly the live URL code is Pro, because that one prints a pointer and the app has to publish and maintain the page it points at.
- IMPROVEDYour company logo on a QR tag is free on both platforms.
- IMPROVEDPrinting and scanning are free in every mode.
- IMPROVEDReading a live QR page stays open to everyone. Submitting to one — a service log, a service request, a vendor check-in — requires the code's owner to be on Pro, and says so plainly with the building's contact details rather than failing silently.
📷 Photos & Storage
- IMPROVEDDuplicate photos are gone, and so is the cause. A tool photo could be inserted twice, and a deleted duplicate came back on the next sync because the download path bypassed the guard that prevented it.
- IMPROVEDLocal and cloud photo counts agree. They were counting the same pictures two different ways, so the two screens disagreed with each other.
- NEWSmart Sync checks all three places a photo can live — the device, your backup folder and cloud storage — before calling one missing. It previously checked two, so recoverable photos were reported as removable and returned on every sync.
☁️ Sync & Reliability
- IMPROVEDChanges appear on open screens as they arrive, instead of only after navigating away and back.
- IMPROVEDA team member's device stays in sync. Two separate faults could silently stop a member ever receiving the owner's edits, while the health line still read "live".
- IMPROVEDPro survives being offline. Opening the app with no signal could report the subscription as inactive.
- IMPROVEDOne orphaned child record could poison every cloud pull permanently. Fixed at the source as well as cleaned up.
- IMPROVEDSeveral start-up repairs were deleting or merging real records — spare profiles created on purpose, stock with a real count, different physical items combined into one. All of them now act only on facts they can verify.
- IMPROVEDThe app no longer runs a full cloud audit when you open it, and no longer syncs in response to its own uploads.
🔒 Security & Transfers
- IMPROVEDA hole that allowed a building transfer to be claimed by the wrong account is closed, verified against the deployed rules rather than in code review.
- IMPROVEDEverything in a building now travels with it — PM schedules, work orders, work order photos and tool checkout history, alongside the equipment, parts and tools that already did.
- IMPROVEDCreating QR codes is manager-and-above; printing an existing code is open to everyone, including viewers, who previously could not print at all on the dashboard.
🖥️ Dashboard & App
- IMPROVEDThe equipment list is a responsive grid instead of a single narrow column, so a 23-unit building fits on screen instead of showing four.
- IMPROVEDEquipment sorts alphabetically by default, with a sort control on the phone, the Building page and the Dashboard, all agreeing with each other.
- IMPROVEDThe home screen no longer jumps every time you open a section. It only moves if the section you opened runs past the bottom of the screen, and only far enough to bring it into view.
- IMPROVEDPro features stop showing a padlock while your subscription is still loading. Thirty-one buttons were briefly telling paying subscribers they had not paid, on every cold start.
- IMPROVEDThe EPA leak-rate calculator now applies the correct threshold for the refrigerant type, on both platforms, and the published thresholds were corrected against the regulation text.
Read more: QR creator guide Parts & inventory guide Cloud sync guide
🌍 Your Language, Automatically
- IMPROVEDFive new languages — Spanish (Latin America and Spain), French, German, Brazilian Portuguese and Italian. Set your phone to one of them and the app follows; there is nothing to configure.
- IMPROVEDTranslated by a technician's vocabulary, not a dictionary — a fan belt is a drive belt, not clothing; charge is refrigerant charge, not a bill; a unit is a piece of equipment. Refrigerant designations, belt codes, filter sizes, MERV ratings and EPA references stay exactly as printed, in every language.
- IMPROVEDYour reports print in your language too — every heading, column and summary line on a generated report follows the app’s language. Equipment names, service notes and vendor names are your own data and are never touched, and refrigerants, belt codes, filter sizes and measurements stay exactly as printed.
- NEWAI Diagnostics and AI Condition Scan answer in your language — the troubleshooter and the wear assessment write their findings in the language you work in. Model numbers, refrigerants, belt codes and every measurement stay verbatim, because a translated R-410A is no use standing at the unit.
- IMPROVEDNothing changes if you work in English — English devices load no translation at all.
🔩 Inventory Accuracy
- IMPROVEDCogged and plain belts are finally separate — an AX32 is no longer treated as an A32. They keep their own profiles and stock, and a cogged belt now shows as an interchangeable substitute rather than silently merging the two counts. Applies to AX/BX/CX and the 3V/5V/8V families.
- IMPROVEDCogged fractional-horsepower belts are recognized — 4LX and 5LX codes used to match nothing at all and were invisible to your stock.
- IMPROVEDBrand suffixes no longer hide a belt — a Dayton 4L220H is now recognized as the 4L220 it is.
- IMPROVEDHandwritten filter counts are read properly — a scanned list reading "(2) 16x20x2" now records two filters instead of falling out of your inventory entirely.
- IMPROVEDDuplicate spares are caught before you create them — adding a spare that already exists in that building now asks whether to add to the existing count or keep it separate. A spare whose serial number already exists is blocked, because a serial is one physical unit.
- IMPROVEDSpare counts match between phone and dashboard — a filter could read 0 on the phone and a real number on the web.
- IMPROVEDStock no longer reappears for deleted spares — a profile you deleted could come back at startup and have stock created for it again.
🧰 Service Log
- IMPROVED"History" is now "Service Log", with a clearer description of what it does.
- IMPROVEDTabs for Work Orders, PMs and Repairs, so a unit with years of history isn't one long list. Counts respect your search and date filter.
- IMPROVEDEntries sort by date correctly — completed work orders and PMs were sorting below older entries because two date formats were being compared as text.
- IMPROVEDTechnician and Vendor remember what you have typed — both fields offer your previous entries as a pull-down, populated from your existing logs.
🏷️ QR Codes & Transfers
- IMPROVEDText and JSON asset tags are free, and now reachable — they were always meant to be free, but both generator screens checked for a subscription before they would open, so a free account was sent to the paywall before it could even see the mode picker. The generator now opens for everyone, on the phone and on the dashboard, and Text and JSON tags print on a free account. Live URL is the one paid mode, because it publishes a page for the unit to the cloud and keeps it current.
- IMPROVEDPrinting a label on the dashboard is open to viewers — printing writes nothing, and the phone already worked this way, but the web Print button was still greyed out for viewers on link-mode labels. Downloading a link-mode PNG is still restricted, because that one publishes the page as a side effect.
- IMPROVEDQR pages update for your whole team — previously only the account holder's device could refresh a published QR page. Everyone else's edits saved locally and silently never reached the label a technician scans.
- IMPROVEDBuilding transfer keeps printed labels alive — claiming a transfer on the web dashboard used to leave your stickers working but permanently frozen, unable to ever update again.
🔧 Fixes
- IMPROVEDThe Google Play dialog on startup is gone — the app no longer opens a billing connection every time it launches.
- IMPROVEDHorsepower from metric nameplates — plates that state only kW now fill in HP, using the 60 Hz rating on dual-frequency motors.
- IMPROVEDCompleting a building-level work order no longer fails with a database error.
- IMPROVEDCloud Backup stops claiming to sync when it can't — if syncing is paused it now says so instead of reporting success.
- IMPROVEDEvery dim label in the app was brightened, including text whose color changed with state.
Read more: QR creator guide Parts & inventory guide
July 2026 12 updates
👥 Team Workspaces & Seats
- IMPROVEDMulti-user workspace sharing — invite your crew to work from the same live building, equipment, and parts data with roles (Owner, Manager, Tech, or Viewer) controlling permissions.
- IMPROVEDBlock-based seat pricing — Team plans start at 5 seats and scale in 5-seat blocks up to 50 seats under one subscription bill. Current prices for your region are on the pricing page and in the store listing.
- IMPROVEDCross-platform parity — invite generation, role picking, pending invite revocation, live countdowns, and clipboard copying across both mobile and web dashboard.
📊 New Landlord & Property Manager Reports
- IMPROVED5 new Pro reports for landlords — generate a Prorated Rent Calculator, a Rent-Increase Notice, a Rent-to-Income Ratio worksheet, a Fair Housing protected-classes reference card, and a Wear-and-Tear vs. Damage guide, right alongside your existing equipment reports — each with the required legal caveats built in.
🔧 Work Order Improvements
- IMPROVEDReal parts picker on Complete Work Order — finishing a work order on mobile or web now lets you pick spare parts actually in your inventory, and completing it automatically deducts them from stock instead of just leaving a notes field.
- IMPROVEDCleaner maintenance history — a work order's own progress notes no longer duplicate themselves in the equipment's "Recent Asset History" feed, and both views now show logged hours and parts used when you entered them.
- IMPROVEDBlank updates blocked — trying to log a work order update with no notes, hours, or parts now shows a clear message instead of silently creating an empty entry.
- IMPROVEDSee the job at a glance — Work Order cards on mobile and web now show the equipment name and site address directly on the card.
🔩 Belt Cross-Reference Fixes
- IMPROVEDCorrected belt cross-reference numbers — the app's A/B-to-4L/5L belt equivalent lookup was using the wrong conversion and could show the wrong-length equivalent belt; it's now corrected to the true industry-standard conversion, with cogged AX/BX codes now recognized too.
- IMPROVEDCross-referenced belts now count as real matches — equivalent belt codes (like A26, 4L280, and cogged AX26) now count toward your spare stock and equipment compatibility on both mobile and web, not just as an informational note.
- IMPROVEDBelt cards show your actual code — fixed a display bug where a belt's cross-reference note could replace the belt code you actually typed in.
🔍 Smarter Home Search
- IMPROVEDSearch covers more of your data — mobile home-screen search now also matches Tools and general-stock inventory, and matches filter/belt sizes no matter how they're typed or ordered.
- FIXEDNo more crowded results — fixed a bug where a page full of Building/Equipment/Part matches could push Tools and Inventory results out of your results list entirely.
🤖 AI Nameplate Scanning Improvements
- IMPROVEDCleaner belt-size scans — AI nameplate scanning no longer grabs extra trailing codes printed after the real belt designation.
- NEWNew Customer Number field — the scanner can now capture and save a Customer Number on equipment and parts.
- FIXEDBug fixes — resolved a duplicate/mislabeled Customer Number display on the equipment screen, and a false "unsaved changes" prompt that could appear on a freshly opened equipment record.
🧹 Cleaner Profile Screens
- IMPROVEDSimplified Danger Zone — Transfer Site and Delete Site are now compact icons in the header on Equipment, Building, and Part profile screens, matching one consistent style.
- IMPROVEDConsistent, readable action buttons — the QR/Share/location-management row and the Photo/Scan/Manuals/Copy-Data/AI-Diagnostics row now share one style that wraps neatly without losing each button's description text.
🛡️ Stability & Bug Fixes
- IMPROVEDAge & Replacement report consistency — the on-screen preview and exported PDF could occasionally disagree about a unit's age bracket; they now always match.
- IMPROVEDWeb "More" menu fixed — the dashboard's More menu in the top navigation no longer freezes; it now always opens directly under the button.
- IMPROVEDSpare part "No Match Found" indicator — fixed a case where this indicator on a newly added general-stock spare part could flash and disappear, or never show up at all.
- IMPROVEDWeb display polish — fixed a notes-box color fallback on the Reports page and a shared page-header layout alignment issue.
Read more: AI scanning guide Parts & inventory guide Work orders explained
🏁 First-Win Walkthrough Rebuild
- IMPROVEDInteractive onboarding — replaced the passive spotlight tour with an actionable, hands-on welcome card directly in the layout.
- IMPROVEDDatabase-derived milestones — track real actions (getting a unit on the books, logging its first service, tagging it with a QR code) with automatic self-healing progress tracking.
- IMPROVEDContextual hints — inline dismissible tip bars appear at the exact moment of use for new equipment, new maintenance entries, the QR scanner, and PM schedules.
🔧 Tools & Quick Field Reference
- IMPROVEDQuick lookup resource — added a completely free tools section with pressure-temperature (PT) charts, calculators, and reference guides, available to all users with no Pro-gating.
- IMPROVEDDynamic PT interpolation — lookup refrigerant values at exact temperature points for R-410A, R-22, R-134a, R-407C, and R-454B (including Dew and Bubble points) with accurate vacuum units.
- IMPROVEDField calculators — access built-in tools for BTU/Ton sizing, Ohm's Law, Fan Affinity laws, and National Electrical Code (NEC) MOCP breaker sizing with proper round-up conventions.
⚡ Inventory & Mobile Enhancements
- IMPROVEDInline part quick-add — log new filters and belts instantly by typing a size and quantity, bypassing the full new-part form.
- IMPROVEDSave PDFs to device — Android users can now save generated PDF reports directly to local device storage alongside existing sharing options.
- IMPROVEDInteractive update badge — a pulsing notification on the home screen's update button signals when a background OTA update is downloaded and ready to apply with one tap.
🛡️ Stability & Bug Fixes
- IMPROVEDAccurate spare part counts — resolved issues that caused incorrect inventory counts or created duplicate self-referencing links on parts profiles.
- IMPROVEDResilient photo backups — fixed a bug on Android where backing up local photos in rapid succession could silently skip files.
- IMPROVEDPredictive navigation back-stack — fixed back-button navigation in parts and equipment profiles so it returns directly to the list rather than looping through history.
- IMPROVEDPart renaming sync — renaming a spare part (e.g. updating a cross-referenced belt size) now maintains perfect sync with its count, avoiding duplicate manual link rows.
- IMPROVEDLaunch stability — resolved a rare startup crash that affected some mobile users.
- IMPROVEDReliable Smart Sync — improved background sync consistency for properties and buildings to guarantee edits safely reach the cloud.
🌐 Web Dashboard Polish
- IMPROVEDCustomizable filters — added fully interactive search filters for PM schedules and work orders.
- IMPROVEDCleaner navigation — improved visual hierarchy to clearly distinguish filtering controls from page navigation actions.
Read more: Parts & inventory guide Web dashboard guide
📷 Photo Birth Records
- IMPROVEDKnow where every photo came from — every new equipment or part photo now tracks exactly when it was captured and its origin (manually captured, uploaded from gallery, retrieved via Smart Sync, or restored from a ZIP backup).
- IMPROVEDBirth records are visible in both the photo gallery viewer and the Smart Sync triage interface.
- IMPROVEDHonest fallbacks — older photos already in the system will display an "Unknown" origin rather than trying to guess their history.
🛡️ Account & Team Isolation Security
- IMPROVEDAbsolute account separation — refactored data caches, local databases, and purchase records to close every known path where switching between Pro or team accounts on the same device could bleed data from one into another.
- IMPROVEDSecure workspace wipes — background cloud push/sync processes and database wipe-on-reset handlers now verify the user's current authenticated identity at every step, ensuring no data from a prior session can ever land on a new account.
- FIXEDEliminated race conditions during join/leave team actions on mobile, resolving a lock-acquisition issue where rapid account switching could show a data-integrity lock screen by mistake.
🔄 Crash-Resilient Restore & Sync
- IMPROVEDCrash-resilient System Restore — the database restore sequence is now highly resilient to crashes or power-loss mid-restore, covering all common failure paths to ensure the database safely rolls back to its safety snapshot on failure without orphaning local records or files.
- IMPROVEDSync conflict protection — older edits from offline devices can no longer overwrite newer changes on the cloud across parts, inventory, tools, PM schedules, and work orders.
- IMPROVEDGhost buildings clean up automatically — when a restore or merge identifies records referring to non-existent buildings, they are safely cleaned up and resolved without leaving dead references.
🌐 Web Dashboard Parity & Polish
- IMPROVEDTeam management (limited rollout) — invite, edit roles, or remove team members directly from the web dashboard, for workspaces with Team plans enabled.
- IMPROVEDAdd buildings inline — create new properties and buildings directly via a modal on the web without cancelling your current form or workflow.
- IMPROVEDPhoto uploads — upload equipment and parts photos directly on web, and edit/save parts without losing active references.
- IMPROVEDReports & Calendar updates — persist selected date ranges across reports navigation, and enjoy a fully shared PM schedules modal and unified navigation.
- IMPROVEDPart sizes — filter and belt sizes are now displayed inline on the property's parts list cards.
- IMPROVEDSpare count corruption fixed — resolved a critical data-integrity bug where saving any edits to installed parts could silently overwrite their resolved spare counts.
🌐 Web Dashboard Bug Fixes
- IMPROVEDService log deep-linking — clicking service log alerts now correctly navigates you straight to the details of the logged event.
- IMPROVEDSearch and filters — added and repaired search filters for Preventive Maintenance (PM) schedules and Work Orders.
- IMPROVEDVisual and layout corrections — fixed sticky header layout offsets to prevent overlapping page content, and styled urgent badges to stand out clearly.
- IMPROVEDAccidental double-submits blocked — added click-guards on all PM and Work Order save buttons to prevent duplicate submissions.
- IMPROVEDPhoto preservation — Work Order completion photos and guest-submitted report details now map and save correctly on both desktop and mobile.
- IMPROVEDViewer-role gating — tightened access controls to block viewer-role users from performing edit/save operations in 4 additional dashboard locations.
- NEWBranded QR codes — QR generator branding now correctly matches your team's active customization.
- IMPROVEDAdditional fixes — resolved page hanging states by showing real error/retry screens, renamed generic Part fields to Manufacturer where appropriate, and fixed an inventory quantity revert bug.
📱 Mobile Diagnostics & Scan Consolidation
- IMPROVEDNo duplicate AI sessions — the AI Diagnostics screen now automatically checks for recent unresolved sessions for the same equipment, offering to resume the conversation instead of silently piling up duplicate chats.
- IMPROVEDDelete AI history — you can now swipe-to-delete or tap the trash icon on individual AI Diagnostics sessions directly from the equipment history list.
- IMPROVEDConsolidated condition scans — the condition-scan setup flow is now a single cohesive drawer sheet that limits photo selection to 4, preventing silent API truncation. Captured scan photos are now safely committed to local storage on success.
- IMPROVEDTap-through navigation — tap a building or equipment on a work order to navigate directly to its details page.
📱 Mobile Maintenance & Links Consolidation
- IMPROVEDUnified Maintenance Hub — grouped previously scattered sections (History, PM Schedules, Work Orders, and Out-of-Service status) under a single cohesive "Maintenance" block on the equipment page.
- IMPROVEDFiltered search — added a search and filter bar to the mobile maintenance log for faster lookups.
- IMPROVEDConsolidated spare parts links — merged the two look-alike linking menus (used for equipment relationships and stock sources) into a single clearly labeled "Links" section on the part profile, making it easy to see where stock is sourced and where it is installed.
🤝 Multi-Device Conflict Protection
- FIXEDNo more silent check-in overrides — vendor check-in notification lists now use atomic transaction check gates to prevent edits made on one device from silently clobbering updates made on another.
Read more: AI scanning guide Maintenance logs guide Cloud sync guide
🎫 Work Orders, Redesigned
- IMPROVEDLog Update is now separate from Put On Hold — logging a dated progress note on a work order ("still waiting on the part," "diagnosed the issue, ordering a replacement") no longer forces the work order into an On Hold state. Put On Hold is still there as its own distinct action for when work genuinely pauses.
- IMPROVEDHours and parts tracking, everywhere it matters — both Log Update and Complete Work Order now have fields for hours worked and parts used, so that information gets captured no matter which action closes out the visit.
- IMPROVEDPick who did the work — Log Update lets you choose a team member from a dropdown or type in a custom name, with your own name pre-filled.
- IMPROVEDBackdate an update — Log Update now has its own date picker, so you can log yesterday's progress today without it looking like it happened right now.
- IMPROVED(Web) Add a building without leaving the form — Creating a work order on the web dashboard now lets you add a new building inline, instead of having to cancel and go create it first.
- IMPROVED(Web) Attach photos to open work orders — Photos can now be added directly to an Open, In Progress, or On Hold work order from the web dashboard, not just after it's completed.
- IMPROVED(Web) The sidebar only shows up where it's used — The Locations/Equipment/Parts/Service Logs bar no longer lingers on the Work Orders, Calendar, PM Schedules, or Team tabs, where it never did anything.
- IMPROVED"On Hold" no longer says "waiting on parts" — the glance-strip label now matches what On Hold actually means; it doesn't assume a specific reason.
📱 QR Download, Fixed
- IMPROVEDFaster loading — the "Scan to Download" QR code on the website used to take 15-20 seconds to appear; it now loads immediately.
- IMPROVEDDetects your phone automatically — scanning the download QR code with an Android or iPhone now takes you straight to the right app store instead of asking you to pick one, even from a browser's "Desktop Site" mode.
🔄 Cloud Smart Sync, Clarified
- FIXEDNo more misleading "Link Failed" — linking a photo to a part could succeed but still show a "Link Failed" error, because an unrelated best-effort cleanup step failing afterward got blamed on the link itself. The two are now reported separately.
- IMPROVEDSee where a part actually is — the Link To picker now shows which building (and equipment, if installed) each part belongs to, instead of just a bare name.
- IMPROVEDDuplicate local copies, found and cleaned up safely — Cloud Smart Sync now detects when a photo has two local database records pointing at the same cloud backup, and a "Clean Up Duplicate" action removes only the redundant record — never the photo itself or the cloud copy.
📤 Sharing, Scoped Correctly
- IMPROVEDSharing one item no longer includes your whole PM/Work Order history — exporting or sharing a single piece of equipment, part, tool, or maintenance log as a ZIP now only includes the PM schedules and work orders tied to that specific item, not every PM schedule and work order in your entire account.
🔄 Broader Sync Coverage (continued)
- IMPROVEDThe same sync safety net now covers parts, inventory, tools, maintenance logs, PM schedules, and work orders — a device that's briefly offline or mid-sync can no longer accidentally overwrite a newer edit made from another device on any of these record types, matching the protection equipment records already had.
Read more: QR creator guide Work orders explained Cloud sync guide
🔀 Smarter ZIP Import
- IMPROVEDChoose what to keep, item by item — Importing a ZIP backup from the home screen now checks it against what's already on your device. If nothing overlaps, it merges in automatically like before. If something does overlap (same equipment, part, tool, PM schedule, work order, inventory item, maintenance log, or building), you now get to pick "Keep Mine" or "Use Backup" for each one — or apply one choice to everything at once. Nothing is overwritten without you seeing it first.
- IMPROVEDSettings' "Restore from ZIP Backup" is unchanged — that's still a full wipe-and-restore for disaster recovery, exactly as before; the new picker only applies to the home screen's Import ZIP button, which is meant for merging.
🛡️ Safer Backup Restore
- IMPROVEDRestore rollback now catches everything — the safety snapshot Settings takes before a ZIP restore now correctly captures your database's most recent writes before wiping, so if a restore ever fails partway through, the automatic rollback can't leave anything out.
🔄 Broader Sync Coverage
- IMPROVEDPM Schedules and Work Orders get the same sync safety net as everything else — they now self-heal the same way equipment, parts, and tools already did if a record ever got stuck without reaching the cloud.
- IMPROVEDMerged backups reattach PM Schedules and Work Orders correctly — when importing a ZIP causes two equipment records to get merged into one, PM Schedules and Work Orders tied to that equipment now follow the merge correctly instead of pointing at a stale id.
Read more: Cloud sync guide
🔄 Cross-Device Sync, Fixed at the Root
- IMPROVEDEquipment sync restored — A database bug going back to early June was silently blocking equipment record changes from syncing down to other devices. If you ever made an update on one phone and it didn't show up on another, this is why — it's fixed now.
- IMPROVEDOut-of-Service flags can no longer be silently lost — Marking a unit Out of Service, and its reason, now survives a full cloud restore and syncs correctly between devices instead of occasionally reverting to "in service" on its own.
- IMPROVEDInventory photos stay put — Replacing a spare-part photo could, in rare cases, have the local copy quietly disappear from your device on the next sync, even though it was safely backed up. That gap is closed, along with a related bug that could mislabel a perfectly good photo record as missing.
- IMPROVEDA rare double-save on new parts is fixed — A fast double-tap on Save Part could occasionally create a duplicate inventory entry. The Save button is now protected against that.
👥 Team & Subscription Reliability
- IMPROVEDTeam seat counts always live (limited rollout) — on workspaces with Team plans enabled, owners now always see an accurate, live seat count instead of occasionally stale information.
- IMPROVEDPro status stops flickering — A background reliability check could momentarily and incorrectly show a genuinely Pro account as not-Pro. Fixed.
- IMPROVEDBilling events can't shrink your team by accident (limited rollout) — on workspaces with Team plans enabled, an unusual billing event could previously reset a real team's seat limit down to one. That can no longer happen.
🌐 Web Dashboard Navigation, Fixed for Good
- FIXEDNo more flash to an error or landing page — Clicking between Dashboard, Work Orders, Calendar, PM Schedules, and Team on the web dashboard could briefly flash an error screen, then the marketing homepage, before landing on the right page. Navigation is now instant and clean.
- IMPROVEDDashboard always returns to your buildings — Clicking "Dashboard" from anywhere now reliably takes you back to your buildings list.
- IMPROVEDPM Schedule assignments work on web too (limited rollout) — on workspaces with Team plans enabled, assigning a PM schedule to a specific team member from the web dashboard now actually works — previously only the mobile app could do this, so reminders on web-created schedules always went to the account owner regardless of who was picked.
- IMPROVEDCalendar building filter defaults correctly — The building filter on the web maintenance calendar now correctly starts with every property checked.
🤖 AI Scan Accuracy Restored
- IMPROVEDNameplate scanning back to full accuracy — Several scan-accuracy guardrails (bilingual nameplates, multi-photo merging, manufacture-date decoding, amperage/belt/serial-number handling) that had quietly regressed during an earlier update are fully restored.
- IMPROVEDCondition checks and diagnostics read the right equipment info — Fixed a mismatch that could cause the AI to see "Unknown" for equipment type, model, or BTU capacity even when that information was on file.
- IMPROVEDInvoice scan resolution restored — Invoice photos are scanned at full resolution again for better line-item accuracy.
📷 Photo Backup, Further Hardened
- IMPROVEDFewer accidental duplicate uploads — Closed two remaining gaps where a photo could get uploaded to the cloud a second time under a different filename.
- IMPROVEDDuplicate cloud copies can now be cleaned up safely — A dedicated "Clean Up Duplicate" action is now available for extra cloud copies, with built-in safety checks so it can never remove a photo that's still needed.
🏠 Small Fixes
- IMPROVEDHome screen sections scroll into view — Expanding a section near the bottom of the home screen (like Work Orders / Calendar / PM Schedules / Team) now scrolls it into view automatically instead of leaving it off-screen.
- IMPROVEDCleaner Settings menu — Removed a duplicate way to reach team management from Settings (it's still one tap away from the home screen), and generating a team invite code now shows a loading indicator.
Read more: AI scanning guide Cloud sync guide Web dashboard guide
🎯 Stock Counts You Can Trust
- IMPROVEDExact matches only — Parts now auto-match your stock strictly by exact part number, model number, or size standard. A part that merely shares a name with a stock item no longer claims stock you don't actually have.
- IMPROVEDRefrigerant confusion fixed — Compressors, coils, and other parts that USE refrigerant are no longer treated as refrigerant themselves, and their stock buttons no longer send you to the gas inventory.
- IMPROVEDGo To Inventory goes to the inventory — Tapping through from a matched part now lands you in the correct building on the correct category tab, instead of a generic building list.
- IMPROVEDYour links always win — Parts you've manually linked to a stock item always count that stock, and background syncing can never zero those counts out.
- IMPROVEDWeb and app agree — The web dashboard now uses the exact same matching rules as the app, so both always show the same answer.
📷 Photo Backup, Repaired & Honest
- IMPROVEDBulk photo repair that finishes — Restoring hundreds of missing device photos in one tap now completes cleanly instead of failing partway with database errors.
- FIXEDNo more duplicate uploads — The app recognizes photos it has already backed up (in any format) and no longer uploads second copies of them to the cloud.
- IMPROVEDDuplicates labeled honestly — Extra cloud copies from earlier versions are now shown as information-only cards instead of being mislabeled as deletable orphans.
- IMPROVEDStuck deletes now clear — Items that previously refused to delete from the local backup screen clean up properly, and already-removed files count as done instead of erroring forever.
- IMPROVEDHonest scans — If any part of a sync scan fails, the scan says so clearly instead of quietly showing wrong results.
⚡ Faster in the Field
- IMPROVEDTwo scan buttons, zero menus — The home screen now has a dedicated one-tap QR / Barcode scanner (always free) and a separate AI Nameplate Scan button, so the everyday scan is instant.
- IMPROVEDAdd a photo in two taps — Adding photos to a part is now just Take Photo or Upload from Gallery — no scanner options in the way. Scanning stays on its own dedicated buttons.
- IMPROVEDSee your seat usage (limited rollout) — on workspaces with Team plans enabled, Settings and Account pages now show how many seats are in use.
🌐 Web Dashboard & Alerts
- IMPROVEDVendor check-in alert settings save everywhere — Adding or removing notification phone numbers and emails now works on every building, including older buildings where saves used to fail silently. Buildings that had quietly stopped sending alerts resume on your next save.
- IMPROVEDIntentional changes stick — Removing your last contact actually clears it, an old browser tab can no longer wipe your contact lists, and custom door-sign messages are preserved.
- IMPROVEDWork orders on the web, complete — Create work orders with photos from the dashboard, and completion photos now file into the equipment's service history where they belong.
Read more: EPA 608 guide Parts & inventory guide Cloud sync guide
💬 SMS Vendor Check-In Alerts
- NEWReal-time SMS alerts — Receive instant text notifications on your mobile phone whenever a vendor, contractor, or technician checks in or out of your buildings.
- IMPROVEDSecure web opt-in form — End-users register their mobile number and provide explicit consent via the public carrier-compliant form at equipment-tracker.com/sms-opt-in before receiving alerts.
- IMPROVEDOne-time welcome confirmation — The server automatically sends a carrier-compliant welcome text on enrollment. Re-adding a number to a notify list will not trigger duplicate welcome texts.
- IMPROVEDSeamless integration — Works alongside the existing bypass-safe email notification lists on the building details screen and is fully included in the core vendor check-in feature set.
Read more: Vendor check-in guide
🗓️ Recurring PM Scheduling
- IMPROVEDSet it and forget it — Create a maintenance schedule for any piece of equipment or an entire building (e.g., "Change filters every 90 days"), and the app automatically tracks when it's next due.
- IMPROVEDCommon tasks, one tap away — A built-in preset list (filter changes, belt inspection/replacement, coil cleaning, lubrication, drain line flush, general inspection) fills in the title for you — or type your own.
- IMPROVEDCompleting a schedule does the paperwork for you — Marking a schedule complete automatically creates the maintenance log entry, records when it was done, and advances the schedule to its next due date.
- IMPROVEDNotes go where they belong — Notes entered when completing a schedule now appear in the maintenance log's Notes field, kept separate from the task description.
- IMPROVEDNever miss a due date — Get a push notification before a schedule comes due, and see upcoming and overdue schedules directly on the maintenance calendar with full detail (what's due, which equipment, which building) instead of a bare date.
- IMPROVEDCompleted doesn't mean disappeared — Finishing a schedule on the calendar now shows a clear "✓ Completed" mark instead of silently vanishing, with its next occurrence appearing at the correct future date.
- IMPROVEDFull history, on both platforms — Every schedule now shows its Last Completed date on mobile and web alike.
- IMPROVEDOne system, not two — Existing part/filter replacement reminders were automatically converted into PM schedules — nothing was lost, and there's no more juggling two separate reminder lists for the same job.
Read more: PM scheduling explained
🔒 Your Data Is Protected
- IMPROVEDOffline edits always reach the cloud — Edits made in no-signal areas (basements, mechanical rooms) are now remembered and automatically synced the next time you're online. Previously, an edit made offline could silently stay on one device forever.
- NEWNewer edits can no longer be overwritten — If a record was changed on your phone and on the web dashboard, the most recent change now wins. Older cloud data can no longer silently erase fresh local edits during a sync.
- IMPROVEDDeleted means deleted — Removed stock items, buildings, building photos, and spare parts no longer "come back" after a sync or app restart. Deletions are now tracked across all your devices and the web.
- IMPROVEDManual links are never touched — The app previously ran a background cleanup that could remove part-to-equipment links you created by hand if the sizes didn't match its expectations. That behavior is gone: links you make stay until YOU remove them, and there's now an unlink button to do it.
- IMPROVEDCrash-proof backups, restores, imports, and exports — Every backup, restore, ZIP import/export, and transfer can now survive the app being closed, the phone dying, or signal loss mid-operation. Interrupted restores are detected at the next launch and either finish safely or tell you clearly that a re-run is needed — your existing data is snapshotted and never at risk.
- IMPROVEDBuilding transfers hand off completely — Accepting a building transfer now always reroutes its QR code labels to the new owner, even if the transfer was interrupted partway through and retried.
🎯 One Truth on Every Screen
- IMPROVEDStock counts always match — The count on an equipment part button and the SPARE PARTS ON HAND list in the part's profile now come from the same place and can never disagree. Old "ghost" counts from earlier app versions were converted into real, visible stock entries you can adjust or delete.
- IMPROVEDLinked equipment shows everywhere — A spare part's profile now shows both the links you made (tagged MANUAL LINK) and equipment matched automatically by size (tagged MATCHED BY SIZE) — matching what the buttons always showed.
- IMPROVEDPhotos are consistent — Part thumbnails and profile galleries now use the same image source. Spares without their own photos show the installed part's photo, clearly labeled "FROM INSTALLED PART."
- IMPROVEDInventory lists group correctly — Items that display together now merge together (and vice versa). No more seeing "5VX810" and "5VX-810" as two separate entries that behave like one.
- IMPROVEDWeb and mobile finally agree on stock — The web dashboard now uses the same stock logic as the app, and adjusting inventory on the web no longer creates mismatched counts on your phone.
🧰 Smarter Parts & Inventory
- IMPROVEDNon-air filters classified correctly — Sock filters, sediment filters, and similar water-side parts no longer appear in the air-filter section. Items must have a real air-filter dimension to be classified as air filters.
- IMPROVEDEdit any item's category — Every inventory card now has a visible edit (pencil) button, so a misfiled item can be moved to the right category in seconds.
- IMPROVEDSharing respects your edits — Accepting a shared building no longer overwrites details you've edited locally, and retrying an interrupted share can no longer double-count stock.
- NEWNew spare parts are safe — Newly created spare profiles (no photo, no stock yet) are no longer at risk of being cleaned up by background maintenance.
🔍 New Diagnostic Tools
- IMPROVEDBuild ID in Settings — See exactly which app update you're running, at a glance.
- IMPROVEDOne-tap diagnostics — Long-press a part's header or an inventory card to copy or share a full diagnostic report — perfect for support without screenshots or guesswork.
🌐 Website & Dashboard
- IMPROVEDPro access restored for all subscription types — Fixed a web sign-in issue where promotional and non-renewing Pro members weren't recognized on the dashboard.
- IMPROVEDCSV imports can resume — If your browser closes mid-import, the wizard now offers to pick up where it left off instead of starting over.
- IMPROVEDPrivacy hardening — Public QR pages and vendor check-in pages are now excluded from search engines, keeping customer details out of search results.
- IMPROVEDSimplified Settings — Removed the Factory Reset option; restore-from-backup covers every recovery case more safely.
Read more: Parts & inventory guide Web dashboard guide
🔍 Search Engine & Meta Optimization
- IMPROVEDClean Search Results — Optimized all page titles and description previews to fit perfectly within search results, preventing cut-off text on Google and Bing.
- IMPROVEDSimplified Heading Layouts — Resolved a duplicate page title issue in our background page structure to help search crawlers read and index the site more accurately.
🛠️ General Stability & Bug Fixes
- IMPROVEDImproved Sharing & Exports — Enhanced building and equipment sharing to ensure related part details and matching images transfer together without missing assets.
- IMPROVEDBackup File Downloads — Updated the data export tool to download structured ZIP archives containing organized category sheets and photo folders.
- IMPROVEDInvoice Price Matching — Fixed invoice scanning calculations to correctly associate fallback unit prices and eliminate dead labor calculation fields.
- IMPROVEDRefined Leak Calculations — Corrected regulatory thresholds for comfort cooling systems and added guidelines for comfort cooling exceptions.
- IMPROVEDImage Loading Reliability — Increased image retrieval and download limits to ensure large photos load reliably on poor cellular networks.
- IMPROVEDDatabase Sync Integrity — Strengthened the background synchronization database migration rules, resolving duplicate entry conflicts when importing duplicate assets in a single batch.
- IMPROVEDLayout & Styling Polish — Isolated layouts for the QR Generator and Refrigerant Calculator to prevent overlapping style issues across page views.
⚡ Cloud & Payment Resilience
- IMPROVEDWebhook Resilience — Hardened our secure payment and subscription connection handlers to handle network interruptions gracefully, ensuring your Pro upgrade is activated immediately.
- IMPROVEDAccount Cleanup Safeguards — Increased database execution limits and added chunked data clearing for large account purges, ensuring complete and safe data deletion upon request without timeouts.
Read more: Cloud sync guide
June 2026 35 updates
🔒 SMS Alerting Compliance & Opt-in Flow
- IMPROVEDMandatory Consent Check — Building check-in alerts now require a recipient to confirm consent before receiving notifications.
- IMPROVEDAutomated Opt-In Texts — Added an automated verification message that goes out whenever a building owner adds a phone number to their distribution list.
- IMPROVEDTwilio Webhook Handler — Deployed the new twilioWebhook function to receive incoming YES, STOP, and UNSUBSCRIBE replies, dynamically logging the consent status (unconfirmed, confirmed, opted_out) in Firestore.
⚡ Live Status Badges & Firestore Rules
- NEWReal-time Status Display — Added status indicators (⏳ Pending, ✓ Confirmed, 🚫 Opted Out, ? No Status) directly to the phone number chips in the Check-In setup UI.
- IMPROVEDonSnapshot Subscriptions — Replaced one-time database queries with real-time Firestore listeners so that the status indicator updates live the second a user replies to the SMS.
- IMPROVEDFirestore Security Rules — Updated firestore.rules to safely permit authenticated users to read smsConsent records, ensuring secure client-side access.
✍️ Accurate Marketing & Landing Copy
- IMPROVEDHonest AI Scanning Messaging — Refined the website hero copy from "Type Nothing" to "Skip the Manual Typing" to provide a realistic value proposition.
- IMPROVEDManaged Expectation Tagline — Explicitly clarified that data tracking works fully offline, while the Gemini AI scanner requires a signal and takes in seconds to parse nameplates.
Read more: Cloud sync guide
📱 SMS Alerts & Twilio Integration
- IMPROVEDSMS notifications for Vendor Check-Ins — Integrated Twilio SMS alongside email alerts, notifying facility managers instantly via text message when a vendor checks in on-site.
- IMPROVEDVendor Check-In Paywall Enforcement — Fixed a bug that allowed bypassing subscription requirements to access the vendor check-in setup screens, ensuring proper Pro-tier monetization.
💾 Database Resilience & Regex Fixes
- IMPROVEDBoot-Time Database Repair Passes — Implemented automated SQLite database integrity check and auto-heal routines on app boot to detect and resolve local database anomalies.
- IMPROVEDBelt-Size Truncation Regex Bug — Fixed a regex parsing issue that was incorrectly truncating belt sizes and codes during optical nameplate character mapping.
🔍 Scoped Search & Inventory Updates
- IMPROVEDAuto-Search Selection Scoping — Autocomplete search queries and selection scoping are now restricted to the active building and location context, preventing cross-building suggestion pollution.
- IMPROVEDConsumables Out of Stock Tab — Added an "Out of Stock" filter tab to the consumables list screen, mirroring the equipment status filter capabilities.
🎨 Unified Dark-Theme Design System
- IMPROVEDDark-Theme Migration — Completed migration of core app components to the new unified dark-theme design system, ensuring consistent styling tokens, optimized contrast ratios, and improved readability.
📄 Legal Agreements & QR UI Overhaul
- IMPROVEDQR Landing Page Redesign — Overhauled the public QR specification and service logging web landing page with a modern, glassmorphic layout, dynamic asset theming, and an interactive maintenance timeline track.
- IMPROVEDTerms of Service & Privacy Policy Update — Updated the effective dates of the Terms of Service and Privacy Policy to June 26, 2026 to align with current features.
Read more: QR creator guide Parts & inventory guide
❄️ Refrigerant & Consumables Precision
- IMPROVEDRefrigerant Name Search — Fixed an issue where the app failed to recognize refrigerant types if they were entered with spaces (like "R 410A") or extra text (like "R-410A (factory charge)").
- IMPROVEDModel Number Classification — Resolved a bug where certain electrical parts (like "24V Transformer Model TR40VA") were incorrectly categorized as refrigerants because their model numbers contained similar numbers and letters.
- IMPROVEDConsumable Size Matching — Widened the valid dimension range for HVAC air filters to 3.5" to 50" on a side. This allows matching unusually small filters (such as mini-split/ductless filters) and large commercial/industrial filters while still successfully excluding refrigerator, water, and automotive cartridge filters (typically under 3.5").
- IMPROVEDMulti-Size Equipment Support — When equipment is compatible with multiple filter or belt sizes, the app now correctly processes all listed sizes. This prevents valid inventory links from being mistakenly removed when multiple compatible parts are associated with a single unit.
💾 Data Sync & Inventory Merge
- IMPROVEDDuplicate Inventory Merge Counts — When merging duplicate inventory rows, the app now correctly sums the quantities of both rows rather than only taking the higher of the two, ensuring you never lose your accurate stock counts.
- IMPROVEDCloud Restore Sync Safety — Added backup-enabled and restoration guards to background database repair functions to ensure they cannot push updates to Firestore while a database restore is in progress.
- IMPROVEDApp Launch Database Tuning — Patched a background database update that could trigger repeatedly when launching the app. This stabilizes local data and prevents database restoration actions from interfering with automatic cloud backups.
Read more: EPA 608 guide Parts & inventory guide Cloud sync guide
🎨 Professional B2B Website Redesign & Hero Section
- IMPROVEDAnimated Scanner Mockup — Replaced the static walkthrough video with a clean, animated mockup showing the nameplate scanning action and real-time spec extraction.
- IMPROVEDHardware Printer Compatibility — Reframed the printer brand tags into a clear compatibility statement for Brady®, Zebra®, and Dymo® thermal printers, emphasizing ETP's print-ready PNG label exports rather than native SDK connections.
- IMPROVEDAudience Split Paths — Added three dedicated navigation pathways to help Commercial HVAC Techs, Property Managers, and Homeowners find the exact features and pricing plans that fit their specific operations.
🔍 Compare Alternatives & SEO Optimization
- IMPROVEDHonest Competitor Comparisons — Created dedicated comparison pages detailing ETP's unique features (offline SQLite sync, integrated EPA §608 calculations, and vendor door check-ins) side-by-side with 11 alternatives like MaintainX, UpKeep, and ServiceTitan.
- IMPROVEDSite-wide Navigation Footer — Integrated a unified navigation footer with a 'Compare Alternatives' selector across all marketing pages for easier traversal.
- IMPROVEDStatic Pre-rendering & Sitemap Inclusion — Added the competitor comparison pages to the sitemap.xml and statically pre-rendered all of them for optimal indexing and generator updates.
❄️ EPA Calculator Calibration & Guide Sync
- IMPROVEDEPA 15 lbs Capacity Trigger Calibration — Honestly corrected a mismatch across our documentation and calculations where legacy or incorrect thresholds (such as 50+ lbs or 5 lbs typos) were referenced. The system is now uniformly calibrated to trigger compliance notifications and leak rate calculations at the correct 15 lbs charge capacity threshold required by the 2026 EPA AIM Act rules.
- IMPROVEDRemoved {storageMB} placeholders — Polished the cloud sync documentation and guides to display concrete descriptive examples instead of template tags.
🧭 Navigation Integrity
- IMPROVEDHeader & Footer Consistency — Restored full header navigation panels and site-wide footers on Blog, Changelog, and Guides pages, providing robust navigation paths for all visitors.
Read more: EPA 608 guide Cloud sync guide
🔍 QR Code Scan Matching & Out of Service Sharing
- IMPROVEDQR Code Link Matching — Fixed the scanner so that scanning a QR code link (like https://equipment-tracker.com/view/{id}) on a recipient's device now correctly matches the shared equipment in their database. Previously, importing a shared building generated new database IDs, which caused scanned codes to say "No Match Found".
- IMPROVEDOut of Service (OOS) Status Sharing — The "Out of Service" (OOS) status and custom reasons are now correctly packaged and synchronized during direct technician shares (user pushes), specifically resolving a bug when sharing from Android to iOS devices.
🔔 Push Notification Reliability Fixes
- IMPROVEDForeground Token Auto-Refresh — The app now automatically updates its push token when brought to the foreground, preventing expired push notifications.
- IMPROVEDAndroid Awake Notification Channel Fix — Reordered Android notification setup to resolve a bug where background notifications would be silently ignored on awake Android devices.
- IMPROVEDStale Device Cleanup — Stale/dead push tokens are automatically cleared on the backend, ensuring push alerts only go to active devices.
Read more: QR creator guide
🔮 Conversational AI Diagnostics & Troubleshooting Assistant
- NEWAI Diagnostics Helper — Added a brand-new troubleshooting helper that acts as a conversational partner. Technicians can describe complex symptoms and enter technical readings (voltage, amperage, pressures, temperatures, subcooling, superheat) to get targeted trade-grade repair recommendations.
- IMPROVEDMaintenance History Context — The AI Diagnostics tool automatically fetches the 5 most recent service logs for the equipment unit. This lets Gemini analyze the current issue with full knowledge of past repairs, preventative maintenance, and parts replaced.
- IMPROVEDDeduct Scan Credits for Free Tier — Enabled the 10 free scans trial allowance for the AI Diagnostics tool. Users can run up to 10 diagnostic scans on the free tier before being prompted to upgrade to Pro.
- IMPROVEDNo App-Swapping Conveniences — Send equipment details and technical measurements directly to the AI helper in a unified interface, eliminating the need to toggle back and forth between different manuals and separate chatbot apps on your phone.
📱 Safe Area Keyboard Avoidance & Android Button Overlap Fix
- IMPROVEDAndroid Virtual Buttons Overlap Fix — Resolved an issue where the reply input bar and action buttons in the AI Diagnostics chat screen were hidden or covered by Android's virtual navigation buttons (Home, Back, Menu). Increased safe-area spacing and integrated platform-specific padding parameters.
- IMPROVEDStart-at-Top AI Responses — Fixed a UX issue where long AI responses started scrolled to the bottom. Chat screens now automatically position the scroll target at the beginning of new AI messages so technicians read from the top down.
Read more: AI scanning guide
📄 Native Mobile CSV Import Wizard & Layout Improvements
- IMPROVEDImport Natively on Mobile — Added a fully native 5-step CSV import wizard to the app. You can now select and import spreadsheet files (.csv) directly on your device, completely offline.
- IMPROVEDImport Action Buttons Restored on Android — Fixed a layout bug where the "Next" and "Map Columns" buttons were hidden behind the virtual software keys (Home, Back, Menu) at the bottom of Android devices. All wizard action buttons are now raised safely above this area.
- IMPROVEDVisual Column Mapping — Rebuilt the mapping UI on both web and mobile into a clear left-to-right flow showing exactly how your spreadsheet's columns link up to fields in the app (e.g. Brand, Model, Serial). Includes Required/Optional badges and ✨ Auto-Matched indicators.
- IMPROVEDValidation Preview with Back Navigation — Inspect mapped items before committing. Added bottom Back buttons to easily step backward and adjust mappings without losing your progress.
- IMPROVEDOut of Service Status Saves Correctly — Fixed a database issue where equipment imported from a spreadsheet with a status column wouldn't save its active/inactive status correctly.
- IMPROVEDImproved CSV File Compatibility — Fixed a file reading warning that could prevent certain spreadsheets from opening on older devices.
📄 Universal Spreadsheet Import Wizard (Centriq & Custom Exports)
- NEWBring Your Data from Centriq and Other Apps — With Centriq shutting down, we've built a free CSV importer tool so you can bring over all your HVAC, appliances, and tools data instantly.
- IMPROVEDAutomatic Column Matching — The importer automatically scans your spreadsheet and matches columns like Brand, Model, Serial Number, and Location to the fields in our app. If you have custom headers, you can easily adjust them with simple dropdowns.
- IMPROVEDDuplicate Prevention — The app reviews your spreadsheet file before importing and compares it against your existing items. If a serial or model number matches, it flags it as a duplicate and lets you skip it to keep your inventory clean.
- IMPROVEDUpload Large Lists Securely — Improved upload reliability for large spreadsheets. The app processes your data in smaller, secure bundles so the transfer never freezes or crashes mid-way.
- IMPROVEDFill in Missing Information Automatically — If some rows in your spreadsheet are missing a building name or equipment type, you can set default values to fill in those blanks automatically during the import.
📸 Tool & Inventory Photos Were Missing from Backups and Restores
- IMPROVEDPhotos Now Fully Backed Up — Photos attached to tools and inventory items (spare parts, filters, belts, refrigerant, etc.) were not being included in cloud backups or ZIP backups. If you ever restored your data, those photos would come back blank. They are now backed up and restored correctly, just like equipment and maintenance photos.
- IMPROVEDPhotos Survive a Restore — Restoring from a ZIP backup or a locally saved backup now correctly brings back every photo for every item type — equipment, parts, maintenance logs, building photos, tools, and all inventory items. Previously, tool and inventory photos came back blank after a restore.
- IMPROVEDCloud Restore Brings Back All Photos — When restoring your account from a cloud backup onto a new or wiped device, tool photos and inventory item photos are now downloaded along with everything else.
🔄 Photos Added Offline Now Sync Automatically
- IMPROVEDInventory Item Photos Sync in the Background — If you added a photo to an inventory item while offline or before your next backup ran, that photo was never making it to your cloud backup. It now syncs automatically in the background as soon as you're connected, so it's always protected.
- IMPROVEDTool Photos Sync in the Background — The same issue affected tool photos. They are now automatically pushed to your cloud backup in the background without any extra steps.
📤 Sending Data to Another User — Faster and More Reliable
- IMPROVEDPushes Are Much Faster Now — When sending equipment, building, or parts data to another user, the app was re-uploading every single photo from scratch every time — even photos that were already saved in the cloud from a previous sync. This made every push take far longer than it should. The app now checks whether each photo is already in the cloud before uploading it, and skips the ones that are already there. Only genuinely new photos get uploaded.
- IMPROVEDSpare Part Counts Carry Over Correctly — When receiving a shared building from another user, the number of spare parts on hand for each part was being dropped and reset to zero instead of coming over correctly. This is now fixed — spare part counts transfer as expected.
🔒 Backup & Restore Reliability
- FIXEDNothing Interferes During a Restore — Fixed an issue where background activity could run at the same time as a backup restore, causing some records to get duplicated or overwritten. Restores are now fully protected — background activity is paused until the restore is completely finished.
- FIXEDCloud Stays in Sync After a Local Restore — After restoring from a ZIP or locally saved backup, the app now automatically updates your cloud backup to match in the background. You don't need to manually force a sync or push anything — it happens on its own.
- FIXEDFixed: App Could Fail to Open After a Restore — In rare cases, restoring a backup could leave the app in a state where it appeared to have a corrupted database and failed to open. This was caused by leftover temporary files from the previous install. Those files are now cleaned up automatically during every restore.
Read more: Parts & inventory guide Cloud sync guide
🔩 Belt & Filter Inventory — Fixed Name vs. Size
- IMPROVEDCorrect Name and Size on Cards — Belt and filter cards in the inventory screen now correctly show the part name (e.g., "Supply Fan Belt") and the size (e.g., "B42") as two separate items. Previously, the name was being stored in the size field, so the actual size was never visible.
- IMPROVEDTapping Opens the Full Profile — Tapping a belt or filter card now opens the complete part detail page with all specs. Previously it opened a basic edit popup with very limited information.
📦 Send Parts to Like Unit — Fixed Selection Bug
- IMPROVEDOnly Selected Parts Transfer — When sending spare parts from one unit to another similar unit, only the parts you actually selected now get sent. Previously, the wrong parts were being sent instead of the ones you chose.
- IMPROVEDCorrect Quantity When Sharing — Sharing parts between units no longer doubles the quantity on hand at the receiving unit. The count now transfers correctly without inflating the numbers.
🔗 Equipment Links — Permanently Protected from Being Wiped
- IMPROVEDLinks Survive All Backup and Restore Operations — Fixed multiple issues that were causing equipment links (like the connection between a furnace and its condensing unit) to disappear after performing a backup, restore, cloud sync, or ZIP import/export. Links are now fully protected across every action in the app.
- IMPROVEDCloud Sync No Longer Deletes Links — A background sync that runs automatically was incorrectly deleting all local equipment links when the cloud copy was temporarily empty (such as right after a restore). This no longer happens — links are always preserved and automatically pushed back to the cloud if they are ever missing from it.
- IMPROVEDSpare Part Links Also Protected — The same protection now applies to links between spare parts and inventory items, which had the same underlying issue.
Read more: Parts & inventory guide Equipment management guide
🖼️ Cleaner Belt & Filter Inventory Cards
- IMPROVEDRemoved Misplaced Thumbnails — Restored clean layouts for air filters and belts in the inventory list by removing photo thumbnails that did not belong there. Thumbnails remain on Spare Parts and Tools only.
🧭 Fixed Blank Screen When Tapping a Spare Part
- IMPROVEDSpare Part Profile Navigation — Fixed a bug where tapping a spare part in the inventory list could display a blank screen instead of the part detail page.
🏢 Compatible Equipment Search Now Scoped to Your Building
- IMPROVEDCurrent Building First — When adding a spare part from within a specific building, the compatible-equipment picker now shows only units from that same building by default.
- IMPROVEDSearch All Buildings Option — A checkbox lets you expand the search to all buildings when needed.
Read more: Parts & inventory guide Equipment management guide
🧭 General Stock Parts Now Navigate Correctly
- IMPROVEDCorrect Profile Navigation — Tapping a spare part created as General Stock now correctly opens that part's full profile page instead of the generic edit sheet.
- IMPROVEDPart Link Fallback — Added a secondary lookup so any inventory item with a linked part record always navigates to the part profile, regardless of how it was originally created.
🖼️ Spare Part Photos in Inventory List
- NEWPhoto Thumbnails — Spare part inventory cards now display a thumbnail photo when one is available.
- IMPROVEDPlaceholder Icon — Parts without a photo show a subtle placeholder icon so the card layout stays consistent.
Read more: Parts & inventory guide
🔒 Fixed Part Profile Mixing Between Units
- FIXEDNo More Profile Hijacking — Fixed a bug where selecting a unit from the compatible-equipment picker could accidentally pull up a part from a different piece of equipment that happened to share the same name. The app now only suggests a link when part numbers or model numbers explicitly confirm a match.
- IMPROVEDCorrect Destination After Linking — After completing a spare-part link, the app always navigates to the correct part on the correct unit.
🔒 Spare Count Isolation Between Units
- IMPROVEDIndependent Counts Per Unit — Fixed spare part counts so that identical part names on different equipment units no longer share or bleed into each other's quantities.
🧭 Lands on the Right Tab After Saving
- IMPROVEDCorrect Tab After Save — Saving a new spare part now correctly redirects to the Spare Parts tab instead of landing on the Filters tab.
Read more: Parts & inventory guide
🤖 AI Spare Parts Matching & Auto-Linking
- NEWSmart Duplicate Prevention — When you scan a spare part's nameplate with the AI scanner, the app now automatically checks for existing parts on the same equipment. If it finds a match, it asks if you'd like to link the new stock to the existing part record rather than creating a confusing duplicate.
- IMPROVEDLink Stock and Photos Instantly — Linking a scanned spare automatically merges its new photos into the existing part's gallery and updates your building's stock levels in one tap.
⚙️ Complete Unit Replacements vs Sub-Parts
- IMPROVEDFlexible Part Associations — When adding a spare part to a piece of equipment, you can now designate whether it is a small sub-part on the unit (like a fan motor) or a complete backup unit for the entire equipment itself (like a spare furnace on hand).
- IMPROVEDSpare Unit Badges — Backup units logged as entire replacements now display a bright green "Spare Unit" tag in equipment and inventory lists.
📍 Spare Parts Storage Locations
- IMPROVEDSpecify Storage Spots — Added an optional "Storage Location" field when creating or editing spare parts. You can enter details like "Shelf C", "Truck 4", or "Warehouse Box 12" to keep track of where physical inventory is stored.
- IMPROVEDLocation Pin Icons — Storage locations are shown with an orange location pin icon directly on the spare parts details sheet and search lists for fast retrieval.
🔍 Better Search & Equipment Selector Modals
- IMPROVEDSearchable Equipment Picker — Replaced flat lists with a searchable, scrollable dropdown modal when selecting compatible equipment for spare parts, making it easy to find units in buildings with hundreds of items.
- IMPROVEDCross-Site Matching — The search and barcode scanner can now match parts or equipment across different buildings, allowing you to link spares to units housed in different properties.
⚙️ Settings Notification Toggles
- NEWAI Scan Notifications Switch — Added a toggle under Settings > Notifications so you can mute or unmute completed AI scanning alerts.
📸 Reliable Image Uploads
- FIXEDNo More Upload Failures — Redesigned how the app uploads photos to our servers. Snap and upload nameplates or site photos seamlessly without experiencing crashes or freezes.
- IMPROVEDBetter Image Quality Flags — Photos are now correctly categorized by file type on our servers, ensuring web and mobile galleries load faster and cleaner.
🔄 Sync Count Clean-up
- IMPROVEDAccurate Item Statuses — Fixed a display mismatch in the database sync screen where deleted or pending items would show incorrect numbers. Counts are now 100% accurate.
- FIXEDNo More Duplicate Images — Eliminated a bug that caused the app to occasionally upload double copies of the same photo when saving tools, parts, or equipment records.
- IMPROVEDInstant Upload Error Alerts — If an image upload fails due to network dropouts or database permissions, the app will show a clear, friendly alert on screen rather than failing silently.
🔗 Direct Links for Public Pages
- IMPROVEDBuilding & Part QR Pages — Web browsers now fully support direct links to building locations and general spare parts. When scanning building QR tags, clients and technicians can instantly see the list of all equipment inside that building.
- IMPROVEDLegacy Link Redirection — If a visitor types or clicks an older web link (like one ending with .html or using mismatching uppercase letters), they are automatically redirected to the correct page instead of seeing a page error.
📄 Legal Agreements Updated
- IMPROVEDEffective Date Update — The Privacy Policy and Terms of Service agreements have been updated to June 12, 2026 across both the mobile app and website.
Read more: AI scanning guide Parts & inventory guide Cloud sync guide
🔄 Smart Sync Deduplication
- IMPROVEDClean Database Upgrades — Cleaned up legacy data leftovers from older versions of the app, ensuring the sync screen doesn't count old image attachments twice.
- IMPROVEDPart Image Sync Polish — Resolved a bug where updating a spare part's profile photo could list the image twice on the database sync dashboard.
🗑️ Smart Image Deletions
- IMPROVEDPermanent Photo Cleanup — Deleting a tool or part image from your device now correctly removes it from our cloud database as well.
- FIXEDPrevent Reappearing Photos — Fixed a synchronization bug where a recently deleted photo could reappear on your device if a background sync ran at the same time.
🐛 Link Navigation Fixes
- IMPROVEDLocal vs Cloud Links — Fixed a crash that occurred when the app attempted to download a cloud-based photo that already existed locally on your device. The app now skips redundant downloads and links the files immediately.
Read more: Cloud sync guide
🔔 Real-Time Push Alerts
- IMPROVEDInstant Share Notifications — Get notified on your device the moment another technician sends you a shared building, equipment, or parts profile.
- IMPROVEDGuest Check-in and Service Alerts — Receive an alert on your phone whenever a vendor checks in at one of your properties or a guest technician submits a service report via QR code.
⚙️ New Notification Preferences
- IMPROVEDCustom Notification Toggles — Added new switches under Settings > Notifications so you can turn guest check-in alerts or technician shares on and off individually.
❄️ Local Refrigerant Weight Splits
- IMPROVEDPounds and Ounces Inputs — Added separate Pounds (Lbs) and Ounces (Oz) inputs on the mobile maintenance log, matching the web dashboard layout.
- IMPROVEDAutomated Cylinder Deductions — Logging refrigerant usage on a maintenance ticket automatically subtracts the exact weight from that building's cylinder inventory.
- IMPROVEDDetailed Service Logs — Automatically writes a clear summary (e.g., "Used 2 lbs 4 oz of R-410A") to the service record history, keeping your records accurate.
Read more: EPA 608 guide
❄️ Refrigerant Stock Overhaul (Mobile & Web)
- IMPROVEDStandardized Inventory Fields — Overhauled refrigerant inventory screens to support standard cylinders and recovery tanks with specialized fields.
- IMPROVEDSerialized Gas Storage — Serializes refrigerant items using structured strings ("Standard - <Gas> - <Unit>" and "Recovery Tank - <Serial> - <Gas> - <Status>") to maintain backward compatibility with the database.
🔍 Compatibility Checks & Badging ("Fits: ...")
- NEWAutomated Matching — Scans all equipment and parts in the building to match refrigerant types against the cylinder gas spec.
- IMPROVEDCompatibility Badges — Displays a prominent "Fits: [Equipment Name]" compatibility badge on refrigerant items in both the mobile app and web inventory lists.
📊 Parts List Stock Badging & Details
- IMPROVEDParts List Quantities — Renders cyan stock badges (e.g. "12 in stock") inside the equipment's parts list, reflecting the total building stock for that specific refrigerant.
- IMPROVEDVisual Spec Indicators — Adds a detailed spec line ("❄️ Refrigerant: <Type>") below parts in the parts list.
🔩 Part Details Direct Integration
- IMPROVEDLinked Inventory Management — Links building cylinders and recovery tanks directly to the part details screen.
- IMPROVEDDirect Quantity Adjustments — Allows technicians to inspect matching cylinders/tanks and tap the plus/minus steppers to update gas weights directly from the part's detail page.
💾 Database Quantity Resolution & Fallbacks
- IMPROVEDSQLite Resolver — Updated the resolvePartSpareCount SQLite resolver to accurately sum the building's gas stock.
- NEWSmart Fallback Matching — Parts named "Refrigerant", "Freon", or "Gas" that lack an explicit refrigerant spec automatically inherit and match the parent equipment's refrigerant nameplate spec.
Read more: EPA 608 guide Parts & inventory guide
🛠️ Tool Building Assignment & Specifications Edit
- IMPROVEDAssigned Building Post-Edit — You can now assign or change a tool's building after it has been created. A new Edit button in the header of the Tool Details page opens a complete editing sheet.
- IMPROVEDInline Dropdown Selector — Replaced building modal dialogs with a fast, scrollable inline dropdown in both the creation and details screens. Search and select from existing buildings as you type, avoiding iOS multi-modal overlap conflicts.
- IMPROVEDFull Specifications Editing — Edit a tool's name, brand, model, serial, notes, or category at any time, auto-saving locally and syncing immediately to Firestore backups.
📱 Safe Area Status Bar Overlap Fixes
- IMPROVEDTop Padding Correction — Increased Android top padding to 56px across the Company Tools list, Add Tool form, and Tool Details/Profile pages.
- IMPROVEDHeader Alignment — Dropped the top headers down to prevent them from being cut off by the status bar, battery display, or camera notch on both Android and iOS devices.
📧 Individual Vendor Check-In Emails & Sync
- IMPROVEDCorporate Filter Bypass — Refactored the cloud notification function to send check-in emails individually. This prevents corporate gateways (like Proofpoint) from quarantining alerts due to multiple recipients in the To field.
- IMPROVEDNotification Sync — Fixed background sync to ensure that changes to building notification email lists on mobile successfully update the public Firestore collections read by the check-in triggers.
Read more: Vendor check-in guide Cloud sync guide
📦 General Spare Parts Building Inventory Integration
- IMPROVEDBidirectional Synchronization — General parts (such as motors, pumps, and contactors) are now fully integrated with the building's inventory under the "Other" category.
- IMPROVEDIn-App Adjustments Auto-Populate — Adjusting the spare count of a general part using the plus/minus buttons on the equipment/parts detail screens automatically creates or updates the matching item in that building's inventory list.
- IMPROVEDInventory Adjustments Sync Back — Modifying the quantity of an item in the "Other" category directly on the building's inventory screen automatically propagates the changes back to all matching parts' spare count in that building.
- IMPROVEDWeb Dashboard & Public Specs Parity — The web dashboard's QR Generator and specification publisher now resolve general parts' spare counts from the building's inventory category "Other" first before falling back to looking up similar parts.
Read more: Parts & inventory guide
🔑 Vendor Check-In Handoff & Ownership Sync
- IMPROVEDAutomatic Check-In Handoff — When claiming a transferred building, the recipient automatically takes full ownership of the existing vendor check-in configuration (buildingCheckins/{checkin_id}) in Firestore.
- IMPROVEDInstant Email Notification Management — The new owner is immediately authorized to edit vendor check-in logs and add or remove notification email addresses from either web or mobile.
- IMPROVEDSave Site Info Fix — Passed ownerUid in the mobile site info save handler to prevent Permission Denied errors under Firestore security rules.
Read more: Vendor check-in guide Cloud sync guide
🔁 Transfer Buildings Between Accounts
- IMPROVEDGenerate a Transfer Code — Open any building's detail page and tap the new 🔁 Transfer button to generate a one-time 6-character alphanumeric code. The code is valid for 48 hours.
- IMPROVEDFull Snapshot Transfer — The transfer packages the complete building: all equipment units, parts, maintenance logs, site info, and building images metadata. Both the sender and the recipient keep a full copy of the building.
- IMPROVEDClaim a Transfer Code — The recipient taps 📥 Claim Building Transfer on the Dashboard, enters the 6-character code, and instantly receives the full building manifest copied into their own account.
- IMPROVEDWeb Dashboard Transfer Button — A purple 🔁 Transfer button now appears in the building header on the web dashboard alongside QR Tags and Delete. Generates the code in-browser — no mobile app needed.
- IMPROVEDWeb Dashboard Claim Pill — A new 📥 Claim — Building Transfer pill appears in the Dashboard stats bar. Any logged-in user can claim a transfer code directly from the web.
- IMPROVEDValidation & Safety — Codes are validated for: already-claimed status, 48-hour expiration, and self-claim prevention (you cannot claim your own code).
- IMPROVEDFirestore Security — Transfer documents are locked to the sender's UID for creation. Any authenticated user can read (the 6-char code is the access token). Only the claimer can flip the claimed flag.
🩺 AI Condition Check — Now Runs in Two Modes
- IMPROVEDWhen you start an AI condition check, you'll now be asked which mode to run — Technician or Homeowner. Pick the one that fits why you're running the check.
- IMPROVEDTechnician Mode generates a full visual inspection report: coil fin condition and cleanliness, refrigerant line insulation, oil staining around fittings and service valves, capacitor and contactor condition, cabinet corrosion, drain pan, and anything else visually abnormal. The output is structured for a service file, a customer report, or detailed maintenance notes.
- IMPROVEDHomeowner Mode gives you plain-English triage — what needs a service call right now, what can wait until the next scheduled visit, and what the AI spotted that isn't actually worth worrying about. No HVAC jargon, no abbreviations. Just clear guidance anyone can act on.
🗓️ AI Now Estimates Unit Age from the Serial Number
- IMPROVEDDuring a condition check, the AI now tries to determine the manufacture year from the serial number — using known date-encoding formats from Lennox, Carrier, Trane, York, Rheem, Goodman, and other major manufacturers.
- IMPROVEDIf the unit is 15 or more years old, the report includes the estimated age and puts it in context — useful when you're weighing repair costs against planning for replacement.
- IMPROVEDIf the AI doesn't recognize the serial format for that brand, it skips the estimate rather than guessing. An age estimate only appears in the report when the AI is confident in the result.
Read more: AI scanning guide
📅 Vendor Check-In Log — Calendar View
- IMPROVEDThe vendor check-in log now has a calendar view. Instead of scrolling through a flat list to find a specific date, you can tap any day on the calendar and instantly see all check-ins and check-outs for that day.
- IMPROVEDEach date on the calendar shows the number of vendor visits that happened on that day — so you can immediately see which days were busy without clicking through empty dates.
🖨️ Print the Vendor Door Sign — Now Available in the App
- IMPROVEDYou can now generate and print the full-page vendor check-in door sign directly from the mobile app. Open any building's info panel and tap "Print Door Sign" to create the same sign that's available on the web dashboard.
- IMPROVEDThe sign prints cleanly on a single full-size sheet — no overflow, no second page. Works exactly the same as the web version.
💡 Text & Readability Overhaul — App & Website
- IMPROVEDDark gray text on dark backgrounds has been replaced with bright, easy-to-read white throughout the app and website. This was a widespread issue affecting the vendor check-in log, calendar dates, labels, and other sections — especially difficult to read on a mobile screen outdoors.
- IMPROVEDAll small labels, dates, subtitles, and secondary text now meet a clear readability standard: white or near-white on dark backgrounds, not gray.
⭐ New: Rate the App — Right from Settings
- IMPROVEDThere's now a dedicated "Rate Equipment Tracker Pro" button in the Settings menu, always visible at the bottom of the main settings list. One tap opens the App Store or Google Play directly to the app's page so you can leave a review.
- IMPROVEDRating prompts also appear naturally during your AI scan trial — after your 3rd and 6th scan, and when your free scans run out.
🐛 Fixed: "App Not Available" Error on iPhone
- IMPROVEDTapping the Rate App button on an iPhone was showing an "App Not Available in Your Country or Region" error from the App Store. The app is available everywhere — the link had the wrong App Store ID baked in. That's been corrected.
- IMPROVEDThe button now opens the correct App Store listing every time with no error.
Read more: Vendor check-in guide
🏢 Vendor Check-In Page — Building Info Now Shows Up
- IMPROVEDYour building's contact details (customer name, contact name, phone number, email, and address) now appear on the public vendor check-in page — even for buildings you set up a long time ago.
- IMPROVEDPreviously, this information never made it to the check-in page at all, even when it was fully filled out in Site Info. That's been fixed.
- IMPROVEDNo action needed for existing buildings — just open any building in the web dashboard and it will automatically update the check-in page with your contact info.
🖨️ Door Sign — Fits on One Page Now
- IMPROVEDThe printable vendor door sign was overflowing onto a second page. It now fits cleanly on a single letter-size sheet when you print it.
- IMPROVEDThe sign still fills the full width of the page and looks the same on screen — the fix only affects how it prints.
Read more: Vendor check-in guide
🚪 Per-Building Vendor Check-In QR Code
- IMPROVEDGenerate Check-In QR — Open any building's Site Info panel and tap GENERATE CHECK-IN QR to create a permanent, stable check-in URL (equipment-tracker.com/checkin/{id}) for that building. The ID is generated once and never changes.
- IMPROVEDFull QR Label Creator — Opens directly in the label creator pre-loaded with the check-in URL and "VENDOR SCAN HERE TO CHECK IN" label text. All label options (size, logo, B&W, PDF/PNG) are fully available.
- IMPROVEDFirestore Sync — The check-in ID and email list are immediately written to Firestore so the web check-in form and email trigger always have the latest configuration.
📧 Vendor Notification Emails
- IMPROVEDPer-Building Email List — Add unlimited email addresses to any building's Site Info. Every vendor check-in triggers an instant notification email to all listed addresses.
- IMPROVEDChip-Style Manager — Type an email and press Enter (or tap + ADD) to add it as a chip. Tap × to remove.
- IMPROVEDRich Email — The notification includes vendor name, company, purpose, timestamp, and a link to the full vendor log.
- IMPROVEDWeb Dashboard Parity — The same email list and check-in URL are editable from the web dashboard Building Info panel.
🔄 Sync & Backup Coverage
- IMPROVEDCloud Pull Fixed — facility_type, checkin_id, and checkin_emails are now correctly restored when pulling building info from cloud backup. Previously these fields were silently dropped.
- IMPROVEDZIP Export/Import — Check-in configuration is included in building ZIP exports and fully restored on import.
- IMPROVEDAuto Firestore Re-Sync — When a cloud pull restores a building with a checkin_id, the notify emails are automatically pushed back to buildingCheckins in Firestore.
Read more: Vendor check-in guide QR creator guide Cloud sync guide
📄 llms.txt — Full Rewrite & Deduplication
- IMPROVEDRemoved three duplicate sections ("Pro Features Overview", "Cloud Backup and Synchronization", "Share and Collaboration Features") that were repeating content already covered in the Pricing section.
- NEWAdded all 14 app screenshots with descriptive captions so AI crawlers and social previews can reference real screen images.
- NEWAdded all 8 demo videos with descriptions so AI models understand what each recording covers.
- IMPROVEDConsolidated Cloud Backup and Team Sharing into a single non-redundant section.
❓ FAQ Section Added to Raw Text
- NEWAdded 8 frequently asked questions directly to llms.txt covering the most common conversion-blocking questions: offline use, multi-technician accounts, data security, what happens on cancellation, full data export, faded nameplate scanning, supported barcode formats, and web dashboard access.
- IMPROVEDAnswers are factual and specific — not marketing copy — so AI assistants can accurately answer prospective user questions about the app.
🤖 Gemini AI Clarifier
- NEWAdded "(Google's AI model)" next to every first mention of Gemini in the raw text so non-technical visitors and AI crawlers understand what the technology is without needing to look it up.
🔗 Social Share Links Fixed on All Pages
- IMPROVEDWhen someone shared the Features page, a blog post, or the Changelog on social media or in a message, the link preview always pointed back to the homepage instead of the actual page being shared.
- FIXEDFixed — every page now shares its correct URL, so links to blog posts, Features, and the Changelog go where they're supposed to.
Read more: AI scanning guide
🎛️ Labeled Action Toolbar — Equipment, Parts & Maintenance
- IMPROVEDQR Code · Share · Export row — Replaced the single unlabeled share icon on every detail page with a clean horizontal toolbar. Each button has a colored icon pill, a bold label, and a short description so the purpose is immediately obvious.
- IMPROVEDQR Code button goes directly to the QR label screen — no menu or modal in the way.
- IMPROVEDShare button opens a focused modal for sending records: Share Info (send data to any app or recipient), Force Push to Cloud.
- IMPROVEDExport button opens a separate modal for file creation: Shareable ZIP, Importable ZIP.
- IMPROVEDSynced button on Equipment — the cloud-sync indicator is now a labeled, tappable button in the toolbar (shown only when the unit has a public QR link). Spins while re-syncing.
- IMPROVEDChanges are universal — identical toolbar applied to Equipment detail, Parts detail, and Maintenance detail pages.
🔄 Guest Log Approval Auto-Syncs Public QR Page
- IMPROVEDWhen you approve a guest service submission from your Transfer Inbox, the public QR web page for that equipment unit is automatically updated to include the new maintenance record — full technician name, date, type, and description.
- IMPROVEDPreviously, approval only appended a minimal 4-field entry. Now the entire equipment record, all parts, and all maintenance logs are re-pushed to Firestore in one shot.
✏️ UX Label Polish
- IMPROVED"Send to User" renamed to "Share Info" across all share modals — the action is not limited to app users and the old label implied it was.
Read more: QR creator guide Parts & inventory guide Maintenance logs guide
📷 QR Link Scanner Fix — Equipment Detail Page
- IMPROVEDURL QR Code Matching — Fixed the QR/barcode scanner on the Equipment detail page so scanning an equipment-tracker.com/view/{id} link QR code now correctly identifies and navigates to the matching equipment record.
Read more: QR creator guide Equipment management guide
🔩 Parts Selection in Guest Maintenance Form
- IMPROVEDParts Dropdown — The guest technician QR service form now shows a dropdown of the equipment's known parts. Techs can select a part directly instead of typing it out, or choose "Other" and type in a custom part name if it's not listed.
🔔 Guest Report Inbox Notification Fix
- IMPROVEDInbox Badge Count — Guest technician maintenance submissions now correctly increment the unread badge on the Settings inbox button so you always know when a new guest report is waiting for review.
📷 QR Link Scanner Fix
- IMPROVEDLink QR Code Matching — Fixed the home screen Scan Barcode / QR button so scanning an equipment-tracker.com/view/{id} link QR code now correctly identifies the equipment and navigates directly to its record. Previously the scanner returned "No Match Found" for all link-format QR codes.
Read more: QR creator guide Parts & inventory guide Maintenance logs guide
🏷️ On-Device PNG Label Export
- NEWAdded native PNG QR tag exports for Brady Express Labels, Zebra Link-OS, and Dymo Connect.
- IMPROVEDSave to Camera Roll — Tap SAVE IMAGE to write the label PNG directly to your camera roll for printing from any label maker app.
- IMPROVEDShare Anywhere — Tap SHARE QR IMAGE to share the full branded label PNG to any app via the standard iOS/Android share sheet.
⚙️ QR Creator Settings Persistence
- IMPROVEDRemembered Settings — Label size, export format (PDF or PNG), logo option, Black & White mode, and label text toggle are now saved between sessions and restored automatically.
🖨️ Black & White Mode Fix
- IMPROVEDGrayscale Logo in Preview — When Black & White mode is enabled, the company logo now correctly renders in grayscale in both the on-screen preview and the exported label image.
Read more: QR creator guide
📦 Multi-Size Spare Parts Stock Tracking
- IMPROVEDFilter & Belt Inventory Support — Added support for multi-size consumables. The app handles different dimensions and categories automatically to find matching stock.
- IMPROVEDAutomatic Stock Rows — Adding stock for a part size that is not yet in the building inventory list automatically creates it and syncs it to all devices.
- IMPROVEDGeneral Part Matching — Non-filter/belt parts search and link to matching general inventory items using model numbers, part numbers, or names, falling back to manual spare counts if no matches exist.
📊 Missing Spares & Stock Audit Report
- IMPROVEDInventory Deficiency Auditing — Added a new "Missing Spares" tab to the web reports panel. Instantly scans your entire fleet and lists all parts that are currently out of stock (0 spares on hand or in building inventory).
- IMPROVEDDetails & Context Summary — Shows specific part numbers, model numbers, exact missing sizes, parent equipment names, and physical location references for simple purchase order planning.
🌐 Web Dashboard & Public View Badges
- IMPROVEDSpares Visual Indicators — Integrated spare counts and on-hand indicators into the web building dashboard lists, equipment spec sheets, and public-facing scan portals.
Read more: Parts & inventory guide Reports guide Web dashboard guide
🚫 Out of Service (OOS) Toggle & Details
- IMPROVEDOOS Toggle Switch — Added an "Out of Service" toggle switch to the equipment form. When enabled, a new OOS reason input field is shown to detail the status (e.g. Compressor failure, parts pending).
- IMPROVEDdowntime Warning Banner — Deactivated units show prominent red visual warning indicators, including a red border on listings, red badges in lists, and detailed spec sheet warning labels.
- IMPROVEDGuest Scanned QR Warnings — Scan landing pages viewed by guest technicians now display a highlighted red alert card warning that the unit is currently decommissioned or offline, together with the OOS reason details.
- IMPROVEDPropagated Everywhere — OOS status and reasons carry over across PDF checklists, CSV summaries, electrical schedules, ZIP backups, peer-to-peer data transfers, and plain-text vendor exports.
📍 Structured Floor & Unit Location Fields
- IMPROVEDDedicated Location Attributes — Split generic location strings into distinct Floor and Unit text input fields inside mobile and web dashboards for easier organization.
- IMPROVEDGlobal PDF & CSV Integration — Standardized unified location formats across reports using the format Floor · Unit · Room, and added dedicated columns to CSV exports.
- NEWSmart Location Merging — Integrated floor and unit field checks to keep building data clean and synced.
🐞 Form Saving Fixes
- IMPROVEDImproved Form Saving — Fixed a bug where minor changes to specs or custom fields would trigger false "Unsaved Changes" alerts.
- IMPROVEDSecure Exit Saves — Prevents double-save attempts when backing out of screens, protecting against file-saving issues or overwriting details.
🔧 Guest Technician Service Submissions
- IMPROVEDQR-Linked Service Form — Any technician who scans a Link Mode QR code on a piece of equipment can now tap "Log Service / Repair" directly on the public specification page. No account login or app installation required.
- IMPROVEDFull Service Form — The guest submission captures Service Date, Service Type (PM, Repair, Inspection, Install, Emergency), Technician Name, Company/Vendor, Work Description, Parts Used, and optional Before & After service photos.
- IMPROVEDSecure Inbox Delivery — Guest submissions are stored in your secure Firestore inbox and appear in your Transfer Inbox in real-time, tagged as guest records for your review before importing.
- IMPROVEDBefore & After Photo Upload — Guest techs can attach before and after service photos (up to 5 MB each) directly from their phone browser.
📊 Maintenance Summary PDF Revamp
- IMPROVEDDate Range Selector — Added custom Start Date and End Date pickers to the Maintenance Summary report wizard. Only logs within the selected window appear in the generated PDF, and the date range is printed at the top of the report.
- IMPROVEDBefore & After Photo Proofs — Generated PDF reports now embed up to three before and three after service photos per log entry in a clean grid, giving property managers and owners clear visual proof of the work done.
- IMPROVEDRevamped Layout — Redesigned the overall maintenance summary PDF structure for improved readability and professional presentation.
🏢 Separate Vendor / Technician Fields
- IMPROVEDVendor Field — Separated the single Technician field into distinct Technician Name and Vendor (contracting company) fields across the maintenance log form, service lists, invoice grids, and generated PDF reports.
- IMPROVEDCarried Everywhere — The vendor field is included in peer-to-peer equipment pushes, incoming share payloads, guest submissions, ZIP exports, ZIP imports, and cloud backup/restore operations.
🔌 Public View & Location Banners
- IMPROVEDSite Location Header — Public QR specification pages now show a prominent Building Name and Address banner at the top so field technicians know exactly which physical unit they are viewing.
- IMPROVEDScroll Lock Fixes — Prevented double-scroll behaviors and locked background pages when viewing galleries and specifications on mobile browsers.
🔔 Real-Time Alerts
- IMPROVEDCloud Sync & Guest Alerts — Added real-time notification popups to guide you during guest trial balances and cloud data synchronization actions.
Read more: Vendor check-in guide EPA 608 guide Maintenance logs guide
🔒 Improved Sharing & Push Reliability
- IMPROVEDReliable Data Sharing & Import — Substantially improved the reliability of sending (user push) and receiving (incoming pushes) data. Fixed issues where image downloads could stall, and added smart duplication checks so building photos, equipment, parts, and maintenance logs never duplicate when re-importing.
- IMPROVEDSharing Linked Equipment — When you share a piece of equipment, any linked units (like its furnace) are now sent automatically. The receiver gets both pieces of equipment, and their relationships are perfectly preserved.
- IMPROVEDComplete Sharing — Fixed an issue where some equipment details were left out. Every single spec, warranty date, parts listing, custom field, and maintenance history detail now carries over seamlessly.
🖼️ Blank Thumbnail Fix
- IMPROVEDBlank Thumbnail Fix — Fixed a bug where high-resolution photos would sometimes show as blank square thumbnails in the gallery. All thumbnails now load instantly and reliably.
📸 Resilient Smart Scanning & Polite Alerts
- IMPROVEDAutomatic Scanning Retries — If the smart scanner has a temporary cellular glitch, it automatically retries in the background so scans are much more reliable.
- IMPROVEDKeep Working While Scanning — You can now start a scan and immediately navigate away to continue working. Scans finish in the background, auto-save, and notify you when complete.
- IMPROVEDPolite & Friendly Error Messages — Scan failures now show friendly, reassuring explanations that politely apologize and explain the issue instead of showing technical errors.
Read more: AI scanning guide
May 2026 6 updates
🏷️ Branded QR Code Creator & Layout Clean-up
- IMPROVEDGenerate professional, beautifully formatted, vector-sharp vertical asset tags for any piece of HVAC or mechanical equipment.
- IMPROVEDPro users with a company logo uploaded will see their own logo displayed prominently on every tag. The Equipment Tracker logo appears as a fallback for accounts without one.
- IMPROVEDCompletely removed redundant asset titles (e.g. AC Condenser) and subtitles (e.g. EQUIPMENT ASSET) to maximize scanning contrast and clean up the label design. Cleared space is used for a larger, higher-density QR code.
📱 Three Distinct QR Formats
- IMPROVEDLink Mode — generates a public URL QR code (equipment-tracker.com/view/ID). Anyone can scan with a stock camera to view a read-only equipment page with full specs and maintenance history. No app required.
- IMPROVEDText Mode — encodes a clean, structured plain-text spec block. Scannable with any camera app; lets technicians copy-paste model and serial numbers directly into service tickets.
- IMPROVEDJSON Mode (App-to-App only) — 100% Offline Pre-Fills: New JSON Mode lets you auto-detect and pre-fill entire unit specs from a QR code without ever connecting to the internet.
⚡ 100% Offline Pre-Fills
- NEW100% Offline Pre-Fills: New JSON Mode lets you auto-detect and pre-fill entire unit specs from a QR code without ever connecting to the internet.
- NEWNatively integrated across both the Dashboard Camera Scanner and the Browse search scanner.
Read more: QR creator guide
📸 10 Free AI Scan Trial
- IMPROVEDUpgraded the free-tier trial allowance from 3 to 10 AI scans. This gives you plenty of scans to thoroughly evaluate the AI Nameplate Scanner, AI Condition Assessment, and Invoice Scanner before deciding to go Pro.
- IMPROVEDCustom, highly engaging scan-remaining countdown dialogs that guide you along your trial journey.
🏢 Pricing Clarity Alignment
- IMPROVEDAligned the website pricing clarity banner to present the free-scans trial under the Always Free section, keeping the Pro section dedicated exclusively to unlimited premium tools.
Read more: AI scanning guide
📷 Smart Barcode & QR Matching
- IMPROVEDHigh-accuracy serial matching — the built-in scanner is now much more robust when searching for equipment, matching your records even if the scanned barcode has missing or extra manufacturer characters.
- IMPROVEDBi-directional matching — space-separated serial numbers are now identified instantly, allowing partial scans to successfully match the full recorded serial.
- IMPROVEDFuzzy scan safety — built-in fuzzy matching automatically corrects for bad lighting, minor scratches, or incomplete barcode reads.
🏠 Home Screen Cleanup
- IMPROVEDRemoved the dynamic stats card panel from the top of the home screen to declutter your workspace and keep quick actions front and center.
- IMPROVEDYour overall database metrics remain beautifully presented and accessible under the main Settings menu.
Read more: Barcode scanner guide QR creator guide
🔒 Cloud-Linked Guest Profiles
- IMPROVEDYour profile progress and guest trial scan balance are now securely backed up to your account in the cloud.
- IMPROVEDResetting your phone or logging in on a new device will safely restore your trial state automatically.
📸 AI Scanning Count Transparency
- IMPROVEDAll smart scanning services (Nameplate Specs, Condition Assessment, Invoice Scanning) now display a clear popup notification upon successful scan indicating exactly how many scans you have remaining.
🔧 Sharing & Reporting Optimizations
- FIXEDFixed occasional loading glitches on location sharing modals and export sheets for a much smoother user experience.
Read more: AI scanning guide Parts & inventory guide Reports guide
⚡ Interruption-Proof Share Imports
- IMPROVEDTechnician transfers and data data imports are now fully restartable — if your connection drops or the app is closed mid-import, the share remains safely in your incoming box for easy resumption.
- NEWSmart deduplication automatically skips already-merged parts and logs upon resumption to protect your database.
🏢 Simplified PDF Branding
- IMPROVEDClean logo suppression — simply leave the Company Name field blank in Settings to omit the text header on generated PDF reports if your company name is already inside your logo.
- IMPROVEDRemoved the need for custom character workarounds to clear out text fields.
Read more: Reports guide
✨ New Interactive Onboarding Experience
- IMPROVEDBrand-new "Choose Your Profile" character selector at onboarding start — choose Homeowner, Property Manager, or Technician for a fully personalized walkthrough.
- IMPROVEDRole-specific onboarding slides with simulated, interactive widgets — tap to experience AI scanning, invoice digitizing, and maintenance history before ever using the app.
- IMPROVEDCompletely rebuilt walkthrough overlay now renders at the true screen center regardless of scroll position.
- IMPROVEDReplay Walkthrough button added to the main Settings menu for easy access.
🏠 Home Screen Layout & Redesign
- IMPROVEDBetter organization — home screen is now grouped into clear, logical sections: AI Scanner & Quick Actions, Manual & Archive Actions, My Equipment, AI Tools & Reports.
- IMPROVEDTactile feedback — satisfying spring-press button scale animations when selecting actions.
- IMPROVEDSlide-up bottom sheet — replaced standard dialogs with a premium bottom sheet: Start Fresh, AI Nameplate Scan, Scan Barcode / QR, or Import from ZIP.
📷 Free Barcode & QR Scanner
- IMPROVEDNative live-camera barcode scanner now available to all users — no Pro subscription required.
- IMPROVEDReads QR Code, Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-A, UPC-E, Data Matrix, PDF417, ITF-14, Codabar, and Aztec.
- IMPROVEDSearches your equipment database by serial number, model number, asset tag, and equipment ID.
- IMPROVEDDeep-link support — parses equipmenttracker:// and /equipment/{id} URL patterns from QR codes.
- NEWSmart no-match flow — if nothing is found, prompts you to create new equipment with the scanned code pre-filled as the asset tag.
- IMPROVEDFlash toggle and branded scan-frame reticle with corner markers.
🤖 AI Smart Scanner Pre-fill (Pro)
- IMPROVEDWhen an AI nameplate scan finds no existing match, offers to create a new equipment record with all 20+ extracted specs pre-filled and the nameplate photo auto-attached.
- IMPROVEDEquipment name auto-generated as "{Manufacturer} {Model}" when scanning a new unit.
- NEWNew Equipment form now accepts URL query parameters for pre-filling manufacturer, model, serial, notes, specs, and photos from any workflow.
📰 Website & Blog
- NEWNew blog post published: "Tactile Home Screen, Free Barcode Scanner & AI Nameplate Prefill".
- IMPROVEDLanding page feature grid, technician tab, meta description, and keywords updated to reflect the new free scanner.
Read more: Barcode scanner guide QR creator guide AI scanning guide
April 2026 2 updates
🤖 AI Scanning Engine
- IMPROVEDCloud-powered AI Nameplate Scanner — snap a photo of any equipment nameplate and Gemini AI extracts manufacturer, model, serial, electrical specs, refrigerant type, filter sizes, belt numbers, manufacture date, and 20+ additional fields automatically
- NEWAI Condition Assessment — point your camera at any unit or use photos already in the equipment record for an instant inspection report with Good / Fair / Poor severity rating, detected issues (coil fouling, corrosion, oil staining, insulation damage), and prioritized action items
- IMPROVEDInvoice & Work Order Scanner — photograph any service receipt or invoice; AI extracts date, technician, service type, parts used, labor hours, and total cost, then auto-creates a complete maintenance log entry with one tap
- IMPROVEDOhm's Law Fallback — when only wattage is present on a nameplate, amps are calculated automatically using the detected voltage
- IMPROVEDExponential Backoff — automatic retry logic with rate-limit detection for reliable scanning under high usage
- IMPROVEDFree users receive 10 AI scan trial credits; upgrade to Pro for unlimited scans
📊 Reports & Analytics
- IMPROVED8 Professional Report Types at launch: Filter Sizes, Belt Sizes, Refrigerant Inventory, Equipment Age & Replacement Forecast, Electrical Load Schedule, Maintenance Checklist, Data Quality Audit, and Complete Summary
- IMPROVEDAll Pro reports exportable as branded PDFs with your company logo, name, and contact info on every page
- IMPROVEDSupply Analysis Integration — reports cross-reference installed consumables vs. on-hand inventory with order quantity calculations
- NEWSmart Data Normalization — refrigerant, voltage, phase, belt size, and dimension values normalized before aggregation for accurate reporting
- IMPROVEDFire Damper Report added as an additional specialized report type
- IMPROVEDInvoice Report added for financial summaries
📡 Peer-to-Peer Equipment Sharing
- IMPROVEDPush to Technician — send complete equipment packages directly to teammates via email, including full specs, photos, parts, and maintenance history
- IMPROVEDMulti-recipient support — send to multiple technicians at once with a recent email history dropdown
- IMPROVEDIncoming Share Inbox — real-time notifications for incoming transfers with "Review Later" option and persistent inbox in Settings
- IMPROVEDSelective Share Picker — toggle which data categories (Location, Tech Specs, Images, Notes) to include in each export
- IMPROVEDShare options include Push to Tech, Share Data, Shareable ZIP, and Importable ZIP
🏢 Portfolio Management
- IMPROVEDUnlimited buildings and equipment organized by building, location, and sub-component
- IMPROVEDMulti-image galleries with unlimited photos per equipment and part, with full-screen pinch-to-zoom viewer
- IMPROVEDEquipment Linking — bi-directional linking between related equipment units
- IMPROVEDReplacement Parts Tracking — link sub-components with their own photo galleries and spec sheets
- IMPROVEDPaginated equipment lists for buildings with hundreds of units
- IMPROVEDSearch & Sort — filter equipment by manufacturer, model, or serial across all buildings
📦 Inventory Management
- IMPROVEDSite Inventory System — full inventory management for filters, belts, and consumable stock per building
- IMPROVEDQuantity Steppers — intuitive increment/decrement controls for stock counts
- IMPROVEDOrphaned Stock Detection — identifies inventory items that don't match any installed equipment
🧊 EPA §608 Refrigerant Compliance
- IMPROVEDEvery maintenance log includes a built-in refrigerant recovery/recharge section
- IMPROVEDEnter system charge and amount added — the app instantly calculates the annual leak rate and flags EPA Section 608 violations on systems ≥15 lbs
- IMPROVEDRefrigerant data stored permanently with the service record for full audit trail
☁️ Cloud & Sync
- NEWReal-time Firebase cloud sync with Smart Sync intelligence — detects mismatches, resolves conflicts, and keeps every device current automatically
- NEWSmart Sync Triage — review cloud vs. device discrepancies image-by-image before resolving
- IMPROVEDFull System Restore — rebuild your entire local database from your Firebase backup with a single tap
- IMPROVEDOTA Updates — receive architecture patches without reinstalling from the Play Store or App Store
🌐 Web Dashboard
- IMPROVEDFull desktop web dashboard available at equipment-tracker.com — browse all buildings, view equipment details, generate reports, and dispatch equipment from any browser
- IMPROVEDIncluded with every Pro subscription at no extra cost
🔒 Account & Security
- IMPROVEDFirebase Authentication with secure email/password login
- IMPROVEDFull Account Deletion — GDPR-compliant data purge across Firestore, Storage, and pending shares
- IMPROVEDRevenueCat integration for monthly and yearly Pro subscriptions via Google Play Billing and Apple App Store
- IMPROVED7-day free trial included with all Pro plans
- IMPROVEDRestore Purchases — recover Pro access after reinstall or device change
Read more: EPA 608 guide AI scanning guide Parts & inventory guide
🏗️ Foundation
- IMPROVEDCore app architecture built on Expo SDK 54 with React Native
- IMPROVEDSQLite local database with relational schema for equipment, parts, images, and maintenance logs
- IMPROVEDFirebase Firestore cloud sync and Firebase Storage for image hosting
- IMPROVEDMigration from Google Cloud Vision to Gemini AI for nameplate extraction
- IMPROVEDCore CRUD operations for buildings, equipment, and parts established