SindriLot 1.0.0 — manual
SindriLot records which production batch filled which order line, blocks overselling a batch, traces in both directions, and prints a remake sheet and a change notice from your own batch records. It is one offline HTML file. There is no account, no upload and no tracking.
Tested on: Google Chrome 152 on Linux (desktop and a 390 px narrow window). Other browsers and operating systems were not tested. Printing was checked as a PDF; no physical printer was tested.
1. Prerequisites and opening the app
- Unzip
SindriLot-1.0.0.zipinto a folder you keep, for exampleDocuments/SindriLot. - Double-click
sindrilot.html. If it opens in a different browser, right-click it and choose Open with › Google Chrome. - No installation, build step or internet connection is needed.

2. First result in two minutes (sample studio)
Click Open sample studio. The fictional Oak Lane Studio has three batches, five order lines and one image: a labelled fixture diagram attached to batch M1 (an original drawing, not a photograph). All names and values are invented.
| Batch | Form | Made | Firsts | Seconds | Lost |
|---|---|---|---|---|---|
| M1 | Everyday Mug | 24 | 18 | 4 | 2 |
| P1 | Dinner Plate | 16 | 12 | 2 | 2 |
| P2 | Dinner Plate | 12 | 11 | 1 | 0 |
- The app opens Allocate on order
E1003(6 mugs, firsts). Choose batch M1, type15and press Allocate. It is refused with both reasons: the line needs only 6, and M1 has only 14 firsts left. - Type
6and press Allocate. M1 now has 8 firsts left.


Trace: batch P1 → orders W07 (10) and E1002 (2); order W07 → batch P1 (10).

Remake sheet: choose order W07. Its only supplying batch, P1, is selected. For 10 good pieces the estimate is ceil(10 × 16 ÷ 12) = 14. Add a buffer if you want extra pieces; it is shown separately.


Change notice: reference P1, compared P2. Exactly one recorded difference is listed: the clay label.

3. Your own studio
- On Start, type a studio name and press Start empty studio.
- Forms: add each repeat product (name, optional SKU, optional order-file labels — exact alternative names that appear in your order CSV).
- Batches › New batch: code (unique), form, made date, clay/glaze/firing labels in your own words, up to 6 extra labels (
Name: value), up to 8 measurements (Height: 95 mm), and counts made / firsts / seconds / lost. Any gap is shown as unrecorded. Duplicate as next batch copies labels and measurements but not counts or photos. - Optional photos: JPEG or PNG, at most 1 MiB and 12 megapixels each, 4 per batch, 32 per studio. The original file and name are kept unchanged.
- Orders: add order lines by hand or import a CSV. Each line names one form, a quantity and the accepted grade: firsts (default) or seconds.
- Allocate: a firsts line can only take recorded firsts; a seconds line only recorded seconds. Lost and unrecorded pieces are never available.

Edits are checked as a whole before saving. You cannot lower firsts, seconds or a quantity below what is already allocated, change a line's form or grade, or delete a batch, line or form that is in use; the message lists the dependent rows to revise first. Remove allocation returns exactly that quantity to its pool.
4. Importing order lines (CSV)
- Format: UTF-8, comma-separated, RFC 4180 quoting, a header row. At most 2 MiB and 2,000 data rows per file.
- Map columns yourself: Order ID, Line ID, Form or SKU, Quantity (required); Grade, Date (YYYY-MM-DD), Customer, Channel (optional). Headers named like
order_id,line_id,form,quantityare pre-selected. There are no marketplace presets; SindriLot has not been verified against any shop's export. - Values are used exactly as written; nothing is trimmed or re-cased. Order and line IDs keep case and leading zeros, so
0001,00001and0001/aversus0001/Aare different lines. Form must exactly match a form name, SKU or saved order-file label. - An order or line ID that starts or ends with a space, contains two spaces in a row, a tab, a line break, a special or invisible character, or accents in decomposed form (not Unicode NFC) is rejected with its row number instead of being changed, so two IDs that look the same are never stored or merged. The same rule applies when you type an ID, and to form names, SKUs and order-file labels.
- Every row is reported: new, unchanged (no-op), changed (applied only if you tick it), duplicate, conflict or rejected, with its row number and reason. Unmapped optional columns never overwrite recorded values. If applying would break an allocation, the whole import is refused.

" 0001 ") is rejected with the reason; rows 3–5 are three different lines.
oak-lane-orders.csv: 2 new, 2 unchanged, 1 changed, 1 duplicate, 2 rejected.5. Saving, closing and reopening
SindriLot keeps your studio in this browser's storage for convenience, but browser storage can be cleared. Save studio archive downloads a ZIP containing studio.json, spreadsheet views (batches.csv, order_lines.csv, allocations.csv), your original photos and manifest.sha256. The header shows Changes not yet saved in an archive until you save.
The example file examples/oak-lane-sample-archive.zip is exactly what Save studio archive produced after the walkthrough above (Open sample studio, then allocate 6 from M1 to E1003): the same studio.json, CSV views, fixture diagram and manifest. Only the ZIP timestamps differ when you save it yourself.
Restore archive… checks the whole archive before anything changes: SHA-256 of every entry, entry names and count, size limits, record fields, links between records, grades and allocation totals. You then confirm replacing the current studio. A damaged or edited archive is refused and the current studio is untouched. Restore archives exactly as saved; a re-zipped (compressed) copy is refused. The manifest detects accidental changes; it does not prove who made the file.


CSV exports prefix cells starting with = + - @ with an apostrophe so spreadsheets do not run them as formulas; studio.json keeps the exact text.
Two tabs: if the studio is changed in another tab, this tab shows a warning and refuses to save until reloaded, so two tabs cannot oversell the same batch.

6. Limits
| Per studio | 200 batches, 2,000 order lines, 4,000 allocations, 100 forms, 32 photos |
| Per batch | made/firsts/seconds/lost 0–1,000,000; 6 extra labels; 8 measurements; 4 photos |
| Photo | JPEG or PNG, ≤ 1 MiB, ≤ 12 megapixels |
| CSV import | ≤ 2 MiB and ≤ 2,000 data rows per file |
| IDs | order ID ≤ 64 characters, line ID ≤ 32; kept exactly (see section 4); photo file names kept exactly, ≤ 255 characters |
| Archive | ≤ 40 MiB, ≤ 100 entries, studio.json ≤ 8 MiB |
| Remake estimate | needed pieces and buffer 0–1,000,000; first quality only; needs every made piece recorded and at least one first |
7. Troubleshooting
| Message or symptom | What to do |
|---|---|
| “… has N firsts left; you entered M” | Choose a smaller number or another batch of the same form. |
| “… recorded N but M are allocated” | Remove or reduce the listed allocations first, then lower the count. |
| “… unrecorded pieces” on the remake sheet | Record every made piece as firsts, seconds or lost in that batch. |
| Import row “starts or ends with a space”, “contains a tab … or invisible character” or “not Unicode NFC” | Correct that ID in your spreadsheet and import again. SindriLot never trims or rewrites IDs, so it refuses ones that would look identical to a different ID. |
| Import row “does not exactly match a form” | Add the exact text as an order-file label on the form, or fix the file. |
| “not valid UTF-8” | Save the spreadsheet as “CSV UTF-8 (comma delimited)”. |
| “changed in another tab” | Reload the page; the latest saved studio appears. |
| Restore refused | Use the archive exactly as SindriLot saved it. The message names the failing entry. |
| Studio missing after clearing browser data | Restore your latest archive. |
8. Privacy
Everything stays on your computer. The app file makes no network requests (verified with a request log in testing) and contains a content-security policy that blocks connections. Archives and CSVs go only where you save them.
9. What SindriLot does not do
No firing schedules, recipes, chemistry, food-safety, product-safety or compliance guidance. Clay, glaze and firing appear only as your own labels. No shop integration, stock counts, accounting or seconds-yield forecasts. The remake number is an estimate from one batch, not a guaranteed yield.
10. Uninstall
Save a final archive if you want to keep your records. On Start, press Remove studio from this browser, then delete the SindriLot folder.