aboutsummaryrefslogtreecommitdiffstats
path: root/src/web.c
Commit message (Collapse)AuthorAgeFilesLines
* Show filtered lists and their shared focuseunhhu2026-09-261-4/+6
| | | | | | | | | | | | | | | | A list may now be filtered (each t in tasks where !t.done), and several filtered lists over one list share one focus: the focus view names an item, so Vega asks Pure which row shows it and highlights it only in the list that holds it; the other lists have no focus (null in the web surface's JSON, and the spoken surface names the item where it is). A click or point on a row points at the item that row shows, and the wheel on a list without the focus focuses the row under it. Pure's rows now take a mutable app. examples/today.aup shows what is open and what is done; its CLI output matches a model over random adds, moves, toggles and points into either list, and the web surface leaves the other list without a focus.
* Style the web page's button and name keys as the TUI doeseunhhu2026-09-261-2/+7
| | | | | | The Enter button matches the input beside it, and the key legend shows arrows and short names (↑ ↓ Del PgUp) instead of Pure's key names.
* Add a web surface: the same spec as a pageeunhhu2026-09-261-0/+436
vega web MODULE serves the screen to a browser (127.0.0.1 unless given --listen): one dependency-free page draws the title, fields, lists as listboxes and tables, with tones as colors and the focus highlighted. It asks for the screen as JSON with the rows it can show per list or table, so only those cells are evaluated, scrolled like the TUI around the focus. Keys go as KeyboardEvent.code, which is Pure's key naming already; typed text commits with Enter; a click or the wheel moves the focus through pure_app_point; an event stream tells every open page of each change. Scrolling, key presses and text commits are now shared helpers. The checks drive it against the model (1,200 random steps: title, field, rows, focus, the window of items with badges and tones), check a table's columns and cells, post at random to every example, and in headless Chromium over the DevTools protocol press keys, click a row and type Korean text into the page itself.