العربية
See pricing
العربية
See pricing

Changelog

What shipped, when, and what it means for your business.

New1.15.0

Every WhatsApp message in one place

WhatsApp messages

  • One list. Resources → WhatsApp messages holds every message the app writes, and every screen that sends one uses your wording.
  • A real preview. Tap details such as Customer name or Total to add them, and see the message as a WhatsApp chat or a lock-screen notification.
  • Arabic and English. Each customer gets their own language’s version.
  • A discount code fills in only while the checkout would accept it, and empty details like Remaining: 0 are left out.
  • Earlier versions are kept, with how many people each offer reached and how many ordered.
  • Write with AI. Copy a ready brief into ChatGPT, Claude or Gemini for free, or on Pro connect your shop’s own key and use Write it for me.
  • One send sheet everywhere: edit the message for this person, or make it your standard.

Advisor

  • Shop health is a flower: five glass pills, one per area. Tap one to focus on that area.
  • Made for wide screens: the flower and today’s advice stay beside the list.

Orders

  • On a phone the toolbar is one line: search and Filters side by side, with the sort inside Filters.
  • The table’s head stays pinned on iPhone while you scroll.

Look

  • Coloured buttons are tinted glass, with an edge light in their own colour.
  • The light theme’s cards and table headers are more even.

Offline

  • An order typed on two devices during an outage is saved once; the copy waits as Possible duplicate.
  • Changing a saved order is refused offline instead of being lost.
  • The app opens at once and signs itself back in when the connection returns.

Fixed

  • Pinned bars no longer bounce on iPhone.
  • The Advisor no longer flashes text when you switch areas.
  • Small colour and edge-light fixes.
New1.14.0

Settings that fit you, not just the shop

Three pages instead of one long list

The Control Center (tap your name in the header) used to be one grid. It ran past the bottom of a phone’s screen, and every new setting made it longer. Now it has three pages, Display, Workspace and Accessibility, and it opens on the page you used last.

Every setting belongs to the device, so the shop computer and your phone can be set up differently.

Accessibility

  • Text size: Small, Default, Large or Extra large. It scales the text and the controls around it.
  • Bold text: heavier type everywhere.
  • Contrast: High darkens the secondary text and strengthens the edges.
  • Motion: Auto follows your device’s setting. Reduced turns off the springs and slides in this app only.
  • Transparency: Reduced makes the glass panels solid, so text never sits over a busy background.
  • Status colors: Color-blind safe swaps green, amber and red for blue, yellow and orange everywhere a status is colored.

Light effects: Full, Soft or Off

The glow that follows your pointer across buttons, menus and tabs could only be turned off with Performance mode, and that also removes the glass. Light effects is its own setting now. Soft dims the glow to under half. Off removes it completely and leaves the glass as it is.

Improved

  • Clock: choose a 12-hour or 24-hour clock for the header.
  • Open on sign-in: choose which screen the app opens on after you sign in. It is remembered for each account on this device, and only screens your role can open are offered.

Fixed

  • The draft tabs above a new order matched their card again. The New order and customer tabs in Add Order used to look darker than the card below them. The difference was obvious in Performance mode and slight otherwise. They now match in both themes.
Improved1.14.2

Hover that glides, and order tabs that sit straight

A small update. Nothing new to learn.

Smoother

  • Hover glides. In the navigation menu, the highlight now slides from one section to the next, even across a group heading, instead of disappearing and popping back. Moving between two buttons, one light fades as the next rises.
  • Order tabs on a phone. In Add Order the tabs no longer look pushed to one side, and the + for a new order stays visible however long a customer’s name is.

Older phones and computers

  • Works properly on older devices. On iPhones stuck on iOS 15 (6s, 7, first SE), Windows 7 computers and older Android phones, some panels turned see-through, and some sheets ran off the bottom of the screen. Importing contacts could also fail. All of these are fixed. A few decorative touches look simpler there.

Fixed

  • The day shows it has been opened. A start-of-day count with no differences used to leave no trace, so the drawer could not say the day was open and a colleague could count again. Now the button reads Day opened with the time, and each branch is opened once a day.
  • An expense saved once. On Home’s daily drawer, tapping Record Expense twice quickly used to record the expense twice. It now saves once.
  • The overdraft warning names the right balance. It now matches the balance shown next to the safe you picked.
  • Moving cash waits for fresh figures. Right after opening the app, Move cash to main safe and Record Expense ask you to wait a moment until the live balances arrive, so they never move an old amount.
Improved1.14.1

Smoother, and steadier when the connection is not

Nothing new to learn in this update. The app should simply feel smoother, and a bad connection should never cost you an order.

Smoother

  • Hovering over buttons is lighter. The light that follows your pointer used to make the browser re-measure the page up to 25 times as you swept across a toolbar. It now does it 4 times.
  • Switching sections is quicker. Money, order dates and chart labels are formatted once and reused, instead of being set up again for every figure on screen.

Offline, beyond the easy case

  • “Online” means the app can reach your data, not just that Wi-Fi is on. On Wi-Fi with no internet behind it, the app used to behave as though it were online. After six seconds without a connection it now switches to offline mode and queues the order safely.
  • A save caught by a dropped connection tells you. The screen reads Connection lost — keep this page open. The save will finish when the connection returns., and your browser warns you before the tab closes.
  • Two tabs, one send. With the app open in two tabs, queued orders are sent once, and both tabs clear their count together.
  • No more waiting on the splash screen. Signing in with no connection opens the app from your saved profile.

Fixed

  • A Saved message no longer covers the buttons of the next dialog. While a dialog is open, messages appear at the top of the screen.
Improved1.13.0

The Advisor fixes things where you are

Fix it without leaving the Dashboard

The Advisor’s review buttons (Fix the prices, Review them, Review the cash, Review the orders, See the returns) used to send you to another section, and you lost your place in the list. Now they open a sheet over the Advisor that lists every item with its own fix. For a cost or a price, type it and press Save on that row. The sheet counts down as you go (3 of 7 left to fix) and ends with All fixed. Nice work.

“Make an offer” starts the discount

This button used to copy a WhatsApp message and nothing else. Customers heard about a discount the app knew nothing about, and the order screen still charged full price.

Now it sets a real offer on the item. Pick a rate and a length, or choose Custom to set Percent or Amount off and the date it Ends on. The discount appears straight away everywhere the app shows or charges a price. Telling customers is the next step, Tell past buyers, and it opens the usual message preview.

New cards

  • A late supply order, or one that will land after the item has run out, with Open the supply order.
  • Customers who buy one item often buy another. It names the customers who bought the first recently without the second, with Suggest it to them.
  • A slow week, with Message customers due back.
  • Your best customers are overdue, with Send a personal message.

Easier to work through

The Advisor is now the Dashboard’s second tab. Every card has a short What to do list. Start with #1 takes you to the most important card, and Check again runs the numbers again. Mark a card Mark as done, or put it off with Remind me next week. A card you have started shows In progress.

Improved

  • Reorder amounts cover the wait for delivery. The suggested quantity lasts after the goods arrive. The card says how long delivery usually takes and where that figure comes from.
  • When customers buy is a weekly heat map. Tap a day or an hour to keep it on screen, and use Show the whole week to go back.
  • Occasions on the home screen. Upcoming customer birthdays and anniversaries are listed on the command center, with All occasions to see them all.
  • If something goes wrong, the Advisor says so. It shows The Advisor could not read your data with Try again, instead of an empty tab. If one part fails, the rest still shows.

Fixed

  • How soon customers come back counts several orders on the same day as one visit. Two orders in an afternoon used to count as a return after 0 days, which made almost everyone look late.
  • The missing phone numbers card counted every customer as a problem. It now counts the last 90 days of orders with no number, and skips quick sales, which never ask for one.
New1.12.0

Customer occasions and loyalty points

The days your customers care about

Customers has a new Occasions view, and every profile a new Occasions tab: birthdays, anniversaries and any other date a customer tells you, for them or for the people they buy for. The view lists what is coming in the next 7, 14, 21 or 60 days, with Send offer and New order on each row.

Each occasion remembers where the outreach stands — Not contacted, Offer sent, Interested, Ordered, Not interested — for this year, so last year’s answer never hides this year’s date.

Reminded before it matters

Every morning at 9:00 the app reminds you — in the bell and by push — 21, 14 and 7 days before an occasion nobody has contacted yet, or one marked Interested. The Dashboard’s Advisor lists them too, under Upcoming occasions, and Send occasion offers opens the same message preview as every other list: sending marks each occasion Offer sent.

Customers can add their own

From a profile, Create link makes a private link to your online store — share it on WhatsApp, as a QR code or on paper. The customer adds their dates without signing in; a date that is already saved is not added twice. Signed-in customers also find My occasions in their account on the store.

Loyalty points

Customers earn points on every order, climb tiers from Bronze to Platinum as their lifetime spend grows, and see their balance in their store account. On Pro you can redeem points as a discount while taking an order, move them into the customer’s wallet, or adjust them with a reason. A returned order gives its points back by itself.

You decide which orders count: all orders ever, from today, or from a date you pick — a past date counts what customers already bought since then, and a future date starts the programme on that day.

Customers also has a Loyalty view: how many points are outstanding and what they are worth, how many Members you have, who Can redeem now, and how many points were redeemed. Each customer’s row shows their tier, points, how far they are from the next tier and when they last ordered, with Redeem to wallet and WhatsApp beside it. A customer outside the programme is still listed — marked frozen, never hidden.

Off until you turn them on

Both programmes start switched off. Turn them on in Resources → General Settings and choose who takes part — everyone, some groups of customers, or only those you enrol one by one. Occasions and point redemption are part of Pro.

New1.11.0

An Advisor for the Dashboard

A ranked to-do list, drawn from your own numbers

The Dashboard’s new Advisor tab reads the shop’s orders, stock, customers, cash and couriers — on the device, nothing sent anywhere — and turns them into Today’s advice: a short list of what is worth doing next, worst first.

A Shop health score out of 100 is drawn as a ring split into five areas — Sales, Cash, Stock, Customers, Delivery. Tap a slice and the list below narrows to that one area.

Each card says what is wrong in plain words, what it is worth about, a Why? fold with the figures behind it, and one button that does the fix: reorder stock that is running low, offer a discount on stock that is not moving, set a limit on staff discounts, turn on a guard against a below-cost sale, remind customers who owe money, open orders stuck in one stage, review a jump in spending, or win back customers who have gone quiet — and, on Pro, ask a courier to pay out cash it is holding, or switch a courier with high returns. A card can be snoozed to tomorrow or marked not relevant, and both are undoable.

Every message is previewed before it sends

Any WhatsApp message the Advisor offers now opens a preview first, never a blind send: an editable template, one row per recipient to include or skip, and the exact message for that person, still editable, before anything goes out. Sending copies the message and opens WhatsApp — the same flow used everywhere else in the app — never a pre-filled link.

Your customers, grouped by how they buy

A new Your customers band sorts the shop’s customers into Best, Regular, Slipping, Gone quiet and New, each with its own suggested next step. Who to message today turns four of those into lists built fresh from your orders: a thank-you after an order, a win-back for customers going quiet, a reorder reminder, and a payment reminder — each showing how many are ready now, and each going through the same preview before anything is sent. Nothing goes out by itself.

A shop with too little history yet sees I’m still learning your shop instead of a list, along with the setup steps that sharpen it, and Everything I checked lists every check the Advisor ran, so a clean shop reads as an answer rather than silence.

No AI, no server

Every finding comes from plain rules run on the shop’s own numbers, shown in full behind its own Why? fold. Nothing the Advisor reads or drafts leaves the device it runs on.

New1.10.1

Easy setup, and your contacts in one go

Set up your shop

A new shop used to open Resources and find every tool at once, with nothing saying which ones it needed before it could take an order. Easy setup now walks you through the five essentials, one step at a time:

  1. Name your shop
  2. Add your first branch
  3. How customers pay
  4. Order stages — Use the standard stages or Design my own
  5. Add what you sell

Shipping and delivery is an optional sixth step. Each step says what the thing is for, and offers Save and continue, Skip for now and Finish later.

Some steps are really done inside a tool, like adding products or designing your own stages. For those, Show me folds the wizard into a small pill at the bottom of the screen (Tap to continue, or Save here to continue). You do the work in the real screen, then carry on from where you stopped.

The wizard opens by itself once per session, for an administrator, while the shop has no name or no branch. After that it lives on the Easy setup button in the Resources head, with a count of the steps left. The last screen, Your shop is ready, points to the next three things: Take your first order, Invite your team and Open your online store.

Your customers, all at once

Bringing a shop’s existing customers into the app used to mean typing them in one by one. Import contacts in Customers takes a contacts file instead: vCard (.vcf) from iPhone, Android, Google or Outlook — or a spreadsheet with a name and a phone column. Getting the file from a phone explains how to get that file off the phone.

Before anything is saved, the dialog lists who will be added. Nobody already in the app is changed. Anything that will not be added is listed with the reason:

  • Already customers, left as they are:
  • No usable phone number, skipped:
  • A number with no name, skipped:
  • Same number twice in the file, added once:

Add them all as wholesale customers sets the account type for the whole file.

A required field says why

Forms used to take a press of Save and then answer with a message somewhere else on the screen, often a toast, while the field that was wrong said nothing. A required field now carries the word Required and its reason, before you press anything. For example:

  • The phone number is the customer’s account — one number, one customer.
  • Printed on every invoice, receipt and customer message.

When a form refuses, the message appears under the field itself, and the cursor goes to the first field that needs you.

Improved

  • Order stages read as stages. A status’s stage badge could show the raw word processing in the Arabic app. The stages are now Processing, Ready / In transit, Delivered / Settled and Returned / Cancelled.
  • Counts agree with themselves: 1 live offer, not 1 live offers.
  • Resources fits a phone. A product card’s badges wrap inside the card instead of running past its edge. The product editor’s tabs stay on one scrolling row. Its bulk actions put Set prices first, and fold the rest under Actions.

Fixed

  • iPhone: scrolling a list no longer presses the button your thumb started on. A touch that moves is now treated as a scroll, and nothing is pressed.
New1.9.0

Search or Ask

One box that grows

The search button at the top of the screen now looks like the search box itself, and reads Search or Ask. Press it and the button grows into the box. Type and the box opens into the results. Close it and it shrinks back into the button it came from. It moves as one piece, so you can see where it went.

  • Folded results can be brought back with Show results.
  • Tab or → accepts the suggested ending of what you are typing.
  • ↓ opens the results.

Speak instead of typing

Where the browser supports it, a microphone button sits in the box (Dictate). While it listens, the button turns into Stop dictation and the box says Listening….

  • The first Esc stops dictation, and the second closes search.
  • If nothing is heard, it tells you (Nothing was heard. Tap the microphone to try again.), where before it sat listening forever.
  • It works the second time too. Before, dictation worked once, and you had to reload the page to use it again.

The microphone only appears where the browser can use it. There is no dead button on browsers that cannot.

Improved

  • Search no longer darkens and blurs the whole app behind it. On busy screens that cost frames even in performance mode. Now only the open results sheet has a light frosting.
  • In performance mode or with Reduced Motion, search opens and closes instantly, with no animation.
Improved1.8.0

Buttons that answer your hand

Light follows the pointer

Move over a button and its edge catches the light on the side your pointer is on. The buttons right beside it pick up a little of that light too. Hovering can dim a button’s face, but it never dims the edge. Before this, hovering in the light theme washed out the very outline that shows where a button ends.

A press you can feel

A button now dips when you press it and springs back when you let go. On an iPhone it also gives a small tap you can feel.

  • In a dropdown, the highlight glides from row to row instead of jumping. The same goes for the side menu, the dock and search results.
  • The selected tab lights up under your pointer, and its light spills softly onto the strip around it. Tabs you have not selected stay quiet.
  • A button or menu row you cannot use does not light up. It used to answer your pointer exactly like one that would act, and then do nothing.

Performance mode really turns it off

Before, performance mode hid these effects while the work behind them kept running on every pointer move. Now switching it on in the Control Center stops that work completely, straight away and without a reload. Turning it back off brings the effects back.

Fixed

  • On iPhone, button labels drew as dots (1.8.1). The part that gives the tap was squeezing the label into a few pixels.
  • On iPhone, the sign-in button buzzed and did nothing (1.8.2). Pressing Enter worked; tapping only gave the vibration. Links styled as buttons failed the same way. Every button now does what it says.
  • After a tap on a touch screen, a button stayed in its hover look until you touched something else.
Improved1.7.0

Every table is one table

One design, everywhere

Orders and Cash had each built their own table. Spacing, header fill and letter case all differed, so half the app’s tables looked one way and half another. Neither was wrong on its own terms, but moving from one screen to the next felt like changing apps. Every table now uses the same design.

The header stays where you can read it

On a wide screen the column header already stayed at the top as you scrolled. On a phone or tablet it scrolled away with the first row. So by the tenth order you were reading figures with no idea which column they were in. The header now stays in view at every width. When a table is wider than the screen, the header travels down with you as you scroll through it.

Numbers that read right in Arabic

  • Figures sit at the end of their column in both languages, so a column of amounts lines up.
  • A signed change (+3, from → to, 12 / 40) used to come out reversed in the Arabic app. It now reads the right way round.
  • Dates are written whole, 14 Jul 2026. They used to be put together from parts, and Arabic reordered them into Jul 2026 14.

Improved

  • Totals rows on Couriers, Workshops, Suppliers and payroll. The net figure is on the first line, with the two sides below it (due to couriers · due to the store). Cancelled orders are marked as not counted.
  • A sortable column shows that it sorts on a touch screen. On a phone it looked exactly like one you cannot sort.
  • A dashboard trend can be shown as a Chart or a Table.

Fixed — the daily drawer (1.7.1)

  • A returned close now says so. When an administrator rejected a day’s close, the employee’s Home card went back to looking unsettled, with no word of what had happened. The likely next step was to count again and send the same figures, and get the same rejection. The card now says Today’s close was returned, who returned it, and what to correct.
  • Rejecting a close asks What should be corrected? The employee reads the answer on their Home screen, and a rejection without a reason is not accepted.
  • Anything that changed after the close is marked moved since the close. A payment method that first received money after the close is marked Not in the close.
  • A pending close keeps showing the money. Nothing moves until an administrator approves the close. A card showing 0 while the drawer still holds the cash would be the wrong number.
  • A negative number typed into the denomination pad no longer subtracts from the count.
New1.6.0

Settle a whole batch on one screen

Bulk is bulk now

Selecting a set of orders and marking them delivered used to be honest only about the easy ones. Anything with a question on it came back as a line in the summary — 3 still have money to collect, 2 are waiting on a workshop cost — with an instruction to go and open each of those orders and settle it on its own. On a busy day that was most of them.

Four kinds of order were being handed back, and none of them was a question the screen could not have asked:

  • money still to collect;
  • a courier account still open;
  • a workshop cost sitting unpaid;
  • a workshop cost that was never entered at all.

They are now all asked on one screen — Collect & mark delivered — and there is no route out of it into a single order’s dialog. If nothing in the batch needs deciding, no screen opens at all and the orders are simply moved.

Three questions for the batch, two per row

Along the top, the things that are true of the whole set:

  • Who took the money on the carried orders? — the courier, or the store. It starts on whichever the orders themselves say, so most of the time you leave it alone.
  • The courier accounts on these orders — settle them now, or leave them for Couriers. Leaving them open still marks the orders done; the money stays on the courier’s account in its own section, and the screen says so in those words.
  • Workshop costs on these orders — pay them now, or leave them on the workshop’s account. Same promise.

Then a payment method, and the list. Each row carries what is left on the order, an amount to collect and the status it will land on. Collect it all and Collect nothing fill the column in one press.

A row waiting on a workshop cost is answered in the row. It says Enter the workshop cost and grows a Cost per unit field; type it and the row joins the batch like any other. That was the last thing that used to send you back to a single order.

The payment method at the top is a default, not a rule. A row whose branch does not take it falls back to that order’s own method and says so, and the receipt splits the cash by the method each row will really use.

The receipt before the button

Beside the list, What this covers states in numbers what the button is about to do: what is collected and by which method, what is left as customer debt, what is paid out to couriers and to workshops, what stays with the couriers, and how many orders are simply being moved with nothing to collect. Anything still waiting on a cost is named there too.

Every figure is worked out again against the live order at the moment of writing, not taken from the screen — so a row somebody else settled while you had the screen open is left alone and reported back to you, never written twice.

The status list only offers what it can apply

Changing status, singly or in bulk, used to list every status the shop has configured and then quietly skip the orders it could not move — after the change had run. It now works the other way round: a status that fits nothing in your selection is not shown, one that fits part of it says so on its own line — applies to 3 of 7 — and a line under the list names how many options were hidden and why.

An employee moves an order forward

Status is a record of where the goods physically are, so walking an order backwards — to a stage it has already left — is either a correction of somebody else’s record or a decision to redo the work. Both are the administrator’s. Those statuses are no longer in an employee’s list.

The undo on the toast is the one exemption, and it is deliberate: an employee who has just moved an order can take that move straight back while the message is still up. Once it has gone, the order is an administrator’s to walk back. Nothing changes for administrators.

Improved

  • A lensing rim on cards and sheets, tuned separately for light and dark — the edge where the glass catches the light, which it had never quite had.
  • Dialogs no longer tip as they arrive. They scale and settle, the way a sheet should. Messages now arrive and leave along the same edge instead of two different ones.
  • The toolbar is no longer drawn a rank below the section around it — it was, in one theme and not the other.
  • A long list fades at the edge it actually runs past rather than being cut off with a hard line. A list that had not been scrolled to yet used to decide it did not overflow at all.
  • Performance mode keeps every animation correctly timed. It was quietly re-timing thirteen of them while removing the effects it is meant to remove.

Fixed

  • The selection box and the status tag were clipped by the rounded corner on a compact order card. The card’s inner spacing is now measured against the corner’s own curve rather than picked off the spacing scale.
Improved1.5.0

Delete asks which orders you meant

The button now says which set it means

The Delete in the Current orders title row has always acted on every order matching your filters. Ticking a few rows first did not narrow it — it widened it, from the page you were looking at to the whole filtered list, and nothing on screen said so. An administrator who selected four orders and pressed Delete could lose the lot.

It now asks. With a selection open, the button opens on the orders you actually ticked, states which set it is about to touch, and offers the other one beside it:

Which orders?

You have a selection open. This button acts on every order matching your filters, not on the ones you ticked.

Switching between the two moves the sentence, the count and the button’s own label together, so the number you are about to delete is never the number you last read. With nothing ticked, nothing changes — the button acts on the filtered list as it always did.

The actions that write are kept apart from the ones that do not

Change status and Delete orders moved behind Actions, below a dividing line, instead of sitting in the title row beside Print list, Export orders and Columns. Neither is one stray press away from a print button any more.

Nothing is deleted for ten seconds

The deletion is not written when you confirm it. The orders stay on screen, dimmed and edged in red, while a Deleting message offers Undo — or Ctrl + Z. Take it and you get Kept — nothing was deleted, because no record was ever touched.

  • While they are waiting, those orders are out of reach of every other bulk action — they cannot be re-ticked, deleted again, or swept into a status change.
  • The clock stops whenever the message cannot be read: while you are pointing at it, while another dialog is open, or while the tab is in the background.
  • Closing the tab inside the ten seconds cancels the deletion rather than half-finishing it.

Let it run out and everything goes in one movement: the orders, their comments, their cash rows, the customer’s link to them, the stock returning to the branch, and the log line.

Fixed

  • The selection bar had no movement at all in Stock → Reorder, Customers, Couriers and Administration. It appeared and worked, so nothing looked broken — but the arrival, the count change and the leave that every other section has were missing.
  • The sign-in screen drew its grid twice. The glass on that screen refracts the background it paints itself, so the grid laid over the top of it stayed straight while the refracted copy bent. The only place the two disagreed was inside the lobes — which is exactly where the effect reads — so it looked like a layer added over the screen rather than the same lines seen through glass.
Improved1.4.1

Help, one press from any screen

The guide for the screen you are on

Every section title now has a help mark beside it. Press it and the guide for that screen opens in a new tab, so the app stays exactly as you left it — nothing is closed, no draft is lost, and you can read with the screen open beside you.

It answers with what is true at the moment you press it:

  • Your language. Working in Arabic opens the Arabic article.
  • Your role. An employee — or an admin who has switched to the employee view — gets the staff version of the article, with the admin-only parts left out. There is no point reading about a button you cannot see.
  • Your theme. Light, dark, or following your device: the guide opens looking like the app you just came from.

Right-clicking to copy the link, or opening it with the keyboard, gives the same answer as a plain press.

Fixed

  • Selection boxes are the app’s own control. In Current Orders, Administration and Customers, the checkbox that picks a row was the browser’s default one, drawn beside the app’s everywhere else. They now match the rest of the app, and pressing the painted box works as well as pressing the box itself.
  • “Some selected” no longer looks like “none selected”. The select-all box at the top of a list has three states, and the middle one — some of these rows are picked — drew as empty. It was the one box where the next press means select everything, which made an empty-looking box the worst possible thing to guess from.
  • Hovering a row in the Current Orders table no longer tears. The pinned checkbox and actions columns lit up a fraction ahead of the row they belong to, so a seam ran down the table as the pointer crossed it. They now fade together.
  • Page navigation reads the right way round in Arabic. The arrows either side of the page numbers pointed the wrong way, and the numbers themselves could be laid out against the direction you were reading.
New1.4.0

A dashboard that shows its working

The bottom line, as one sentence

The Overview now opens on the period’s profit and loss written as an equation on the page itself, rather than as a row of tiles:

Net sales − Cost of goods + Shipping profit = Gross profit − Expenses = Net profit.

The three totals are set larger than the three movements between them, each figure carries a hairline showing its size against the largest in the row, and the change against the previous period sits beside it. Every figure opens the orders behind it.

Two things changed name and meaning along the way:

  • Total Profit is now Gross Profit, because that is what it was. A shop paying rent out of it was being shown a healthy green number with no way to see the hole.
  • Expenses and Net Profit now sit beside it. Expenses are the Cash Registry’s outgoings for the period, with three deliberate exclusions — transfers between your own safes, stock purchases, and costs already charged to an order. Each of those would otherwise be counted twice on the same screen. Pressing the figure lists every row that is counted, with its date, branch and note.

Four views instead of one long page

Sales & Products: where the money came from, what sold, who bought, and where they bought from.
The dashboard’s Sales & Products view: where the money came from by branch and payment method, what sold and what did not, new versus returning customers with the repeat rate, and profit by governorate.

Sales & Products: where the money came from, what sold, who bought, and where they bought from.

The screen is now Overview, Sales & Products, Operations & Stock and Price Changes, all scoped by the same toolbar — period, branch, settlement status and financial view.

  • Sales & Products groups its lists under the question each one answers, and New vs Returning gives the head-count and the money for each side. Governorate analysis states how it was decided: profit by delivery governorate, after the goods and the shipping.
  • Operations & Stock draws the order pipeline as one bar broken into stages, so a stage’s width is its share of the whole, with fulfilment figures, on-time rate and the money still sitting with your couriers underneath.
  • Price Changes puts the period’s repricing at the top, a margin watch listing the thinnest margins first, and the live catalogue as a searchable table with per-row history.
Operations & Stock: the pipeline as one bar, fulfilment, courier dues and the value of the shelf.
The dashboard’s Operations & Stock view: the order pipeline as one bar broken into stages, fulfilment figures including average days and on-time rate, money still with the couriers, and the value of the shelf.

Operations & Stock: the pipeline as one bar, fulfilment, courier dues and the value of the shelf.

Dig deeper, and every number says what it means

At the foot of the Overview, Dig deeper opens fifteen more figures in three named groups, plus Highlights. Each is a row with a one-line explanation under its name, and each one states its basis — Active orders only — returned and cancelled are not counted — before you click through to the orders it is built from. The fold stays as you left it while live data arrives.

Six of them are new figures rather than a rearrangement: Units Sold, Discounts Given, Net Margin, Still Owed, New Customers and Repeat Rate. Each opens the same kind of drill-down the headline figures do.

The chart and the exported report

  • The sales trend carries a dashed net-profit line whenever the period has expenses to subtract from the gross figure, so the two curves can be read against each other.
  • Expenses and net profit are in the chart’s table view too, not only in the drawing.
  • The exported report gained a profit-and-loss section and an expenses section, so a report sent to an accountant says the same thing the screen does.

Needs attention now sits above everything and deliberately ignores the period filter, with Live state printed under it. What is broken right now and how last month went are different questions. Each count opens what it is counting.

Price Changes: this period at a glance, what needs a decision, and the live catalogue.
The dashboard’s Price Changes view: the period’s repricing at a glance, a margin watch listing the thinnest margins first, the biggest movers, and the live catalogue as a searchable table with per-row price history.

Price Changes: this period at a glance, what needs a decision, and the live catalogue.

Fixed

  • A growth percentage over a loss was inverted. A shop whose loss halved from −1,000 to −500 has improved; the old arithmetic reported that as a 50% fall, in red. Direction now comes from the movement and size from the magnitude of the base, and a period with nothing to compare against says so instead of inventing a figure.
  • New and Repeat customers are judged against your whole order book, never against the period on screen — otherwise every customer became new the moment you narrowed to a week.
  • Reorder no longer drops an item silently. In Stock → Reorder, selecting a product whose materials had been archived or deleted left it out of the purchase order with nothing said. The card now names what it is waiting on, and Order these lists the rows it could not include, before anything is written.
  • The selection bar is the same bar everywhere. In Reorder it now floats above the bottom of the screen like every other section, in Resources it keeps its glass instead of going flat, and on a phone it stays a pill rather than squaring off.
  • One status colour treatment across the app, so a status you coloured yourself stays legible — including the pale ones that used to disappear against their own tint.
  • Urgent orders, count results and refused purchase lines now share one highlight, so the same “look at this” means the same thing on every screen.
  • A tooltip no longer arrives late over the wrong thing after the pointer has already moved on.
  • The order pipeline counted a shipped order as if it were still being prepared. It read the wrong one of the app’s two stage vocabularies, which left “On the way” at zero and put a third of the order book in a bucket the chart never drew.
  • Small steps in the profit-and-loss breakdown are visible again. Shipping profit at a fraction of a percent of sales drew as nothing at all, and a small net profit drew as a dot, so both read as steps that had failed to render. A step of exactly zero still draws nothing, on purpose.
  • The sign-in and boot brand mark grew rounder on a phone, and in browsers without corner shaping, instead of tightening as it was meant to.
New1.3.0

ETA-ready tax printing and bulk preview

Tax documents with the required identity

  • The Egyptian Tax Authority is its own tool in Resource Management, and it is off unless you switch it on. It carries a Preview badge and opens on a band saying what it does and does not do. Enter the registered legal name, tax registration number (RIN), activity code, default VAT treatment and rate. It used to switch itself on for any shop that had filled in a legal name, an activity code or one branch’s device details — which turned Print studio’s default preset into a tax document as a side effect of looking at the tool.
  • Turning it off does not delete what you saved. ETA presets, VAT controls and ETA QR controls disappear from Print studio; ordinary invoice previews and printing carry on as before.
  • Every active branch has its own ETA profile: ETA branch code, POS device serial number and structured Egyptian address.
  • New orders capture their VAT treatment and rate when the sale is created, so a later settings change does not reinterpret that order. Older orders use the current setting as a clearly identified fallback.

The printed tax invoice and receipt are designed to include the minimum consumer-sale fields in the Egyptian Tax Authority’s official compliance article: seller and branch identity, serial document number, issue date and time, buyer details, item quantities and values, tax breakdown, total and payment method. A buyer ID is required by the readiness check when the receipt exceeds EGP 150,000.

One Print studio for single and bulk work

  • Single Print and Print list now open the same Print studio. The live preview is built from the exact HTML and CSS sent to the printer.
  • Bulk preview shows every selected order and requested copy, with the order and page counts stated before printing.
  • Four built-in presets cover an ETA A4 tax invoice, ETA 80 mm sales receipt, customer packing receipt and shipping label. Thermal paper can be switched between 80 mm and 58 mm.
  • Language, copies, logo, customer details, addresses, payment method, tax breakdown, verified QR, notes and footer can be adjusted in one place. Required tax fields stay on in ETA mode.
  • Download invoice saves the document instead of sending it to a printer — the same HTML, CSS and arithmetic as the preview, written as a PDF on A4. One file per order, singly or in bulk, with a long invoice split across pages rather than squeezed onto one.
  • The last setup is remembered per device. Administrators can save and delete shared presets; employees can use them.
  • Delete preset is drawn at the same rank as Save preset beside it and carries an icon, instead of reading as a control that had already been disabled.

The message that reaches the customer

  • The WhatsApp panel copies the message and opens a plain chat. It used to push the text through the wa.me link as well, which silently truncates a long message and is dropped altogether by some desktop clients — so the customer received a broken message with nothing at this end to say so. If the copy fails, WhatsApp is no longer opened at all.
  • The Customers panel copies it too. That one had relied entirely on the link, so a dropped prefill lost the message completely.
  • The invoice can travel with it. The exact shared invoice preview is copied to the clipboard as an image to paste into the chat.

No fabricated electronic compliance

An ETA paper preset checks the seller and issuing branch before Print is enabled. This setup does not register the taxpayer, sign or submit electronic documents, or generate ETA receipt hash chains. A Production / Preprod switch decides which ETA portal the printed verification QR points at, so a shop testing an integration can print QRs that resolve in the test portal rather than against live records.

An official verification QR appears only when the order already carries a UUID returned by ETA; orders without one are printed without an ETA QR and the studio says that electronic submission is unverified.

Fixed

  • The printed verification QR now matches the Egyptian Tax Authority’s published template. Three parts of it were wrong: the issuance timestamp was URL-escaped and carried milliseconds the receipt never had, the total was written as a bare number (500 instead of 500.000), and the tax registration number went in exactly as typed. Each of those produced a QR that scanned perfectly and opened a page saying the receipt does not exist.
  • The tax registration number is validated as nine digits and stored without separators. A number typed as 200-173-707, or pasted in Arabic-Indic digits, previously reached both the printed document and the QR unchanged.
  • A malformed ETA UUID is reported before printing rather than silently printing no QR, and the “ETA-linked documents” count only counts orders whose UUID is usable.
  • An order with no recorded issuance date no longer prints a QR dated 1 January 1970.
  • VAT configured as 14% no longer prints as 0% on older orders that carried an unversioned none / 0 placeholder. New orders snapshot the configured treatment and rate when the sale is created.
  • Copying the invoice as an image no longer fails when the browser had previously cached the shop’s logo in a form it could not reuse.
  • Every dropdown in the ETA and print workflows is the app’s own select control.
  • The branch address no longer repeats a read-only EG country box on every branch; the group states it once.
Improved1.2.0

A calmer order workspace

Order drafts that stay out of the way

  • The draft strip now belongs to Add Order. It joins the Products & Pricing panel instead of looking like a separate toolbar. Use the + beside the tabs to open another draft.
  • Closing is less noisy. An empty draft closes immediately; a draft with items or details still asks before throwing work away.
  • Quick Order shares the same draft strip. Held sales join its Sold items panel, with the + control inside the strip.
  • Quick Order is closer to the work. Its action now sits beside Clear and explains in its tooltip that it moves the current draft to a walk-in counter sale.

Better continuity

  • All matching items are available in the shared product search and select controls — no arbitrary result limit.
  • A new draft starts clean. A pay-later reminder from another draft cannot follow it into the new one, and empty validation space no longer pushes the order form apart.
  • Home rebuilds safely after a sign-out and sign-in. Its greeting, tiles, and data sections refresh without needing a page reload.

A quieter sign-in screen

The sign-in screen now carries the same glass atmospheric field as the public site. It is centred behind the account form, respects reduced-motion and performance settings, and stops rendering as soon as authentication completes.

Sync Status now links to the changelog whenever it detects a newer app version, so the operator can read the release notes before reloading.

New1.1.0

A rebuilt Joey Cash

Joey Cash has been rebuilt. Not refreshed — rebuilt, module by module, against the shops that were already using it.

What is new

  • A new design system. The whole interface is one vocabulary now: one card, one toolbar, one table, one set of status colours. Where there used to be seven slightly different toolbars there is one.
  • Offline order capture. The till keeps taking orders with no internet. Orders queue on the device and are re-checked by the server on reconnect, with a review queue for anything that no longer adds up.
  • A built-in online store. A real storefront on the same database as the counter — same products, same stock, same customers.
  • Blind end-of-day counts. Staff enter what is in the drawer without seeing the expected figure, and the variance is booked to the ledger.
  • A wholesale and reseller portal, with trade pricing, credit terms and three-party orders.
  • Performance mode. Turns off the blur effects for cheap Android terminals, so the interface keeps up on the hardware shops actually own.

What we fixed

Two long-standing bugs are gone, and both were quietly costing money:

  • Finalising a stock count wrote no stock at all while still booking the shortage as an expense.
  • Deleting or re-settling an order could leave money and stock behind in the ledger.

This website

Rebuilt too, on a new stack. It is now fully static, loads with almost no JavaScript, and is properly bilingual — the Arabic pages are Arabic pages, not translated English ones.