All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Welcome screen sparkle was invisible (white-on-white) in light mode — pinned the screen to brand navy
#1A2332(matching the launcher and splash) regardless of theme so the white sparkle and title always have contrast - Sign-up / sign-in sparkle was hard-coded to white and washed out on light backgrounds — switched to
MaterialTheme.colorScheme.primaryso it stays visible in both light and dark modes
- Welcome screen sparkle and title were drifting apart on tall phones — restructured to a
Columnwith weighted spacers and a fixed 220dp sparkle so the icon and title sit together in the upper-middle
- Enlarged launcher sparkle from 0.61 to 0.75 scale so the foreground reads at launcher size
- Dropped the embedded
#1A2332background rect from the launcher foreground/monochrome vectors — the adaptive-icon<background>layer supplies the navy, and the monochrome layer must not include a fill rect for Android 13+ themed icons to render correctly
- Renamed
app_nameto "Native App Template" so the launcher label and in-app title share a single source of truth - Sign-up / sign-in title dropped to
headlineMediumbold/centered so it fits on one line - Refreshed launcher icon with sparkle artwork (per-density webp + vector foreground/monochrome) and added a
<monochrome>layer for Android 13+ themed icons - Replaced splash "N" letterform with the same four-pointed sparkle (white on navy via
windowSplashScreenBackground)
- Onboarding sample pages 1–4, the
Onboardingdata class,ImageOrientationenum,OnboardingViewModel, their tests, and theic_overview1-4/ic_herodrawables — onboarding now shows just the welcome screen with anAutoAwesomeicon
- Shop list card stat labels now read "completed item tags" / "all item tags" to align with the Number Tag → Item Tag terminology
- Generic CRUD UI for Item Tags (replaces NFC/QR scan flow)
- Client-side length caps and truncation for Shop name and description
- Date + time on
completedAttimestamps viacardDateTimeString - Tests for Onboarding model, MainActivityViewModel, and AuthInterceptor
canCreateItemTags/canDeleteItemTagspermission tests onItemTagListViewModel- Configurable API endpoint via Gradle properties in Debug builds
- Renamed "Number Tag" to "Item Tag" throughout the app
- Updated ItemTag schema to Rails API v2
- Collapsed 7-tier role hierarchy to
admin/member - Slimmed onboarding from 6 to 4 slides and replaced hero imagery
- ItemTag list card now uses a two-column row layout with vertically centered content
- Swipe actions reveal from the trailing (right) edge; renamed
reset→idle - Card date format changed to
yyyy/MM/dd - Renamed
validateEmail→isValidEmail; convertedisNumericto aString?extension - Normalized substrate naming to a single
NativeAppTemplatestem (Kotlin symbols, theme styles, Gradle properties, error-code prefix)
- NFC, QR, and Scan features (background tag reading, scan view, camera permission)
- "How To Use" entry from Settings
- Server-driven
maximum_name_length(moved to client-sideNativeAppTemplateConstants) - Success toast for swipe complete/idle actions (reload is the success signal)
- Unused Teal10/Teal30/Teal90 color tokens
- Unused FileProvider declaration and
filepathsresource - NATIVEAPPTEMPLATE-3xxx NFC/scan error code range
- Dead code across
utilsanddesignsystem
- ItemTag whitespace-only name now fails validation
- Long shop names no longer overflow the right column in
ShopDetailCardView - Shop description field height regressed after switching to two-line
supportingText
- Implemented pagination for item tags list screen.
- Implemented CodedError system with NATIVEAPPTEMPLATE-XXXX error codes.
- Added unit tests for utils, network, and pre-push hook.
- Added Spotless + ktlint for Kotlin code formatting.
- Added app version and reorganized settings sections.
- Updated compileSdk and targetSdk to 36.
- Updated libraries and dependencies.
- Extracted SnackbarMessageEffect composable.
- Replaced generic Exception with sealed ApiException hierarchy.
- Extracted duplicated API error handling into shared extensions.
- Fixed null safety bugs and resource leak.
- Fixed security vulnerabilities from audit.
- Updated libraries and dependencies.
- NFC features for Number Tags (ItemTags): Write Application Info to a Tag, Read a Tag, Background Tag Reading.
- Generate QR Code Image for Number Tags (ItemTags) with a Centered Number.
- Onboarding screen with background tag reading support when not signed in.
- Updated navigation to use the Now in Android approach with type-safe navigation.
- Updated onboarding flow.
- Fixed login flow.
- Fixed bottom navigation tab color not changing.
- Fixed test failures.
- Initial release.
- 100% Kotlin and 100% Jetpack Compose.
- User authentication: Sign Up, Sign In, Sign Out, Email Confirmation, Forgot Password.
- Input validation.
- CRUD operations for Shops.
- CRUD operations for Number Tags (ItemTags).
- Hilt dependency injection.
- Retrofit2 networking with Sandwich API response handling.
- Proto DataStore for user preferences.
- Dark mode support.
- Repository tests with Robolectric.