Skip to content

feat(touch): refresh Home artwork and smooth deck dismissal - #21

Merged
doodlewind merged 5 commits into
mainfrom
feat/touch-baked-icons
Sep 18, 2026
Merged

doodlewind merged 5 commits into
mainfrom
feat/touch-baked-icons

Conversation

@doodlewind

@doodlewind doodlewind commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

The E7 Home wallpaper had coarse edges and a dither grid, and dismissing a browsed app deck exposed overlapping window contents while sweeping offscreen apps through Home. Rebuild the Home artwork, pin the RGB888 surface fix, and preserve opaque card occlusion during dismissal. pocket-stack/pocketjs#447 must merge before this PR. Both PRs remain open for review.

All sixteen Home-screen icons use original Blender-authored relief artwork baked to 128×128 RGBA textures. The tiles retain the original 56-pixel footprint and 16-pixel circular corners. Transparent black around the earlier bakes became a dark fringe under GLES bilinear sampling. Blender now renders an opaque plane beyond the boundary; the baker area-averages the color, applies the corner coverage mask once, and preserves RGB under zero alpha with the raw PNG encoder.

Books uses curved paper meshes with a gutter and page thickness. Music is moved down and centered, with note heads scaled around their own centers. Calendar keeps the large date and a red accent; Calculator uses four large arithmetic keys; Settings uses one eight-tooth satin gear. All icons retain their interior materials and shadows.

Books Music Calendar Calculator Settings

The recipes are maintained in shells/touch/art/. Normal builds consume committed PNGs without Blender. The two Home pages and dock share the same textures, one image node per icon. All seventeen textures total 2 MiB of RGBA texels. E7 builds request 60 Hz and retain the standalone mock-app catalog without Clear/Voxel navigation.

Deck dismissal now withdraws the visible group through the left edge while a shared wallpaper layer covers it. Cards parked beyond the right edge stay outside the viewport; card contents remain opaque until covered. A new gesture can catch or reverse the transition without resetting the visible pose. Retained windows and app recency survive dismissal. Conservative clipping skips the part of each rear card covered by an opaque front card, including a guard around rounded corners.

Validation for the dismissal fix:

  • PATH="$HOME/.cargo/bin:$PATH" bun run check: 224 tests pass, including 50 touch-shell tests, all type checks and the asset audit. Linux and macOS CI pass at f7f4087; the following 69fb786 commit adds the replay input-integrity check and passes its focused validation and type check.
  • Model regressions cover 320×480, 360×640 and 640×360 at 30/60 Hz, offscreen-window exclusion, retained membership/recency, and interrupted/reversed/cancelled dismissal. Mounted tests exercise the real guest/painter and both E7 orientations. Full-window culling remains pixel-exact. Partial clipping allows at most 0.1% changed pixels, all adjacent to existing edges, for integer rasterization of clipped rotated triangles.
  • On the physical E7, one 239-point workload runs at 360×640 with 120 warmup frames and 1,801 measured frames. The host reports OpenGL ES 2.0, VideoCore III HW, framebuffer 8 8 8 0, and zero inactive frames. Touch presence matches the fixture through both measured exits; later extra contacts are outside the reported intervals. A separate repeat with extra input at 133 ms is rejected by the new analyzer check.
Same workload phase Before After Mean draw batches before → after
Browsed deck 19.8 fps 24.6 fps 245.2 → 160.7
First 200 ms of dismissal 36.0 fps 38.7 fps 103.2 → 82.0
First 500 ms of dismissal 43.9 fps 50.2 fps 84.7 → 54.6
Second dismissal, first 500 ms 52.9 fps 50.9 fps 47.7 → 49.0

The first dismissal's 30-frame interval falls from 684 to 598 ms of wall time; its p95 frame duration falls from 48 to 40 ms. The second dismissal shows no measured improvement. Complex deck views remain below 60 fps. These are native host submission/presentation timings, not GPU execution, physical touch latency or panel-scanout measurements. Mounted frame captures reproduce the original ghosting and verify the revised composition.

Device/build status:

  • Runtime pin: 0c9e02f7; profile 0.3.25 SIS SHA-256 794ccfb6f17f6e7ad17506f4b65fdce982c94b331215d9c68e85639fb0f12197.
  • Normal 0.3.26 is built with tracing disabled. Its guest SHA-256 67c99151b2640f78698e640c41bc532a3ae55b23fd9700669257ab8bf3a0b621 and PAK SHA-256 5bd50dd4034990aad3fa5035f7b7e291dcd2e000cfe697f445f7117669719ecb match the measured profile build. Navigation is empty and Clear/Voxel are not bundled.
  • Normal SIS SHA-256 0c54c44c4d16f65993b950e5ad1a7fb1dbe933fd92bc2e8a3cb9811ac0531aeb was transferred to the E7 and read back byte-for-byte. USB disconnected before final installation; normal-install confirmation and helper cleanup are pending reconnection. The last confirmed installed build is the 0.3.25 profiler.
  • iPod touch 4 is not connected for this revision. Shared behavior passes the 320×480 Retina-density mounted regression. The previous artwork revision 2b67012 was installed on both devices; its iPod build c7ba288bb80d763ac794ce817ad48f2e passed 15 injected journeys. That prior hardware result does not certify this dismissal change on iPod.

Artwork validation at 2b67012: all sixteen Blender scenes were rendered at 512×512; both physical Home pages and 56/112px edge sampling were reviewed. Maximum sampling-edge darkening fell from 33.11 to 0.42 channel levels at 56px and from 38.32 to 0.19 at 112px. Both PAKs contained byte-exact icon entries including RGB beneath zero alpha and the linear-sampling flag.

Reproduce:

  • Artwork recipes: shells/touch/art/README.md.
  • Build: bun run touch:e7 build for the normal SIS or append --perf-trace for measurement; deployment instructions are in shells/touch/README.md.
  • Workload: bun shells/touch/scripts/e7-perf.ts make <input.tsv> 360 640 deck-dismiss.
  • Analysis: bun shells/touch/scripts/e7-perf.ts analyze <trace.tsv> 360 640 deck-dismiss. Leave the screen untouched through the measured exits.
  • iPod regression when connected: bun run touch deploy, bun run touch launch, then bun run --cwd shells/touch test:device with bun run touch tunnel running.

Current traces, intermediate captures, SIS files and build/install receipts stay in ignored .pocket-build/validation/touch-deck-dismiss/20260918/. Prior artwork evidence stays in .pocket-build/validation/touch-clean-icons/20260918/; Blender scenes/render sheets stay in .pocket-build/touch-clean-art/. No per-run artifacts are committed.

@doodlewind doodlewind changed the title feat(touch): bake Blender icons and smooth Home wallpaper feat(touch): refresh Home artwork and smooth deck dismissal Sep 18, 2026
@doodlewind
doodlewind merged commit 59670e8 into main Sep 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant