Closer/app/src/main/res/drawable-night-nodpi
null 8aea4730cc perf(res): convert all artwork to WebP; unify + blend pack art
Converts every PNG in res to WebP (124 files, 104M -> 28M on disk, -73%).
Each file was encoded both lossless and lossy q95 and the smaller kept, but
lossy only where it measured visually lossless (PSNR >= 40 dB); dimensions and
alpha were verified per file before the PNG was removed, so 25 files that
compressed better losslessly stayed exact. No nine-patches exist to break, and
R.drawable refs are extension-agnostic (the only ".png" in code is a runtime
share-cache filename). Debug APK 141.9 -> 128.8 MB; pack art in the APK
26.4 -> 11.5 MB. The disk saving is larger than the APK saving because AAPT2
already crunched PNGs at build time.

Unifies pack artwork in a new PackArtwork.kt. packArtworkRes was duplicated
verbatim in the library and detail screens — which is exactly how the two
drifted before (one kept a grouped mapping that gave several packs the same
illustration). It now exists once, alongside the two art composables. This is
also where an imported pack's art would resolve.

Pack detail page fixes:
- Removed the second back arrow. The nav scaffold already supplies the
  "Question Pack" bar and its back affordance (AppRoute.kt), so the in-screen
  IconButton was a duplicate; onBack is now unused and gone.
- The description is shown in full. It was capped at maxLines=4 with an
  ellipsis, which truncated most packs mid-sentence — this is the page where
  someone decides whether to open the pack, so it should not be abridged.
- The hero art is blended instead of pasted on: it runs full-bleed (the list no
  longer pads horizontally; items pad themselves) and dissolves into the page.
  The dissolve is an alpha mask (BlendMode.DstIn), not a scrim in the
  background colour — the page behind is a gradient brush, so fading to any
  single colour left a visible pale band in light theme. Fading the image to
  transparent lets the real background through, correct in both themes.
  Library cards get a softer version of the same, into the card surface.

Verified live on both fixtures (dark 5554 / light 5556): single back arrow,
full description, art melting into the page with no hard edges, correct
per-theme art. Unit tests green, 0 FATAL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 20:52:14 -05:00
..
illustration_account_deletion_goodbye.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_answer_history_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_bucket_list_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_connection_challenges_header.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_couple_history.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_couple_invite.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_couple_onboarding.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_couple_paywall.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_couple_subscription.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_daily_question.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_daily_reveal_ready.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_date_match_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_date_match_success.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_date_memories_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_home_tonight_ritual.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_memory_lane_capsule.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_messages_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_pairing_success.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_partner_activation.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_past_games_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_privacy_recovery.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_quiet_hours.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_reveal_celebration.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_together_empty.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
illustration_tonight_partner_prompt.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_boundaries.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_communication.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_conflict.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_conflict_repair.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_daily_fun_mc.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_date_night.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_deep_reflection.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_desire.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_family_commitment.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_fun_date.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_future_goals.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_gratitude.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_home_life.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_intimacy.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_money_values.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_parenting.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_physical_intimacy.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_quality_time.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_sexual_preferences.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_stress.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_trust.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_trust_repair.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00
pack_art_values.webp perf(res): convert all artwork to WebP; unify + blend pack art 2026-07-14 20:52:14 -05:00