What’s new

Releases

Every production update is listed here. The app you are using is version 2026.10.16-91c48ac.

  1. 2026.10.16-91c48accurrent

    Released 16 Oct, 12:32

    2026.10.16 — Kit fleet: kits inside kits

    • The camera and simulator kits travel inside FLY VOR 1, FLY VOR 2 and VAR VAN 1. The Fleet shows "inside FLY VOR 1" on a kit packed in another one, and a flyaway or van lists the kits it holds, with links.
    • A kit's What's inside page lists the kits inside it with their own status and kit check. What is in them stays on their own pages.
    • Saving a flyaway as its template records each kit inside it as one line ("Camera Kit ×1"). The flyaway's kit check reads complete when that kit is inside it and itself complete, and nothing is counted twice.
    • On a match's equipment plan, assigning a flyaway or van offers the kits inside it in one click ("FLY VOR 1 contains CAMERA KIT 1 and SIMULATOR KIT 2: use them?").
    • A kit inside a flyaway can be planned for a different match. Both plans then say "take CAMERA KIT 1 out of FLY VOR 1 before loading". A flyaway is still refused while a kit inside it is booked on another match.
    • Scanning a flyaway at LOAD, RECEIVE or RETURN covers the kits inside it that are on the same match. A kit inside it booked on another match is reported "must be taken out before loading", and it is neither moved nor counted as unexpected.
  2. 2026.10.16-c36febd

    Released 16 Oct, 12:02

    2026.10.16 — Kit fleet: what's inside a kit

    notify: all

    • A kit's page (Logistics → Fleet → the kit) now shows what's inside it by area, position and box: each line with the serials of its units, and its value for those who see prices. What is in the kit but not placed is listed under its own heading.
    • The kit check lists every line of the template: needed, packed, short or extra. Lines marked "assumed" were read from an old list and not yet confirmed.
    • The kit's last scan (when, where, by whom, for which request), its scan and return-condition photos, and its bookings as bars over the coming months.
    • PDF and Excel of the same, with the values only for those who see prices. Every download is recorded in the view log, like the packing list.
    • On a match, its VAR TG and RO see the kits planned for it and what's inside each, by area, position and box, under generic names. No serials and no values.
  3. 2026.10.16-9869b07

    Released 16 Oct, 11:32

    2026.10.16 — Kit fleet: the match equipment plan

    • Every match has an equipment plan (the match page, or Plan on its round in Rounds). It starts from the requirements: the VOR unit by delivery type, a camera kit per two GLC cameras, a simulator kit for VARIS / Simulator / Streaming, the venue's cabling pack, and what the host provides or is rented.
    • Each line comes from the Fleet, is rented, is the host's, or comes From Hub. Add lines as needed (a second camera kit, an SDI cable 50 m …).
    • A Fleet line takes a numbered kit. The picker shows its status, where it is, its kit check and whether it is free over the round window. Assigning books the whole kit for the round; a kit booked on another match is refused, and the other match is named.
    • A kit in maintenance or incomplete goes only with the Logistics Manager's note, which is recorded.
    • From Hub lines go onto the match's Hub request. Rented lines carry a supplier and, for price readers, a price.
    • The packing list's header shows the plan: the kits by name, then what is rented and what the host provides.
    • The old per-match equipment registry is retired: it is gone from the match page, the match edit form, the schedule and the menu. Its data is kept.
    • A kit's page reads "Empty: nothing is packed in it yet." for those who do not build.
  4. 2026.10.16-59b917d

    Released 16 Oct, 10:02

    2026.10.16 — Kit fleet: the Fleet page

    • Logistics → Manage → Fleet: every family with its numbered kits — status (ready, packed, incomplete, in transit, at venue, maintenance, empty), where it is and its home, its kit check in one line, and its next assignment.
    • Each kit has its own page: what's inside by area, position and box, its kit check, where it is, and its bookings.
  5. 2026.10.16-ee9158d

    Released 16 Oct, 09:32

    2026.10.16 — Kit fleet: numbered kits and the Kit Builder

    • The kits are now a numbered fleet: VOR units (VAR VAN 1, FLY VOR 1–2), Camera Kits (1–3, and the Canon kit that stays in Qatar) and Simulator Kits (1–5), each with its own QR label.
    • Logistics → Manage → Kit Builder: pick a kit, filter the inventory by category, name, location or status, tick units and counted pieces, say where they go (area, position, box) and add them. Then save what is packed as the kit's own template — every save is a new revision — and the kit check reads against it.
    • Venues can record their cabling (patch or direct) for the cabling pack a match will be proposed.
  6. 2026.10.13-e449480

    Released 13 Oct, 22:02

    2026.10.13 — Kick-off times in the venue's time zone

    notify: all

    • Kick-off times are the venue's local time, as the bulletins print them, and the app now reads them that way. Reminders, the 30-minute warning, offline and critical-item alerts and the countdowns fire at the real kick-off in Qatar, Kuwait, Saudi Arabia, Iraq and Bahrain (before, they ran an hour early there).
    • Where the venue's clock differs from Dubai's, both are shown: "17:45 Doha · 18:45 Dubai". Oman and the UAE show one time.
    • The schedule's crew warnings compare real times across countries, and name the place: "at 17:00 Kuwait".
    • HB events: on-air times are read and shown the same way ("20:00 Kuwait · 21:00 Dubai"), and HB crew warnings compare real times too.
    • Each match takes its zone from its venue, else its country, else its stadium, else its competition (QSL, QSL2 and the Qatar Cup are Qatar time).
  7. 2026.10.13-d5fc731

    Released 13 Oct, 21:02

    2026.10.13 — Schedule import: venues stay in their country

    • When a bulletin says which country a match is in, the import only links it to a stadium in that country. Two stadiums with similar names in different countries (Khalifa Sports City in Bahrain, Khalifa International in Doha) are no longer confused.
    • "TBD" is treated like "TBC": it is never offered as an unknown stadium to create.
  8. 2026.10.11-7f24d3f

    Released 11 Oct, 20:02

    2026.10.11 — Template changes reach upcoming matches

    • Templates: "Apply to upcoming matches" brings the matches on a template to its latest revision. You see the plan first: how many matches are already current, how many are updated (no ticks yet), and how many are in progress. In-progress matches get the new items and keep every tick; finished and past matches are left alone. Each apply is recorded in the audit log.
    • An item the new revision drops is never deleted from a match where somebody ticked it, or added a remark, an issue or a photo: it stays, marked "removed in revision N", and no longer counts as work to do.
    • The match page shows which template revision its checklist uses, with "Update to latest" when the template has moved on.
  9. 2026.10.10-4abcb01

    Released 10 Oct, 20:02

    2026.10.10 — New crew show up in the match pickers

    • Users → Invite now has the job roles (VAR TG, VAR RO and the HB roles). Tick them there and the person appears in the match pickers as soon as they accept the invitation.
    • A user who cannot be assigned yet shows why on the Users page, e.g. "Not assignable: no job role", "invitation not accepted", "no VAR operation", "no access to any competition".
    • The VAR TG and RO pickers (new match, edit match, schedule) no longer offer deactivated accounts or accounts that have never signed in. Whoever is already assigned stays in the list.
  10. 2026.10.10-2fd8bbe

    Released 10 Oct, 19:02

    2026.10.10 — Error reporting without personal data

    • Errors from the server and the browser can be reported to Sentry, tagged with the app version. E-mail addresses, serials, prices, label codes and link tokens are masked before anything leaves the app.
    • Settings → Releases: owners can send a Sentry test event from the server and from the browser.
    • The WhatsApp guide has the final text of the three HB templates (report submitted, report reviewed, monthly report) and how to change the e-mail sender name.
  11. 2026.10.10-92efec8

    Released 10 Oct, 18:02

    2026.10.10 — Faster rounds, season, analytics and readiness

    • A round's figures are now kept once computed and reused until something they depend on changes — any change to the schedule, the kits, the inventory, the bookings, the requests, the decisions or the keeps, from any page, import or scan. The Rounds, Season, Analytics, Readiness and Purchases pages open faster, and the background checks use less time. What you see is never older than the last change.
  12. 2026.10.10-830ff04

    Released 10 Oct, 14:32

    2026.10.10 — Lighter background checks

    • The background checks now run in two tiers. Every 5 minutes, only when something is time-critical: a match kicking off within about two hours (the T-120 reminder, T-60 critical items, T-30 pre-match and the offline alert), or a round window open (the scan alerts). Otherwise nothing runs. Everything else — the release notice, the monthly reports, HB phases, overdue shipments, the round shortfall alerts and round snapshots — runs every 30 minutes.
    • Nothing changes in what is sent or to whom; some non-urgent alerts may arrive up to 30 minutes later than before.
  13. 2026.10.01-17b7c78

    Released 1 Oct, 12:30

    2026.10.01 — A tidier Logistics menu

    • The Logistics bar now keeps the daily pages in view — **Overview, Requests, Rounds, Readiness, Scan** — and everything else sits under one **Manage** menu, in blocks: Equipment (Inventory, Kits, Pack, Import), Planning (Season, Calendar), Facts (Analytics, Purchases, Costs) and Settings. Nothing moves under "More" on a laptop any longer.
  14. 2026.10.01-bd79d8a

    Released 1 Oct, 08:55

    2026.10.01 — Round readiness

    • **Readiness** (Logistics → Readiness) shows every round not yet over, one colour per country, with the reasons in words — from the round's shortfall and its shipments' scans:
    • **red** — a critical piece short with no decision, pieces due to leave that have not, a scan alert, or pieces missing on return;
    • **amber** — something short but decided or not critical, requests not approved yet (or none asked for what the Hub must send), scanning under way, or a keep waiting for the host;
    • **green** — none of that; **grey** — no match there that round.
    • **Share a snapshot:** the owner and the Logistics Manager can freeze one round, or every round ahead, and hand out a link anyone can open without an account — for 7, 30 (the default) or 90 days, revocable at any time. It never shows a price or a serial number (the database refuses one), and every opening is written to the view log.
  15. 2026.10.01-d7dc7b9

    Released 1 Oct, 06:40

    2026.09.30 — Places and purchase facts

    • **Places** (Logistics → Settings → Places) lists the host stores and venues by country, with what is in each now. Equipment Coordinators and the Logistics Manager add and edit them — a host's store in Oman, Iraq, Kuwait or the UAE no longer needs an import. The Logistics Manager deletes a place once nothing is in it ("still holds 3 units: move them first"); a coordinator asks, and the request waits on Deletion requests.
    • **Purchases** (Logistics → Purchases) lists, per item, every season at once or one season: units in service, rounds and pieces short, pieces rented and bought, damaged and missing on return — and, for the owner and the Logistics Manager, the rental cost so far, one unit's value, the one as a share of the other, and the purchase cost. Facts only. Every number opens its records; the list goes to Excel with the same prices as the screen.
  16. 2026.09.29-128789c

    Released 29 Sept, 13:05

    2026.09.30 — Season planning

    • **Season** (Logistics → Season) shows every round of a competition at once: a row per country, a column per round. Each cell gives the country's matches and kit in that round, and what they need, get from the Hub, get in the country and lack.
    • **Keep in country:** from a country's round, a coordinator or the Logistics Manager can keep what goes there until a later round, at the host's storage — a registered store or venue, or a place written in — with who at the host confirmed it.
    • **It counts once the host confirmed.** Until then the keep is a plan, shown as "waiting for the host". Once confirmed, the rounds it covers count those pieces as already in the country, and no longer at the Hub — from the first round's shipment when its requests exist, else from what that round is planned to send.
    • **Changing the rounds or the place asks the host again**; a note does not.
    • **Rounds:** each country says what is kept there and since when, and a round a keep starts in says so. Drafting requests leaves out what is already in the country, and the shipment that stays is drafted as "Stays where it goes".
  17. 2026.09.29-4759076

    Released 29 Sept, 11:15

    2026.09.30 — Logistics Analytics

    • **Analytics** (Logistics → Analytics) shows a season six ways — facts and numbers only:
    • **Rounds:** matches, pieces needed, from the Hub and in country, short (and at the open and close of the window), decisions, requests, late departures and returns, damaged and missing, scan alerts, date moves;
    • **Items:** per standard name — units in service, in maintenance, flagged, retired; requested, shipped, days out; rounds short; rented, bought; damaged, missing; maintenance entries;
    • **Kits:** the matches each kit served and what they were short; the physical kits and vans with their contents and shipments;
    • **Countries:** needs, supply, shortage, rentals, shipments, courier legs and transit days;
    • **Season:** the totals and a month-by-month table;
    • **Exceptions:** items short in two or more rounds, critical shortage with no decision, late or missing pieces, scan alerts, shipments sent back to the owner, units long in maintenance or flagged, pieces crossing a border with no HS code.
    • **Every number opens the records behind it**, and every table (or the records behind one number) downloads as Excel.
    • **Rounds before recording began (28 Sep 2026) read "not recorded"**: today's inventory is never shown as theirs. A round not yet over reads as of now.
    • **Who sees it:** the owner and the Logistics Manager with prices; Equipment Coordinators and Logistics monitors without them — on the screen and in Excel.
    • **Calendar:** the rounds lane now shows on the Kits and vans view even when no kit or van is registered yet.
  18. 2026.09.29-a28be7c

    Released 29 Sept, 09:50

    2026.09.29 — The availability calendar

    • **Calendar** (Logistics → Calendar) shows six weeks of every kit and van with the units inside it, or of units (search by serial, model or name). It shows:
    • bookings, coloured by where the request stands;
    • maintenance and review flags;
    • a lane with each round's window and how much it rents.
    • **Clashes are marked** with ⚠ and say why:
    • a unit booked while in maintenance or flagged;
    • a unit on two requests at once;
    • a kit going on one request while something inside it is on another over the same days.
    • **Move a shipment by dragging it** (or tapping it) and saying why. The whole request moves: its bookings and counted pieces follow, and a move onto days when a unit or pieces are taken elsewhere is refused. Coordinators and the Logistics Manager can move shipments.
    • **Moving an approved shipment sends it back to the owner for approval**, and the owner is told, once for each move. An owner's own move keeps it approved. Once anything has left, only an owner can move its dates.
    • **Every move is on the request's record**: the old and new dates, who, when and why.
    • **Only an owner approves or rejects a request**, now enforced by the database itself, not only the app.
  19. 2026.09.29-bbcebc7

    Released 29 Sept, 08:35

    2026.09.28 — What a round costs

    • **Rentals and purchases have a cost.** When a round's short line is resolved by buying or renting, the decision can now carry what it cost: the amount, its currency, the date, the supplier and the quote or invoice. Only owners, the Logistics Manager and coordinators can see or enter it.
    • **Costs** (Logistics → Costs, or "Costs of this round" on a round) shows a season or a round:
    • the value of what was shipped, and what was spent on rentals, purchases and AWBs;
    • by country, by match, by month, and for a season by round;
    • every line underneath;
    • an Excel export with each line's rate and AED value.
    • **Exchange rates** (Logistics → Settings → Exchange rates) are kept by the owner: what one unit of a currency is worth in AED from a date on. Every amount is shown in its own currency and in AED, at the rate in force on its date. Until every currency used has a rate, the page says how many amounts have none and that the AED total is partial.
  20. 2026.09.28-26ee002

    Released 28 Sept, 13:45

    2026.09.28 — Couriers, AWBs and the customs pack

    • **How a shipment travels.** A request now has its courier legs, out and back: courier, mode (air, road, sea, hand carry), AWB or tracking number, pickup, ETA and delivery dates, pieces, and gross and chargeable weight. Several requests can share one AWB. Coordinators and the Logistics Manager add them. Everybody who reads the request sees them, and the match's crew sees the AWB on the scan screen and on their shipment card.
    • **What a leg cost** (the AWB) is a price, so only owners, the Logistics Manager and coordinators see it or enter it.
    • **The customs pack** (on an approved request, next to the packing list and the proforma) is one PDF:
    • a summary: shipper, consignee, how it travels, items, cases, weight and declared value, by country of origin and by HS code;
    • the packing list;
    • the proforma invoice.
    • The summary lists in red anything customs will ask for that the pack does not have: an HS code, a country of origin, a value.
    • **HS codes.** Each standard description has an HS code and a country of origin, set on Standard names or in the Inventory's value column by the Logistics Manager and coordinators. HS codes are kept as 6, 8 or 10 digits and printed as 8528.52.00. The packing list and the proforma now print an HS CODE column. Standard names counts the descriptions with no HS code yet.
    • **Customs readiness on the round.** Each round says how many pieces the Hub sends across a border and which of them have no HS code or no country of origin, with a link to fix them.
  21. 2026.09.28-fac79a6

    Released 28 Sept, 11:45

    2026.09.28 — What came back, and in what state

    • **OK, Damaged or Missing at RETURN.** On the RETURN scan screen and next to Mark back on a request, each thing on a shipment can be reported OK, damaged or missing, with a note and a photo. The coordinators, the Logistics Manager and the match's own crew can report it.
    • **Damaged unit:** marked back, set to maintenance so nothing allocates it, with a maintenance entry on its record carrying the note, the photo and the shipment.
    • **Missing unit:** the shipment can still finish. The unit stays where it was last known and is flagged missing for the Logistics Manager: found, or retired through a deletion request.
    • **Counted pieces:** say how many came back in good order. The rest are flagged on the line, and the Logistics Manager corrects the count.
    • Once something is reported damaged or missing, only the Logistics Manager can change it.
    • **The round shows what came back.** Each match's card says how many pieces its shipments brought back damaged or missing, with links to the requests.
    • **Serials are cleaned wherever they are typed**, as the import already did: no leading Excel apostrophe, no invisible characters. A serial typed that way can no longer slip past the check that no two units share a serial.
  22. 2026.09.28-c8c1230

    Released 28 Sept, 10:50

    2026.09.28 — QR labels and shipment scanning

    • **Every unit, case, kit, van, place and counted line has a QR label code** (MP- and five characters, never 0, O, 1 or I). Print A4 sheets of 24 labels from the Pack screen: a place or a kit with everything in it, a case with what is in it, or one label again from its own page. Pointing a phone camera at a label opens what it is and where it is, for whoever may see it.
    • **Scan a shipment** (Logistics → Scan, or "Scan this shipment" on an approved request).
    • **LOAD** marks what you scan gone, **RECEIVE** marks it arrived where you are, **RETURN** marks it back where you are: the same moves as the Mark gone / arrived / back buttons.
    • A case covers everything in it, and a kit or van covers everything inside it. What is inside a case or a kit stays inside it: the case or the kit is what travels.
    • Counted pieces are scanned by their case, or by their shelf label and a quantity.
    • The camera reads the QR. Where it cannot, type the code under it. With no signal, scans wait on the phone and are recorded when it is back online. A photo can go with each scan.
    • **The match's own crew scans too.** The VAR TG and RO of a match (and the crew of an HB event) scan RECEIVE and RETURN, and use Mark arrived and Mark back, for that match's shipments only. They find them on their match page. LOAD and Mark gone stay with the coordinators.
    • **The buttons now keep kits whole.** Marking a unit gone, arrived or back no longer pulls it out of its case or kit: a booked kit or van moves with everything in it.
    • **Two alerts, once per shipment and stage, to the coordinators and the Logistics Manager:**
    • **Not scanned:** a stage was closed, or a day has passed since its first scan, and something on the request was never loaded, received or returned.
    • **Unexpected item:** something was scanned that the request does not hold.
  23. 2026.09.28-88a615d

    Released 28 Sept, 09:05

    2026.09.28 — Pack: kits, vans and cases

    • **Physical kits and vans are registered.** A kit or a van is a place of its own, with its own unit and serial. It says which delivery type it serves and which kit template it is built to. Register one from Logistics → Pack, at the Hub or a store.
    • **The pack screen** (Logistics → Pack) shows places, then the kits and vans in them, then their cases, then what each case holds. The Logistics Manager and the Equipment Coordinator pack; Logistics Monitors read.
    • **Cases get their real numbers.** The 24 cases the import left as PENDING-CASE show "needs its number". Open one, type the number written on the box, and the review flag clears. The file's box model is shown as a hint.
    • **Units and counted pieces go into cases.** A unit takes its case's place. Counted pieces are packed by quantity, and pieces held by a request are never moved.
    • **Cases go into kits.** A case moved takes everything in it. A kit or van moved takes all its cases.
    • **A kit against its template.** Each item the template lists shows how many are needed, how many are packed, and what is missing or extra.
    • **Rounds count a kit where it stands.** Whatever is inside a kit or van at the Hub counts as the Hub's. Inside a van in Doha, it counts as Qatar's. In transit, it counts nowhere.
  24. 2026.09.28-34b1e69

    Released 28 Sept, 07:55

    2026.09.28 — VAR requirements and delivery types

    • **Three ways a VAR is delivered.**
    • **VAR kit:** flyaway cases; everything ships.
    • **VAR van:** the room is built into a vehicle; only the venue side ships (GLC, RRA, referee comms, fibre runs).
    • **VAR center:** a permanent central room; only a venue pack and a connectivity kit ship.
    • **Kits say what they are.** Each kit is a full kit, a venue pack or a connectivity kit, and says which delivery type it serves.
    • **Today's setup:**
    • FLYVOR 1 and 2 are full VAR kits.
    • The Iraq kit is a venue pack for the Iraq FA's van.
    • The Qatar kit is a venue pack. The Qatar FA lends a VAR kit or a van (it varies by match) and provides the Operation Area and the RRA.
    • **Each competition has a requirements profile.** It records the delivery type, goal-line cameras (none, one or two), VARIS, Simulator, Streaming, Giant Screen, RRA, referee comms, the number of seats and any client extras. It lives on a new competition page (Kits → By competition → Requirements). Only the Logistics Manager can change it, and every change is kept as a version.
    • **Per country and per match.** A country can have its own delivery type (Iraq: the van). A single match can change any of it on its round (the Qatar match where the host brings its van).
    • **Only what ships is counted.** The kit check, the round shortfall and the drafted requests count only what actually ships. The room of a van is never "missing", and what the profile switches off is never short. Every round shows the requirements that applied to each match.
    • **Round history starts here.** Each round is recorded when its window opens and when it closes: what was short, how bad, and what was decided.
    • **Rounds now subtract counted pieces other requests already hold over the round's dates.** Units booked elsewhere were already subtracted. What this round's own requests hold still counts for the round. Counted substitutes read "counted, free over the window" instead of "counted, not reserved".
    • **"No standard name yet" badges.** Items that still carry an old name show the badge on request lines, in the request form, in allocation and in the Master Inventory. For coordinators and Logistics Managers, the badge links to that item on Standard names.
    • **Counted items can now be allocated.** Some items are counted by quantity rather than by serial, like the X-KEY panels at the Hub. Before, a request for one showed "No units of this description exist yet" and could not be allocated. Each place an item is counted now shows how many are counted, booked by other requests over the same dates, and free, with a box for how many to take.
    • **Each line of a request now shows the full picture.** You see the item's standard name, or "no standard name yet". Totals give the number at the Hub, in the request's country, booked elsewhere and free. Every unit is listed with its serial, place and status.
    • **Counted pieces go through the same steps as units.** They are approved with the request and printed on the packing list and proforma with their quantity. They are marked gone, arrived and back, and appear in the request's timeline. A refused request frees them.
    • **Coordinators open the Requests page on their queue** whenever something is waiting for them.
    • **Three logistics roles, set in one click** on the Users page (owners). A chip on each account shows its role:
    • **Logistics Manager** does everything, and approves deletions.
    • **Equipment Coordinator** allocates, moves, decides shortfalls and makes packing lists. It also adds and edits the inventory: names to the standard, units and serials, counts, cases, where units are, kits and their lines, and imports.
    • **Equipment Requester** asks by name and quantity, and follows their own requests.
    • Any other mix shows as "custom" and stays editable permission by permission.
    • **Coordinators never delete.** Deleting, retiring, merging, splitting, converting a unit or discarding an applied i
  25. 2026.09.25-8af70b9

    Released 25 Sept, 14:05

    2026.09.25 — Rounds count what is really free

    • **Rounds now subtract counted pieces other requests already hold over the round's dates.** Units booked elsewhere were already subtracted. What this round's own requests hold still counts for the round. Counted substitutes read "counted, free over the window" instead of "counted, not reserved".
    • **"No standard name yet" badges.** Items that still carry an old name show the badge on request lines, in the request form, in allocation and in the Master Inventory. For coordinators and Logistics Managers, the badge links to that item on Standard names.
    • **Counted items can now be allocated.** Some items are counted by quantity rather than by serial, like the X-KEY panels at the Hub. Before, a request for one showed "No units of this description exist yet" and could not be allocated. Each place an item is counted now shows how many are counted, booked by other requests over the same dates, and free, with a box for how many to take.
    • **Each line of a request now shows the full picture.** You see the item's standard name, or "no standard name yet". Totals give the number at the Hub, in the request's country, booked elsewhere and free. Every unit is listed with its serial, place and status.
    • **Counted pieces go through the same steps as units.** They are approved with the request and printed on the packing list and proforma with their quantity. They are marked gone, arrived and back, and appear in the request's timeline. A refused request frees them.
    • **Coordinators open the Requests page on their queue** whenever something is waiting for them.
    • **Three logistics roles, set in one click** on the Users page (owners). A chip on each account shows its role:
    • **Logistics Manager** does everything, and approves deletions.
    • **Equipment Coordinator** allocates, moves, decides shortfalls and makes packing lists. It also adds and edits the inventory: names to the standard, units and serials, counts, cases, where units are, kits and their lines, and imports.
    • **Equipment Requester** asks by name and quantity, and follows their own requests.
    • Any other mix shows as "custom" and stays editable permission by permission.
    • **Coordinators never delete.** Deleting, retiring, merging, splitting, converting a unit or discarding an applied import becomes a *deletion request*. The item stays in use, flagged "asked", until an owner or a Logistics Manager approves (it is carried out then) or rejects it. There is one notification per request, every decision is kept in the audit, and the list is under Settings → Deletion requests. The database enforces this, not only the screens.
    • **Each Master Inventory row has an editor** (Logistics → Inventory → Edit): a unit's serial, place, case and maintenance, or a counted line's quantity and place. Retire and Delete sit below; for a coordinator they read "Ask to…".
    • **A page you cannot open now says which role opens it**, on the Logistics home.
    • **Editing a drafted request keeps where each line goes.** A round's draft asks for the same monitor at RO top and RO bottom, and both lines stay through an edit. Your own draft now has an **Edit draft** button.
    • **A new Rounds page** (Logistics → Rounds) shows each coming matchday of every competition. For each covered country with a match in the round, it lists the matches and venues, how the country is supplied, and the kit each match needs. It also shows what is already in that country and what the Hub has free in the round's window. A country with nothing there yet (Iraq) is listed all the same.
    • **What is short is shown by name**, with what it does and how bad it is (critical, backup, accessory), per match. Each match's kit check says which positions can run with what can actually be supplied, taking into account what the host provides and what is rented locally.
    • **Substitutes count and say so.** A BNC cable of any length counts for "BNC — length to confirm", a monitor of the same role for a se
  26. 2026.09.25-5ccf238

    Released 25 Sept, 13:50

    2026.09.25 — Allocating counted equipment

    • **Counted items can now be allocated.** Some items are counted by quantity rather than by serial, like the X-KEY panels at the Hub. Before, a request for one showed "No units of this description exist yet" and could not be allocated. Each place an item is counted now shows how many are counted, booked by other requests over the same dates, and free, with a box for how many to take.
    • **Each line of a request now shows the full picture.** You see the item's standard name, or "no standard name yet". Totals give the number at the Hub, in the request's country, booked elsewhere and free. Every unit is listed with its serial, place and status.
    • **Counted pieces go through the same steps as units.** They are approved with the request and printed on the packing list and proforma with their quantity. They are marked gone, arrived and back, and appear in the request's timeline. A refused request frees them.
    • **Coordinators open the Requests page on their queue** whenever something is waiting for them.
    • **Three logistics roles, set in one click** on the Users page (owners). A chip on each account shows its role:
    • **Logistics Manager** does everything, and approves deletions.
    • **Equipment Coordinator** allocates, moves, decides shortfalls and makes packing lists. It also adds and edits the inventory: names to the standard, units and serials, counts, cases, where units are, kits and their lines, and imports.
    • **Equipment Requester** asks by name and quantity, and follows their own requests.
    • Any other mix shows as "custom" and stays editable permission by permission.
    • **Coordinators never delete.** Deleting, retiring, merging, splitting, converting a unit or discarding an applied import becomes a *deletion request*. The item stays in use, flagged "asked", until an owner or a Logistics Manager approves (it is carried out then) or rejects it. There is one notification per request, every decision is kept in the audit, and the list is under Settings → Deletion requests. The database enforces this, not only the screens.
    • **Each Master Inventory row has an editor** (Logistics → Inventory → Edit): a unit's serial, place, case and maintenance, or a counted line's quantity and place. Retire and Delete sit below; for a coordinator they read "Ask to…".
    • **A page you cannot open now says which role opens it**, on the Logistics home.
    • **Editing a drafted request keeps where each line goes.** A round's draft asks for the same monitor at RO top and RO bottom, and both lines stay through an edit. Your own draft now has an **Edit draft** button.
    • **A new Rounds page** (Logistics → Rounds) shows each coming matchday of every competition. For each covered country with a match in the round, it lists the matches and venues, how the country is supplied, and the kit each match needs. It also shows what is already in that country and what the Hub has free in the round's window. A country with nothing there yet (Iraq) is listed all the same.
    • **What is short is shown by name**, with what it does and how bad it is (critical, backup, accessory), per match. Each match's kit check says which positions can run with what can actually be supplied, taking into account what the host provides and what is rented locally.
    • **Substitutes count and say so.** A BNC cable of any length counts for "BNC — length to confirm", a monitor of the same role for a seat's monitor, and an uncounted LC drum for any LC drum ("cores unknown"). Counted stock counts by its quantity, marked "not reserved".
    • **The Hub is shared across the round:** earliest match first, and on the same day full-supply countries before complement. A country left short because of that says which match took the equipment first.
    • **Deciding a short line:** from the hub, buy, rent or an alternative device, with a note. The page records who decided and when.
    • **One click drafts the requests:** one per match per source (the country's own store firs
  27. 2026.09.25-353b62d

    Released 25 Sept, 11:55

    2026.09.25 — Logistics roles and deletion requests

    • **Three logistics roles, set in one click** on the Users page (owners). A chip on each account shows its role:
    • **Logistics Manager** does everything, and approves deletions.
    • **Equipment Coordinator** allocates, moves, decides shortfalls and makes packing lists. It also adds and edits the inventory: names to the standard, units and serials, counts, cases, where units are, kits and their lines, and imports.
    • **Equipment Requester** asks by name and quantity, and follows their own requests.
    • Any other mix shows as "custom" and stays editable permission by permission.
    • **Coordinators never delete.** Deleting, retiring, merging, splitting, converting a unit or discarding an applied import becomes a *deletion request*. The item stays in use, flagged "asked", until an owner or a Logistics Manager approves (it is carried out then) or rejects it. There is one notification per request, every decision is kept in the audit, and the list is under Settings → Deletion requests. The database enforces this, not only the screens.
    • **Each Master Inventory row has an editor** (Logistics → Inventory → Edit): a unit's serial, place, case and maintenance, or a counted line's quantity and place. Retire and Delete sit below; for a coordinator they read "Ask to…".
    • **A page you cannot open now says which role opens it**, on the Logistics home.
    • **Editing a drafted request keeps where each line goes.** A round's draft asks for the same monitor at RO top and RO bottom, and both lines stay through an edit. Your own draft now has an **Edit draft** button.
    • **A new Rounds page** (Logistics → Rounds) shows each coming matchday of every competition. For each covered country with a match in the round, it lists the matches and venues, how the country is supplied, and the kit each match needs. It also shows what is already in that country and what the Hub has free in the round's window. A country with nothing there yet (Iraq) is listed all the same.
    • **What is short is shown by name**, with what it does and how bad it is (critical, backup, accessory), per match. Each match's kit check says which positions can run with what can actually be supplied, taking into account what the host provides and what is rented locally.
    • **Substitutes count and say so.** A BNC cable of any length counts for "BNC — length to confirm", a monitor of the same role for a seat's monitor, and an uncounted LC drum for any LC drum ("cores unknown"). Counted stock counts by its quantity, marked "not reserved".
    • **The Hub is shared across the round:** earliest match first, and on the same day full-supply countries before complement. A country left short because of that says which match took the equipment first.
    • **Deciding a short line:** from the hub, buy, rent or an alternative device, with a note. The page records who decided and when.
    • **One click drafts the requests:** one per match per source (the country's own store first, then the Hub). Each line is placed where the kit puts it, with bought and rented lines written in the notes. Nothing is submitted.
    • **One alert:** the coordinators hear about a round once per country, when its window opens within the alert days (5 by default) and a critical line is still short with no decision.
  28. 2026.09.25-0e562ce

    Released 25 Sept, 11:25

    2026.09.25 — Logistics roles and deletion requests

    • **Three logistics roles, set in one click** on the Users page (owners). A chip on each account shows its role:
    • **Logistics Manager** does everything, and approves deletions.
    • **Equipment Coordinator** allocates, moves, decides shortfalls and makes packing lists. It also adds and edits the inventory: names to the standard, units and serials, counts, cases, where units are, kits and their lines, and imports.
    • **Equipment Requester** asks by name and quantity, and follows their own requests.
    • Any other mix shows as "custom" and stays editable permission by permission.
    • **Coordinators never delete.** Deleting, retiring, merging, splitting, converting a unit or discarding an applied import becomes a *deletion request*. The item stays in use, flagged "asked", until an owner or a Logistics Manager approves (it is carried out then) or rejects it. There is one notification per request, every decision is kept in the audit, and the list is under Settings → Deletion requests. The database enforces this, not only the screens.
    • **Each Master Inventory row has an editor** (Logistics → Inventory → Edit): a unit's serial, place, case and maintenance, or a counted line's quantity and place. Retire and Delete sit below; for a coordinator they read "Ask to…".
    • **A page you cannot open now says which role opens it**, on the Logistics home.
    • **Editing a drafted request keeps where each line goes.** A round's draft asks for the same monitor at RO top and RO bottom, and both lines stay through an edit. Your own draft now has an **Edit draft** button.
    • **A new Rounds page** (Logistics → Rounds) shows each coming matchday of every competition. For each covered country with a match in the round, it lists the matches and venues, how the country is supplied, and the kit each match needs. It also shows what is already in that country and what the Hub has free in the round's window. A country with nothing there yet (Iraq) is listed all the same.
    • **What is short is shown by name**, with what it does and how bad it is (critical, backup, accessory), per match. Each match's kit check says which positions can run with what can actually be supplied, taking into account what the host provides and what is rented locally.
    • **Substitutes count and say so.** A BNC cable of any length counts for "BNC — length to confirm", a monitor of the same role for a seat's monitor, and an uncounted LC drum for any LC drum ("cores unknown"). Counted stock counts by its quantity, marked "not reserved".
    • **The Hub is shared across the round:** earliest match first, and on the same day full-supply countries before complement. A country left short because of that says which match took the equipment first.
    • **Deciding a short line:** from the hub, buy, rent or an alternative device, with a note. The page records who decided and when.
    • **One click drafts the requests:** one per match per source (the country's own store first, then the Hub). Each line is placed where the kit puts it, with bought and rented lines written in the notes. Nothing is submitted.
    • **One alert:** the coordinators hear about a round once per country, when its window opens within the alert days (5 by default) and a critical line is still short with no decision.
  29. 2026.09.25-752b3c2

    Released 25 Sept, 08:30

    2026.09.25 — Areas, positions and the kit check

    • **Every kit line now says where it belongs:** its area (Operation Area, Engineering Area, Referee Comms, RRA, Goal Line Camera, Van / Transport and Spares), its position where there is one (the five VAR room seats, the room camera, GLC 1, GLC 2 and their shared control, the ORYX server, the RRA review position, the Giant Screen feed, the referee radios and their backup), a seat's top or bottom monitor, and for a fibre drum the run it serves.
    • **The kit check says which positions can run.** Each position has rules for what it needs, and how bad each thing's absence is (critical, backup, accessory). The kit page then reads, for example, "VAR cannot run: Red button missing". A goal line camera cannot run without its shared control, and VARIS, the simulator and streaming are down without the ORYX server. Rules and anything else proposed rather than confirmed are marked *assumed* until someone confirms them.
    • **The VAR room is drawn as it stands**, right to left: TG, RO, VAR, AVAR, VARIS, with each seat's monitors and what is missing.
    • **Importing a kit asks where things go.** Step 5 is *Names and places*: the file's heading and the item's category place what they can, and the rest is asked. A row can be split, for example two tripods with one per camera. Each new heading is remembered for the next file.
    • **Countries and supply** (Kits, per competition): each country is supplied *full* (we bring the whole kit) or *complement* (the host lends the core). The screen lists what the host provides, what is rented locally (rent in Qatar), and a checklist to confirm with the host that a coordinator ticks. It also gives each country's kit check with all of that taken into account.
    • **Packing lists and proformas are grouped by area and position** when the request says where things go.
  30. 2026.09.24-380e29c

    Released 24 Sept, 12:25

    2026.09.24 — The Master Inventory

    • **One page with all company equipment**, reachable from VAR (Inventory), HB (Inventory) and Logistics. VAR TGs get a small bar on their matches pages with *My matches* and *Inventory*.
    • **The people who run equipment movements** (coordinators, the equipment manager, monitors, owners) see every unit and counted line: its standard name, serial, where it is, what request and round it is on, and its status. Prices remain visible only to those who could see them before.
    • **Everybody else** sees how many of each item there are, per place and per country, and in what state. No brand, model, serial or price.
    • **Countries and places** are listed beside the page with their counts; click one to filter. Search, category and status filters, and an Excel export of exactly what is on screen.
    • **Logistics staff see which match a shipment is for** (competition, matchday, teams, date, venue) even without access to that competition. They see nothing else from VAR.
    • **Equipment that arrives at a match now shows as being at the venue.** A unit sent to a destination that was only typed in used to stay "in transit" for ever; it now lands at the match's stadium.
  31. 2026.09.24-9c4ee05

    Released 24 Sept, 11:40

    2026.09.24 — One name for one device

    • **Every piece of equipment is getting a standard name**: `Category — Brand Model — key spec`, from a fixed list of 37 categories. Nothing is renamed until the equipment manager accepts it on the new **Standard names** screen (Inventory → Standard names), where the approved table's proposal waits beside each item. Accept one, edit it first, accept a page at once, or merge two that are the same device. The old names are kept as aliases, so old spreadsheets and requests still match.
    • **The inventory now counts what the master list says.** The first import lost cells from the spreadsheet and let one row's count overwrite another's: 97 counted pieces were recorded against 338 in the file, and 26 different items (cables, adapters, stands, extensions) had collapsed into one line. They are now 20 named items with their real counts, and the reader is fixed.
    • **Imports ask before they invent anything.** A new step, *Names*, lists every spelling the inventory does not know yet; each one becomes an existing item, a new standard name, or rows left out. The import no longer creates categories from the item column, and never moves a unit that is already somewhere.
    • **The equipment that stayed in Qatar after ACLE MD1 is at "MPME Qatar Store"**, and six serials from the Qatar packing lists that were missing from the inventory have been added there, flagged for review.
    • **The packing list and proforma print the standard name**, with the model underneath.
    • **Somebody who asks for equipment sees only a generic name** on their request and in the decision e-mail ("PTZ Camera", "Monitor 24in"): no brand or model.
    • **The author of a draft request can delete it.** It failed silently before whenever the draft had a line on it.
  32. 2026.09.24-b5ee65f

    Released 24 Sept, 08:05

    2026.09.24 — One set of job names for scheduling

    • **The schedule's clash check now uses the same job names everywhere**, VAR TG and VAR RO included. Nothing changes on screen; a translation step between the database and the app has been removed, so there is one fewer place for the two to disagree.
  33. 2026.09.23-9d7ea3d

    Released 23 Sept, 13:40

    2026.09.24 — HB Operation no longer lives inside VAR

    • **The last of HB's early scaffolding is gone from the VAR side.** HB started life as extra columns and a crew list hanging off a VAR match; everything it needed has since moved to HB's own projects, events, crew, photos, analytics and reports. What was left behind has been removed.
    • **/schedule is VAR only.** The EIC column has gone; an HB event's crew is set on the event, and on the HB Schedule page.
    • **Editing a match no longer shows an HB crew block.**
    • **A competition can no longer be switched to run HB.** HB is run per project. The operations checkbox on the Competitions page is gone with it, because VAR is now the only choice.
    • **Nobody on the VAR side loses anything.** Every VAR reader of a competition, its matchdays and its matches sees exactly what they saw before, and VAR checklist photos upload as they always have.
  34. 2026.09.23-2af7db4

    Released 23 Sept, 13:00

    2026.09.24 — The proforma prints its own invoice number

    • **A shipment's packing list and proforma now each print their own header.** When both had been filled in, both documents printed whichever was written first — so a proforma could go to customs carrying the packing list's invoice number. Nothing real had been affected yet; it was found in a rehearsal.
    • **A proforma with no header of its own** still shows the consignee, notify and the rest from the packing list, as it always did, but never the packing list's number.
  35. 2026.09.23-dd40178

    Released 23 Sept, 12:30

    2026.09.24 — Asking for equipment for an HB event

    • **A logistics request can be for an HB event**, not only a VAR match. One picker, "What it is for", with the matches and the events in it; a request is for one or the other, never both.
    • **Picking an event fills the destination in from its venue**, and only when you have not typed one yourself.
    • **The request page says what it is for**, linking to the event or the match, and the packing list and proforma carry it on the line under the reference.
    • **A request for a drill is a drill**, whether the drill is a test competition or a ZZ HB project, so nothing about it is ever sent to anybody.
    • **A drill could previously slip through as real.** The flag was read under the permissions of whoever raised the request, so somebody asking for equipment for a match they cannot see got a request that looked real and would have been delivered. Both halves are now read properly.
  36. 2026.09.23-ae8ec68

    Released 23 Sept, 11:50

    2026.09.24 — An HB event can say which VAR match it is

    • **An HB event can be linked to the VAR match it shares a night with**, from the event page, and either side then shows a short read-only summary of the other: the fixture, the hour, the venue, who is on it and how far along it is. Neither operation needs the other to exist, and unlinking is one click.
    • **Only somebody who holds both VAR and HB Operation sees it at all**, and each half still needs that half's own access — seeing the event does not earn you the match, and seeing the match does not earn you the event. Clients see neither: it is an internal cross-reference and it names our staff.
    • **You can only link a match you already have access to.** Pasting somebody else's fixture is refused, so the summary can never be used to reach a competition you were not given.
    • **A drill and a real fixture cannot be linked to each other**, and a match belongs to at most one event.
    • **An HB client no longer reads VAR match rows.** A rule left over from when HB work hung off a match would have handed a match row to an HB client of that competition the moment anything was linked. It is gone, and VAR clients are unaffected.
  37. 2026.09.23-3b0030b

    Released 23 Sept, 10:55

    2026.09.23 — HB analytics and the HB monthly report, both on the project

    • **Analytics measures Host Broadcast again**, and it measures a PROJECT over a date range rather than a competition over matchdays — an HB event has neither. The "HB analytics returns in the next update" notice is gone: the block is back, with the events covered, the share of phases signed off, the checklist work behind them, the reviewed reports, incidents on air, downtime, and averages for cameras, EVS channels and crew.
    • **The Excel export carries HB events, phases, incidents and a summary sheet**, from the same numbers as the page.
    • **Every HB number now comes from one place.** The page, the workbook and the monthly report all read the same aggregation, so a figure cannot say one thing on screen and another in the document a client is sent.
    • **A monthly report for each HB project**, generated and sent on the 1st of the month for the month before, to the clients of that project who take HB reports and the admins in scope. It counts reviewed reports only, whoever asks for it.
    • **/analytics no longer stops at "No competition in your scope yet"** for an account that only holds HB. Each operation brings its own scope, and an account sees the ones it actually has.
    • **The VAR monthly report no longer carries an HB chapter.** It was keyed on the competition, which a project knows nothing about; Host Broadcast has its own document now.
  38. 2026.09.23-ea2f257

    Released 23 Sept, 09:05

    2026.09.23 — Giving somebody an HB project, and two things that had to be shut first

    • **HB projects are granted on the Users page**, beside competitions, for client accounts and for scoped admins. The table has existed since the platform split; nothing could ever write to it, because the page that would do the granting could not read the list of projects to offer. It can now.
    • **A client gets the reviewed report and what the report is made of** — the event, its phases, their counts and the crew who signed it — and nothing else. Not an event whose report is still a draft, and never the photo evidence, which stays with the crew exactly as it does on VAR.
    • **A drill stays a drill.** Granting somebody a ZZ project gives them nothing: only whoever created it, and whoever is actually on its crew, can see it. Both of these were open until this release, and both were found by granting the first project and then looking.
    • **A clash warning now survives midnight.** A 23:00 kick-off and a 01:00 on-air were treated as a day apart and never flagged; they are two hours apart and are flagged.
  39. 2026.09.22-542ebfa

    Released 22 Sept, 14:15

    2026.09.22 — HB scheduling, and a clash warning that crosses the platforms

    • **Schedule HB crew is a permission of its own.** Somebody who fills in crew lists no longer has to be handed the whole HB platform to do it; Manage HB keeps what it had.
    • **An HB event's crew is set on the event.** A role holds as many people as the job needs — three CCU operators are three chips — and there is exactly one EIC: picking a second replaces the first. Each picker offers the people who actually do that job, from the job roles on the Users page, with the owner able to show everyone for the days when somebody covers.
    • **A new Schedule page under HB**: every event in a window, grouped by day, with who is on each, which roles are still unfilled, which events have no EIC, and every clash.
    • **A clash now crosses the two operations.** Assigning a VAR TG warns you when that person is on a Host Broadcast event the same evening, and the other way round. You are told the person, the platform and the hour — not the show, the client or the venue, which stay with the operation that owns them.
    • **Drills never clash.** A ZZ competition or a ZZ project cannot make a real assignment look busy.
    • **Two jobs on one HB event is no longer flagged.** An OB engineer who is also on CCU is a normal crew list; being both VAR TG and Replay Operator on one match still is not.
  40. 2026.09.22-fc14cb5

    Released 22 Sept, 11:40

    2026.09.22 — HB Operation runs on its own events

    • **HB Operation is back, and it no longer borrows a VAR match.** Its work hangs off an HB EVENT: a title, a date, an on-air time, a venue, and two teams only when the thing has two sides. A concert, a conference or a one-off show can now be described without inventing a fixture for it.
    • **The pages moved with it.** `/hb/matches/<id>` is `/hb/events/<id>`. The dashboard, My HB work and the reports list all read the event, its project and its client. Old HB links in an inbox say the item is no longer there instead of opening a page that cannot exist.
    • **A role can hold more than one person.** Three CCU operators are one line on the event, not three; My HB work says "you are EIC · CCU operator" where it used to name a single job. There is still exactly one EIC.
    • **The phase pattern now lives on the project**, under Projects, where the events it builds actually live. Each project says how many phases its pattern has, and warns when it has events but no pattern. The Competitions page keeps its HB checkbox and loses the pattern panel.
    • **The report is the event's report.** Its number is `HB-<project>-<date>-<home>-<away>`, or `HB-<project>-<date>-<nn>` when the event has no two sides, and the PDF is filed under the event. Photo evidence has its own store, separate from the VAR checklist's.
    • **VAR Operation and Logistics are untouched.** Verified as four different kinds of account — owner, scoped admin, VAR TG and client — across every VAR, shared and HB page: no error screen, no server error, no console error.
  41. 2026.09.22-1d7a24c

    Released 22 Sept, 08:20

    2026.09.22 — HB Operation is being upgraded

    • **HB Operation is becoming a platform of its own**, with its own clients, projects and events instead of borrowing VAR's competitions and matches. An HB job stops needing two teams and a matchday to exist, so a concert or a conference can finally be described.
    • **While that lands, every HB page shows one note explaining it** rather than an error. Nothing is lost: no HB phase, crew list or report has ever been created.
    • **The HB phase pattern is hidden on the Competitions page**, because a pattern now belongs to an HB project. The rest of that page — competitions, matchdays, templates, access — is unchanged.
    • **VAR Operation and Logistics are untouched.** The dashboard, the schedule, the match pages, the reports, analytics, the alerts and the equipment side all work exactly as before, and the five-minute alert cron keeps running every other check it makes.
  42. 2026.09.21-5e32a94

    Released 22 Sept, 00:05

    2026.09.22 — What a database function is allowed to be asked

    • **An audit of every `security definer` function in the schema**, across VAR, HB and Logistics. A function marked that way runs with the database owner's rights, which means row-level security does not apply inside it: whoever is allowed to call it can reach whatever it touches, whatever the policies say. Ninety-three of them, fifty reachable from outside, eight wrong.
    • **The notification cron could be fired by anybody.** `run_check_matches_cron` was callable by an unauthenticated visitor. It reads the cron secret out of the vault and calls the scheduler endpoint with it, so anyone could have run the kick-off warnings, the offline alerts, the monthly client reports and the release announcement, as often as they liked. Now only the scheduler itself can.
    • **Two functions that change a match could be called by anyone signed in.** Recomputing a match's status or an HB phase's status writes a row, stamps a completion time and sends a notification — and a VAR TG could have done it to a match they had nothing to do with. Only the database's own triggers reach them now; ticking a checklist works exactly as before.
    • **Three functions answered questions about people and reports** to anyone signed in: who an HB report would be sent to, including the client's name; every logistics coordinator's account; what operations another account holds. All three are now the server's alone.
    • **"What is still missing from this report"** could be asked about any report at all. It now answers only to the person the match is assigned to, and to an admin with access to that competition — the same rule the report itself follows.
    • Four helper functions were deliberately left as they are, because the security policies themselves call them and a check inside would be circular. That decision is written down in the migration rather than left to be rediscovered.
  43. 2026.09.21-459d6a5

    Released 21 Sept, 23:30

    2026.09.21 — Logistics: asking for equipment, and what happens to it

    notify: all

    • **Ask for equipment by what it is, not by which one.** A request names a description — "Sony PXW-Z750" — and how many, where it is going, for which dates and what for, and whether it comes back. You never have to know a serial number to ask for something, and you are never shown one.
    • **A coordinator picks the actual units.** They see every unit of each requested description with where it is, what it is already booked to in those dates, and which ones are worth taking because they are already at the place the job starts from. A unit that is booked elsewhere, retired or waiting on review cannot be picked — the database refuses it as well as the screen.
    • **Nothing leaves without the owner's word.** Allocating sends the request for approval; approving makes the reservations real and produces the paperwork; turning it down frees every unit, so nothing stays booked to a job nobody agreed to.
    • **The packing list and the proforma invoice** are generated from the units that are actually going, in the layout of the existing lists — SHIPPER, CONSIGNEE, Notify, EQ SUPERVISOR, TEAM LEADER, DATE, INVOICE No. — with OWNER reading VAR MPME. Both always carry unit value, total, currency and country of origin, because customs will not take a declaration without them, and every download is recorded in the view log.
    • **What the person who asked can see has been narrowed.** A request is a list of descriptions and quantities; which serials answer it, where they are and what they are worth is the coordinator's business and the owner's. If you asked for equipment last week you could see those details and you no longer can — on the page, in what the page is sent, and through the paperwork.
    • **A new permission, *Logistics monitor*,** for watching the operation without running it: every request with its whole record — asked for, allocated with serials and locations, approved, every movement, the paperwork — and not one control to change any of it. Grantable per person on the Users page.
    • **Movements are recorded, not announced.** A unit leaving or arriving appears on the request's own timeline and interrupts nobody. You are told twice: once when **everything is back**, and once a day while something is **overdue**, which also reaches the person who asked for it, since they are the one who has it.
    • **Alerts settings now lists the Logistics events** beside the VAR and HB ones, so you can see what the app sends by itself and switch your channels off.
  44. 2026.09.21-d7c0cee

    Released 21 Sept, 13:50

    2026.09.21 — Logistics: the inventory

    • **Logistics is a third operation**, beside VAR and HB, with its own section in the operation switcher. Like the other two it is a grant: nobody sees it until an owner gives it to them on the Users page.
    • **Two logistics jobs, granted separately.** *Equipment manager* owns the master inventory — descriptions, units, serials, cases, stock, locations and the spreadsheet import. *Logistics coordinator* receives requests and allocates units to them, and arrives with the next release.
    • **The inventory** lists every description, the serialised units under it, the consumables counted against it, and where all of it is. Any admin or VAR TG holding an operation can read it.
    • **Prices are not on it.** Purchase price, total, currency and country of origin are visible only to owners, the equipment manager and the coordinator. They are held apart from the rest of the inventory rather than hidden by the page, so an export or a report cannot carry a price to somebody who should not see one. **The shipping documents are the exception and always carry the values** — a customs declaration without them is not a declaration — and every one of those downloads is recorded in the view log.
    • **The spreadsheet import** reads an .xlsx, shows you which column it thinks is which, and previews every row as new, changed, unchanged or missing before anything is written. Nothing reaches the inventory until you press Apply.
    • **A row the spreadsheet got wrong still comes in, and says so.** Excel silently rounds long serial numbers, so some are simply gone from the file; other rows claim a serial another row already has; and some have a case model where a serial belongs. Each of these arrives with a placeholder, a note of what the file actually said, and the row number to go back to — rather than holding up the hundreds of rows that are fine.
    • **Needs review** on the inventory, and a line on the dashboard, say how many are waiting. Each one can be resolved in place: type the serial off the device, merge two rows into one unit, turn it into a case or into counted stock, or confirm it is right as it stands. **A flagged unit cannot be assigned to anything until it is resolved** — a placeholder is a promise to find out, not an identification.
    • Every change to the inventory is recorded with the value before and the value after, whoever made it and however it was made.
  45. 2026.09.21-8698b33

    Released 21 Sept, 13:30

    2026.09.21 — Logistics: the inventory

    • **Logistics is a third operation**, beside VAR and HB, with its own section in the operation switcher. Like the other two it is a grant: nobody sees it until an owner gives it to them on the Users page.
    • **Two logistics jobs, granted separately.** *Equipment manager* owns the master inventory — descriptions, units, serials, cases, stock, locations and the spreadsheet import. *Logistics coordinator* receives requests and allocates units to them, and arrives with the next release.
    • **The inventory** lists every description, the serialised units under it, the consumables counted against it, and where all of it is. Any admin or VAR TG holding an operation can read it.
    • **Prices are not on it.** Purchase price, total, currency and country of origin are visible only to owners, the equipment manager and the coordinator. They are held apart from the rest of the inventory rather than hidden by the page, so an export or a report cannot carry a price to somebody who should not see one. **The shipping documents are the exception and always carry the values** — a customs declaration without them is not a declaration — and every one of those downloads is recorded in the view log.
    • **The spreadsheet import** reads an .xlsx, shows you which column it thinks is which, and previews every row as new, changed, unchanged or missing before anything is written. Nothing reaches the inventory until you press Apply.
    • **A row the spreadsheet got wrong still comes in, and says so.** Excel silently rounds long serial numbers, so some are simply gone from the file; other rows claim a serial another row already has; and some have a case model where a serial belongs. Each of these arrives with a placeholder, a note of what the file actually said, and the row number to go back to — rather than holding up the hundreds of rows that are fine.
    • **Needs review** on the inventory, and a line on the dashboard, say how many are waiting. Each one can be resolved in place: type the serial off the device, merge two rows into one unit, turn it into a case or into counted stock, or confirm it is right as it stands. **A flagged unit cannot be assigned to anything until it is resolved** — a placeholder is a promise to find out, not an identification.
    • Every change to the inventory is recorded with the value before and the value after, whoever made it and however it was made.
  46. 2026.09.21-9ba2c56

    Released 21 Sept, 10:10

    2026.09.21 — A design pass across the whole app

    • **The app has a visual identity now.** Cards, panels and rows are surfaces lit from above rather than flat boxes with a border, so the screen has a foreground and a background. Headings, titles and figures each have their own size instead of everything being the same one, and every number in the app lines up in a column.
    • **A status is a colour before it is a word.** Reviewed, submitted, draft, on time, late — each carries a tint, a dot and a rule down the edge of its row, so a list can be read at a glance.
    • **Reports read as records, not as forms.** The facts of a report are labelled and separated; the actions sit in a strip that belongs to the row. VAR Operation and HB Operation use exactly the same design.
    • **Analytics says each number in the size it deserves**, and colours it only where it carries a judgement — on-time percentage, downtime, critical issues.
    • **The sign-in page** is now the brand and what the product does beside the form, instead of a form floating in an empty screen.
    • **On a phone**: the install offer is a slim bar at the bottom instead of a panel taking a third of the first screen, the date filters wrap instead of scrolling off the edge, and the search box is a search box again.
    • **Loading states show the shape of what is coming** — the card with its footer, the row with its buttons, the tiles — and catch a band of light while they wait.
    • Motion is unchanged in spirit and slightly better in detail: dialogs settle instead of popping, a phone gets a sheet from the bottom edge, a finished progress bar sweeps once. Everything still under a quarter of a second, and still switched off entirely for anyone whose device asks for reduced motion.
  47. 2026.09.21-eb9bfff

    Released 21 Sept, 10:00

    2026.09.21 — A design pass across the whole app

    • **The app has a visual identity now.** Cards, panels and rows are surfaces lit from above rather than flat boxes with a border, so the screen has a foreground and a background. Headings, titles and figures each have their own size instead of everything being the same one, and every number in the app lines up in a column.
    • **A status is a colour before it is a word.** Reviewed, submitted, draft, on time, late — each carries a tint, a dot and a rule down the edge of its row, so a list can be read at a glance.
    • **Reports read as records, not as forms.** The facts of a report are labelled and separated; the actions sit in a strip that belongs to the row. VAR Operation and HB Operation use exactly the same design.
    • **Analytics says each number in the size it deserves**, and colours it only where it carries a judgement — on-time percentage, downtime, critical issues.
    • **The sign-in page** is now the brand and what the product does beside the form, instead of a form floating in an empty screen.
    • **On a phone**: the install offer is a slim bar at the bottom instead of a panel taking a third of the first screen, the date filters wrap instead of scrolling off the edge, and the search box is a search box again.
    • **Loading states show the shape of what is coming** — the card with its footer, the row with its buttons, the tiles — and catch a band of light while they wait.
    • Motion is unchanged in spirit and slightly better in detail: dialogs settle instead of popping, a phone gets a sheet from the bottom edge, a finished progress bar sweeps once. Everything still under a quarter of a second, and still switched off entirely for anyone whose device asks for reduced motion.
  48. 2026.09.21-fef8552

    Released 21 Sept, 09:50

    2026.09.21 — A design pass across the whole app

    • **The app has a visual identity now.** Cards, panels and rows are surfaces lit from above rather than flat boxes with a border, so the screen has a foreground and a background. Headings, titles and figures each have their own size instead of everything being the same one, and every number in the app lines up in a column.
    • **A status is a colour before it is a word.** Reviewed, submitted, draft, on time, late — each carries a tint, a dot and a rule down the edge of its row, so a list can be read at a glance.
    • **Reports read as records, not as forms.** The facts of a report are labelled and separated; the actions sit in a strip that belongs to the row. VAR Operation and HB Operation use exactly the same design.
    • **Analytics says each number in the size it deserves**, and colours it only where it carries a judgement — on-time percentage, downtime, critical issues.
    • **The sign-in page** is now the brand and what the product does beside the form, instead of a form floating in an empty screen.
    • **On a phone**: the install offer is a slim bar at the bottom instead of a panel taking a third of the first screen, the date filters wrap instead of scrolling off the edge, and the search box is a search box again.
    • **Loading states show the shape of what is coming** — the card with its footer, the row with its buttons, the tiles — and catch a band of light while they wait.
    • Motion is unchanged in spirit and slightly better in detail: dialogs settle instead of popping, a phone gets a sheet from the bottom edge, a finished progress bar sweeps once. Everything still under a quarter of a second, and still switched off entirely for anyone whose device asks for reduced motion.
  49. 2026.09.21-4677d23

    Released 21 Sept, 09:45

    2026.09.21 — A design pass across the whole app

    • **The app has a visual identity now.** Cards, panels and rows are surfaces lit from above rather than flat boxes with a border, so the screen has a foreground and a background. Headings, titles and figures each have their own size instead of everything being the same one, and every number in the app lines up in a column.
    • **A status is a colour before it is a word.** Reviewed, submitted, draft, on time, late — each carries a tint, a dot and a rule down the edge of its row, so a list can be read at a glance.
    • **Reports read as records, not as forms.** The facts of a report are labelled and separated; the actions sit in a strip that belongs to the row. VAR Operation and HB Operation use exactly the same design.
    • **Analytics says each number in the size it deserves**, and colours it only where it carries a judgement — on-time percentage, downtime, critical issues.
    • **The sign-in page** is now the brand and what the product does beside the form, instead of a form floating in an empty screen.
    • **On a phone**: the install offer is a slim bar at the bottom instead of a panel taking a third of the first screen, the date filters wrap instead of scrolling off the edge, and the search box is a search box again.
    • **Loading states show the shape of what is coming** — the card with its footer, the row with its buttons, the tiles — and catch a band of light while they wait.
    • Motion is unchanged in spirit and slightly better in detail: dialogs settle instead of popping, a phone gets a sheet from the bottom edge, a finished progress bar sweeps once. Everything still under a quarter of a second, and still switched off entirely for anyone whose device asks for reduced motion.
  50. 2026.09.21-0643b38

    Released 21 Sept, 09:40

    2026.09.21 — A design pass across the whole app

    • **The app has a visual identity now.** Cards, panels and rows are surfaces lit from above rather than flat boxes with a border, so the screen has a foreground and a background. Headings, titles and figures each have their own size instead of everything being the same one, and every number in the app lines up in a column.
    • **A status is a colour before it is a word.** Reviewed, submitted, draft, on time, late — each carries a tint, a dot and a rule down the edge of its row, so a list can be read at a glance.
    • **Reports read as records, not as forms.** The facts of a report are labelled and separated; the actions sit in a strip that belongs to the row. VAR Operation and HB Operation use exactly the same design.
    • **Analytics says each number in the size it deserves**, and colours it only where it carries a judgement — on-time percentage, downtime, critical issues.
    • **The sign-in page** is now the brand and what the product does beside the form, instead of a form floating in an empty screen.
    • **On a phone**: the install offer is a slim bar at the bottom instead of a panel taking a third of the first screen, the date filters wrap instead of scrolling off the edge, and the search box is a search box again.
    • **Loading states show the shape of what is coming** — the card with its footer, the row with its buttons, the tiles — and catch a band of light while they wait.
    • Motion is unchanged in spirit and slightly better in detail: dialogs settle instead of popping, a phone gets a sheet from the bottom edge, a finished progress bar sweeps once. Everything still under a quarter of a second, and still switched off entirely for anyone whose device asks for reduced motion.

How to install the app