UI: drop tab-bar tap highlight; don't slide the first screen on launch #45

Merged
developer merged 3 commits from feature/ui-tap-startup-polish into development 2026-06-11 21:55:21 +00:00
Owner

Two small UI polish items (follow-up to #44).

Tab-bar tap highlight

Tapping a bottom-tab icon flashed a background — the icon square's :active press tint plus the default WebKit tap flash (the same pair removed from the lobby rows in #44). Dropped the press tint and set -webkit-tap-highlight-color: transparent on .tab. The selected-tab highlight (Settings / Comms hubs) is kept.

No slide on launch

The route pane's in:slideX is local to its {#key} block, so it plays on that block's own first mount when app.ready flips — the lobby slid in on launch as if navigated into from another screen. Gate the slide duration to 0 for the first pane shown after boot (a started flag set right after it mounts), so launch is static while every later route change animates as before.

Tested

pnpm check (0 errors) + build + e2e (100, Chromium + WebKit). The tap flash is native (WKWebView) — best verified live in iOS Telegram, along with the static launch.

Two small UI polish items (follow-up to #44). ## Tab-bar tap highlight Tapping a bottom-tab icon flashed a background — the icon square's `:active` press tint plus the default WebKit tap flash (the same pair removed from the lobby rows in #44). Dropped the press tint and set `-webkit-tap-highlight-color: transparent` on `.tab`. The **selected**-tab highlight (Settings / Comms hubs) is kept. ## No slide on launch The route pane's `in:slideX` is local to its `{#key}` block, so it plays on that block's own first mount when `app.ready` flips — the lobby slid in on launch as if navigated into from another screen. Gate the slide duration to 0 for the first pane shown after boot (a `started` flag set right after it mounts), so launch is static while every later route change animates as before. ## Tested `pnpm check` (0 errors) + `build` + e2e (100, Chromium + WebKit). The tap flash is native (WKWebView) — best verified live in iOS Telegram, along with the static launch.
developer added 1 commit 2026-06-11 21:19:29 +00:00
UI: drop tab-bar tap highlight; don't slide the first screen on launch
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 44s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m0s
9277a70565
Tab bar: tapping a bottom-tab icon flashed a background — the icon square's
:active press tint plus the default WebKit tap flash, the same pair removed from
the lobby rows. Drop the press tint and set -webkit-tap-highlight-color:
transparent on .tab. The selected-tab highlight (Settings / Comms hubs) stays.

Startup slide: the route pane's in:slideX is local to its {#key} block, so it
plays on that block's own first mount when app.ready flips — the lobby slid in on
launch as if navigated into from another screen. Gate the slide duration to 0 for
the first pane shown after boot (a `started` flag set right after it mounts), so
launch is static while every later route change animates as before.
developer added 1 commit 2026-06-11 21:40:41 +00:00
UI: fix the lobby slide on Telegram cold launch (correct the cause)
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 45s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 57s
c32a15730a
The first attempt (the App.svelte `started` gate) targeted the first pane mount,
but the slide is a second render. On a Telegram cold launch the URL fragment is
Telegram's #tgWebAppData=... launch params, which the router parsed as notfound;
bootstrap's navigate('/') then corrected it to the lobby asynchronously, re-keying
the route pane (notfound -> lobby) and sliding the lobby in as if returning from a
screen. A reload was static because the hash was already #/.

Treat a Telegram launch fragment as the lobby root in the router, so the route is
correct from the first pane (no re-key, no slide). Extract the pure hash->Route
parsing into routeparse.ts so it unit-tests without a DOM, and revert the gate
(the first pane never slid — local transitions skip the initial mount, as clean
browser launches showed).

Tests: routeparse unit tests (incl. the tgWebApp fragment); an e2e that launches
with the fragment in the URL and asserts the lobby plus the normalised #/ hash.
developer added 1 commit 2026-06-11 21:51:40 +00:00
UI: soften the board checkerboard's dark cells
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 44s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m1s
390b4c756f
The gapless-board dark cells mixed 12% black into --cell-bg, which read too
contrasty and competed visually with the bonus cells. Halve the tint to 6% (both
themes, keyed off --cell-bg as before) for a gentler checkerboard.
owner approved these changes 2026-06-11 21:54:23 +00:00
developer merged commit d4a1616d03 into development 2026-06-11 21:55:21 +00:00
developer deleted branch feature/ui-tap-startup-polish 2026-06-11 21:55:21 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#45