Nrobi144/feat/contact creation compose#29
Closed
nrobi144 wants to merge 29 commits into
Closed
Conversation
…acOS build - Add .claude/CLAUDE.md with architecture conventions, SDD workflow, build commands - Add 8 skills: sdd-workflow, android-build, compose-screen, compose-test, m3-expressive, viewmodel-pattern, hilt-module, delta-mapper - Add brainstorm and implementation plan for contact creation Compose rewrite - Update verification-metadata.xml with macOS aapt2 checksums - Rename Bazel BUILD file conflicting with Gradle output dir (in submodule) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…il + save SDD: tests written first (39 unit tests), then implementation. - Add ContactCreationActivity with ACTION_INSERT, singleTop launch mode - Add ContactCreationEditorScreen (Scaffold + LargeTopAppBar + LazyColumn) - Add ContactCreationViewModel with SavedStateHandle, sealed Actions/Effects - Add ContactFieldsDelegate with PersistentList internals - Add RawContactDeltaMapper (name, phone, email → RawContactDeltaList) - Add NameSection, PhoneSection, EmailSection composables - Add AccountChip with bottom sheet picker - Add FieldType sealed classes (PhoneType, EmailType) - Add TestTags, intent sanitization, save callback via onNewIntent - Add Coil, hilt-navigation-compose, kotlinx-collections-immutable deps - 39 unit tests: mapper (12), delegate (11), viewmodel (16) - 7 androidTest files for UI verification Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SDD: tests expanded first (102 unit tests), then implementation. - Add AddressSection (multi-column: street, city, region, postcode, country) - Add OrganizationSection (company + title) - Add MoreFieldsSection with AnimatedVisibility expand/collapse (events, relations, IM, websites, note, nickname, SIP) - Add GroupSection with account-scoped checkbox list - IM correctly uses PROTOCOL + CUSTOM_PROTOCOL (not TYPE + LABEL) - Address blank check spans all 5 sub-fields - Groups cleared on account change - Account-specific SIP field filtering - Mapper expanded: all 13 MIME types → RawContactDeltaList - Delegate expanded: full CRUD for all field types - 40 mapper tests, 46 delegate tests, 16 VM tests - 7 new androidTest files for sections Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SDD: mapper + VM tests expanded first (107 unit tests), then implementation. - Add PhotoSection with tappable avatar, dropdown menu (gallery/camera/remove) - Coil AsyncImage for off-thread photo display with downsampling - PickVisualMedia for gallery, ACTION_IMAGE_CAPTURE for camera - Photo URI passed to save service via EXTRA_UPDATED_PHOTOS bundle - Temp files in getCacheDir()/contact_photos/ subdirectory - Temp file cleanup in ViewModel.onCleared() - FileProvider scoped to contact_photos/ path only - 42 mapper tests, 19 VM tests, 8 photo section androidTests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e back SDD: VM + screen tests expanded first, then implementation. - Add spring animations: GentleBounce/SmoothExit on animateItem() - Add reduce-motion guard (isReduceMotionEnabled -> skip springs) - Add shape morphing on photo avatar press - Add PredictiveBackHandler for Android 14+ - Add discard dialog (state-driven AlertDialog) - Add Material Icons per field type (Person, Phone, Email, Place, etc.) - Add M3 typography roles throughout (headlineMedium, bodyLarge, etc.) - Add AnimatedVisibility spring specs on MoreFieldsSection - Zero-account local-only contact support - PII-safe error handling (generic messages only) - 5 new VM tests, 5 new screen androidTests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Coverage audit: added 38 tests to fill gaps identified during review. Mapper (+26): - Whitespace-only fields treated as blank (11 field types) - Multiple entries for repeatables (emails, events, relations, IMs, websites) - Non-custom type does NOT set LABEL column - Temp ID is negative - Mixed blank/populated repeatables (only populated saved) ViewModel (+12): - Full process death round-trip (all 13+ fields serialize/restore) - Extended field actions (address, event, note, nickname, SIP, etc.) - SelectAccount clears groups - ToggleMoreFields - hasPendingChanges edge cases Total: 68 mapper, 46 delegate, 35 VM, 71 androidTest = 220 tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
|
accidental only, not ready yet |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.