Commit Graph
100 Commits
Author SHA1 Message Date
Matthew Raymer cf854d5054 refactor: clean up $getActiveIdentity method and fix null handling
- Remove excessive debug logging statements
- Fix critical bug: cast activeDid as string | null instead of string
- Refactor to use early return pattern, reducing nesting from 4 to 2-3 levels
- Eliminate redundant logic and improve code readability
- Maintain all original functionality while simplifying flow
- Fix null activeDid case that was breaking app initialization
2025-09-11 06:14:07 +00:00
Matthew Raymer 8eb4ad5c74 refactor: Remove defunct $needsActiveIdentitySelection method and fix activeDid consistency
## Changes Made

### Code Cleanup
- Remove unused $needsActiveIdentitySelection() method (36 lines)
- Remove method signature from IPlatformServiceMixin interface
- Remove method signature from Vue module declaration

### Database Consistency Fix
- Change activeDid clearing from empty string ('') to NULL for consistency
- Ensures proper foreign key constraint compatibility
- Maintains API compatibility by still returning empty string to components

## Impact
- Reduces codebase complexity by removing unused functionality
- Improves database integrity with consistent NULL usage
- No breaking changes to component APIs
- Migration and auto-selection now handle all identity management

## Files Changed
- src/utils/PlatformServiceMixin.ts: -42 lines, +1 line
2025-09-11 05:37:40 +00:00
Matthew Raymer eb77547ba1 chore: a couple missed files 2025-09-11 05:07:52 +00:00
Matthew Raymer 616bef655a fix: Resolve database migration issues and consolidate 003 migrations
- Fix $getActiveIdentity() logic flow preventing false "empty table" warnings
- Implement auto-selection of first account when activeDid is null after migration
- Consolidate 003 and 003b migrations into single 003 migration
- Re-introduce foreign key constraint for activeDid referential integrity
- Add comprehensive debug logging for migration troubleshooting
- Remove 003b validation logic and update migration name mapping

Fixes migration from master to active_did_redux branch and ensures system
always has valid activeDid for proper functionality.
2025-09-11 05:07:23 +00:00
Matthew Raymer 6da9e14b8a feat: complete ActiveDid migration for remaining Vue components
Replace `settings.activeDid` with `$getActiveIdentity()` API call across 8 components.
All Vue components now use the new active_identity table pattern.

Components migrated:
- TestView.vue: Update logging to use new pattern consistently
- ShareMyContactInfoView.vue: Refactor retrieveAccount method signature
- UserNameDialog.vue: Update user settings save logic
- SeedBackupView.vue: Update both created() and revealSeed() methods
- HelpView.vue: Update onboarding reset functionality
- ImportAccountView.vue: Update post-import settings check
- NewEditAccountView.vue: Update account save logic
- QuickActionBvcBeginView.vue: Update BVC recording functionality

✅ TypeScript compilation passes
✅ Linting standards met
✅ Functionality preserved across all components

Part of ActiveDid migration following "One Component + Test Pattern".
All Vue components now use centralized active_identity table.
2025-09-11 02:01:39 +00:00
Matthew Raymer e856ace61f feat: migrate DiscoverView.vue to use new ActiveDid pattern
Replace `settings.activeDid` with `$getActiveIdentity()` API call.
Updates discover search functionality to use active_identity table.

- Add `const activeIdentity = await this.$getActiveIdentity();`
- Update activeDid assignment in mounted() lifecycle
- Maintain existing search and discovery functionality

✅ TypeScript compilation passes
✅ Linting standards met
✅ Functionality preserved

Part of ActiveDid migration following "One Component + Test Pattern".
2025-09-11 01:43:10 +00:00
Matthew Raymer 5da1591ad8 Merge branch 'active_did_redux' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into active_did_redux 2025-09-10 13:21:51 +00:00
Matthew Raymer b06e2b46f6 feat: migrate TopMessage.vue to use new ActiveDid pattern
Replace `settings.activeDid` with `$getActiveIdentity()` API call.
Updates test/prod server warning logic to use active_identity table.

- Add `const activeIdentity = await this.$getActiveIdentity();`
- Update didPrefix extraction for both warning conditions
- Maintain existing warning functionality

✅ TypeScript compilation passes
✅ Linting standards met
✅ Functionality preserved

Part of ActiveDid migration following "One Component + Test Pattern".
2025-09-10 13:21:34 +00:00
Matthew Raymer ccb1f29df4 fix: improve type safety and fix Playwright test dialog handling
**Type Safety Improvements:**
- Replace `unknown[]` with proper `SqlValue[]` type in database query methods
- Add `SqlValue` import to PlatformServiceMixin.ts for better type definitions
- Update interface definitions for `$dbGetOneRow` and `$one` methods
- Fix database row mapping to use `Array<SqlValue>` instead of `unknown[]`

**Test Reliability Fix:**
- Add backup seed modal handling to 60-new-activity.spec.ts
- Follow established dialog handling pattern from 00-noid-tests.spec.ts
- Use `waitForFunction` to detect backup seed modal appearance
- Gracefully handle modal dismissal with "No, Remind me Later" button
- Add error handling for cases where backup modal doesn't appear

**Files Changed:**
- src/utils/PlatformServiceMixin.ts: Enhanced type safety for database operations
- test-playwright/60-new-activity.spec.ts: Fixed dialog interception causing test failures

**Impact:**
- Eliminates TypeScript linting errors for database query types
- Resolves Playwright test timeout caused by backup seed modal blocking clicks
- Improves test reliability by following established dialog handling patterns
- Maintains backward compatibility while enhancing type safety

**Testing:**
- TypeScript compilation passes without errors
- Linting checks pass with improved type definitions
- Playwright test now handles backup seed modal properly
2025-09-08 12:03:15 +00:00
Matthew Raymer f55ef85981 fix: from merge 2025-09-08 11:38:51 +00:00
Matthew Raymer d9569922eb docs: merge notification system docs into single Native-First guide
- Consolidate 5 notification-system-* files into doc/notification-system.md
- Add web-push cleanup guide and Start-on-Login glossary entry
- Configure markdownlint for consistent formatting
- Remove web-push references, focus on native OS scheduling

Reduces maintenance overhead while preserving all essential information
in a single, well-formatted reference document.
2025-09-08 11:36:59 +00:00
Matthew Raymer 4a22a35b3e feat(activeDid): implement migration to separate active_identity table
- Add migration 003 with data migration logic to prevent data loss
- Create dedicated ActiveIdentity interface in separate file for better architecture
- Implement $getActiveIdentity method in PlatformServiceMixin
- Enhance $updateActiveDid with dual-write pattern for backward compatibility
- Maintain separation of concerns between settings and active identity types
- Follow project architectural pattern with dedicated type definition files

The migration creates active_identity table alongside existing settings,
automatically copying existing activeDid data to prevent user data loss.
Dual-write pattern ensures backward compatibility during transition.

Migration includes:
- Schema creation with proper constraints and indexes
- Automatic data transfer from settings.activeDid to active_identity.activeDid
- Validation to ensure data exists before migration
- Atomic operation: schema and data migration happen together
2025-08-29 11:48:22 +00:00
Matthew Raymer 95b0cbca78 docs(activeDid): add critical data migration logic to prevent data loss
- Add data migration SQL to migration 003 for existing databases
- Automatically copy activeDid from settings table to active_identity table
- Prevent users from losing active identity selection during migration
- Include validation to ensure data exists before migration
- Maintain atomic operation: schema and data migration happen together
- Update risk assessment to reflect data loss prevention
- Add data migration strategy documentation

The migration now safely handles both new and existing databases,
ensuring no user data is lost during the activeDid table separation.
2025-08-29 11:06:40 +00:00
Matthew Raymer 1227cdee76 docs(activeDid): streamline migration plan for existing migration service
- Remove unnecessary complexity and focus on essential changes only
- Integrate with existing IndexedDB migration service (indexedDBMigrationService.ts)
- Maintain backward compatibility with existing migration paths
- Focus on core requirements: database schema, API methods, type definitions
- Eliminate duplicate migration logic already handled by existing service
- Preserve MASTER_SETTINGS_KEY = "1" for legacy support
- Add clear rollback strategy and integration points

The plan now focuses only on necessary changes while maintaining full
compatibility with existing systems and migration infrastructure.
2025-08-29 10:51:40 +00:00
Matthew Raymer acbc276ef6 docs: enhance activeDid migration plan with implementation details
- Add master settings functions implementation strategy
- Correct IdentitySection.vue analysis (prop-based, no changes required)
- Simplify ContactAmountsView.vue (phased-out method, separate refactoring)
- Add new getMasterSettings() function with active_identity integration
- Include helper methods _getSettingsWithoutActiveDid() and _getActiveIdentity()
- Enhance evidence section with master settings architecture support
- Update risk assessment for phased-out methods
- Clean up migration timeline formatting

This commit focuses the migration plan on components requiring immediate
active_identity table changes, separating concerns from broader API refactoring.
2025-08-28 12:32:39 +00:00
Matthew Raymer 649786ae01 chore: a bit more planning 2025-08-27 12:52:21 +00:00
Matthew Raymer 4aea8d9ed3 linting 2025-08-27 12:36:15 +00:00
Matthew Raymer 0079ca252d chore: add plan 2025-08-27 12:35:37 +00:00
Matthew Raymer b834596ba6 feat(meta-rules): create change evaluation and breaking change detection rule
- Create comprehensive meta-rule for evaluating changes between branches
- Implement systematic breaking change detection for API contracts, data structures, and behavior
- Add risk assessment framework with LOW/MEDIUM/HIGH/CRITICAL classification
- Include change pattern recognition and dependency impact assessment
- Provide structured output format for change evaluation reports
- Apply markdown core standards for consistent formatting and readability

Problem: Need systematic approach to catch problematic model behavior by analyzing
changes before they cause issues.

Solution: Create meta-rule that evaluates changes between branches, detects
breaking changes, assesses risk levels, and provides actionable recommendations.

Files changed:
- .cursor/rules/meta_change_evaluation.mdc: New meta-rule with comprehensive
  change evaluation capabilities

Testing: Rule provides structured approach for analyzing changes, detecting
breaking changes, and generating risk assessment reports.
2025-08-25 13:22:31 +00:00
Matthew Raymer 77a4c60656 fix(ProfileService): revert to working endpoint for profile loading
- Revert ProfileService from broken /api/partner/userProfile endpoint to working /api/partner/userProfileForIssuer/${did}
- Fix location data display by restoring single profile object response parsing
- Remove complex array handling logic that was unnecessary for current user profiles
- Restore original working functionality that was broken by recent refactoring

Problem: Recent ProfileService creation changed endpoint from working userProfileForIssuer/${did}
to broken userProfile (list endpoint), causing location data to not display properly.

Solution: Revert to original working endpoint and response parsing logic that returns
single profile objects with location data instead of arrays of all profiles.

Files changed:
- src/services/ProfileService.ts: Restore working endpoint and simplify response parsing

Testing: Profile loading now works correctly for both existing and new profiles,
location data is properly extracted and displayed, maps render correctly.
2025-08-25 13:03:06 +00:00
Matthew Raymer a11443dc3a feat(logging): enhance diagnostic logging for API operations
- Add unique request IDs for claim submission tracking
- Add unique request IDs for plan loading tracking
- Include comprehensive request context (endpoint, server, timestamp)
- Enhance error logging with specific error codes and messages
- Improve debugging capabilities for server operations

Testing: TypeScript compilation passes, no linting errors
Impact: Better debugging and monitoring of API operations
2025-08-25 11:51:22 +00:00
Matthew Raymer 7f7680f4a6 fix(config): remove forced API server overrides
- Remove forced production server override in PlatformServiceMixin.()
- Remove forced production server override in PlatformServiceMixin.()
- Remove forced production server override in HomeView.ensureCorrectApiServer()
- Fix type error in HomeView.latLongInAnySearchBox coordinates

Testing: TypeScript compilation passes, no linting errors
Impact: Users can now switch API servers freely without forced overrides
2025-08-25 11:51:12 +00:00
Matthew Raymer 271a45afa3 fix(database): resolve ambiguous settings query logic
- Fix PlatformServiceMixin.() ambiguous OR condition
- Use specific queries for master settings (id) vs account settings (accountDid)
- Resolve settings priority conflicts affecting server switching
- Maintain backward compatibility with existing settings structure

Testing: TypeScript compilation passes, no linting errors
Impact: Settings now load correctly without query ambiguity
2025-08-25 11:50:55 +00:00
Matthew Raymer 9967fe97e6 docs: update BUILDING.md for cursor rules refactoring and build system updates 2025-08-23 13:07:01 +00:00
Matthew Raymer a224aced85 refactor(cursor-rules): restructure rules architecture with meta-rule system
- Reorganize cursor rules into logical domain-based directories
- Implement meta-rule system for workflow-specific rule bundling
- Move core rules to dedicated /core directory
- Consolidate development rules under /development namespace
- Add architectural patterns and implementation examples
- Create workflow-specific meta-rules for common development tasks
- Remove deprecated standalone rule files
- Update package dependencies for new rule structure

BREAKING CHANGE: Cursor rules file structure has been reorganized
Files moved from root rules directory to domain-specific subdirectories
2025-08-23 13:04:09 +00:00
Matthew Raymer cd327b0b91 pre-commit(husky): add lint-fix to checks 2025-08-21 12:11:46 +00:00
Matthew Raymer 34cae85d45 chore: prep for Husky integration 2025-08-21 12:05:10 +00:00
Matthew Raymer d7733e4c41 feat: add markdown automation setup script
- Create setup script for markdown pre-commit hooks
- Automate installation of markdownlint and related tools
- Provide easy setup for markdown compliance system
2025-08-20 13:02:18 +00:00
Matthew Raymer 51b8a0b0a8 refactor: complete migration from GitHub to Gitea
- Remove all GitHub-specific workflows and configurations
- Update .dockerignore to exclude .github directory
- Clean up GitHub Actions workflows and branch protection rules
- Complete transition to Gitea Actions and Husky hooks
2025-08-20 13:02:10 +00:00
Matthew Raymer 2d17bfd3b4 docs: comprehensive documentation updates and modernization
- Update BUILDING.md with current build system information
- Modernize various README files across the project
- Update CHANGELOG.md with recent changes
- Improve documentation consistency and formatting
- Update platform-specific documentation (iOS, Electron, Docker)
- Enhance test documentation and build guides
2025-08-20 13:02:01 +00:00
Matthew Raymer 963ff9234f feat: implement comprehensive Build Architecture Guard system
- Add Husky Git hooks for pre-commit and pre-push validation
- Create guard script for BUILDING.md update enforcement
- Implement PR template with L1/L2/L3 change classification
- Add markdown validation and auto-fix scripts
- Create comprehensive documentation and MDC rules
- Ensure zero-disruption deployment with opt-in activation
2025-08-20 13:01:50 +00:00
Matthew Raymer 80aecbcbbc feat: add Build Architecture Guard MDC directive
- Create comprehensive guard rules for build system protection
- Define protected file patterns and validation requirements
- Include risk matrix and required validation checklists
- Add emergency procedures and rollback playbooks
2025-08-20 13:00:37 +00:00
Matthew Raymer 8336d9d6bd feat: enhance markdown rules for AI generation compliance
- Add AI Generation Guidelines with alwaysApply: true
- Extend globs to include .mdc files
- Ensure AI agents follow rules during content creation
- Improve markdown automation system integration
2025-08-20 13:00:26 +00:00
Matthew Raymer ae0601281b feat: add markdown validation and auto-fix scripts
- Create validate-markdown.sh for compliance checking
- Add fix-markdown.sh for automatic formatting fixes
- Exclude node_modules from validation scope
- Integrate with npm scripts for easy usage
2025-08-20 13:00:16 +00:00
Matthew Raymer 7b31ea0143 feat: add Build Architecture Guard PR template
- Create structured template for build-related changes
- Include L1/L2/L3 change classification
- Require BUILDING.md updates for sensitive file changes
- Add artifact SHA256 validation for L3 changes
2025-08-20 13:00:06 +00:00
Matthew Raymer d5786e5131 docs: add comprehensive Build Architecture Guard documentation
- Update main README with guard system overview
- Create detailed guard implementation guide
- Add PR template documentation and usage examples
- Document opt-in hook activation process
2025-08-20 12:59:57 +00:00
Matthew Raymer d663c52f2d feat: implement Build Architecture Guard with Husky hooks
- Add pre-commit and pre-push hooks for build file protection
- Create comprehensive guard script for BUILDING.md validation
- Add npm scripts for guard setup and testing
- Integrate with existing build system
2025-08-20 12:59:48 +00:00
Matthew Raymer 1666e77aa5 docs(rules): apply markdown standards and streamline rulesets
- Apply markdown.mdc formatting to all ruleset files (80-char line length, proper spacing)
- Update timesafari.mdc to reflect completed migration (remove triple migration pattern references)
- Clean up corrupted logging_standards.mdc and restore proper content
- Streamline architectural_decision_record.mdc for better readability
- Update all file dates to 2025-08-19 for consistency
- Add proper document headers and metadata to all ruleset files
- Remove duplicate content and improve file organization
- Maintain alwaysApply settings and glob patterns appropriately

Files affected: 15 ruleset files across app/, database/, development/, features/, workflow/ directories
2025-08-19 13:14:25 +00:00
Matthew Raymer cdf5fbdfc6 chore: fixing formatting 2025-08-18 12:16:07 +00:00
Matthew Raymer 37559e1bad docs(typescript): add comprehensive type safety guidelines with Vue exceptions
Create TypeScript type safety guidelines enforcing strict typing across
TimeSafari codebase. Includes special cases for Vue objects, dynamic
component access, and framework integration where any types are necessary.

- Enforce no-any rule with documented exceptions
- Add Vue-specific edge cases (component instances, template refs, events)
- Include third-party library and platform API handling
- Provide migration checklists and code review guidelines
- Document error handling patterns and anti-patterns
- Add examples from existing codebase
2025-08-16 14:50:14 +00:00
Matthew Raymer 379056aae1 feat(typescript): resolve Priority 2 type safety issues across components
- Eliminate all remaining any types in Priority 2 components (activity, gifts, usage limits, QR scanning, discovery, meetings)
- Implement proper TypeScript types using existing interfaces (GiveActionClaim, EndorserRateLimits, ImageRateLimits)
- Replace any types with unknown + proper type guards for error handling
- Fix type assertions for external library integrations (QR scanning, mapping)
- Maintain backward compatibility while improving type safety

Resolves 7 Priority 2 type safety warnings, achieving 100% type safety for critical user-facing functionality.
2025-08-16 14:13:36 +00:00
Matthew Raymer ef4f845f74 feat(ci): enforce type safety with ESLint errors and pre-commit validation
- Change @typescript-eslint/no-explicit-any from warn to error to block builds with any types
- Add type-safety-check script for automated pre-commit validation
- Implement comprehensive pre-commit checks including ESLint, TypeScript compilation, and any type scanning
- Include database migration status verification in pre-commit process
- Provide colored output and clear guidance for type safety issues

This ensures type safety is enforced at the CI level and prevents regression of any type usage.
2025-08-16 13:52:44 +00:00
Matthew Raymer bc618bb13b feat(typescript): implement type-safe database error handling and eliminate any types
- Add comprehensive database error interfaces (DatabaseConstraintError, DatabaseStorageError, DexieError)
- Implement type guards for database error handling (isDatabaseError, isDatabaseConstraintError, etc.)
- Replace any types with proper TypeScript types in ContactsView, ProjectsView, and IdentitySwitcherView
- Implement type-safe error handling patterns using new type guards
- Fix dynamic property access with keyof operator for type safety

Resolves Priority 1 type safety issues in database operations, project management, and identity switching.
2025-08-16 13:51:01 +00:00
Matthew Raymer 404f23c118 feat(cursor): add research diagnostic workflow and format base context rules
- Add comprehensive R&D workflow rules for pre-implementation research and defect investigation
- Format base context rules for better readability and line length compliance
- Include evidence-first investigation templates and collaboration hooks
2025-08-16 12:40:19 +00:00
Matthew Raymer 79593f12b4 fix(types): resolve notification system type safety issues
- Replace $notify any types with proper NotifyFunction interface
- Import NotifyFunction type from utils/notify
- Eliminate 5 TypeScript any type warnings
- Improve type safety for notification system across components

Reduces lint warnings from 25 to 20 by addressing high-impact,
low-effort notification type issues. Maintains full functionality
while improving code quality and IntelliSense support.
2025-08-14 11:05:34 +00:00
Matthew Raymer adfaef7947 fix(lint): resolve low and medium impact warnings
- Remove console statements and replace with proper logging
- Fix line length violations in comments
- Maintain functionality while improving code quality

Reduces lint warnings from 30 to 25 by addressing:
- 3 console statement violations
- 2 line length violations
2025-08-13 10:53:10 +00:00
Matthew Raymer 974d33b322 Document environment variable precedence and API configuration scheme
Add comprehensive documentation explaining the order of precedence for
environment variables in TimeSafari project. Covers shell script overrides,
platform-specific configurations, .env file usage, and API alignment between
claim and partner APIs. Includes troubleshooting guide and best practices
for maintaining consistent environment configuration across development,
test, and production environments.
2025-08-05 11:51:48 +00:00
Matthew Raymer 0bd0e7c332 Fix contact methods JSON string/array duality in PlatformServiceMixin
- Add ContactMaybeWithJsonStrings type usage for internal database operations
- Implement $normalizeContacts() method to handle both JSON string and array formats
- Update $contacts(), $getContact(), and $getAllContacts() to use normalization
- Fix $updateContact() to properly convert contactMethods arrays to JSON strings
- Add validation to filter out malformed contact method objects
- Update ContactEditView to handle malformed data gracefully

Resolves issue where contactMethods could be stored as JSON strings in database
but expected as arrays in components, causing "Cannot create property 'label' on number '0'" errors.
2025-08-04 04:41:54 +00:00
Matthew Raymer aed16ebe94 Remove PROD_SHARE_DOMAIN constant and unify domain configuration
- Remove hard-coded PROD_SHARE_DOMAIN from src/constants/app.ts
- Update all sharing functionality to use environment-specific APP_SERVER
- Rewrite domain configuration documentation to reflect unified approach
- Simplify domain management with single APP_SERVER constant
- Update README.md examples to use APP_SERVER for all URL generation

This change eliminates the complexity of separate constants for different
URL types and provides consistent environment-specific configuration for
all functionality including sharing.
2025-08-04 03:52:21 +00:00
Matthew Raymer 371cf763c8 Merge branch 'build-improvement' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into build-improvement 2025-08-02 08:19:52 +00:00
Matthew Raymer 3d38cb89a9 Fix HomeView registration status by using $accountSettings() instead of $settings()
- Change HomeView to use $accountSettings() method which returns correct isRegistered value
- Remove isRegistered: false default that was overriding database values
- Fix settings override issue where empty defaults were overriding activeDid
- Remove excessive settings tracing logs to clean up console output
- Ensure consistent registration status between HomeView and AccountViewView

The HomeView was incorrectly showing users as unregistered while AccountViewView showed them as registered due to using $settings() (returns null) instead of $accountSettings() (returns correct database value).
2025-08-02 08:19:41 +00:00
Matthew Raymer a63ccae9b1 Merge branch 'build-improvement' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into build-improvement 2025-08-01 05:47:53 +00:00
Matthew Raymer c30b94dcc7 Integrate TypeScript type checking into build process with conditional execution
- Add type checking to build scripts for production/test builds only
- Fix TypeScript errors in migration service, router, and platform services
- Add electronAPI type declarations for Electron platform
- Remove type checking from development builds for faster hot reload
- Update tsconfig.node.json to resolve configuration conflicts
- Ensure type safety for production while maintaining fast development workflow
2025-08-01 05:47:43 +00:00
Matthew Raymer 8b2c6714ec Merge branch 'build-improvement' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into build-improvement 2025-07-31 12:36:30 +00:00
Matthew Raymer 9cd4551bed docs: add comprehensive GiftedDialog architecture overview
Add detailed analysis of GiftedDialog component architecture including:
- DRY and SOLID principles compliance assessment
- Cognitive load analysis with before/after comparisons
- Architectural complexity remediation plan
- Phased implementation strategy (cognitive load → composable architecture)
- Component hierarchy and dependency analysis
- Performance and security considerations

The document provides actionable recommendations for reducing complexity
while maintaining functionality, with specific code examples and metrics.
2025-07-31 12:36:04 +00:00
Matthew Raymer 2a32903326 chore: more cursor rules updates 2025-07-31 09:22:32 +00:00
Matthew Raymer 1180ebd4ca chore: update cursor rulesets 2025-07-31 06:31:14 +00:00
Matthew Raymer 6007bc34e4 refactor: centralize QR navigation logic and add export prompt after contact addition
- Create QRNavigationService to handle platform-specific QR routing
- Remove direct Capacitor imports from ContactsView, ProjectsView, HelpView
- Replace duplicated QR routing logic with centralized service calls
- Update HelpView template to use platform service methods (isCapacitor, capabilities)
- Add export data prompt after successfully adding a contact
- Add NOTIFY_EXPORT_DATA_PROMPT notification constant
- Implement exportContactData() method with platform service integration
- Fix TypeScript compatibility for Vue Router route parameters
- Maintain consistent QR navigation behavior across all views

Eliminates code duplication and improves platform abstraction by using
PlatformService instead of direct Capacitor references. Enhances user
experience with automatic export prompts for data backup.
2025-07-30 12:47:55 +00:00
Matthew Raymer ca828d45a6 cleanup: Remove unused duplicate type definition files
- Remove src/types/global.d.ts and src/types/modules.d.ts (unused duplicates)
- Keep essential type files: sql.js.d.ts and absurd-sql.d.ts
- Maintain all existing type definitions and functionality

The removed files contained broken import paths and duplicate type declarations
that were never actually used by the codebase. All necessary type support for
@jlongster/sql.js and absurd-sql modules is preserved in the remaining files.

Files removed:
- src/types/global.d.ts (unused, had broken imports)
- src/types/modules.d.ts (unused, had broken imports)

Files kept:
- src/types/sql.js.d.ts (comprehensive @jlongster/sql.js types)
- src/types/absurd-sql.d.ts (comprehensive absurd-sql types)
- src/interfaces/database.ts (core database types)
2025-07-30 10:05:28 +00:00
Matthew Raymer 9067bec54a fix: Convert searchBoxes arrays to JSON strings in $saveSettings and $updateSettings
- Add _convertSettingsForStorage helper method to handle Settings → SettingsWithJsonStrings conversion
- Fix $saveSettings and $saveUserSettings to properly convert searchBoxes arrays to JSON strings before database storage
- Update SearchAreaView.vue to use array format instead of manual JSON.stringify conversion
- Add comprehensive test UI in PlatformServiceMixinTest.vue with visual feedback and clear demonstration of conversion process
- Document migration strategy for consolidating $updateSettings into $saveSettings to reduce code duplication
- Add deprecation notices to $updateSettings method with clear migration guidance

The fix ensures that searchBoxes arrays are properly converted to JSON strings before database storage, preventing data corruption and maintaining consistency with the SettingsWithJsonStrings type definition. The enhanced test interface provides clear visualization of the conversion process and database storage format.

Migration Strategy:
- $saveSettings: ✅ KEEP (will be primary method after consolidation)
- $updateSettings: ⚠️ DEPRECATED (will be removed in favor of $saveSettings)
- Future: Consolidate to single $saveSettings(changes, did?) method

Files changed:
- src/utils/PlatformServiceMixin.ts: Add conversion helper, fix save methods, add deprecation notices
- src/views/SearchAreaView.vue: Remove manual JSON conversion
- src/test/PlatformServiceMixinTest.vue: Add comprehensive test UI with highlighting
- docs/migration-templates/updateSettings-consolidation-plan.md: Document future consolidation strategy
2025-07-30 09:48:52 +00:00
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.
2025-07-30 05:50:39 +00:00
Matthew Raymer 9136a9c622 Merge branch 'build-improvement' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into build-improvement 2025-07-30 04:32:45 +00:00
Matthew Raymer eb325871fa chore: add coverage folder to gitignore 2025-07-30 04:31:56 +00:00
Matthew Raymer e789e9dfb2 Configure API server endpoints for iOS/Android development builds
Updated scripts/common.sh to set appropriate API server endpoints based on build mode:
- Development: localhost:3000 for Endorser API, production for Image/Partner APIs
- Test: test-api.endorser.ch for Endorser API, production for Image/Partner APIs
- Production: All production endpoints

This ensures mobile builds use correct API endpoints for each environment
while keeping Image and Partner APIs on production servers for dev/test.
2025-07-28 07:40:17 +00:00
Matthew Raymer e04c9f3626 WIP: improve font caching and partial fix on test 2025-07-27 01:56:42 +00:00
Matthew Raymer c628c78565 chore: clean up console logs 2025-07-26 06:13:47 +00:00
Matthew Raymer 2576b51e2f doc: Updates to TESTING tricks 2025-07-24 13:06:22 +00:00
Matthew Raymer 97cb5a0ac6 Enhance handleContactVisibility to return both title and message
Modified handleContactVisibility method to return structured notification data
with both title and message properties instead of just a string message.
Updated addContact method to use notify.toast() with custom title and message
from notification constants, providing more specific user feedback when
contacts are added with or without visibility settings.
2025-07-21 12:25:29 +00:00
Matthew Raymer fd7d7f706c Enhance handleContactVisibility to return both title and message
Modified handleContactVisibility method to return structured notification data
with both title and message properties instead of just a string message.
Updated addContact method to use notify.toast() with custom title and message
from notification constants, providing more specific user feedback when
contacts are added with or without visibility settings.
2025-07-21 12:25:29 +00:00
Matthew Raymer 0ac36a2b1e feat: apply web-serve-fix polyfill improvements to build-improvement
Apply targeted improvements from web-serve-fix branch to resolve worker
context issues with absurd-sql and SQL worker:

- Add minimal worker-compatible polyfills to registerSQLWorker.js
  * window object polyfill for SQL.js compatibility
  * crypto.getRandomValues and crypto.subtle polyfills
  * Avoid setting read-only WorkerGlobalScope properties

- Add crypto polyfill to AbsurdSqlDatabaseService.ts
  * Ensure crypto.getRandomValues available in worker context
  * Maintain existing URL-based WebAssembly loading strategy
  * Keep improved platform check for web/development modes

Resolves "window is not defined" and "crypto is not defined" errors
in Web Worker context while maintaining build stability and security.

Files changed: 2
Lines added: 49
2025-07-18 11:41:26 +00:00
Matthew Raymer e71d7d1b06 feat: apply web-serve-fix polyfill improvements to build-improvement
Apply targeted improvements from web-serve-fix branch to resolve worker
context issues with absurd-sql and SQL worker:

- Add minimal worker-compatible polyfills to registerSQLWorker.js
  * window object polyfill for SQL.js compatibility
  * crypto.getRandomValues and crypto.subtle polyfills
  * Avoid setting read-only WorkerGlobalScope properties

- Add crypto polyfill to AbsurdSqlDatabaseService.ts
  * Ensure crypto.getRandomValues available in worker context
  * Maintain existing URL-based WebAssembly loading strategy
  * Keep improved platform check for web/development modes

Resolves "window is not defined" and "crypto is not defined" errors
in Web Worker context while maintaining build stability and security.

Files changed: 2
Lines added: 49
2025-07-18 11:41:26 +00:00
Matthew Raymer cc0ae015bc feat: Complete PlatformServiceMixin migration and enhance tooling
- Update migration assessment: All database operations now migrated (60/60 components)
- Enhance validate-migration.sh: Improved pattern detection and reporting
- Upgrade format-markdown.sh: Add parallel processing and CI-friendly output
- Clean up legacy logging patterns in ContactImportView.vue
- Remove unused imports and optimize PlatformServiceMixin
- Streamline deep links service and utility functions

Migration Status: 100% database operations complete, only 4 logging cleanup files remain
2025-07-16 12:28:17 +00:00
Matthew Raymer 5c7f58b5c8 feat: Complete PlatformServiceMixin migration and enhance tooling
- Update migration assessment: All database operations now migrated (60/60 components)
- Enhance validate-migration.sh: Improved pattern detection and reporting
- Upgrade format-markdown.sh: Add parallel processing and CI-friendly output
- Clean up legacy logging patterns in ContactImportView.vue
- Remove unused imports and optimize PlatformServiceMixin
- Streamline deep links service and utility functions

Migration Status: 100% database operations complete, only 4 logging cleanup files remain
2025-07-16 12:28:17 +00:00
Matthew Raymer 5f2ab5f913 Complete ContactsView Enhanced Triple Migration Pattern (3 minutes)
- Remove legacy logConsoleAndDb import and 8 usage calls
- Replace with PlatformServiceMixin () method
- Component now technically compliant with zero legacy patterns
- Maintains existing notification helpers and database operations
- Performance: 80% faster than estimated (3 min vs 15-20 min)
2025-07-16 11:27:41 +00:00
Matthew Raymer 06972b9674 Complete ContactsView Enhanced Triple Migration Pattern (3 minutes)
- Remove legacy logConsoleAndDb import and 8 usage calls
- Replace with PlatformServiceMixin () method
- Component now technically compliant with zero legacy patterns
- Maintains existing notification helpers and database operations
- Performance: 80% faster than estimated (3 min vs 15-20 min)
2025-07-16 11:27:41 +00:00
Matthew Raymer 6ef4e314ec Add comprehensive build scripts and Vite config documentation to BUILDING.md
- Add Appendix A: Build Scripts Reference with detailed documentation for all build scripts
- Add Appendix B: Vite Configuration Files Reference covering all Vite configs
- Add Appendix C: Build Script Integration explaining how components work together
- Document usage examples, exit codes, environment variables, and platform-specific considerations
- Provide complete reference for developers working with the multi-platform build system
2025-07-15 11:11:58 +00:00
Matthew Raymer 81a6c92068 Add comprehensive build scripts and Vite config documentation to BUILDING.md
- Add Appendix A: Build Scripts Reference with detailed documentation for all build scripts
- Add Appendix B: Vite Configuration Files Reference covering all Vite configs
- Add Appendix C: Build Script Integration explaining how components work together
- Document usage examples, exit codes, environment variables, and platform-specific considerations
- Provide complete reference for developers working with the multi-platform build system
2025-07-15 11:11:58 +00:00
Matthew Raymer 7aa7056207 Fix: markdownlint MD012/MD019 errors in build-pattern-conversion-plan.md
- Removed extra blank lines at end of file to resolve MD012 (no-multiple-blanks)
- Standardized heading spacing to resolve MD019 (no-multiple-space-atx)
- Stripped trailing whitespace and ensured file ends with a single newline

All changes maintain content integrity and bring the file into full markdownlint compliance.
2025-07-10 13:07:51 +00:00
Matthew Raymer 8b95cc8d2b Fix: markdownlint MD012/MD019 errors in build-pattern-conversion-plan.md
- Removed extra blank lines at end of file to resolve MD012 (no-multiple-blanks)
- Standardized heading spacing to resolve MD019 (no-multiple-space-atx)
- Stripped trailing whitespace and ensured file ends with a single newline

All changes maintain content integrity and bring the file into full markdownlint compliance.
2025-07-10 13:07:51 +00:00
Matthew Raymer 0960d9dda3 docs: update build pattern conversion plan with consistent naming and mode handling
- Change build:* naming from hyphen to colon (build:web-dev → build:web:dev)
- Add missing build:web:test and build:web:prod scripts
- Update build:electron:dev to include electron startup (build + start)
- Remove hardcoded --mode electron to allow proper mode override
- Add comprehensive mode override behavior documentation
- Fix mode conflicts between hardcoded and passed --mode arguments

The plan now properly supports:
- Development builds with default --mode development
- Testing builds with explicit --mode test override
- Production builds with explicit --mode production override
- Consistent naming across all platforms (web, capacitor, electron)
2025-07-09 13:13:44 +00:00
Matthew Raymer b35c1d693f docs: update build pattern conversion plan with consistent naming and mode handling
- Change build:* naming from hyphen to colon (build:web-dev → build:web:dev)
- Add missing build:web:test and build:web:prod scripts
- Update build:electron:dev to include electron startup (build + start)
- Remove hardcoded --mode electron to allow proper mode override
- Add comprehensive mode override behavior documentation
- Fix mode conflicts between hardcoded and passed --mode arguments

The plan now properly supports:
- Development builds with default --mode development
- Testing builds with explicit --mode test override
- Production builds with explicit --mode production override
- Consistent naming across all platforms (web, capacitor, electron)
2025-07-09 13:13:44 +00:00
Matthew Raymer 7a51b85ae1 reports: updating AI estimates based on time records 2025-07-08 13:23:40 +00:00
Matthew Raymer a3468a081f reports: updating AI estimates based on time records 2025-07-08 13:23:40 +00:00
Matthew Raymer b2d31f1d64 Complete GiftedDetailsView Enhanced Triple Migration Pattern + Mixin Enhancement (10 minutes)
✅ Database Migration: Replaced databaseUtil.retrieveSettingsForActiveAccount() with $accountSettings()
✅ SQL Abstraction: Replaced PlatformServiceFactory.getInstance() with mixin methods
✅ Notification Migration: Added comprehensive notification system with constants
✅ Error Handling: Enhanced with success/error notifications for user feedback
✅ Mixin Enhancement: Added $mapQueryResultToValues and $mapColumnsToValues methods
✅ Code Quality: Eliminated databaseUtil dependency completely

- Added NOTIFY_GIFTED_DETAILS_* constants for all user-facing messages
- Replaced all direct $notify calls with notification helpers and constants
- Enhanced PlatformServiceMixin with mapping utilities to eliminate legacy dependencies
- Updated interface definitions for new mixin methods
- All linting passed, validation shows technically compliant
- EXCELLENT execution: 50% faster than estimated (10 min vs 20 min)

Migration Status: 52% complete (48/92 components, 5 human tested)
Next: Human testing to verify gift recording workflow
2025-07-08 13:14:26 +00:00
Matthew Raymer d43d3ade34 Complete GiftedDetailsView Enhanced Triple Migration Pattern + Mixin Enhancement (10 minutes)
✅ Database Migration: Replaced databaseUtil.retrieveSettingsForActiveAccount() with $accountSettings()
✅ SQL Abstraction: Replaced PlatformServiceFactory.getInstance() with mixin methods
✅ Notification Migration: Added comprehensive notification system with constants
✅ Error Handling: Enhanced with success/error notifications for user feedback
✅ Mixin Enhancement: Added $mapQueryResultToValues and $mapColumnsToValues methods
✅ Code Quality: Eliminated databaseUtil dependency completely

- Added NOTIFY_GIFTED_DETAILS_* constants for all user-facing messages
- Replaced all direct $notify calls with notification helpers and constants
- Enhanced PlatformServiceMixin with mapping utilities to eliminate legacy dependencies
- Updated interface definitions for new mixin methods
- All linting passed, validation shows technically compliant
- EXCELLENT execution: 50% faster than estimated (10 min vs 20 min)

Migration Status: 52% complete (48/92 components, 5 human tested)
Next: Human testing to verify gift recording workflow
2025-07-08 13:14:26 +00:00
Matthew Raymer 34900e5b18 Complete ImportDerivedAccountView Enhanced Triple Migration Pattern (3 minutes)
✅ Database Migration: Replaced databaseUtil.updateDidSpecificSettings() with $saveUserSettings()
✅ SQL Abstraction: Replaced raw SQL with $saveSettings({ activeDid: newId.did })
✅ Notification Migration: Added comprehensive notification system with constants
✅ Error Handling: Enhanced with success/error notifications for user feedback
✅ Code Quality: Added proper TypeScript types and documentation

- Added NOTIFY_ACCOUNT_DERIVATION_SUCCESS/ERROR constants
- Replaced PlatformServiceFactory.getInstance() with mixin methods
- Enhanced user experience with proper success/error feedback
- All linting passed, validation shows technically compliant
- EXCELLENT execution: 85% faster than estimated (3 min vs 20 min)

Migration Status: 51% complete (47/92 components)
Next: Human testing to verify account derivation workflow
2025-07-08 12:43:52 +00:00
Matthew Raymer 2c7fb8be8f Complete ImportDerivedAccountView Enhanced Triple Migration Pattern (3 minutes)
✅ Database Migration: Replaced databaseUtil.updateDidSpecificSettings() with $saveUserSettings()
✅ SQL Abstraction: Replaced raw SQL with $saveSettings({ activeDid: newId.did })
✅ Notification Migration: Added comprehensive notification system with constants
✅ Error Handling: Enhanced with success/error notifications for user feedback
✅ Code Quality: Added proper TypeScript types and documentation

- Added NOTIFY_ACCOUNT_DERIVATION_SUCCESS/ERROR constants
- Replaced PlatformServiceFactory.getInstance() with mixin methods
- Enhanced user experience with proper success/error feedback
- All linting passed, validation shows technically compliant
- EXCELLENT execution: 85% faster than estimated (3 min vs 20 min)

Migration Status: 51% complete (47/92 components)
Next: Human testing to verify account derivation workflow
2025-07-08 12:43:52 +00:00
Matthew Raymer 51afdcaddb Migrate ClaimCertificateView.vue to Enhanced Triple Migration Pattern
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Removed all raw SQL queries from the component
- Centralized notification message in src/constants/notifications.ts
- Replaced direct $notify call with notification helper and TIMEOUTS constant
- Updated migration documentation and security audit
- Ran lint-fix; no migration-specific errors remain

Ready for human testing and validation.
2025-07-08 12:32:05 +00:00
Matthew Raymer af35a3055c Migrate ClaimCertificateView.vue to Enhanced Triple Migration Pattern
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Removed all raw SQL queries from the component
- Centralized notification message in src/constants/notifications.ts
- Replaced direct $notify call with notification helper and TIMEOUTS constant
- Updated migration documentation and security audit
- Ran lint-fix; no migration-specific errors remain

Ready for human testing and validation.
2025-07-08 12:32:05 +00:00
Matthew Raymer ab5e86b094 Migrate DiscoverView.vue to Enhanced Triple Migration Pattern
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Removed all raw SQL queries from the component
- Centralized all notification messages in src/constants/notifications.ts
- Replaced direct $notify calls with notification helpers and TIMEOUTS constants
- Streamlined template logic (tab classes via computed properties)
- Updated migration documentation and security audit
- Ran lint-fix; no errors remain

Ready for human testing and validation.
2025-07-08 12:19:09 +00:00
Matthew Raymer 0d75dd6262 Migrate DiscoverView.vue to Enhanced Triple Migration Pattern
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Removed all raw SQL queries from the component
- Centralized all notification messages in src/constants/notifications.ts
- Replaced direct $notify calls with notification helpers and TIMEOUTS constants
- Streamlined template logic (tab classes via computed properties)
- Updated migration documentation and security audit
- Ran lint-fix; no errors remain

Ready for human testing and validation.
2025-07-08 12:19:09 +00:00
Matthew Raymer 58f5cba5a3 Migrate ConfirmGiftView.vue and ClaimReportCertificateView.vue to PlatformServiceMixin
- ConfirmGiftView.vue: Complete triple migration (11 minutes, EXCELLENT execution)
  - Replaced databaseUtil and PlatformServiceFactory with PlatformServiceMixin methods
  - Migrated 6 notification calls to helper methods with centralized constants
  - Added 5 new notification constants for gift confirmation workflow
  - All linting errors resolved, human tested and validated

- ClaimReportCertificateView.vue: Already migrated, marked as human tested
  - Component was already fully compliant with modern patterns
  - Human testing completed and documented
  - No additional migration work required

- Updated migration status: 47% complete (43/92 components)
- Enhanced notification constants with proper message extraction
- All components follow Enhanced Triple Migration Pattern
- Security audit: SQL injection prevention, standardized error handling
- Performance: Migration time reduced by 20% through improved processes

Migration progress: 47% complete with perfect human testing record (4/4 components)
2025-07-08 12:10:19 +00:00
Matthew Raymer 6857cb02b5 Migrate ConfirmGiftView.vue and ClaimReportCertificateView.vue to PlatformServiceMixin
- ConfirmGiftView.vue: Complete triple migration (11 minutes, EXCELLENT execution)
  - Replaced databaseUtil and PlatformServiceFactory with PlatformServiceMixin methods
  - Migrated 6 notification calls to helper methods with centralized constants
  - Added 5 new notification constants for gift confirmation workflow
  - All linting errors resolved, human tested and validated

- ClaimReportCertificateView.vue: Already migrated, marked as human tested
  - Component was already fully compliant with modern patterns
  - Human testing completed and documented
  - No additional migration work required

- Updated migration status: 47% complete (43/92 components)
- Enhanced notification constants with proper message extraction
- All components follow Enhanced Triple Migration Pattern
- Security audit: SQL injection prevention, standardized error handling
- Performance: Migration time reduced by 20% through improved processes

Migration progress: 47% complete with perfect human testing record (4/4 components)
2025-07-08 12:10:19 +00:00
Matthew Raymer 8f5c174097 Migrate OfferDetailsView.vue to PlatformServiceMixin, notification constants, and template streamlining
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Abstracted all notification messages to src/constants/notifications.ts and migrated to notify helper
- Added computed properties for assignment labels to streamline template logic
- Removed unused imports and resolved all linter errors
- Updated migration documentation and ensured security audit compliance
- All changes validated with lint-fix and ready for human testing
2025-07-08 11:54:50 +00:00
Matthew Raymer 52ed8bfd4b Migrate OfferDetailsView.vue to PlatformServiceMixin, notification constants, and template streamlining
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Abstracted all notification messages to src/constants/notifications.ts and migrated to notify helper
- Added computed properties for assignment labels to streamline template logic
- Removed unused imports and resolved all linter errors
- Updated migration documentation and ensured security audit compliance
- All changes validated with lint-fix and ready for human testing
2025-07-08 11:54:50 +00:00
Matthew Raymer 0b3b7dbb4d ClaimReportCertificateView 2025-07-08 11:41:13 +00:00
Matthew Raymer 698bee6a27 ClaimReportCertificateView 2025-07-08 11:41:13 +00:00
Matthew Raymer 230602cb6a feat: complete IdentitySwitcherView.vue migration - replace final $notify call
- Replace remaining direct $notify call in deleteAccount method with notify.confirm()
- Component was already 95% migrated (database, template, most notifications)
- All notification constants already existed and were being used
- Final migration step completes Enhanced Triple Migration Pattern
- All linting passed; no new errors introduced

Migration: Complete notification migration (final step)
Time: 5 minutes | Complexity: Low | Issues: None
Human Testing: ✅ COMPLETED

Security: All database operations abstracted, all notifications standardized
Performance: Consistent notification patterns, optimized template rendering

Files Changed:
- src/views/IdentitySwitcherView.vue - Complete notification migration
- docs/migration-testing/IDENTITYSWITCHERVIEW_MIGRATION.md - Update status

Migration Status: 42/92 components (45% complete)
2025-07-08 11:31:49 +00:00
Matthew Raymer 1f54ffc248 feat: complete IdentitySwitcherView.vue migration - replace final $notify call
- Replace remaining direct $notify call in deleteAccount method with notify.confirm()
- Component was already 95% migrated (database, template, most notifications)
- All notification constants already existed and were being used
- Final migration step completes Enhanced Triple Migration Pattern
- All linting passed; no new errors introduced

Migration: Complete notification migration (final step)
Time: 5 minutes | Complexity: Low | Issues: None
Human Testing: ✅ COMPLETED

Security: All database operations abstracted, all notifications standardized
Performance: Consistent notification patterns, optimized template rendering

Files Changed:
- src/views/IdentitySwitcherView.vue - Complete notification migration
- docs/migration-testing/IDENTITYSWITCHERVIEW_MIGRATION.md - Update status

Migration Status: 42/92 components (45% complete)
2025-07-08 11:31:49 +00:00
Matthew Raymer e073314382 feat: migrate QuickActionBvcEndView.vue to PlatformServiceMixin and notification helpers
- Replace databaseUtil.retrieveSettingsForActiveAccount() with $settings()
- Replace raw SQL "SELECT * FROM contacts" with $getAllContacts()
- Remove databaseUtil.mapQueryResultToValues() dependency
- Extract 6 notification messages to constants in notifications.ts
- Replace all $notify() calls with notify helper methods
- Add computed properties for template optimization (hasSelectedClaims, canSubmit, claimCountText)
- Add PlatformServiceMixin as mixin
- Update template to use computed properties for cleaner logic
- Add notification templates for confirmation success messages
- All linter errors resolved; only existing warnings remain

Migration: Database + SQL + Notifications + Template streamlining
Time: 45 minutes | Complexity: Medium | Issues: None
Human Testing: Pending

Security: Eliminates raw SQL queries, standardizes error handling
Performance: Optimized contact retrieval, reduced template complexity
2025-07-08 11:15:11 +00:00