Skip to content

feat: Grok + Generical blob avatars with face lifecycle - #218

Closed
Cocolalilal wants to merge 3 commits into
LastChat_devfrom
cursor/create-blob-avatar-2624
Closed

Cocolalilal wants to merge 3 commits into
LastChat_devfrom
cursor/create-blob-avatar-2624

Conversation

@Cocolalilal

@Cocolalilal Cocolalilal commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Overnight Create Avatar craft for PR #218. One blob engine, two eye packs, full face lifecycle. Old emoji/image/resource avatars stay.

WHAT_FIXED (Julian overnight notes)

Clipping

  • Every body profile is peak-normalized to 1, then drawn at 90% of the view (BLOB_DRAW_FIT).
  • Shape tiles no longer clip the silhouette. Chat drawer skips the cookie clip for blobs.
  • Grok rest-gaze is inset and the pair is pulled inside organic rims (pebble/cloud no longer lose an eye).

Generical overhaul

  • Source of truth is the expression sheet: centred, untilted, tall rounded rects.
  • Look-around is translation, never Grok sphere tilt.
  • Glow is an optional body halo (off by default), not a bloom on the eyes.
  • Knobs: eye size, spacing, roundness, look-around, glow on/off + strength + color, accent tint on the gloss.

Grok aliveness + 3D-flat

  • Lifecycle faces stay the measured bloub poses (idle rest, thinking curieux, working wide, waiting slits, blocked colere, done squint).
  • Idle is no longer a loop of one pose: rare micro-accents (glance, widen, wink, squint).
  • Default fill is flat, with a small moving highlight. Cloud / droplet / cookie actually tumble (profile spin + squash) so volume reads without a glossy material.
  • Extra shapes in Grok’s blob language plus Material You: Triangle, Cloud, Droplet, Pill, Cookie, Arch (on top of Circle/Pebble/Squircle/Capsule/RoundSquare/SoftHex).

Product / UI

  • Create Avatar is a Material sheet: segmented packs, FilterChips for lifecycle, FormItem sliders, AppShapes tokens.
  • Lifecycle chips drive Idle / Thinking / Working / Waiting / Blocked / Done for both packs.
  • Rare glance toward composer / chips / the + sheet (cooldown, not spammy).

Sideload APK (single release file)

One stableRelease APK, arm64-only, signed with the existing debug keystore (androiddebugkey). No new release keystore, no invented passwords, no Play upload.

  • SINGLE_APK_URL: https://litter.catbox.moe/zxi6fm.apk (litterbox, ~72h)
  • APK_NAME: LastChat_1.4.6_stable-release.apk
  • PACKAGE: lastchat.rikkafork.cocolal · 1.4.6 (34) · arm64-v8a
  • SHA256: 8c345672b69e394562b54793ca80e0dd6be4d66c1c52b7ed1008faa53dca2706
  • SIZE_MB: 79.8 (83688516 bytes)
  • BUILD_TYPE: release
  • SIGNED_WITH: ~/.android/debug.keystore / androiddebugkey
  • CERT_SHA256: 3619e645a7242af5c55e7e5286b7cd083364a8be5123084f5e9abfbb638e1cb1
adb install -r LastChat_1.4.6_stable-release.apk

If a differently-signed build is already installed: adb uninstall lastchat.rikkafork.cocolal then adb install (without -r).

How it was tested

  • BlobEngineTest — 16 tests passing (lifecycle, knobs, glance, peak-normalize, cloud spin).
  • AssistantSerializationTest — blob knobs round-trip.
  • Robolectric contact sheets for both packs × 6 lifecycle states and all 12 shapes (@Config(sdk = 34), native graphics). Downloaded litterbox APK SHA-256 matches the local file. apksigner verify matches the debug cert.

Emulator limits

  • Contact sheets are Robolectric SDK 34 canvases of BlobBitmap (the same raster widgets use), not an Android 16 emulator UI.
  • Real-device Compose may anti-alias Grok hole rims a little more softly; lifecycle poses and clip-fit are the same engine.
  • Glance / idle micro-accents / cloud spin are Compose-clock motion, so static sheets freeze one frame (reduce-motion sampling).

Honest stubs

  • Web UI remains a static SVG of the idle face.
  • Widgets / shortcuts freeze an Idle bitmap.
  • Glance is Compose-only (chat + Create sheet).
Open in Web Open in Cursor 

cursoragent and others added 3 commits September 17, 2026 20:00
Introduce a shared Canvas blob engine with two eye packs. Grok uses the
fitted sphere-head rest gaze and hole-cut eyes; Generical uses centred
outlined pills, look-around translation, and optional glow. Idle, thinking,
working, waiting, blocked, and done live on the face only — the body stays
the user's chosen shape. Create Avatar is wired through the existing picker,
chat, overlay, widgets, export, and a static web SVG fallback.

Co-authored-by: Cocolalilal <Cocolalilal@users.noreply.github.com>
Use Android Path transforms for Grok eye capsules, keep the sampler
internal, and assert Done hold after the morph completes.

Co-authored-by: Cocolalilal <Cocolalilal@users.noreply.github.com>
Overhaul Generical to tall rounded-rect eyes with size/spacing/roundness,
look-around, glow, and accent knobs. Deepen Grok with distinct lifecycle
faces, idle micro-accents, flat fill plus a moving highlight, extra blob
and Material You shapes, and 3D-flat profile spin. Fix clipping via
peak-normalized profiles and draw-fit. Add rare UI glances and a
cohesive Create Avatar sheet.

Co-authored-by: Cocolalilal <Cocolalilal@users.noreply.github.com>
@cursor

cursor Bot commented Sep 18, 2026

Copy link
Copy Markdown

Closed per owner request — scrap Create Avatar agent work.

@cursor
cursor Bot deleted the cursor/create-blob-avatar-2624 branch September 18, 2026 06:53
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.

2 participants