Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**dBASE III is back. In your browser. `USE customers` like it's 1984.**

![WebBase-III demo — USE, LIST, SEEK, BROWSE](docs/screenshots/demo.gif)
![WebBase-III demo — USE, LIST, SEEK, BROWSE, and a LOOKUP column dropdown](docs/screenshots/demo.gif)

Remember the dot prompt? Before SQL won, before ORMs, before anyone said "full-stack" — there was dBASE III. You typed `USE customers`, then `LIST`, and your data was just *there*. WebBase-III brings that whole world back: the terminal, the language, `BROWSE`, `@ SAY GET` forms, `.prg` programs, indexes, reports — rebuilt from scratch as a modern web app with its own interpreter in TypeScript, backed by Node.js, WebSockets, and SQLite.

Expand Down
Binary file modified docs/screenshots/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 25 additions & 1 deletion scripts/make-demo-gif.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,31 @@ for (const key of ['ArrowDown', 'ArrowDown', 'ArrowRight']) {
await page.waitForTimeout(150);
await snap(450);
}
await snap(3200); // hold final frame
await snap(1200);

// ---- v1.3.0: LOOKUP columns — a column can pick from a list instead of typing ----
await page.keyboard.press('Escape');
await page.waitForTimeout(400);
await snap(500);
await typeAndRun('ALTER TABLE customers ADD SEGMENT CHAR(10) LOOKUP ("Startup","Enterprise")', 1600);
await typeAndRun('BROWSE', 1200);
for (const key of ['ArrowRight', 'ArrowRight', 'ArrowRight']) {
await page.keyboard.press(key);
await page.waitForTimeout(150);
await snap(350);
}
await page.keyboard.press('Enter'); // opens the SEGMENT dropdown
await page.waitForTimeout(300);
await snap(1400);
await page.keyboard.press('ArrowDown'); // picks "Startup"
await page.waitForTimeout(150);
await snap(500);
await page.keyboard.press('Enter'); // commits
await page.waitForTimeout(300);
await snap(1400);
await page.keyboard.press('Escape'); // leave the grid
await page.waitForTimeout(300);
await snap(3000); // hold final frame

writeFileSync(`${OUT}/frames.json`, JSON.stringify(frames, null, 2));
await browser.close();
Expand Down
Loading