A tally counter for observing pick-and-place machines. You tap what happens, it works out the success ratio, throughput and failure breakdown. Everything is stored on your own phone.
Each coloured row is one category. The colour is the target — you shouldn't need to read the label once you know your layout.
The number under each count shows that category's share of total failures — the quickest read on where your problem actually is.
| Total attempts | Every count added together, successes and failures. |
| Success ratio | Successes ÷ total. Green above 97%, amber below, red below 90%. |
| Centre figure | Active time since your first entry, and attempts per hour once a minute has passed. |
| Machine name | Tap the line at the top to name the unit. It appears in every export. |
| Undo | Reverses the last +1, whichever category it was, and deletes its comment if it had one. Faster than finding the right row. |
| Pause | Stops the clock when the machine is down or you leave the post. Paused time is excluded from the per-hour rate. Tapping any category automatically resumes the run and performs that action, so you cannot keep counting for minutes without noticing that the timer is still paused. Each stop is logged with its start time and duration. Add reasons afterwards in the Export window, which is editable. |
| Lock | Covers the screen so nothing can be tapped by accident — pocket, bench, handing the phone over. Hold the unlock button about a second to come back. The clock keeps running. |
| Haptic feedback | On devices that support the Web Vibration API, counts give a short vibration, undo/removal uses a different pattern, and resuming from a paused category tap gives a stronger distinct pattern. Some browsers, including iOS Safari, do not expose vibration to web apps. |
Edit turns every row into Edit / Delete buttons. Nothing is protected — the default categories can be renamed, recoloured or removed like any other.
When creating or editing one, Counts as decides which side of the success ratio it lands on. Most things are failures; use success for anything that still completed the cycle.
Deleting a category deletes its counts. The total and ratio recalculate immediately. Export first if the run matters.
A template stores a set of categories — one per machine type, not per machine. The dialog has two sections.
Shared library comes from templates.json on the server. Everyone using this address gets the same list, and it updates when that file is updated — no need to reinstall. Load uses it for this run; Copy to mine takes an editable copy.
My templates are yours alone, stored on this phone.
A fresh install starts on the template marked as default in the shared library.
End run asks once, then files the run into the archive and starts fresh. Counts, comments, timings and the machine name all go with it.
Archive lists past runs with date, machine, total and ratio. Export any single run as .txt, all of them as one text file, or All .csv for a spreadsheet — one row per run, one column per category, ready for Excel.
Tick two or more runs and press Compare for a side-by-side table of ratios, rates, stoppages and per-category counts. That comparison can be saved as its own CSV.
The Export window has a Run notes field — operator, batch, line conditions, anything worth recording. It is saved with the run, goes into the archive, and appears in both the text report and the CSV.
Export shows the full report. Save .txt downloads it named after the machine and date; Copy puts it on the clipboard. The report contains timings, totals, per-category counts, the sorted failure breakdown, and an event log combining your comments and every stoppage in chronological order.
| Contrast | Solid colour blocks on pure black. Designed for low screen brightness — on an OLED phone the black pixels are switched off, so a long run costs much less battery. |
| Keep awake | Stops the screen sleeping mid-observation. Needs HTTPS; it re-arms itself if you switch apps and come back. |
In Chrome, use Install app or Add to Home screen. You get an icon, no address bar, and the app opens even with no signal.
Everything — current run, archive, templates — is stored in your browser on this phone. Nothing is sent to a server, so no one else can see it and nothing syncs between devices.
Export what matters. Clearing the browser's site data wipes runs, archive and templates. Treat the archive as a working buffer: export to .txt after each campaign and keep the file somewhere else.