Skip to Content
Lists

Working with the list

Everything a list page shows you — title, alias, ID, search, and history — and how to use it.

A list page is more than its items. The header, list views, search bar, and history sections tell you where you are and what changed — all rendered as interactive previews below, not screenshots.

The header — title, alias, and counts

Weekend groceries

weekend-groceries-a3k

Local · 2 open · 1 done

List

2 items to buy

  • Title — tap the pencil to rename. The list starts as “New list” and any name you type appears immediately for everyone on the shared copy.
  • Alias vs. ID — every list has both. The row below the title shows one at a time; the arrow button swaps between them, and copy copies the full URL for whichever is visible.
  • List and Inventory — the tabs split items still to buy from items marked purchased. Checking an item moves it to Inventory; unchecking it returns it to the list. The selected tab is preserved in the URL with ?tab=inventory.

alias

weekend-groceries-a3k

Friendly short code minted after you rename a local list. Used for pretty URLs like /keweke/weekend-groceries-a3k.

id (UUIDv7)

0199c2f0-8a1b-7c3d-9e4f-2a1b3c4d5e6f

Time-sorted, globally unique. The only address the service needs — copy the URL from the alias/ID row.

  • Alias — a short, friendly code like weekend-groceries-a3k. Minted automatically after you rename a local list, used for pretty links like /keweke/weekend-groceries-a3k.
  • ID — the raw UUIDv7 like 0199c2f0-…. Always works, even before an alias exists. Share either — both open the same list.

The right side shows 02 open · 01 done — a quick count so you know how much is left without scanning the table.

Adding items and the inventory check

Type into the new-item row at the bottom of the List tab. Press Enter or the + button to add the item.

Before you add, KEWEKE compares the name you typed against the items already in your Inventory for this list. If they look like the same thing, a small amber note appears under the name field, and the first add opens a confirm dialog instead of committing:

  • Adding — what you typed
  • Inventory — the item it looks like you already have, with its quantity

Choose Add anyway if it really is a different product, or if you simply need more. Nothing is ever blocked; the check only makes you look once.

The comparison is deterministic and runs entirely on your device — no account, no network call, and no model. It ignores capitalisation, accents and punctuation, folds plurals (tomatoes matches tomato), and allows small typos (tomatos, Coffe). A wider match is accepted when the extra words are qualifiers rather than a different product, so milk matches whole milk 2% and bag of bread matches sliced bread.

It deliberately stays quiet when the two are different things: milk will not match milk chocolate, chicken will not match chicken breast, and oat milk will not match whole milk 2%. Short words like ale never match a longer word by typo.

The check is local to the list you are looking at, and only the add path is checked — renaming an existing row into something that looks like an inventory item is left alone.

Search and spreadsheet mode

Below the view heading is a second bar:

  • Search — filters the active view as you type. It looks at name, category, unit and amount, and shows “No matching items” when nothing matches.
  • Excel Mode — on desktop, toggles a spreadsheet-like table where you can tab through cells. Mobile stays in card mode.
  • Help (?) — opens tips for adding items.

The List tab includes the new-item row. Inventory keeps the same item actions, but is intentionally focused on items already marked purchased.

Live updates dropped —appears next to search when the WebSocket disconnects (remote lists only).

If the list is remote and your connection drops, a small Reconnect button appears next to search. Tap it to force a fresh snapshot — otherwise the app keeps retrying in the background.

History — what changed and what was deleted

Two places help you audit a list. Both are local-first for personal lists and shared for remote ones.

Deleted items

Deleted items

Tomatoes

6 EA · PRODUCE · Deleted · 2026-08-22 · by alice · 0199…

Bread

1 EA · BAKERY · Deleted · 2026-08-23 · by you · 0199…

Every item you remove goes here, newest first. From each row you can:

  • History — open that item’s full revision log (remote lists only)
  • Restore — put the item back at the end of the list
  • Delete forever — wipe the archive copy (requires a second tap)

Item history

Coffee · 1 BAG

ChangedNew value
fieldchangednew valueupdated
quantity12

alice

2m ago · rev 12

categoryPANTRYBEVERAGES

bob

10m ago · rev 9

nameCoffeeCoffee — decaf

alice

1h ago · rev 7

showing 3 of ~100 revisions

Open history from any item's row (pencil menu → History) or from the deleted section. It shows one item's field-by-field changes:

  • Field — which part changed: name, quantity, unit, amount, category, checked
  • Changed → New value — red old value and green new value
  • Updated — who made the change and when, with the revision number

Pages load 50 changes at a time; Load older changes fetches the next page. Remote lists keep roughly the last thousand revisions, older pages are trimmed.

Next

When your list is ready to share beyond this browser, move it to the edge — see Publishing a list.

Live components here are built from the list header, alias switcher, deleted history, and item history dialog. The inventory check is described in the source of inventory-match.ts. How revisions and history are stored is covered in Architecture — Storage.