Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
1ba3f4e
fix: default mint selection, add new mint bottom sheet.
swedishfrenchpress Mar 19, 2026
cf9701a
fix: onboarding screen TOS bottom sheet replacement, TOS font style e…
swedishfrenchpress Mar 19, 2026
cf9f0b6
fix: fix: expand star tap target to 44x44dp with 10dp padding for rel…
swedishfrenchpress Mar 19, 2026
58fb192
fix: + New Mint copy.
swedishfrenchpress Mar 19, 2026
39a9b96
feat: added function to have any mint manually added by user replace …
swedishfrenchpress Mar 19, 2026
c3ac93c
unsure of this commit.
swedishfrenchpress Mar 20, 2026
dfc8316
fix: rename withdraw screen title and hide config sections when toggl…
swedishfrenchpress Mar 21, 2026
57704c0
fix: disabled primary buttons nearly invisible in both light and dark…
swedishfrenchpress Mar 21, 2026
f2d4785
fix: withdraw screens background color inconsistent with rest of app
swedishfrenchpress Mar 21, 2026
6f4d75e
fix: withdraw screen section headers use wrong font weight and letter…
swedishfrenchpress Mar 21, 2026
1b5b2b7
fix: differentiate auto-withdraw and withdraw now icons
swedishfrenchpress Mar 21, 2026
dc99f41
fix: hero card gradient too strong, add decorative lightning bolt wat…
swedishfrenchpress Mar 21, 2026
645b472
fix: hero card lightning bolt positioning, rotation, fade, and opacity
swedishfrenchpress Mar 21, 2026
b98914d
fix: rename hero title to Auto-Withdraw and add lightning strike anim…
swedishfrenchpress Mar 21, 2026
d563d4f
fix: tone down lightning animation and remove address label icon
swedishfrenchpress Mar 21, 2026
b03a80f
fix: remove dark mode visual inconsistencies on withdraw screen
swedishfrenchpress Mar 21, 2026
d9bfa9f
fix: remove icon from mint selection bottom sheet
swedishfrenchpress Mar 21, 2026
8db4063
fix: polish withdraw now screen for consistency
swedishfrenchpress Mar 21, 2026
21c0c7a
fix: redesign withdraw now inputs and add fiat balance display
swedishfrenchpress Mar 21, 2026
6e624a3
fix: cashu section spacing, rename amount label, add scan icon
swedishfrenchpress Mar 21, 2026
4a404e7
fix: match withdraw toggle to payment request screen's segmented control
swedishfrenchpress Mar 21, 2026
0b380c6
fix: match withdraw history icons to activity screen and clean up sty…
swedishfrenchpress Mar 21, 2026
19658b3
fix: unify recent activity fonts with withdraw screen's own typography
swedishfrenchpress Mar 21, 2026
9647d8d
fix: match recent activity icon size to other withdraw screen icons
swedishfrenchpress Mar 21, 2026
d597f25
fix: title bar dividers, font sizes, and bottom sheet typography
swedishfrenchpress Mar 22, 2026
db404bd
fix: scan invoice button border and height consistency
swedishfrenchpress Mar 22, 2026
2a3aa10
fix: confirm withdrawal screen consistency with withdraw flow
swedishfrenchpress Mar 22, 2026
6b7ff29
fix: extend entrance animation to Recent Activity section
swedishfrenchpress Mar 22, 2026
50a8936
fix: hero card gradient reflects active/inactive state, orange slider
swedishfrenchpress Mar 22, 2026
34e7775
fix: auto-withdraw row icon reflects toggle state
swedishfrenchpress Mar 22, 2026
aef9fc2
fix: revert splash screen changes, isolate mints page work only
swedishfrenchpress Mar 22, 2026
c8befd5
fix: align button and bottom sheet styles with withdraw branch design…
swedishfrenchpress Mar 22, 2026
3aca4c3
feat: redesign default mint section as hero card, remove setup chevrons
swedishfrenchpress Mar 22, 2026
14a5e2e
fix: remove stale onboarding tests referencing old layout views
swedishfrenchpress Mar 22, 2026
95969c8
fix: use dark primary color for mint selection checkmarks instead of …
swedishfrenchpress Mar 22, 2026
7d406a9
fix: left-align default mint hero card content
swedishfrenchpress Mar 22, 2026
3324e48
fix: big ui updates.
swedishfrenchpress Mar 22, 2026
b4dbc64
Merge remote-tracking branch 'origin/fix/onboarding-ui-mint-selection…
swedishfrenchpress Mar 22, 2026
c421454
fix:build error.
swedishfrenchpress Mar 22, 2026
d7f24e6
Merge remote-tracking branch 'origin/fix/onboarding-ui-mint-selection…
swedishfrenchpress Mar 23, 2026
02038f3
feat: app-wide UI refresh for Settings, Items, Basket, and Withdraw s…
swedishfrenchpress Mar 23, 2026
4b7fa42
fix: UI consistency pass — remove circles, neutral selection colors, …
swedishfrenchpress Mar 23, 2026
2adbeae
fix: simplify auto-withdraw hero card and remove hero card borders
swedishfrenchpress Mar 23, 2026
298a910
fix: subtitle contrast, Mints cleanup, toggle colors, Enter Wallet bu…
swedishfrenchpress Mar 23, 2026
b976fbb
fix: remove entrance animations, fix padding/fonts, redesign Mint Det…
swedishfrenchpress Mar 23, 2026
abdaf4f
fix: withdraw animation, security reorder, toggle colors, screen rede…
swedishfrenchpress Mar 23, 2026
1bcd95a
fix: withdraw row padding — remove double 20dp stacking
swedishfrenchpress Mar 23, 2026
ad6bed0
feat: shared empty state component, remove Settings subtitles, dedupe…
swedishfrenchpress Mar 23, 2026
d144c7d
Merge remote-tracking branch 'origin/main' into feat/app-ui-refresh
swedishfrenchpress Mar 26, 2026
be27c2c
chore: add Gradle toolchain config and UI refresh design reference
swedishfrenchpress Mar 26, 2026
d2812a5
feat: redesign wallet setup screen with teaser card and explainer ove…
swedishfrenchpress Mar 26, 2026
c521aab
fix: filter unreachable mints from onboarding defaults
swedishfrenchpress Mar 26, 2026
fd55a06
fix: dark navy setup screen, gradient blend, explainer polish
swedishfrenchpress Mar 26, 2026
8ae6474
feat: premium tap-to-pay illustration for teaser card
swedishfrenchpress Mar 26, 2026
3600431
feat: native illustrations for explainer slides 1 and 2
swedishfrenchpress Mar 27, 2026
759de97
feat: unified dark navy onboarding design system
swedishfrenchpress Mar 27, 2026
fee2016
fix: unify navy color, restore emoji circle, polish onboarding UX
swedishfrenchpress Mar 27, 2026
2f50b5f
fix: green teaser card, remove gradient, fix phone clipping, hero car…
swedishfrenchpress Mar 27, 2026
6e8073e
fix: remove bolt fade overlay, remove option subtitles
swedishfrenchpress Mar 27, 2026
a55c2a1
fix: teaser card polish, static image, copy updates, small screen scroll
swedishfrenchpress Mar 27, 2026
1f2084f
feat: real phone images on Tap to Get Paid explainer slide
swedishfrenchpress Mar 27, 2026
eb82649
fix: shrink teaser section, update image, fix clipping
swedishfrenchpress Mar 27, 2026
21e048e
feat: animated auto-custody banners, tappable chevrons, chevron on sl…
swedishfrenchpress Mar 27, 2026
ad2322e
feat: new Zero Fees floating percentages animation, smooth card cross…
swedishfrenchpress Mar 27, 2026
7170148
feat: individual fee slashing + banner dismiss cycling
swedishfrenchpress Mar 27, 2026
107dd39
fix: rewrite auto-custody banner animation to eliminate flashing
swedishfrenchpress Mar 27, 2026
efd95de
fix: restore ZeroFeesIllustration animation trigger with onAttachedTo…
swedishfrenchpress Mar 27, 2026
26e97da
fix: Zero Fees animation timing — hold fees visible, delay 0% until a…
swedishfrenchpress Mar 27, 2026
f945e32
feat: redesign wallet setup CTA hierarchy with primary/secondary buttons
swedishfrenchpress Mar 27, 2026
9551833
fix: explainer edge-to-edge + Zero Fees animation replay on re-visit
swedishfrenchpress Mar 27, 2026
ce78162
fix: auto-custody animation replay on re-visit, larger white close bu…
swedishfrenchpress Mar 27, 2026
0d6f5f2
chore: PR review cleanup — dead code, deprecated APIs, animation safety
swedishfrenchpress Mar 27, 2026
4a1197e
chore: remove dev artifact docs added on this branch
swedishfrenchpress Mar 27, 2026
15de410
fix: remove icons from wallet setup buttons, title case Restore From …
swedishfrenchpress Mar 27, 2026
a551d43
feat: ambient green color fill on NUMO wordmark after welcome loads
swedishfrenchpress Mar 27, 2026
c0fa094
ob fixes.
swedishfrenchpress Mar 27, 2026
3d63c04
fix: remove stray characters causing build error in MintsSettingsActi…
swedishfrenchpress Mar 27, 2026
9b4ae02
feat: staggered per-letter NUMO wordmark reveal on welcome screen
swedishfrenchpress Mar 28, 2026
64e27f7
fix: remove white ripple effect from mint item rows on onboarding
swedishfrenchpress Mar 28, 2026
09d89b4
feat: enhance Zero Fees illustration with particles, glow, slash colo…
swedishfrenchpress Mar 28, 2026
57f8d38
feat: rework auto-custody animation with processing→success flow and …
swedishfrenchpress Mar 28, 2026
f86e93e
feat: add CheckmarkAnimationView and FadingImageView custom UI compon…
swedishfrenchpress Mar 28, 2026
e0db811
feat: replace emoji explosion with circular reveal on welcome screen
swedishfrenchpress Mar 28, 2026
4621b4b
feat: motion design audit — refine animations, add reduced motion sup…
swedishfrenchpress Mar 28, 2026
9a2ecd0
fix: speed up welcome circular reveal from 1200ms to 800ms
swedishfrenchpress Mar 28, 2026
2bf6822
fix: remove glow effect behind 0% and reposition fees into symmetric …
swedishfrenchpress Mar 28, 2026
6faf794
fix: remove paste button border/icon on restore wallet, align fees an…
swedishfrenchpress Mar 28, 2026
b1ea3c7
fix: normalize all fee label sizes to 1.0x for consistency
swedishfrenchpress Mar 28, 2026
a77e05d
fix: remove border and icon from onboarding restore wallet paste button
swedishfrenchpress Mar 28, 2026
e6b4567
feat: add BIP39 wordlist validation, fix seed input font, simplify lo…
swedishfrenchpress Mar 28, 2026
ad29567
fix: red text only for invalid BIP39 words, scroll seed inputs above …
swedishfrenchpress Mar 28, 2026
d2666d0
fix: keyboard no longer obscures seed inputs, continue button scrolls…
swedishfrenchpress Mar 28, 2026
87d1e7f
fix: normalize MaterialButton height globally, add secondary button s…
swedishfrenchpress Mar 29, 2026
5e26349
feat: add tertiary button component, replace all borderless text buttons
swedishfrenchpress Mar 29, 2026
9cc2225
fix: push seed entry buttons to bottom of screen with weighted spacer
swedishfrenchpress Mar 29, 2026
1c9861e
fix: restyle Set as Default dialog with DialogHelper, remove cancel b…
swedishfrenchpress Mar 29, 2026
82ee2b8
fix: smooth bottom sheet blur animation, unify dialog buttons with ap…
swedishfrenchpress Mar 29, 2026
0a9cbd6
fix: set default mint immediately on long-press, remove confirmation …
swedishfrenchpress Mar 29, 2026
e019d04
fix: revert custom fade transition on payment success dismiss
swedishfrenchpress Mar 29, 2026
9f373df
fix: restore fade transition on payment success dismiss, bump to 300ms
swedishfrenchpress Mar 29, 2026
f157671
revert: restore payment success/failure screens to match main
swedishfrenchpress Mar 29, 2026
80b367c
feat: animated gradient ring on default mint swap
swedishfrenchpress Mar 29, 2026
860babb
fix: remove gradient ring dot artifact, use momentum-based easing
swedishfrenchpress Mar 29, 2026
20392f9
fix: auto-focus input and show keyboard on Add Mint bottom sheet
swedishfrenchpress Mar 29, 2026
813bfd7
fix: remove custom theme from AddMintBottomSheet to fix z-ordering
swedishfrenchpress Mar 29, 2026
b7b00cd
feat: replace system Toast with styled Material Snackbar
swedishfrenchpress Mar 29, 2026
0ef797c
fix: replace "Mint added" Toast with styled Snackbar
swedishfrenchpress Mar 29, 2026
73f1aa7
feat: add Undo action to set-default snackbar, revert mint-added to T…
swedishfrenchpress Mar 29, 2026
1af1b57
feat: add settle bounce and slide-in to mint swap, instant undo
swedishfrenchpress Mar 29, 2026
c3262d9
feat: fade hero divider edges, add icon bounce and name slide-in
swedishfrenchpress Mar 29, 2026
e019fa0
fix: increase vertical spacing in auto-custody notification stack
swedishfrenchpress Mar 29, 2026
4466c29
fix: anchor set-default snackbar above Continue button
swedishfrenchpress Mar 29, 2026
442f163
fix: scale phone mockup margins to screen width for narrow devices
swedishfrenchpress Mar 29, 2026
0240cb4
fix: adjust zero fees labels — consistent percentages, staggered layout
swedishfrenchpress Mar 29, 2026
8378817
fix: move set-default snackbar closer to Continue button
swedishfrenchpress Mar 29, 2026
be618aa
chore: remove dead code and unused resources
swedishfrenchpress Mar 29, 2026
6478fa2
fix: replace teaser card text and remove redundant heading
swedishfrenchpress Mar 29, 2026
ae7cc27
fix: simplify Zero Fees animation to just 0% fade-in and pulse
swedishfrenchpress Mar 29, 2026
07d9258
fix: left-align mint hint text and make it white
swedishfrenchpress Mar 29, 2026
db94a70
feat: animate "Holds your bitcoin" subtitle on default mint swap
swedishfrenchpress Mar 29, 2026
b49fde9
fix: start icon/name crossfade earlier for fluid mint swap
swedishfrenchpress Mar 29, 2026
7cf5858
fix: eliminate mint icon flicker on mints screen load
swedishfrenchpress Mar 29, 2026
a39b3cd
feat: add scale pulse and haptic feedback on long-press set-default
swedishfrenchpress Mar 29, 2026
c75efb8
fix: remove double haptic on long-press set-default
swedishfrenchpress Mar 29, 2026
24e8b1f
fix: suppress system long-press haptic for single clean tap
swedishfrenchpress Mar 29, 2026
b5661e5
fix: repair failing unit tests
swedishfrenchpress Mar 29, 2026
5e6e03b
Merge remote-tracking branch 'origin/main' into feat/app-ui-refresh
swedishfrenchpress Mar 29, 2026
8803755
Merge remote-tracking branch 'origin/main' into feat/app-ui-refresh
swedishfrenchpress Apr 6, 2026
581f51d
fix: reset onboarding to match main after merge
swedishfrenchpress Apr 6, 2026
4f89455
fix: remove duplicate style and leftover onboarding layout after merge
swedishfrenchpress Apr 6, 2026
9399b41
fix: extract hardcoded colors to resources, add dark mode drawables, …
swedishfrenchpress Apr 6, 2026
eac8689
fix: make bottom sheet background consistent in dark mode
swedishfrenchpress Apr 6, 2026
bba29e8
refactor: unify bottom sheets into single DayNight-aware system
swedishfrenchpress Apr 6, 2026
1672d65
fix: remove unwanted shadow from MaterialButtons missing elevation co…
swedishfrenchpress Apr 6, 2026
cec92d8
fix: resolve DiffUtil state desync in resetItemQuantity and upgrade G…
swedishfrenchpress Apr 7, 2026
8056067
refactor: extract and consolidate design system tokens, styles, and d…
swedishfrenchpress Apr 7, 2026
e0ad596
refactor: replace remaining hardcoded dimensions with spacing tokens
swedishfrenchpress Apr 7, 2026
5c1432d
type and spacing fixes.
swedishfrenchpress Apr 7, 2026
5fff3d4
chore: untrack AI tool skills dirs and add to .gitignore
swedishfrenchpress Apr 7, 2026
e902b80
chore: ignore .impeccable.md skill file
swedishfrenchpress Apr 7, 2026
779f877
chore: untrack .impeccable.md from git
swedishfrenchpress Apr 7, 2026
ca6a085
chore: untrack skills dir and skills-lock.json
swedishfrenchpress Apr 7, 2026
2280c68
chore: add skills dir and skills-lock.json to .gitignore
swedishfrenchpress Apr 7, 2026
9075a46
refactor: design system cleanup — calmer payment failure, extracted t…
swedishfrenchpress Apr 11, 2026
3bd1668
fix: typography consistency and mint details layout cleanup
swedishfrenchpress Apr 11, 2026
4f7fefa
fix: dark mode gradient fades on empty state using wrong background c…
swedishfrenchpress Apr 11, 2026
b8a4c59
refactor: extract design tokens — replace hardcoded colors, consolida…
swedishfrenchpress Apr 11, 2026
171c010
fix: clarify add item page copy — remove jargon, improve errors, extr…
swedishfrenchpress Apr 11, 2026
9415e31
refactor: redesign add item page — streamlined flow, fixed bottom sav…
swedishfrenchpress Apr 11, 2026
d6798b1
fix: show price input prefix/suffix always, not just when focused
swedishfrenchpress Apr 11, 2026
d0d9c1a
refactor: standardize all input fields to outlined Material Design style
swedishfrenchpress Apr 11, 2026
b8d1f90
refactor: redesign receipt and transaction detail pages for consistency
swedishfrenchpress Apr 12, 2026
0f717ac
refactor: comprehensive UI consistency pass — typography, accessibili…
swedishfrenchpress Apr 12, 2026
e2aad52
revert: reset onboarding to main — drop branch-specific onboarding ch…
swedishfrenchpress Apr 14, 2026
2877408
Merge branch 'main' into feat/app-ui-refresh
swedishfrenchpress Apr 14, 2026
0d5eb3c
fix: remove duplicate string from merge conflict resolution
swedishfrenchpress Apr 14, 2026
85a1366
fix: re-reset onboarding to updated main after merge
swedishfrenchpress Apr 14, 2026
c63c0a4
refactor(ui): polish bottom sheets, primary buttons, and NFC success …
swedishfrenchpress Apr 17, 2026
e052b63
refactor(ui): design system foundations — color selectors, button voc…
swedishfrenchpress Apr 17, 2026
327e1ff
refactor(ui): migrate 22 remaining activities to NumoTopBar
swedishfrenchpress Apr 17, 2026
6d7706f
refactor(ui): extract SettingsRowView for clickable settings rows
swedishfrenchpress Apr 17, 2026
f59ed29
refactor(ui): tokenize hex colors across layouts
swedishfrenchpress Apr 17, 2026
ea6e314
refactor(ui): polish PIN, onboarding, restore, and auto-withdraw screens
swedishfrenchpress Apr 17, 2026
89226a4
refactor(ui): distill the Mints and Mint Details pages
swedishfrenchpress Apr 17, 2026
d06ab50
Merge remote-tracking branch 'origin/main' into feat/app-ui-refresh
swedishfrenchpress Apr 17, 2026
663d71c
test(restore): read title from top_bar_title after NumoTopBar migration
swedishfrenchpress Apr 17, 2026
4081e4a
fix: resolve layout overlaps and keyboard issues in history, language…
a1denvalu3 May 11, 2026
3d29658
fix: align Default Payment and Fiat Currency settings rows
a1denvalu3 May 11, 2026
a5ead84
fix: remove chevron from Default Payment settings row
a1denvalu3 May 11, 2026
98acd64
fix: remove '+' from Add Endpoint label
a1denvalu3 May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,33 @@ local.properties
release
opencode.json
.kotlin/

# AI coding tool config (keep local, never commit)
.agents/
.claude/
.codebuddy/
.commandcode/
.continue/
.crush/
.factory/
.junie/
.kilocode/
.kiro/
.kode/
.mcpjam/
.mux/
.neovate/
.openhands/
.opencode/
.pi/
.pochi/
.qoder/
.qwen/
.roo/
.trae/
.windsurf/
.zencoder/
.goosehints
.impeccable.md
skills/
skills-lock.json
7 changes: 0 additions & 7 deletions .goosehints

This file was deleted.

9 changes: 4 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-parcelize")
id("org.jetbrains.kotlin.plugin.parcelize")
id("jacoco")
}

Expand Down Expand Up @@ -50,8 +49,8 @@ android {
targetCompatibility = JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = "17"
kotlin {
jvmToolchain(17)
}

buildFeatures {
Expand Down Expand Up @@ -114,7 +113,7 @@ dependencies {
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

// Project specific dependencies
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
implementation("org.bouncycastle:bcprov-jdk18on:1.80")

implementation("com.squareup.okhttp3:okhttp:4.12.0")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class PaymentFailureActivity : AppCompatActivity() {
window.isStatusBarContrastEnforced = false
}

val backgroundColor = ContextCompat.getColor(this, R.color.color_error)
val backgroundColor = ContextCompat.getColor(this, R.color.color_bg_white)
window.setBackgroundDrawable(android.graphics.drawable.ColorDrawable(backgroundColor))

val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,33 +175,35 @@ class PaymentRequestActivity : AppCompatActivity() {
window.isNavigationBarContrastEnforced = false
window.isStatusBarContrastEnforced = false
}

// Apply window insets to handle edge-to-edge correctly without squishing the NFC overlay

// Apply window insets to handle edge-to-edge correctly without squishing the NFC overlay.
// The root itself is not padded — individual chrome views have their margins adjusted
// so the NFC animation container stays full-bleed edge-to-edge.
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.payment_request_root)) { v, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())

val density = resources.displayMetrics.density
val topMarginPx = (16 * density).toInt()
val bottomMarginPx = (24 * density).toInt()

findViewById<View>(R.id.close_button).layoutParams =
findViewById<View>(R.id.close_button).layoutParams =
(findViewById<View>(R.id.close_button).layoutParams as MarginLayoutParams).apply {
topMargin = insets.top + topMarginPx
}
findViewById<View>(R.id.share_button).layoutParams =

findViewById<View>(R.id.share_button).layoutParams =
(findViewById<View>(R.id.share_button).layoutParams as MarginLayoutParams).apply {
topMargin = insets.top + topMarginPx
}

val switchContainer = findViewById<View>(R.id.lightning_cashu_switch_container)
if (switchContainer != null) {
switchContainer.layoutParams =
switchContainer.layoutParams =
(switchContainer.layoutParams as MarginLayoutParams).apply {
bottomMargin = insets.bottom + bottomMarginPx
}
}

windowInsets
}

Expand Down
Loading
Loading