diff --git a/README.md b/README.md
index cf2fbb3..633a22b 100644
--- a/README.md
+++ b/README.md
@@ -98,6 +98,20 @@ as you fix it, and `Esc` abandons the edit. Here a `TIME(15)` column rejects `08
---
+### `LOOKUP` columns — pick a value instead of typing it
+
+A column declared `LOOKUP
. DISPLAY ` edits through a dropdown in
+both BROWSE and forms — showing the friendlier label, storing the code. Here `SCHEDID`
+is constrained to `SCHEDULES.SCHEDID`, displaying `DESCR`.
+
+
+
+A field-bound `@ SAY GET` (one whose name matches a table column) renders the same picker:
+
+
+
+---
+
### Aggregate commands & dBASE III parity
`SUM`, `AVERAGE`, `? ROUND(…)`, `? MAX(…)`, and `SORT ON … TO` — numeric aggregates and sorted copies, honouring the active filter.
diff --git a/docs/screenshots/screenshot-assistant-wizard.png b/docs/screenshots/screenshot-assistant-wizard.png
index 0edd42e..18f882d 100644
Binary files a/docs/screenshots/screenshot-assistant-wizard.png and b/docs/screenshots/screenshot-assistant-wizard.png differ
diff --git a/docs/screenshots/screenshot-assistant.png b/docs/screenshots/screenshot-assistant.png
index 52d8c26..eafb182 100644
Binary files a/docs/screenshots/screenshot-assistant.png and b/docs/screenshots/screenshot-assistant.png differ
diff --git a/docs/screenshots/screenshot-csv.png b/docs/screenshots/screenshot-csv.png
index 25fa95e..8811f0b 100644
Binary files a/docs/screenshots/screenshot-csv.png and b/docs/screenshots/screenshot-csv.png differ
diff --git a/docs/screenshots/screenshot-index.png b/docs/screenshots/screenshot-index.png
index 8884642..d61869a 100644
Binary files a/docs/screenshots/screenshot-index.png and b/docs/screenshots/screenshot-index.png differ
diff --git a/docs/screenshots/screenshot-list.png b/docs/screenshots/screenshot-list.png
index c635a5b..bd06029 100644
Binary files a/docs/screenshots/screenshot-list.png and b/docs/screenshots/screenshot-list.png differ
diff --git a/docs/screenshots/screenshot-lookup-browse.png b/docs/screenshots/screenshot-lookup-browse.png
new file mode 100644
index 0000000..fa8d10c
Binary files /dev/null and b/docs/screenshots/screenshot-lookup-browse.png differ
diff --git a/docs/screenshots/screenshot-lookup-form.png b/docs/screenshots/screenshot-lookup-form.png
new file mode 100644
index 0000000..3237adc
Binary files /dev/null and b/docs/screenshots/screenshot-lookup-form.png differ
diff --git a/docs/screenshots/screenshot-modify-structure.png b/docs/screenshots/screenshot-modify-structure.png
index bd10f65..b9957d4 100644
Binary files a/docs/screenshots/screenshot-modify-structure.png and b/docs/screenshots/screenshot-modify-structure.png differ
diff --git a/docs/screenshots/screenshot-parity.png b/docs/screenshots/screenshot-parity.png
index 4ade517..4cfcad6 100644
Binary files a/docs/screenshots/screenshot-parity.png and b/docs/screenshots/screenshot-parity.png differ
diff --git a/docs/screenshots/screenshot-repl-session.png b/docs/screenshots/screenshot-repl-session.png
index f8bb091..22f3fb0 100644
Binary files a/docs/screenshots/screenshot-repl-session.png and b/docs/screenshots/screenshot-repl-session.png differ
diff --git a/docs/screenshots/screenshot-terminal.png b/docs/screenshots/screenshot-terminal.png
index 124140a..60c8602 100644
Binary files a/docs/screenshots/screenshot-terminal.png and b/docs/screenshots/screenshot-terminal.png differ
diff --git a/scripts/capture-screenshots.mjs b/scripts/capture-screenshots.mjs
index 875809b..d684dfd 100644
--- a/scripts/capture-screenshots.mjs
+++ b/scripts/capture-screenshots.mjs
@@ -295,5 +295,54 @@ console.log('14. NEW: BROWSE per-cell validation rejecting a TIME(15) edit');
await page.close();
}
+// ── 15. screenshot-lookup-browse.png (NEW in v1.3.0) ──────────────────────
+console.log('15. NEW: BROWSE editing a LOOKUP column via dropdown');
+{
+ const page = await newPage();
+ await boot(page);
+ await cmd(page, 'USE DATABASE screenshotdb', 800);
+ await cmd(page, 'DROP TABLE schedules', 400);
+ await cmd(page, 'DROP TABLE staff', 400);
+ await cmd(page, 'CREATE TABLE schedules (SCHEDID CHAR(4), DESCR CHAR(30))', 700);
+ await cmd(page, 'USE schedules', 500);
+ await cmd(page, 'APPEND RECORD', 400);
+ await cmd(page, 'REPLACE SCHEDID WITH "S001", DESCR WITH "Standard 40h (08:00-16:30)"', 600);
+ await cmd(page, 'APPEND RECORD', 400);
+ await cmd(page, 'REPLACE SCHEDID WITH "S002", DESCR WITH "Short 31.25h (09:00-16:00)"', 600);
+ await cmd(page, 'CREATE TABLE staff (NAME CHAR(30), SCHEDID CHAR(4) LOOKUP SCHEDULES.SCHEDID DISPLAY DESCR)', 700);
+ await cmd(page, 'USE staff', 500);
+ await cmd(page, 'APPEND RECORD', 500);
+ await cmd(page, 'REPLACE NAME WITH "Ada Lovelace", SCHEDID WITH "S001"', 500);
+ await cmd(page, 'BROWSE', 1200);
+ await page.waitForSelector('#grid-view:not(.hidden)', { timeout: 8000 });
+
+ const td = page.locator('#grid-tbody td[data-ri="0"][data-ci="1"]');
+ await td.dblclick();
+ await page.waitForSelector('#grid-tbody select.cell-ed', { timeout: 5000 });
+ await page.waitForTimeout(300);
+ await snap(page, 'screenshot-lookup-browse.png');
+ await page.keyboard.press('Escape');
+ await page.keyboard.press('Escape');
+ await page.close();
+}
+
+// ── 16. screenshot-lookup-form.png (NEW in v1.3.0) ────────────────────────
+console.log('16. NEW: field-bound GET rendering a LOOKUP picker in a form');
+{
+ const page = await newPage();
+ await boot(page);
+ await cmd(page, 'USE DATABASE screenshotdb', 800);
+ await cmd(page, 'USE staff', 500);
+ await cmd(page, '@ 2, 5 SAY "Name : " GET NAME', 300);
+ await cmd(page, '@ 3, 5 SAY "Schedule: " GET SCHEDID', 300);
+ await cmd(page, 'READ', 900);
+ await page.waitForSelector('#form-view', { state: 'visible', timeout: 6000 });
+ await page.waitForSelector('#form-view select.f-get', { timeout: 5000 });
+ await page.waitForTimeout(400);
+ await snap(page, 'screenshot-lookup-form.png');
+ await page.keyboard.press('Escape');
+ await page.close();
+}
+
await browser.close();
console.log('\nDone. All screenshots written to docs/screenshots/');