4 Commits
Author SHA1 Message Date
Kaj SchittecatandClaude Opus 5.5 27af6f1cfb web: merge web-mobile (phones and tablets) into web-build
The phone branch (portrait/landscape canvas from the window, the phone's
own keyboard, manifest and icons, a one-row bar, mobiletest) next to the
no-threads bundle selection and the Wi-Fi/https chooser messaging. Both
bundles share the one page, so the http copy gets the phone layout too.

Checked after the merge: host build, smoke, webtest (tiles, location,
Store, backups), nodetest (15/15 incl. the location privacy rule),
mobiletest (iPhone 14, Pixel 7, iPad); on the no-threads bundle over
http://<LAN IP>: the browser tour, the mock-node tour, and the mobile tour
(layout + keyboard pass; Bluetooth is not offered there, by design).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:53:02 +02:00
Kaj SchittecatandClaude Opus 5.5 817004c861 web: merge main (repeater admin); the stand-in serves the admin app
Merges main 8954fe06. The drift alarm caught the repeater admin app's new
members: sendStatusPingForUI, sendTelemetryRequestForUI,
uiSendBinaryRequest (-> onBinaryReply), UiReqKind::Binary and
uiLastLoginInfo/UiLoginInfo. Over a node: CMD_SEND_BINARY_REQ and its tagged
PUSH_BINARY_RESPONSE, the ACL and firmware level of a modern LOGIN_OK. The
demo's repeater and room log in (any password = admin, empty = guest) and
answer status, neighbours, the access list, owner info and CLI lines; the
mock node answers neighbours and owner info.

Also from main: nvs_open/nvs_close in the compat (SdNvsPrefs asks first),
and the tiles partition now has to exist before the UI mounts it: the compat
partition table reports "tiles" (the web board's LittleFS volume). Font
guards keep WADA_WEB next to main's new SenseCAP Indicator.

No-threads bundle: a UI-thread wait called from the page (not the main
loop) no longer sleeps (it hung the flush after a Store install).

A wheel turn counts as user activity (no screensaver mid-scroll).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:42:56 +02:00
Kaj SchittecatandClaude Opus 5.5 2fc2288879 web: phones and tablets get a UI that fills the screen
- the canvas is sized from the space below the bar at about one CSS pixel per
  canvas pixel, whole device pixels where possible (crisp): iPhone 14 390x616,
  Pixel 7 360x692, iPad 540x686; landscape by height and the window's aspect
  (664x358, 734x330, 720x506). A computer keeps the framed 800x480. Same
  large-screen layouts, which size themselves from the display.
- a turn restarts the UI in the other layout only when the aspect flips and
  the width changes (a keyboard is no turn), never while typing
- the phone keyboard: no focus ring or tab hotkey letters for it
  (CAP_NATIVE_KEYBOARD in the nav-keys block), keeps up while tapping the UI
  mid-edit; IME composition followed live
- the page: slim one-row bar (slimmer on its side), safe areas, link help as
  an overlay, home-screen icons (icons/app-icon.svg + render.mjs, maskable)
- tests: web/build.sh mobiletest (iPhone 14, Pixel 7, iPad): fill > 90 %,
  UTF-8 + emoji through the hidden field, IME composition, send, turn and
  back with the message kept, chooser, manifest. Labels found by text
  (wadamesh.findText) so taps work at any size; the UTF-8 storage check
  searches bytes. webtest's phone step checks the portrait canvas.
- WEB_BUILD.md "Phones and tablets"; the stray docs/tmp shots removed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:12:46 +02:00
Kaj SchittecatandClaude Opus 5.5 1524bb5241 web: WIP phones: portrait canvas, phone keyboard, mobile page polish
Work in progress, handed to the web-mobile branch:
- the canvas size is the board's resolution, picked at boot from the window
  (WebDisplay runtime size, host --size WxH); a phone held upright gets a
  480-wide portrait canvas on the large-screen portrait layouts; turning
  the phone restarts the UI in the other layout (data kept)
- the phone's own keyboard: a hidden textarea opened inside the tap's
  gesture, its edits forwarded as UTF-8 text + Backspace/Enter through the
  CardKB path (cardKbUiKey passes BLE_KEY_TEXT through); CAP_NATIVE_KEYBOARD
  keeps the UI's own keys down; the screen slides above the keyboard
- viewport/safe-area/overscroll, web app manifest, More menu (Reset too),
  bar stays on one row, chooser notes for iOS and the http/https copies,
  a mixed-content ws:// failure explains the http copy
- web/scripts/mobile-tour.mjs (iPhone 14, Pixel 7)

Known open: the mobile tour's UTF-8 storage check fails (the bubble shows
the text; the stored history does not match the needle; on desktop,
Playwright's insertText of a non-ASCII char sends no keydown and is lost).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:30:13 +02:00