d083e54d

By: Michael Lynch <git@mtlynch.io>

Fix remembered section autofill for typed grocery names

Ensure the autocomplete component exposes the JSON shape and event timing
that the grocery form expects.

The main page e2e test was failing for two independent reasons:
- Playwright's placeholder locator matched both the custom element host and
  the inner input because both carried the same placeholder text.
- The item autocomplete endpoint encoded ItemSection as Name/Section, while
  the frontend normalization code expected name/section. This prevented the
  exact-name lookup from finding the remembered section.

Update the custom element to remove the host placeholder after copying it to
its inner input, emit a load-complete event, and re-run input handling when
items arrive. Update the grocery form to retry exact-name autofill after the
name autocomplete finishes loading. Add JSON tags for ItemSection and extend
handler coverage to assert the lowercase API contract.

Testing:
- ./dev-scripts/run-go-tests
- nix build .#e2e-tests
- nix flake check
- ./dev-scripts/git-hooks/pre-commit

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 1s 1s 1s
Eval 1s 35s 35s 36s
Build 3s 6m01s 1m18s 1m22s
Test - - - -
Deploy - - - -
Suite 0s 6m38s 1m22s 1m22s

Timeline

0s10s20s30s40s50s1m1m10s1m20s