diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 293311c..d209af9 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,9 +16,10 @@ jobs:
with:
node-version: 22
- # The app has no package.json; install the test runner without creating one.
+ # The app has no package.json; install the test runner (and the barcode reader
+ # the photo-scan test serves locally) without creating one.
- name: Install Playwright
- run: npm install --no-save playwright@1.56.1
+ run: npm install --no-save playwright@1.56.1 @zxing/library@0.23.0
- name: Install browsers
run: npx playwright install --with-deps chromium webkit
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index df6f0c5..eae0b7f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -22,7 +22,7 @@ The smoke tests in `tests/` drive the app in Playwright on Android, iPhone, iPad
and desktop sizes. To run them locally in Chromium:
```bash
-npm install --no-save playwright@1.56.1 && npx playwright install chromium
+npm install --no-save playwright@1.56.1 @zxing/library@0.23.0 && npx playwright install chromium
MT_BROWSERS=chromium npx playwright test -c tests/playwright.config.js
```
diff --git a/docs/barcode-scanner.html b/docs/barcode-scanner.html
index dd8d690..83414b5 100644
--- a/docs/barcode-scanner.html
+++ b/docs/barcode-scanner.html
@@ -425,7 +425,7 @@
Feature Guide
Barcode Scanner
- Point your camera at a product barcode and Macrolog looks it up instantly. Results are cached, so foods you scan often appear in a flash.
+ Point your camera at a product barcode, or give Macrolog a photo of one, and it looks the product up instantly. Results are cached, so foods you scan often appear in a flash.
@@ -451,37 +451,60 @@
How scanning works.
-
+
- 02 — Scanning Tips
+ 02 — No Camera?
+
+
+
+
No camera? Use a photo.
+
+ Most laptops and desktops don’t have a camera you can point at a packet. Take a photo with your phone, or screenshot a barcode from a shopping site, and Macrolog reads the barcode from the image instead.
+
+
+
On the Scan tab, tap Barcode from Image and pick the photo.
+
On a computer, drag the photo onto the Log Food page, or copy a screenshot and paste it (Ctrl+V, or Cmd+V on a Mac).
+
Recipes work the same way: in an ingredient’s Scan dialog, use Barcode from Image or drop or paste the photo.
+
Sideways, upside-down and tilted barcodes are fine. A full-size phone photo works even when the barcode is small in it; a blurry one may not.
+
If a photo won’t read, type the number under the barcode into Search. The product comes up first, marked Barcode.
+
+
+
+
+
+
+
+
+
+ 03 — Scanning Tips
Pro Tip
-
Scanning tips.
+
Scanning tips.
A clean, steady read is everything. If a code won’t catch, these adjustments almost always fix it.
Hold steady — the scanner needs a sharp, well-lit barcode.
Move closer or further if it doesn’t detect — 15–25cm is usually ideal.
-
If the barcode won’t scan, try “Upload Label” or “Paste Text” instead.
+
If the barcode won’t scan, try “Barcode from Image”, “Upload Label” or “Paste Text” instead.
-
-
+
+
- 03 — Product Not Found?
+ 04 — Product Not Found?
-
Product not found?
+
Product not found?
Not every product is in the database yet — but a barcode you add once is yours forever, and instant on every future scan.
- v2026-10-07.2
+ v2026-10-07.47 October 2026Latest
+
+
+
New
+
+
Barcode from Image — on the Scan tab, and in a recipe's Scan ingredient dialog, pick a photo or screenshot and Macrolog reads the barcode from it, then looks the product up as if you had scanned it. Handles sideways, upside-down and tilted barcodes, and small barcodes in full-size phone photos
+
Drop or paste a barcode image — on a computer, drag a photo onto the Log Food page or paste a screenshot (Ctrl/Cmd+V) to read its barcode, from any Log Food tab
+
Type a barcode into Search — the 8 to 14 digit number printed under a barcode now finds that product directly, shown first with a Barcode tag
+
+
+
+
Improved
+
+
No camera — on a device without a camera the Scan tab no longer shows an empty viewfinder and a permissions error. It says no camera was found and points to Barcode from Image
- Every release is driven by real use. This one gives laptops and desktops a layout of their own, keeps your custom foods list to foods you added, makes the chart dates readable again, and helps new users set their own targets.
+ Every release is driven by real use. This one reads barcodes from photos and screenshots for computers without a camera, gives laptops and desktops a layout of their own, keeps your custom foods list to foods you added, makes the chart dates readable again, and helps new users set their own targets.
+ Tap Barcode from Image on the Scan tab and pick a photo or screenshot, and Macrolog reads the barcode and looks the product up. On a computer you can also drag a photo onto Log Food or paste a screenshot.
+
+
+
+
+ It works in a recipe's Scan ingredient dialog too. If a photo won't read, type the number printed under the barcode into Search and the product comes up first.
+
+
+
+
Barcode scanner
-
Scan any food barcode to pull up nutrition data instantly — no manual entry needed.
+
Scan any food barcode with your camera, or from a photo or screenshot, to pull up nutrition data instantly — no manual entry needed.