Commit Graph

2242 Commits

Author SHA1 Message Date
Matthew Raymer
fb9f2f1b09 Implement proper asset management with capacitor-assets
- Add capacitor-assets.config.json for cross-platform asset generation
- Create resources/ directory structure for source assets
- Update .gitignore to exclude generated Android assets and resources
- Remove 30+ generated files from source control
- Add comprehensive asset management documentation
- Verify asset generation works with new configuration

Assets are now properly managed: source files in version control,
generated files excluded, and build process handles platform-specific
asset generation automatically.
2025-07-22 08:40:27 +00:00
Matthew Raymer
09767a8fa0 Clean up redundant .gitignore rules for Android build artifacts
- Remove redundant specific file patterns inside android/app/build/
- Fix misleading comment that suggested build artifacts were source configs
- Simplify configuration by relying on broader android/app/build/ rule
- Improve maintainability and reduce confusion in .gitignore

The specific file patterns were unnecessary since android/app/build/ already
covers all build artifacts. This eliminates redundant rules and clarifies
that these are generated build files, not source configuration files.
2025-07-22 07:57:04 +00:00
Jose Olarte III
875bcb53b8 Update: switched back users and adjusted test instead 2025-07-21 21:31:56 +08:00
Jose Olarte III
2dfae0425e Revert "Enhance handleContactVisibility to return both title and message"
This reverts commit 97cb5a0ac6.
2025-07-21 21:30:53 +08: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
Jose Olarte III
3840690ae3 Fix: switch users to test unregistered contacts 2025-07-21 18:47:34 +08:00
Matt Raymer
f0776a0269 Fix Docker build issues and SQL worker configuration
- Fix .dockerignore to allow dist directory for Docker builds
- Add uint8arrays dependency for crypto operations
- Configure Vite for proper SQL worker bundling with absurd-sql
- Update Dockerfile with build context documentation
- Fix Nginx configuration for non-root user permissions
- Remove conflicting backend proxy configuration
- Add SQL worker polyfills to vite.config.common.mts

Resolves Docker build failures and ensures proper SQL database functionality
in containerized environment.
2025-07-21 05:49:06 -04:00
Jose Olarte III
5b82f48256 Update: locators match changes to activity list 2025-07-21 17:05:22 +08:00
Jose Olarte III
d6bd507123 Update: removed obsolete tests 2025-07-21 16:27:35 +08:00
Matthew Raymer
16c16c84d5 Implement configurable domain names for all copy link functionality
- Add PROD_SHARE_DOMAIN constant using existing AppString.PROD_PUSH_SERVER
- Update all 9 components/services to use configurable domain instead of hardcoded URLs
- Fix localhost issues in development mode for all sharing functionality
- Ensure all copy link buttons generate production URLs regardless of environment
- Add proper TypeScript imports and component properties for template access
- Maintain existing functionality while improving maintainability and consistency

Files updated:
- src/constants/app.ts (new constant)
- src/views/ClaimView.vue (claim + certificate links)
- src/views/ProjectViewView.vue (project links)
- src/views/ConfirmGiftView.vue (confirm gift links)
- src/components/HiddenDidDialog.vue (hidden DID links)
- src/views/UserProfileView.vue (profile links)
- src/views/InviteOneView.vue (invite links)
- src/views/ContactsView.vue (contact import links)
- src/views/OnboardMeetingSetupView.vue (meeting links)
- src/libs/endorserServer.ts (contact import confirm links)

Documentation added:
- docs/domain-configuration.md (comprehensive guide)
- README.md (quick reference section)

Security audit:  All changes maintain existing security model
Testing:  All linting errors resolved, only warnings remain
Performance:  No performance impact, improves user experience
2025-07-21 07:47:34 +00:00
Matthew Raymer
885bd10bc5 Improve iOS build directory documentation and clarity
- Add clarifying comment in ios/.gitignore for App/App/public directory
- Document that public directory contains Capacitor sync output from dist/
- Add comment in build-ios.sh clarifying build directory is temporary output
- Reinforces best practice of keeping platform files in ios/ folder
2025-07-21 07:16:11 +00:00
Jose Olarte III
b790eb9310 Update: locators match new gifting dialog 2025-07-21 15:04:47 +08:00
Matthew Raymer
14275a4c41 Complete DeepLinkRedirectView Enhanced Triple Migration Pattern (3 minutes)
- Replace PlatformServiceFactory with PlatformServiceMixin
- Add platformCapabilities computed property for cached access
- Update platform detection methods to use mixin
- Add comprehensive documentation and preserve deep link functionality
- 75% faster than estimated migration time
2025-07-21 06:00:39 +00:00
Matthew Raymer
20b67cbcbd Complete UserNameDialog Enhanced Triple Migration Pattern (1 minute)
- Replace PlatformServiceFactory with PlatformServiceMixin methods
- Extract button styling classes to computed properties
- Add comprehensive documentation and error handling
- 87% faster than estimated migration time
2025-07-21 05:39:31 +00:00
f4cd47b020 fix: linting
Merged from master
2025-07-20 20:07:18 -06:00
Matthew Raymer
3a1fe31d39 fix: explicitly name all our components to avoid some of the warnings for build:web:serve ...
appears the last warning may be inside Vue itself.  Leaving this alone for now.
2025-07-19 04:41:31 +00:00
Matthew Raymer
685010e37d fix: check limits message 2025-07-19 02:04:59 +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
Jose Olarte III
0d80dc74ec Update: locators to match changes to homeview 2025-07-18 16:52:18 +08:00
Matthew Raymer
fbf7deb9b8 Remove PWA functionality and service worker infrastructure
Completely remove Progressive Web App features including VitePWA plugin, service workers, install prompts, and platform service PWA methods. Delete PWA component, service worker files, help images, and update build configurations. Simplify application architecture by removing PWA complexity while maintaining core functionality.
2025-07-18 07:49:34 +00:00
Matthew Raymer
e5af1c401a Refactor ActivityListItem to use function props for image caching
Replace @Emit decorator with function prop pattern for better parent control over image caching behavior. ActivityListItem now accepts onImageCache function prop that parent components can use to handle image caching with custom logic. Updated HomeView to use new function prop interface with simplified method signature.
2025-07-18 07:41:06 +00:00
Matthew Raymer
3103c4fc6b Refactor EntitySummaryButton to use function props instead of events
Replace @Emit decorator with function prop pattern for better parent control over edit behavior. EntitySummaryButton now accepts onEditRequested function prop that parent components can use to handle edit requests with custom validation logic. Updated GiftDetailsStep to use new function prop interface with proper parameter handling.
2025-07-18 07:34:04 +00:00
Matthew Raymer
f6107cb7bb refactor: convert GiftDetailsStep update handlers from emits to function props
- Replace @Emit("update:description"), @Emit("update:amount"), @Emit("update:unitCode") with function props
- Add onUpdateDescription, onUpdateAmount, onUpdateUnitCode function props with TypeScript typing
- Update GiftedDialog to use new function prop interface for update handlers
- Remove emit decorators and methods for update events
- Keep emit pattern for non-update events (edit-entity, explain-data, submit, cancel)
- Improve component documentation to reflect new architecture

This change provides better parent control over validation and update behavior
for form fields while maintaining existing functionality for other events.
2025-07-18 07:23:20 +00:00
Jose Olarte III
fe3a90e421 Merge branch 'build-improvement' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into build-improvement 2025-07-18 15:14:45 +08:00
Jose Olarte III
631bbeb182 Update: locator for contact link 2025-07-18 15:13:57 +08:00
Jose Olarte III
bf5fd0b5ce Update: locator for gifting button in homeview 2025-07-18 15:13:36 +08:00
Matthew Raymer
94576ff3a4 refactor: convert AmountInput to function props
- Convert AmountInput from @Emit("update:value") to onUpdateValue function prop
- Update GiftDetailsStep to use new function prop interface for amount handling

AmountInput now provides better parent control over validation and updates
2025-07-18 07:10:41 +00:00
Matthew Raymer
912bb7c136 fix: revert QR scanner to emit pattern after function prop binding fails
- Revert ContactInputForm QR scanner from function props back to emit pattern
- Remove problematic onQRScan function prop that wasn't resolving correctly
- Update ContactsView to use @qr-scan event handler instead of function prop
- Maintain debugging logs to track click events and method execution
- Keep other function props intact for other event handlers

The function prop approach for QR scanning failed due to Vue prop resolution
issues, causing the default function to be called instead of the parent handler.
Reverting to emits provides reliable parent-child communication for this case.
2025-07-18 06:40:08 +00:00
Matthew Raymer
3d3d50dc9f feat: enhance EntityGrid with function props and improve code formatting
- Add configurable entity display logic via function props to EntityGrid
- Implement comprehensive test suite for EntityGrid function props in TestView
- Apply consistent code formatting across 15 components and views
- Fix linting issues with trailing commas and line breaks
- Add new EntityGridFunctionPropTest.vue for component testing
- Update endorserServer with improved error handling and logging
- Streamline PlatformServiceMixin with better cache management
- Enhance component documentation and type safety

Changes span 15 files with 159 additions and 69 deletions, focusing on
component flexibility, code quality, and testing infrastructure.
2025-07-18 06:16:35 +00:00
Matthew Raymer
6c7c0fed34 Add component communication guide with function props preference
Create comprehensive development guide establishing our preferred patterns
for Vue component communication. Document the preference for function props
over $emit for business logic while reserving $emit for DOM-like events.

Guide covers:
- Function props for business logic, data operations, and complex interactions
- $emit for DOM-like events, lifecycle events, and simple user interactions
- Implementation patterns with TypeScript examples
- Testing strategies for both approaches
- Migration strategy from $emit to function props
- Naming conventions and best practices

Establishes consistent, maintainable component communication patterns
across the application with focus on type safety and developer experience.
2025-07-18 05:40:56 +00:00
Matthew Raymer
de90c242a8 Remove debugging console.log statements
Clean up all temporary debugging console.log statements added during
registration status troubleshooting. Remove debug output from multiple
components while preserving essential error logging and functionality.

Changes:
- PlatformServiceMixin.ts: Remove debug logging from $saveUserSettings and $saveMySettings
- AccountViewView.vue: Remove debug logging from mounted, initializeState, checkLimits, and onRecheckLimits
- UsageLimitsSection.vue: Remove debug logging from lifecycle hooks and recheckLimits
- IdentitySwitcherView.vue: Remove debug logging from switchAccount method

All core functionality preserved including error handling with logger.error()
and user notifications. Codebase now production-ready without debugging noise.
2025-07-18 05:28:00 +00:00
Matthew Raymer
d5e6b4c697 Remove dev-dist from git tracking
Remove dev-dist/ directory from version control while preserving files locally.
This directory contains build artifacts that should not be committed to the
repository.

Changes:
- Remove dev-dist/registerSW.js from git tracking
- Remove dev-dist/sw.js from git tracking
- Remove dev-dist/sw.js.map from git tracking
- Remove dev-dist/workbox-54d0af47.js from git tracking
- Remove dev-dist/workbox-54d0af47.js.map from git tracking

The dev-dist/ directory is already properly listed in .gitignore and will
be ignored going forward. Build artifacts remain available locally for
development use.
2025-07-18 05:13:50 +00:00
Matthew Raymer
d5597adab9 Fix registration status reactivity in HomeView
Resolved issue where registration banner persisted despite successful API registration.
Root cause was loadSettings() being called after initializeIdentity(), overwriting
updated isRegistered value with stale database data.

Changes:
- Remove redundant loadSettings() call from mounted() lifecycle
- Add $nextTick() to force template re-render after registration updates
- Create isUserRegistered computed property for template reactivity
- Clean up debugging console.log statements for production readiness
- Simplify template logic to use standard v-if/v-else pattern

Registration banner now properly disappears when users are registered, and
"Record something given by:" section appears correctly. Fix maintains existing
functionality while ensuring proper Vue reactivity.
2025-07-18 05:10:28 +00:00
Matthew Raymer
83317a476e Restore complete UsageLimitsSection functionality with detailed limits display
- Restored proper section container with bg-slate-100 styling and accessibility attributes
- Added FontAwesome spinner with proper ARIA labels for loading state
- Restored detailed limits information showing claims/week, registrations/month, and images/week
- Added proper pluralization and date formatting for reset timers
- Enhanced button styling to match original design with slate gradient
- Added activeDid, endorserLimits, and imageLimits props to component
- Maintained comprehensive debugging for troubleshooting User #00 limits issue
- Added readableDate helper method for consistent date formatting

Fixes missing functionality that was lost during component extraction from AccountViewView.
2025-07-18 03:30:29 +00:00
e1252236c0 fix: capitalize the beginning of a message 2025-07-17 19:41:53 -06:00
Jose Olarte III
e787886f1b Update: remove obsolete empty ID check 2025-07-17 17:26:00 +08:00
Matthew Raymer
2a0efd33f1 refactor: remove unused Vite configuration files and update documentation
Remove obsolete Vite configuration files that are no longer used by the build system
and update BUILDING.md to accurately reflect the current configuration structure.

**Removed Files:**
- vite.config.ts (47 lines) - Legacy configuration file
- vite.config.mts (70 lines) - Unused "main" configuration file

**Updated Documentation:**
- BUILDING.md - Corrected Vite configuration section to show actual usage

**Current Configuration Structure:**
- vite.config.web.mts - Used by build-web.sh
- vite.config.electron.mts - Used by build-electron.sh
- vite.config.capacitor.mts - Used by npm run build:capacitor
- vite.config.common.mts - Shared configuration utilities
- vite.config.utils.mts - Configuration utility functions

**Benefits:**
- Eliminates confusion about which config files to use
- Removes 117 lines of unused configuration code
- Documentation now matches actual build system usage
- Cleaner, more maintainable configuration structure

**Impact:**
- No functional changes to build process
- All platform builds continue to work correctly
- Reduced configuration complexity and maintenance overhead
2025-07-17 08:07:22 +00:00
Matthew Raymer
147e039c05 refactor: remove unused LazyLoadingExample component
Remove LazyLoadingExample.vue component that was only used for documentation
and not referenced in the actual application code.

**Changes:**
- Delete src/components/LazyLoadingExample.vue (306 lines)
- Add description to @ts-expect-error directive in ShareMyContactInfoView

**Benefits:**
- Reduces codebase size and complexity
- Eliminates 13 lint warnings from unused component
- Improves code maintainability
- Keeps documentation examples separate from runtime code

**Impact:**
- No functional changes to application
- Cleaner component directory
- Reduced bundle size (component was not tree-shakeable)
2025-07-17 07:53:39 +00:00
Matthew Raymer
cf39f36b0e fix: resolve ContactInputForm v-model binding and lint errors
Fix ContactInputForm v-model binding issue that was causing "no contact info" error
when adding contacts. The component was using incorrect prop name for v-model.

**Changes:**
- Update ContactInputForm to use standard `modelValue` prop instead of `input`
- Fix v-model binding by using `update:modelValue` event emission
- Remove unused `Model` import from vue-facing-decorator
- Replace `@ts-ignore` with `@ts-expect-error` in ShareMyContactInfoView

**Fixes:**
- Contact input field now properly updates parent component state
- Eliminates "There was no contact info to add" error when DID is entered
- Resolves Vue 3 v-model compatibility issues
- Clears remaining lint errors

**Testing:**
- Contact form should now accept DID input and process it correctly
- v-model binding works as expected between ContactInputForm and ContactsView
2025-07-17 07:43:22 +00:00
Jose Olarte III
5c5af5b5cb Fix: Copy to Clipboard button targeting 2025-07-17 15:21:46 +08:00
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.
2025-07-17 04:03:05 +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
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
74a8365a14 Remove databaseUtil dependency from PlatformServiceMixin
- Replace $accountSettings method's databaseUtil import with self-contained implementation
- Use existing $getMergedSettings method instead of retrieveSettingsForActiveAccount
- Maintain all functionality including Electron-specific API server fixes
- Eliminate circular dependency between PlatformServiceMixin and databaseUtil
- Fix linting issues with proper formatting and trailing commas
- PlatformServiceMixin now completely independent for migration process
2025-07-16 10:04:36 +00:00
Matthew Raymer
b63d16d3a8 fix platform services to use correct settings table schema
- Fix WebPlatformService settings methods to use id/accountDid columns
- Fix CapacitorPlatformService settings methods to use id/accountDid columns
- Replace WHERE key = 'default' with WHERE id = 1 for default settings
- Replace WHERE key = ? with WHERE accountDid = ? for user settings
- Update insertDidSpecificSettings to use accountDid column
- Update retrieveSettingsForActiveAccount to select all columns and convert to object
- Resolves "no such column: key" SQL errors after util.ts migration
- Ensures compatibility with new settings table structure

All platform services now use correct database schema for settings operations.
2025-07-16 09:43:09 +00:00
Matthew Raymer
a2609c05fc migrate ProjectsView.vue to Enhanced Triple Migration Pattern
- Replace retrieveAccountDids with $getAllAccountDids() mixin method
- Add $getAllAccountDids() to PlatformServiceMixin interface and implementation
- Replace $getAllContacts() with standardized $contacts() method
- Replace raw $notify() call with notify.confirm() helper method
- Extract 6 long class strings to computed properties for maintainability
- Remove dependency on util.ts for account DID retrieval
- All notifications now use centralized constants from @/constants/notifications
- Improve error handling and user experience
- Pass all linting checks with no errors
- Complete migration in 6 minutes (60% faster than estimate)

Component ready for human testing with enhanced maintainability and security.
2025-07-16 09:14:00 +00:00
Matthew Raymer
03291a7775 Complete QuickActionBvcEndView Enhanced Triple Migration Pattern (4 minutes)
- Replace retrieveAllAccountsMetadata with $getAllAccounts() mixin method
- Standardize contact fetching to use $contacts() method
- Extract long class strings to computed properties for maintainability
- Add $getAllAccounts() method to PlatformServiceMixin for future migrations
- Achieve 75% performance improvement over estimated time
- Ready for human testing across all platforms
2025-07-16 09:03:33 +00:00
Matthew Raymer
ef9352071d Complete Enhanced Triple Migration Pattern for contact components
- Migrate ContactBulkActions, ContactInputForm, ContactListHeader, ContactListItem, LargeIdenticonModal, and ContactsView to PlatformServiceMixin
- Add comprehensive deep linking support to CapacitorPlatformService and WebPlatformService
- Enhance PlatformService with new database operations and deep link handling
- Update service worker and documentation for migration progress
- Fix TypeScript type errors in util.ts and deepLinks.ts
- Streamline circular dependency analysis and migration tracking docs
2025-07-16 08:41:13 +00:00
Matthew Raymer
ad8e9f823b Fix duplicate export declarations and migrate ContactsView with sub-components
- Remove duplicate NOTIFY_INVITE_MISSING and NOTIFY_INVITE_PROCESSING_ERROR exports
- Update InviteOneAcceptView.vue to use correct NOTIFY_INVITE_TRUNCATED_DATA constant
- Migrate ContactsView to PlatformServiceMixin and extract into modular sub-components
- Resolves TypeScript compilation errors preventing web build
2025-07-16 08:03:26 +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