Redesign: brand-book alignment + forbidden-color purge (v1.1.0) (#3)

* redesign(colors): purge forbidden magenta/purple from palette

Brand book permits only the Kurdistan palette (kesk/sor/zer/fire) + navy.
Replace the four Nova-legacy violations in common colors.xml (names preserved,
so no references break):
- crowdloan_banner_gradient_start  #BD387F -> #009639 (kesk)
- networks_banner_gradient_end     #661D78 -> #017A2F (kesk-700)
- chip_on_card_background           #443679 -> #3D999EC7 (frosted periwinkle)
- button_wallet_connect_background  #353D67 -> #1F2A4D (neutral navy)

Repo-wide grep confirmed no other hardcoded magenta/purple literals or
purple/pink-named resources remain.

* redesign(type): adopt brand fonts (Space Grotesk / Plus Jakarta Sans / JetBrains Mono)

Brand book typography. Add OFL static fonts under common/res/font and repoint
the theme font attrs (consumed app-wide via ?attr/font* in styles.xml):
- fontRegular     -> Plus Jakarta Sans Regular (body/UI)
- fontSemiBold    -> Plus Jakarta Sans SemiBold
- fontBold/ExtraBold -> Space Grotesk Bold (display: balances, titles)
- fontExtraLight  -> Plus Jakarta Sans Light
- Monospace text appearance (addresses/hashes) -> JetBrains Mono

Static TTFs chosen (minSdk 24 < variable-font API 26). All five verified to
cover Turkish + Kurdish Kurmancî glyphs (ş ğ ı İ ê î û ç …).

* redesign(splash): replace map+wordmark logo with Newroz flame brand mark

The first-launch splash logo (ic_loading_screen_logo) showed a Kurdistan map
with a baked-in wordmark. Per the brand book the mark is the Newroz flame.
Rasterized assets/nevroz-fire-flame.svg into the existing 6 density slots
(same pixel dimensions = drop-in, no bg_splash.xml change, transparent WebP so
it composites cleanly over the splash background).

* redesign(onboarding): welcome hero -> Global United States of Pezkuwi

Replace the legacy onboarding hero (ic_create_wallet_background, whose six
density PNGs had inconsistent broken dimensions) with the brand 'Global United
States of Pezkuwi' infographic. Consolidate to a single high-res WebP in
drawable-nodpi (1408x768, 204K vs 1.75MB PNG) and switch the welcome ImageView
scaleType centerCrop -> fitCenter so it shows full and uncropped above the
CTA buttons, per the brand book.

* redesign(assets): purge magenta/purple from raster illustrations

colors.xml only covers named colors; these raster drawables still carried
forbidden magenta/purple/pink pixels. Selectively rotate the 255-350 deg hue
band (purple-magenta-pink) toward kesk green/teal across all densities,
preserving gradients, shapes and the on-brand blues:
- ic_pink_siri, ic_networks_banner_image, ic_no_added_networks,
  ic_import_option_hardware, tinder_gov (6 densities each).
Third-party ic_powered_by_oak (OAK Network trademark) left untouched.
crowdloan_banner_image is being handled separately.

* redesign(assets): de-pink crowdloan banner across all densities

The crowdloan banner's magenta sphere was recolored to brand sor red (xxxhdpi).
Propagate that fix to the other five densities by downscaling the corrected
xxxhdpi master (LANCZOS), so every device shows the same brand-clean banner.
Pink-pixel scan now 0% on all six variants.

* chore: remove pre-production debug code (release-blocker)

CHANGELOG_PEZKUWI listed debug code to strip before production; two items were
still live:
- FeeLoaderV2Provider: the fee-retry dialog showed a raw "DEBUG: <err> | Runtime:
  <diagnostics>" string to users -> reverted to the localized resource string and
  dropped the diagnostics lookup.
- RuntimeFactory: removed the companion lastDiagnostics field and its assignment
  (plus the now-dangling diagnostic vars), and the matching log line in the
  PezkuwiLiveTransferTest androidTest.
Items #3-#6 were already clean. Repo now has no 'DEBUG:' literals or
lastDiagnostics references. CHANGELOG marked cleaned.

* docs: add BRAND.md — enforceable wallet brand rules

Kurdistan-only palette (no pink/magenta/purple), brand fonts, Newroz flame mark,
a PR brand checklist with a raster pink-scan snippet, the third-party-logo
exception, and the Apache-2.0 attribution rule (keep LICENSE/NOTICE). Points to
the canonical brand book at wiki.pezkuwichain.io/brand.

* release: bump versionName to 1.1.0 (brand-book UI redesign)

Live Play version is 1.0.4; minor bump for the UI redesign. versionCode stays
CI-managed (CI_BUILD_ID). Add the v1.1.0 entry to CHANGELOG_PEZKUWI.
This commit is contained in:
2026-06-14 22:20:33 -07:00
committed by GitHub
parent f5df785a42
commit 22422c85da
64 changed files with 149 additions and 33 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
+26 -6
View File
@@ -1,4 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Pezkuwi Wallet — common/src/main/res/values/colors.xml
REDESIGN per Pezkuwi Wallet Design System (brand book).
This is a DROP-IN replacement for the current file: every color NAME is
preserved (so no Kotlin/XML references break), only VALUES change.
What changed vs. the shipped file — and why:
• Purged forbidden Nova-legacy PINK / MAGENTA / PURPLE. The brand permits ONLY
the Kurdistan palette (kesk green / sor red / zer gold / fire) + navy/neutral.
- crowdloan_banner_gradient_start #BD387F (magenta) -> #009639 (kesk)
- networks_banner_gradient_end #661D78 (purple) -> #017A2F (kesk-700)
- chip_on_card_background #443679 (purple) -> #3D999EC7 (frosted)
• Everything else is unchanged from the already-Kurdistan-themed file.
Search the file for "REDESIGN:" to see each changed line.
-->
<resources>
<!-- Colors not included in the design system -->
<color name="address_icon_background">#eeeeee</color>
@@ -44,11 +61,13 @@
<color name="staking_type_banner_text_inactive">#52FFFFFF</color>
<color name="tinder_gov_banner_secondary_text">#A3FFFFFF</color>
<color name="crowdloan_banner_gradient_start">#BD387F</color>
<!-- REDESIGN: crowdloan banner is now the Newroz-flame gradient (kesk -> fire), not magenta -> orange -->
<color name="crowdloan_banner_gradient_start">#009639</color>
<color name="crowdloan_banner_gradient_end">#FF7A00</color>
<!-- REDESIGN: networks banner is now navy -> kesk green, not navy -> purple -->
<color name="networks_banner_gradient_start">#00072E</color>
<color name="networks_banner_gradient_end">#661D78</color>
<color name="networks_banner_gradient_end">#017A2F</color>
<!-- Icon Colors -->
<color name="icon_primary">#E0FFFFFF</color>
@@ -70,12 +89,12 @@
<color name="bottom_sheet_background">#181920</color>
<color name="block_background">#1A999EC7</color>
<color name="hided_networks_block_background">#3D999EC7</color>
<!-- TODO update name once in design system-->
<color name="block_background_dark">#5205081C</color>
<color name="cell_background_pressed">#291F78FF</color>
<color name="input_background">#1A999EC7</color>
<color name="chips_background">#29999EC7</color>
<color name="chip_on_card_background">#443679</color>
<!-- REDESIGN: was #443679 (purple). Now frosted periwinkle, on-brand. -->
<color name="chip_on_card_background">#3D999EC7</color>
<color name="container_background">#1A999EC7</color>
<color name="token_container_background">#3D08090E</color>
<color name="segmented_background">#5208090E</color>
@@ -109,7 +128,8 @@
<color name="button_background_inactive_on_gradient">#1A999EC7</color>
<color name="button_background_inactive">#181920</color>
<color name="button_wallet_connect_background">#353D67</color>
<!-- REDESIGN: WalletConnect button retinted off the indigo #353D67 to a neutral navy. -->
<color name="button_wallet_connect_background">#1F2A4D</color>
<color name="wallet_connections_background">#101636</color>
<!-- Border Colors - Kurdistan Green -->
@@ -162,4 +182,4 @@
<color name="neutral_price_chart_line">#454968</color>
<color name="positive_price_chart_line">#2FC864</color>
<color name="negative_price_chart_line">#E53450</color>
</resources>
</resources>
+1 -1
View File
@@ -245,7 +245,7 @@
<style name="TextAppearance.NovaFoundation.Regular.Monospace">
<item name="android:textSize">12sp</item>
<item name="android:fontFamily">monospace</item>
<item name="android:fontFamily">@font/jetbrains_mono_regular</item>
</style>
<!-- Buttons -->
+6 -6
View File
@@ -30,12 +30,12 @@
<item name="textSizeSubHeadline">@dimen/text_size_subheadline</item>
<!--text sizes-->
<!--fonts-->
<item name="fontSemiBold">@font/public_sans_semi_bold</item>
<item name="fontBold">@font/public_sans_bold</item>
<item name="fontExtraBold">@font/public_sans_extra_bold</item>
<item name="fontRegular">@font/public_sans_regular</item>
<item name="fontExtraLight">@font/public_sans_extra_light</item>
<!--fonts: brand book — Plus Jakarta Sans (body) + Space Grotesk (display/bold)-->
<item name="fontSemiBold">@font/plus_jakarta_sans_semi_bold</item>
<item name="fontBold">@font/space_grotesk_bold</item>
<item name="fontExtraBold">@font/space_grotesk_bold</item>
<item name="fontRegular">@font/plus_jakarta_sans_regular</item>
<item name="fontExtraLight">@font/plus_jakarta_sans_light</item>
<!--fonts-->
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>