Skip to content

Version 1 - #9

Merged
Mwvndva merged 5 commits into
mainfrom
version-1
Jul 10, 2026
Merged

Version 1#9
Mwvndva merged 5 commits into
mainfrom
version-1

Conversation

@Mwvndva

@Mwvndva Mwvndva commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Updated Android app branding to display “Memory” with adaptive launcher icons.
    • Added improved spacing options for consistent layouts.
  • Improvements
    • Refreshed login and account creation screens with a cleaner, flatter design and improved keyboard/viewport handling.
    • Password fields now use password-appropriate keyboard settings and disable suggestions.
    • Improved icon button touch targets, including buttons placed inside text fields.
  • Bug Fixes
    • Startup phone-data processing now retries gracefully when the database is temporarily unavailable.

kiidfreak and others added 5 commits July 10, 2026 23:33
Launcher label was memory_app; it now reads Memory, matching the wordmark
the app shows everywhere else. The icon is the ghost on the loading-screen
yellow: an adaptive icon (yellow background + padded foreground so no
launcher mask clips the tail) with legacy square and round PNGs for older
launchers.

The login screen drops its textured painter for the same flat accent the
splash fills, and the logo stops breathing and blinking -- the first frame
after the splash should look like the splash settling, not a new animation.

Password fields now opt out of the keyboard's help: with suggestions and
autocorrect left on, Gboard and Samsung's keyboard rewrite the hidden value
as you type, so the password sent was not the one keyed. Obscured fields
also switch to the password keyboard.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The button sized itself with a ConstrainedBox that set only a minimum, then
centred the glyph inside it. A Center given only a minimum grows to whatever
maximum width it is offered: in a Row that maximum is unbounded, so it
shrink-wrapped to the 48dp target and looked correct -- but as a TextField's
suffixIcon, InputDecorator offers the full field width, so the eye button
expanded across the entire field. The password input became one big reveal
button with no room to type.

Size to a definite square (max of the visual size and the 48dp target)
instead, so the hit target is fixed everywhere and never eats the field.
Regression test measures the suffix width inside a real InputDecorator and
confirms the field stays typable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Login and create-account both drew their forms on a white, shadowed card
floating over the background. Drop the cards: the fields are already their
own dark slabs, so a white panel behind them only boxed the screen in. The
forms now sit straight on the accent yellow.

Login: more air before the actions (a new xxxl spacing step, since a section
gap read as too tight between the last field and the buttons), and the
Create account button is now white with black text instead of cream.

Create account: same flat accent as login -- the textured background painter
and its scattered icons are gone (the painter, now unused, is deleted) -- and
the step forms are centered, capped at a readable width, matching login.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The login and splash lead with the logo; the sign-up flow started cold with
just the step header. Add the same logo, centered above the form so it stays
branded on every step, matching the two screens either side of it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On boot UsersService fires backfillNormalizedPhones as a fire-and-forget job.
Because the pg driver adapter connects lazily, that backfill's first query is
what actually reaches the database -- so when pm2 starts the API before the
Postgres container is accepting connections, it fails with P1001 "can't reach
database server", logs an ERROR, and skips the backfill for that whole boot.
The app itself starts fine, so this was pure noise plus a missed backfill.

Retry the backfill with capped exponential backoff (up to 10 attempts) while
the error looks like an unreachable database (P1001/P1002, or the message as a
fallback), logging a warning between tries. A non-connection error, or running
out of attempts, still escalates to a single ERROR as before. Adds a DB-free
unit spec under src/ (so `npm test` actually runs it) covering the retry,
the message-only detection, and immediate escalation of a real query error.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Mwvndva
Mwvndva merged commit 883b938 into main Jul 10, 2026
1 of 3 checks passed
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e8ca4d08-300d-403b-95fd-5994f575b475

📥 Commits

Reviewing files that changed from the base of the PR and between f292750 and be192c2.

⛔ Files ignored due to path filters (15)
  • android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • android/app/src/main/AndroidManifest.xml
  • android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  • android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  • backend/src/users/users.service.spec.ts
  • backend/src/users/users.service.ts
  • lib/design_system/components/memory_icon_button.dart
  • lib/design_system/components/memory_text_field.dart
  • lib/design_system/foundation/memory_spacing.dart
  • lib/features/auth/auth_background_painter.dart
  • lib/features/auth/views/create_account_view.dart
  • lib/features/auth/views/login_view.dart
  • test/design_system/design_system_test.dart

📝 Walkthrough

Walkthrough

The changes improve startup database backfill resilience, refresh authentication screen layouts, adjust design-system input behavior and spacing, add an icon sizing regression test, and update Android launcher branding.

Changes

Backend startup resilience

Layer / File(s) Summary
Database availability detection and retry flow
backend/src/users/users.service.ts, backend/src/users/users.service.spec.ts
UsersService retries transient database-unavailable backfill failures with capped exponential backoff, while non-transient failures are logged immediately and covered by tests.

Authentication interface refresh

Layer / File(s) Summary
Authentication screen layout changes
lib/features/auth/views/create_account_view.dart, lib/features/auth/views/login_view.dart
Authentication views now use flat accent-colored layouts, responsive scrolling, static branding, updated spacing, and revised button and text colors.
Background painter removal
lib/features/auth/auth_background_painter.dart
The unused textured authentication background painter is removed.

Design-system input and spacing updates

Layer / File(s) Summary
Input sizing and password behavior
lib/design_system/components/memory_icon_button.dart, lib/design_system/components/memory_text_field.dart, test/design_system/design_system_test.dart
Icon buttons use fixed square touch targets, obscured fields disable suggestions and use password input settings, and suffix-icon sizing is regression-tested.
Additional spacing token
lib/design_system/foundation/memory_spacing.dart
MemorySpacing.xxxl is added with a value of 28.

Android launcher branding

Layer / File(s) Summary
Application label and adaptive icons
android/app/src/main/AndroidManifest.xml, android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml, android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
The application label changes to Memory, round-icon metadata is added, and standard and round adaptive launcher icons use the brand-yellow background and launcher foreground.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • Mwvndva/memory#5: Introduced or affected the startup normalized-phone backfill behavior extended here.
  • Mwvndva/memory#7: Previously added MemoryIconButton, which is updated here.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch version-1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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