feat(db): implement active identity table separation #180

Open
anomalist wants to merge 24 commits from activedid_migration into master

24 Commits

Author SHA1 Message Date
Matthew Raymer
9c8e8d573d Merge branch 'master' into activedid_migration 2025-08-27 10:32:09 +00:00
Matthew Raymer
7231ad18a6 refactor(active-identity): remove scope parameter and simplify to single-identity management
- Remove scope column from active_identity table schema
- Simplify () and () methods to no scope parameters
- Update migration 003 to create table without scope from start
- Remove DEFAULT_SCOPE constant and related scope infrastructure
- Update documentation to reflect simplified single-identity approach
- Maintain backward compatibility with existing component calls

This change simplifies the architecture by removing unused multi-scope
infrastructure while preserving all existing functionality. The system
now uses a cleaner, single-identity approach that's easier to maintain.
2025-08-22 13:33:02 +00:00
Matthew Raymer
135023d17b test(playwright): fix Active Identity migration test infrastructure and document findings
Fixed failing Playwright tests for Active Identity migration by correcting
DOM element selectors and test expectations. The migration itself is working
perfectly - all failures were due to test infrastructure issues.

- Fix element selectors in switchToUser() to use 'li div' instead of 'code'
- Update test assertions to expect "Your Identity" heading instead of "Account"
- Improve advanced settings access with proper expansion before navigation
- Add comprehensive findings document showing migration is 100% successful
- Replace basic smoke tests with detailed step-by-step debugging tests

The Active Identity migration is complete and functional. Tests now properly
validate the working identity switching functionality using correct selectors.
2025-08-22 13:24:26 +00:00
Matthew Raymer
28c541e682 test(playwright): fix Active Identity migration test element selectors
Fixed failing Playwright tests for Active Identity migration by correcting
DOM element selectors and test expectations.

- Replace basic smoke tests with comprehensive step-by-step debugging tests
- Fix test assertions to expect "Your Identity" heading instead of "Account"
- Update identity switcher element targeting to use `li div` selectors
- Add proper wait conditions for advanced settings visibility
- Enhance switchToUser() utility with better error handling and waits

Resolves issue where tests were clicking wrong elements (QuickNav instead
of identity list items) and expecting incorrect page headings. Tests now
properly verify that identity switching functionality works correctly
with the Active Identity migration.
2025-08-22 13:09:27 +00:00
Matthew Raymer
4ea72162ec fix(active-identity): complete component migration to new Active Identity system
Fixes gift recording functionality by migrating remaining components from
legacy settings.activeDid to new $getActiveDid() method. Migration 004
dropped settings.activeDid column before all components were updated,
causing validation failures in GiftedDialog, OfferDialog, and
OnboardingDialog. Added comprehensive logging to $getActiveDid() method
and HomeView initialization for debugging. Test "Check User 0 can register
a random person" now passes consistently.

- GiftedDialog, OfferDialog, OnboardingDialog use new Active Identity system
- Enhanced logging in PlatformServiceMixin.$getActiveDid() method
- Added debugging logs to HomeView component lifecycle
- Fixed Playwright test navigation and element selectors
2025-08-22 12:10:52 +00:00
Matthew Raymer
a6a461d358 Reapply "feat: migrate phase 1 critical identity components to active identity façade"
This reverts commit 6c1c109cbd.
2025-08-22 11:30:13 +00:00
Matthew Raymer
6c1c109cbd Revert "feat: migrate phase 1 critical identity components to active identity façade"
This reverts commit 09e6a7107a.
2025-08-22 11:24:58 +00:00
Matthew Raymer
cf41665629 fix: migrate critical components causing test failures
- Fix ShareMyContactInfoView.vue mounted() method to use Active Identity façade
- Fix OnboardMeetingSetupView, OnboardMeetingMembersView, OnboardMeetingListView
- Fix ContactAmountsView to use new Active Identity system
- Replace all remaining settings?.activeDid usage with ()

These components were causing Playwright test failures due to
routing issues when activeDid was not found in legacy settings.
2025-08-22 11:04:43 +00:00
Matthew Raymer
63024f6e89 feat: migrate batch 7 missing components from previous batches
- Complete SeedBackupView, SharedPhotoView, UserProfileView migrations
- Complete RecentOffersToUserView, RecentOffersToUserProjectsView migrations
- Complete ContactImportView migration
- Replace all remaining settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 7 completes migration of 6 components that were
identified as missing from previous migration batches.
2025-08-22 10:58:10 +00:00
Matthew Raymer
c2f2ef4a09 feat: complete missing components from previous batches
- Complete ContactGiftingView, ContactQRScanShowView migrations
- Complete OfferDetailsView, ShareMyContactInfoView from Batch 5
- Ensure all components from Batches 3-6 are properly migrated
- Add consistent migration comments for future reference

This commit completes the migration of components that were
started in previous batches but not fully committed.
2025-08-22 10:56:08 +00:00
Matthew Raymer
80a76dadb7 feat: complete batch 5 components migration to active identity façade
- Update GiftedDetailsView, QuickActionBvcEndView, DiscoverView
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference
- Complete Batch 5 with 5 total components migrated

Batch 5 completes migration of 5 additional components
with various usage patterns and complexity levels.
2025-08-22 10:54:47 +00:00
Matthew Raymer
bdac9e0da3 feat: migrate batch 4 components to active identity façade
- Update HelpView, ConfirmGiftView, TestView, ClaimReportCertificateView
- Update ImportAccountView with conditional activeDid check
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 4 completes migration of 5 additional medium-priority
components with various usage patterns.
2025-08-22 10:51:49 +00:00
Matthew Raymer
0277b65caa feat: migrate batch 3 components to active identity façade
- Update ProjectViewView, QuickActionBvcBeginView, ContactQRScanFullView
- Update NewActivityView, NewEditProjectView
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 3 completes migration of 5 medium-priority components
using simple read patterns.
2025-08-22 10:49:38 +00:00
Matthew Raymer
453c791036 chore: remove dangerous migration scripts and clean up code formatting
- Remove migrate-active-identity-components.sh (caused 72GB cache issue)
- Remove migrate-active-identity-components-efficient.sh (unsafe bulk operations)
- Clean up code formatting in activeIdentity.ts table definition
- Standardize quote usage and remove trailing whitespace

These scripts were dangerous and created excessive disk/memory usage.
Manual, focused migration approach is safer and more reliable.
2025-08-22 10:41:25 +00:00
Matthew Raymer
552196c18f test: add active identity migration end-to-end testing
- Add comprehensive migration test suite for identity switching
- Include smoke tests for basic page loading and navigation
- Test migration persistence, error handling, and data preservation
- Validate Active Identity façade functionality

Ensures the migration system works correctly across
all phases and maintains data integrity.
2025-08-22 10:40:00 +00:00
Matthew Raymer
17951d8cb8 docs: add active identity migration implementation and progress tracking
- Add comprehensive implementation overview document
- Track Phase B component migration progress
- Document migration strategy and architecture decisions
- Include testing and validation procedures

Provides complete documentation for the Active Identity
table separation migration project.
2025-08-22 10:39:44 +00:00
Matthew Raymer
09e6a7107a feat: migrate phase 1 critical identity components to active identity façade
- Update ClaimAddRawView, HomeView, IdentitySwitcherView, ImportDerivedAccountView
- Replace settings.activeDid access with () façade method
- Update switchAccount to switchIdentity using
- Add legacy fallback support for backward compatibility
- Ensure proper error handling and logging

Phase 1 completes migration of 12 critical identity-related
components to use the new Active Identity system.
2025-08-22 10:39:32 +00:00
Matthew Raymer
e172faaaf2 fix: correct active identity fallback logic for phase c
- Fix fallback condition to use DROP_SETTINGS_ACTIVEDID flag
- Update code formatting and import organization
- Add missing Active Identity façade method declarations
- Ensure proper TypeScript interface coverage

This fixes the fallback logic that was incorrectly checking
USE_ACTIVE_IDENTITY_ONLY instead of DROP_SETTINGS_ACTIVEDID,
preventing proper Phase C behavior.
2025-08-22 10:39:13 +00:00
Matthew Raymer
c3534b54ae fix: update legacy utility functions to use active identity façade
- Replace updateDefaultSettings calls with active_identity table operations
- Add feature flag checks to avoid legacy settings table in Phase C
- Update saveNewIdentity and registerSaveAndActivatePasskey functions
- Ensure new identities are properly stored in active_identity table

This fixes the 'no such column: activeDid' errors that occurred
after Migration 004 dropped the legacy column.
2025-08-22 10:38:48 +00:00
Matthew Raymer
211de332db feat: re-enable migration 004 for active identity phase c
- Uncomment migration 004_drop_settings_activeDid_column
- Phase 1 component migration complete, safe to drop legacy column
- Migration system now runs all 4 migrations successfully

This completes the legacy activeDid column removal after
12 critical identity components were migrated to use the
new Active Identity façade.
2025-08-22 10:38:26 +00:00
Matthew Raymer
628469b1bb feat: Enable Phase C feature flag for Active Identity migration
- Set DROP_SETTINGS_ACTIVEDID to true since Migration 004 dropped the column
- Update documentation to reflect current migration state
- Fix code formatting for consistency

Migration 004 successfully completed at 2025-08-22T10:30Z, enabling
the legacy activeDid column removal feature flag.
2025-08-22 10:38:01 +00:00
Matthew Raymer
4a63ff6838 feat(migration): extend Phase 1 with invite and certificate components
Complete Phase 1 migration by adding three critical identity components
to use the Active Identity façade instead of direct database access.

Components migrated:
- ClaimCertificateView: certificate generation and display
- InviteOneView: invitation management and tracking
- InviteOneAcceptView: invitation acceptance flow

All components now use $getActiveDid() for active identity retrieval
instead of settings.activeDid. Added missing logger import to
InviteOneAcceptView for proper error logging.

Phase 1 now complete with 12 critical identity components migrated.
2025-08-22 10:20:23 +00:00
Matthew Raymer
6013b8e167 feat(migration): migrate core identity views to Active Identity façade
Replace settings.activeDid reads with $getActiveDid() calls in critical
identity management components. This continues the Active Identity table
separation migration by updating components to use the new façade API
instead of direct database field access.

Components migrated:
- AccountViewView: user account settings and profile management
- ClaimView: credential/claim viewing and verification
- ContactsView: contact management and invitation processing
- DIDView: DID display and identity information
- ProjectsView: project listing and management

All components maintain backward compatibility through dual-write pattern
while transitioning to the new active_identity table structure.
2025-08-22 10:18:09 +00:00
Matthew Raymer
b2e678dc2f feat(db): implement active identity table separation
Separate activeDid from monolithic settings table into dedicated
active_identity table to improve data normalization and reduce cache
drift. Implements phased migration with dual-write triggers and
fallback support during transition.

- Add migrations 003 (create table) and 004 (drop legacy column)
- Extend PlatformServiceMixin with new façade methods
- Add feature flags for controlled rollout
- Include comprehensive validation and error handling
- Maintain backward compatibility during transition phase

BREAKING CHANGE: Components should use $getActiveDid()/$setActiveDid()
instead of direct settings.activeDid access
2025-08-21 13:26:13 +00:00