Trent Larson
197dea48c9
chore: remove comments that moved into ClickUp issues
2 weeks ago
Matthew Raymer
07c5c6fd31
Convert Vue components to use @Emit decorator instead of manual emits declarations
Replace manual emits declarations with proper @Emit decorator usage across components:
- ActivityListItem: Add @Emit methods for viewImage, loadClaim, confirmClaim
- ContactInputForm: Convert handleQRScan to use @Emit("qr-scan")
- ContactBulkActions: Add @Emit methods for toggle-all-selection, copy-selected
- ContactListHeader: Add @Emit methods for all 5 emitted events
- MembersList: Add @Emit("error") method for error handling
- LargeIdenticonModal: Add @Emit("close") method
- ContactListItem: Add @Emit methods for all 4 emitted events
Update all templates to call emit methods instead of direct $emit calls.
Fix TypeScript type issues with optional parameters.
Resolves Vue warning about undeclared emitted events.
Follows vue-facing-decorator best practices and improves code consistency.
3 weeks ago
Matthew Raymer
447b4e26ef
feat: centralize identity creation with router navigation guard
Migrate automatic identity creation from scattered view components to centralized
router navigation guard for consistent behavior across all entry points.
**Key Changes:**
- Add global beforeEach navigation guard in router/index.ts
- Remove automatic identity creation from HomeView, ContactsView, InviteOneAcceptView,
and OnboardMeetingMembersView
- Keep minimal fallback logic in deep link scenarios with logging
- Exclude manual identity creation routes (/start, /new-identifier, /import-account)
**Benefits:**
- Eliminates code duplication and race conditions
- Ensures consistent identity creation regardless of entry point
- Centralizes error handling with fallback to manual creation
- Improves maintainability with single point of change
**Files Modified:**
- src/router/index.ts: Add navigation guard with identity creation logic
- src/views/HomeView.vue: Remove automatic creation, simplify initializeIdentity()
- src/views/ContactsView.vue: Add fallback with logging
- src/views/InviteOneAcceptView.vue: Add fallback with logging
- src/views/OnboardMeetingMembersView.vue: Add fallback with logging
**Testing:**
- Verified first-time user navigation creates identity automatically
- Confirmed existing users bypass creation logic
- Validated manual creation routes remain unaffected
- Tested deep link scenarios with fallback logic
**Documentation:**
- Created docs/identity-creation-migration.md with comprehensive details
- Includes migration rationale, implementation details, testing scenarios
- Documents security considerations and rollback plan
Resolves inconsistent identity creation behavior across different app entry points.
1 month ago
Matthew Raymer
d355d51ea3
feat: centralize identity creation with router navigation guard
Migrate automatic identity creation from scattered view components to centralized
router navigation guard for consistent behavior across all entry points.
**Key Changes:**
- Add global beforeEach navigation guard in router/index.ts
- Remove automatic identity creation from HomeView, ContactsView, InviteOneAcceptView,
and OnboardMeetingMembersView
- Keep minimal fallback logic in deep link scenarios with logging
- Exclude manual identity creation routes (/start, /new-identifier, /import-account)
**Benefits:**
- Eliminates code duplication and race conditions
- Ensures consistent identity creation regardless of entry point
- Centralizes error handling with fallback to manual creation
- Improves maintainability with single point of change
**Files Modified:**
- src/router/index.ts: Add navigation guard with identity creation logic
- src/views/HomeView.vue: Remove automatic creation, simplify initializeIdentity()
- src/views/ContactsView.vue: Add fallback with logging
- src/views/InviteOneAcceptView.vue: Add fallback with logging
- src/views/OnboardMeetingMembersView.vue: Add fallback with logging
**Testing:**
- Verified first-time user navigation creates identity automatically
- Confirmed existing users bypass creation logic
- Validated manual creation routes remain unaffected
- Tested deep link scenarios with fallback logic
**Documentation:**
- Created docs/identity-creation-migration.md with comprehensive details
- Includes migration rationale, implementation details, testing scenarios
- Documents security considerations and rollback plan
Resolves inconsistent identity creation behavior across different app entry points.
1 month ago
Matthew Raymer
3851ead171
Complete MembersList.vue notification migration with complex modals (3 minutes)
Notification Migration: Use TIMEOUTS.MODAL instead of -1 for complex confirm dialogs
Complex Modal Pattern: Retain raw $notify calls for advanced modal features (custom titles, button text, multiple callbacks)
Constants Integration: All notification text uses centralized NOTIFY_ADD_CONTACT_FIRST and NOTIFY_CONTINUE_WITHOUT_ADDING constants
Time: 3 minutes | Complexity: Simple | Issues: None
Testing: Manual required | Validation: Complex modals documented as legitimate raw $notify use case
Note: Validation script flags as mixed pattern but component follows documented complex modal pattern
1 month ago
Matthew Raymer
9f86ab4f80
Complete MembersList.vue notification migration with complex modals (3 minutes)
Notification Migration: Use TIMEOUTS.MODAL instead of -1 for complex confirm dialogs
Complex Modal Pattern: Retain raw $notify calls for advanced modal features (custom titles, button text, multiple callbacks)
Constants Integration: All notification text uses centralized NOTIFY_ADD_CONTACT_FIRST and NOTIFY_CONTINUE_WITHOUT_ADDING constants
Time: 3 minutes | Complexity: Simple | Issues: None
Testing: Manual required | Validation: Complex modals documented as legitimate raw $notify use case
Note: Validation script flags as mixed pattern but component follows documented complex modal pattern
1 month ago
Matthew Raymer
ca1179ed97
Extract literal strings from complex modals to notification constants
Replace hardcoded text in raw $notify calls with centralized constants:
- MembersList.vue: 2 complex modals (contact admission workflow)
- ContactsView.vue: 2 complex modals (registration, onboarding meeting)
- ProjectViewView.vue: 1 complex modal (claim confirmation)
Preserves advanced modal features (promptToStopAsking, custom buttons,
nested workflows) while standardizing text through constants for
maintainability and future localization support.
1 month ago
Matthew Raymer
f9a1be81b4
Extract literal strings from complex modals to notification constants
Replace hardcoded text in raw $notify calls with centralized constants:
- MembersList.vue: 2 complex modals (contact admission workflow)
- ContactsView.vue: 2 complex modals (registration, onboarding meeting)
- ProjectViewView.vue: 1 complex modal (claim confirmation)
Preserves advanced modal features (promptToStopAsking, custom buttons,
nested workflows) while standardizing text through constants for
maintainability and future localization support.
1 month ago
Matthew Raymer
114627b218
Replace hardcoded notification strings with standardized constants
- Replace literal strings with notification constants in ContactsView.vue:
* "Got an error sending the invite." → NOTIFY_INVITE_ERROR.message
* "Could not set visibility on the server." → NOTIFY_VISIBILITY_ERROR.message
* "Unconfirmed Hours" → NOTIFY_UNCONFIRMED_HOURS.title
- Remove unused NOTIFY_REGISTER_PROCESSING import
- Remove unused NOTIFICATION_TIMEOUTS constant in ShareMyContactInfoView.vue
- Fix unused parameter warnings in danger() and warning() methods
- Resolve all notification-related linting errors
1 month ago
Matthew Raymer
ba15b500c4
Replace hardcoded notification strings with standardized constants
- Replace literal strings with notification constants in ContactsView.vue:
* "Got an error sending the invite." → NOTIFY_INVITE_ERROR.message
* "Could not set visibility on the server." → NOTIFY_VISIBILITY_ERROR.message
* "Unconfirmed Hours" → NOTIFY_UNCONFIRMED_HOURS.title
- Remove unused NOTIFY_REGISTER_PROCESSING import
- Remove unused NOTIFICATION_TIMEOUTS constant in ShareMyContactInfoView.vue
- Fix unused parameter warnings in danger() and warning() methods
- Resolve all notification-related linting errors
1 month ago
Matthew Raymer
ef15126d6d
Complete notification migration across 13 components and views
- Replace raw $notify calls with notification helper system
- Add createNotifyHelpers and TIMEOUTS constants integration
- Migrate AccountViewView, ClaimAddRawView, ContactGiftingView, ContactImportView, ContactsView, NewActivityView, ProjectViewView, RecentOffersToUserProjectsView, RecentOffersToUserView, ShareMyContactInfoView
- Update MembersList, TopMessage, UserNameDialog components
- Add notification constants for standardized messaging
- Enhance validation script to eliminate false positives
- Achieve 86% notification migration completion rate
1 month ago
Matthew Raymer
a5784cdfc1
Complete notification migration across 13 components and views
- Replace raw $notify calls with notification helper system
- Add createNotifyHelpers and TIMEOUTS constants integration
- Migrate AccountViewView, ClaimAddRawView, ContactGiftingView, ContactImportView, ContactsView, NewActivityView, ProjectViewView, RecentOffersToUserProjectsView, RecentOffersToUserView, ShareMyContactInfoView
- Update MembersList, TopMessage, UserNameDialog components
- Add notification constants for standardized messaging
- Enhance validation script to eliminate false positives
- Achieve 86% notification migration completion rate
1 month ago
Matthew Raymer
6c0142b5fd
Fix migration dates, add multi-platform testing infrastructure, and organize docs
Migration Date Corrections:
- Update all migration TODO comments to use correct date: 2025-07-06
- Add proper TypeScript type declarations for $route and $router in DeepLinkErrorView
- Fix template property references to use $route instead of route
Multi-Platform Testing Infrastructure:
- Add comprehensive multi-platform testing requirements for migrations
- Update component migration template with platform testing requirements
- Establish sign-off requirements for web, desktop, and mobile platforms
- Document expected outcomes and validation procedures
Migration Testing Organization:
- Create docs/migration-testing/ folder for testing documentation
- Move TESTING_CONTACTIMPORT.md from project root to migration-testing/
- Relocate all migration-checklist-*.md files to migration-testing/
- Add comprehensive README.md with organization guidelines
- Update file references in components and TODOs
- Establish naming conventions and quality standards
Files added:
- docs/migration-testing/README.md
- docs/migration-testing/TESTING_CONTACTIMPORT.md
- docs/migration-testing/migration-checklist-ContactImportView.md
- docs/migration-testing/migration-checklist-MembersList.md
Files modified:
- src/views/ContactImportView.vue (date correction)
- src/components/MembersList.vue (date correction, reference path update)
- src/views/DeepLinkErrorView.vue (date correction, Vue router types)
- docs/migration-templates/component-migration.md (multi-platform requirements)
Files moved:
- TESTING_CONTACTIMPORT.md → docs/migration-testing/
- docs/migration-checklist-*.md → docs/migration-testing/
This establishes comprehensive testing infrastructure for all future migrations
with proper organization and multi-platform validation requirements.
1 month ago
Matthew Raymer
2e2d858cc9
Fix migration dates, add multi-platform testing infrastructure, and organize docs
Migration Date Corrections:
- Update all migration TODO comments to use correct date: 2025-07-06
- Add proper TypeScript type declarations for $route and $router in DeepLinkErrorView
- Fix template property references to use $route instead of route
Multi-Platform Testing Infrastructure:
- Add comprehensive multi-platform testing requirements for migrations
- Update component migration template with platform testing requirements
- Establish sign-off requirements for web, desktop, and mobile platforms
- Document expected outcomes and validation procedures
Migration Testing Organization:
- Create docs/migration-testing/ folder for testing documentation
- Move TESTING_CONTACTIMPORT.md from project root to migration-testing/
- Relocate all migration-checklist-*.md files to migration-testing/
- Add comprehensive README.md with organization guidelines
- Update file references in components and TODOs
- Establish naming conventions and quality standards
Files added:
- docs/migration-testing/README.md
- docs/migration-testing/TESTING_CONTACTIMPORT.md
- docs/migration-testing/migration-checklist-ContactImportView.md
- docs/migration-testing/migration-checklist-MembersList.md
Files modified:
- src/views/ContactImportView.vue (date correction)
- src/components/MembersList.vue (date correction, reference path update)
- src/views/DeepLinkErrorView.vue (date correction, Vue router types)
- docs/migration-templates/component-migration.md (multi-platform requirements)
Files moved:
- TESTING_CONTACTIMPORT.md → docs/migration-testing/
- docs/migration-checklist-*.md → docs/migration-testing/
This establishes comprehensive testing infrastructure for all future migrations
with proper organization and multi-platform validation requirements.
1 month ago
Matthew Raymer
01bb13219f
Add comprehensive migration documentation and testing infrastructure
- Add TODO annotation to MembersList.vue requiring human testing validation
- Create migration templates for systematic component migration
- Add best practices guide for PlatformServiceMixin usage
- Create ESLint rules template for pattern enforcement
- Add validation script to track migration progress
- Document Phase 1 completion summary with current state
Migration Infrastructure:
- Component migration checklist template
- Automated validation script (validate-migration.sh)
- Best practices documentation
- ESLint rules for preventing regression
Status: MembersList.vue migration complete but requires human testing
Next: Select next component for migration when ready to continue
1 month ago
Matthew Raymer
34563c2240
Add comprehensive migration documentation and testing infrastructure
- Add TODO annotation to MembersList.vue requiring human testing validation
- Create migration templates for systematic component migration
- Add best practices guide for PlatformServiceMixin usage
- Create ESLint rules template for pattern enforcement
- Add validation script to track migration progress
- Document Phase 1 completion summary with current state
Migration Infrastructure:
- Component migration checklist template
- Automated validation script (validate-migration.sh)
- Best practices documentation
- ESLint rules for preventing regression
Status: MembersList.vue migration complete but requires human testing
Next: Select next component for migration when ready to continue
1 month ago
Matthew Raymer
2e497eaca1
Migrate MembersList.vue to PlatformServiceMixin logging patterns
- Remove legacy logConsoleAndDb import from db/index
- Replace 3 logging calls with this.$logAndConsole() mixin method
- Add CSS linting suppressions for Tailwind @apply directives
- Create migration checklist documentation
Note: Untested due to meeting component accessibility limitations
Passes lint checks and TypeScript compilation
1 month ago
Matthew Raymer
08a9fa9946
Migrate MembersList.vue to PlatformServiceMixin logging patterns
- Remove legacy logConsoleAndDb import from db/index
- Replace 3 logging calls with this.$logAndConsole() mixin method
- Add CSS linting suppressions for Tailwind @apply directives
- Create migration checklist documentation
Note: Untested due to meeting component accessibility limitations
Passes lint checks and TypeScript compilation
1 month ago
Matthew Raymer
8bbb8e83b9
refactor: Replace databaseUtil import with PlatformServiceMixin in MembersList
- Remove direct databaseUtil dependency from MembersList.vue
- Use $accountSettings() method from PlatformServiceMixin instead
- Improves code consistency and enables caching benefits
- Maintains identical functionality with enhanced error handling
1 month ago
Matthew Raymer
ec3c603894
refactor: Replace databaseUtil import with PlatformServiceMixin in MembersList
- Remove direct databaseUtil dependency from MembersList.vue
- Use $accountSettings() method from PlatformServiceMixin instead
- Improves code consistency and enables caching benefits
- Maintains identical functionality with enhanced error handling
1 month ago
Matthew Raymer
23789d4ecd
Fix JavaScript runtime errors for undefined name property access
- Add null checks to prevent "Cannot read properties of undefined (reading 'name')" errors
- Fix ProjectCard, MembersList, ProjectsView, DiscoverView, ProjectViewView components
- Add null validation in DIDView.claimDescription() and ClaimReportCertificateView.drawCanvas()
- Add missing databaseUtil import in MembersList component
- Use meaningful fallback text for undefined names ("Unnamed Project", "Unnamed Member")
- Resolves template rendering crashes when entities lack name properties
1 month ago
Matthew Raymer
91a1618f40
Fix JavaScript runtime errors for undefined name property access
- Add null checks to prevent "Cannot read properties of undefined (reading 'name')" errors
- Fix ProjectCard, MembersList, ProjectsView, DiscoverView, ProjectViewView components
- Add null validation in DIDView.claimDescription() and ClaimReportCertificateView.drawCanvas()
- Add missing databaseUtil import in MembersList component
- Use meaningful fallback text for undefined names ("Unnamed Project", "Unnamed Member")
- Resolves template rendering crashes when entities lack name properties
1 month ago
Matthew Raymer
2b0e60dfc2
feat: enhance GenericVerifiableCredential interface with explicit optional properties
- Add name, description, and agent as optional properties to GenericVerifiableCredential
- Improve type safety and IntelliSense for common claim properties
- Maintain backward compatibility with existing code
- Reduce need for type assertions when accessing claim properties
2 months ago
Matthew Raymer
d359263704
feat: enhance GenericVerifiableCredential interface with explicit optional properties
- Add name, description, and agent as optional properties to GenericVerifiableCredential
- Improve type safety and IntelliSense for common claim properties
- Maintain backward compatibility with existing code
- Reduce need for type assertions when accessing claim properties
2 months ago
Matthew Raymer
daed0a97c9
WIP: restore database migration system and improve error handling
- Restore runMigrations functionality for database schema migrations
- Remove indexedDBMigrationService.ts (was for IndexedDB to SQLite migration)
- Recreate migrationService.ts and db-sql/migration.ts for schema management
- Add proper TypeScript error handling with type guards in AccountViewView
- Fix CreateAndSubmitClaimResult property access in QuickActionBvcBeginView
- Remove LeafletMouseEvent from Vue components array (it's a type, not component)
- Add null check for UserNameDialog callback to prevent undefined assignment
- Implement extractErrorMessage helper function for consistent error handling
- Update router to remove database-migration route
The migration system now properly handles database schema evolution
across app versions, while the IndexedDB to SQLite migration service
has been removed as it was specific to that one-time migration.
2 months ago
Matthew Raymer
ebc241eba0
WIP: restore database migration system and improve error handling
- Restore runMigrations functionality for database schema migrations
- Remove indexedDBMigrationService.ts (was for IndexedDB to SQLite migration)
- Recreate migrationService.ts and db-sql/migration.ts for schema management
- Add proper TypeScript error handling with type guards in AccountViewView
- Fix CreateAndSubmitClaimResult property access in QuickActionBvcBeginView
- Remove LeafletMouseEvent from Vue components array (it's a type, not component)
- Add null check for UserNameDialog callback to prevent undefined assignment
- Implement extractErrorMessage helper function for consistent error handling
- Update router to remove database-migration route
The migration system now properly handles database schema evolution
across app versions, while the IndexedDB to SQLite migration service
has been removed as it was specific to that one-time migration.
2 months ago
Trent Larson
8d1511e38f
convert all remaining DB writes & reads to SQL (with successful registration & claim)
3 months ago
Trent Larson
8092d1c576
convert all remaining DB writes & reads to SQL (with successful registration & claim)
3 months ago
Trent Larson
7de4125eb7
add SQL DB access to everywhere we are using the DB, up to the "C" files
3 months ago
Trent Larson
3f691ef880
add SQL DB access to everywhere we are using the DB, up to the "C" files
3 months ago
Trent Larson
41365fab8f
add projectLink to onboarding meeting, plus enhancements to setup usability
3 months ago
Trent Larson
7517ac583d
add projectLink to onboarding meeting, plus enhancements to setup usability
3 months ago
Matthew Raymer
c9536dd643
refactor: Replace console logging with logger utility
- Add logger import across multiple view components
- Replace console.error/warn/log with logger methods
- Update error handling to use structured logging
- Improve type safety for error objects
- Add crypto-browserify polyfill for browser environment
The changes improve logging by:
1. Using consistent logging interface
2. Adding structured error logging
3. Improving error type safety
4. Centralizing logging configuration
5. Fixing browser compatibility issues
Affected files:
- Multiple view components
- vite.config.ts
- Build configuration
5 months ago
Matthew Raymer
e0aded04b4
refactor: Replace console logging with logger utility
- Add logger import across multiple view components
- Replace console.error/warn/log with logger methods
- Update error handling to use structured logging
- Improve type safety for error objects
- Add crypto-browserify polyfill for browser environment
The changes improve logging by:
1. Using consistent logging interface
2. Adding structured error logging
3. Improving error type safety
4. Centralizing logging configuration
5. Fixing browser compatibility issues
Affected files:
- Multiple view components
- vite.config.ts
- Build configuration
5 months ago
Matthew Raymer
3dbb836ae5
style: reorder v-model and v-bind directives
Changes:
- Move v-model directives before other attributes
- Move v-bind directives before event handlers
- Reorder attributes for better readability
- Fix template attribute ordering across components
- Improve eslint rules
- add default vite config for testing (handles nostr error too)
This follows Vue.js style guide recommendations for attribute
ordering and improves template consistency.
6 months ago
Matthew Raymer
3b4f4dc125
style: reorder v-model and v-bind directives
Changes:
- Move v-model directives before other attributes
- Move v-bind directives before event handlers
- Reorder attributes for better readability
- Fix template attribute ordering across components
- Improve eslint rules
- add default vite config for testing (handles nostr error too)
This follows Vue.js style guide recommendations for attribute
ordering and improves template consistency.
6 months ago
Matthew Raymer
79ef59c5a9
refactor: migrate interfaces to dedicated directory
Reorganizes TypeScript interfaces into a modular structure:
- Create dedicated interfaces directory with specialized files
- Split interfaces by domain (claims, common, limits, records, user)
- Update imports in endorserServer.ts to use new interface locations
- Replace 'any' types with 'unknown' for better type safety
- Add proper type imports and exports
This improves code organization and maintainability by:
- Centralizing interface definitions
- Reducing file size of endorserServer.ts
- Making interface relationships more explicit
- Improving type safety with stricter types
6 months ago
Matthew Raymer
c708716675
refactor: migrate interfaces to dedicated directory
Reorganizes TypeScript interfaces into a modular structure:
- Create dedicated interfaces directory with specialized files
- Split interfaces by domain (claims, common, limits, records, user)
- Update imports in endorserServer.ts to use new interface locations
- Replace 'any' types with 'unknown' for better type safety
- Add proper type imports and exports
This improves code organization and maintainability by:
- Centralizing interface definitions
- Reducing file size of endorserServer.ts
- Making interface relationships more explicit
- Improving type safety with stricter types
6 months ago
Trent Larson
9a6b2fcf0d
for meeting invitees, create their ID and allow them to set a name
6 months ago
Trent Larson
09b43226f9
for meeting invitees, create their ID and allow them to set a name
6 months ago
Trent Larson
b8ca2a03fe
add 'isRegistered' flag to encrypted contents in an onboarding meeting
6 months ago
Trent Larson
c9c60582cc
add 'isRegistered' flag to encrypted contents in an onboarding meeting
6 months ago
Trent Larson
287a440b3e
show a better message when admission to an onboarding meeting succeeds but registration fails
6 months ago
Trent Larson
1a38baf59d
show a better message when admission to an onboarding meeting succeeds but registration fails
6 months ago
Matthew Raymer
d9085ced6d
(chore): cleaning up formatting and relative references
6 months ago
Matthew Raymer
15783cdbe6
(chore): cleaning up formatting and relative references
6 months ago
Trent Larson
9411096ab7
prompt organizer about adding a contact if not in list, and other sanity checks
6 months ago
Trent Larson
5b29d97173
prompt organizer about adding a contact if not in list, and other sanity checks
6 months ago
Trent Larson
fe71c3f754
make member view available to onboard meeting organizer and reorganize buttons
6 months ago
Trent Larson
bb5913fef4
make member view available to onboard meeting organizer and reorganize buttons
6 months ago