Commit Graph
55 Commits
Author SHA1 Message Date
Matthew Raymer eda4a6b25e fix: consolidate deep link testing scripts
- Remove redundant test-deeplinks.sh script
- Update run-deeplink-tests.sh with improved timeout
- Remove unused secp256k1-sign script
- Remove deprecated new_flow scripts
- Clean up test script directory

Technical Changes:
- Increase default timeout from 5 to 10 seconds
- Remove Python/TypeScript DID generation scripts
- Remove redundant deep link test script
- Remove unused crypto signing script

This simplifies the test script directory by removing
deprecated scripts and consolidating deep link testing
into a single, more reliable script.
2025-03-11 10:39:41 +00:00
Matthew Raymer 87ef6f4186 chore: add android folder back 2025-03-11 10:01:39 +00:00
Matthew Raymer b6213f5040 Merge branch 'deep_linking' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into deep_linking 2025-03-10 13:01:03 +00:00
Matthew Raymer b590e41ec8 feat: add claim route deep linking support
- Add claim route to deep link schema
- Add claim view test to deeplink tests
- Update build docs for clean web builds
- Add rm -rf dist to build steps

Technical Changes:
- Add claim schema with id parameter
- Add claim route test using generated claim ID
- Add clean step before web/capacitor builds
- Update Android build instructions

This adds support for deep linking to claim views and
improves the build process reliability by ensuring clean
builds. The claim route allows direct navigation to claim
details via external links.
2025-03-10 13:00:54 +00:00
Matthew Raymer 8336b87bd0 docs: add Android deep linking setup instructions
- Add deep linking configuration section to BUILDING.md
- Document intent filter requirements for Android
- Add console build instructions
- Document gradlew commands for clean builds
- Add Capacitor setup steps

Technical Details:
- Add XML example for intent-filter configuration
- Document autoVerify flag requirement
- Add gradlew clean and build commands
- Add lint baseline configuration
- Document Capacitor CLI usage

This improves the developer documentation by adding clear
instructions for setting up Android deep linking support,
including both Android Studio and command line build
processes.
2025-03-10 09:40:48 +00:00
Matthew Raymer a40420af16 fix: streamline deep link handling and testing
- Add force-stop before deep link execution
- Remove URL encoding for deep link paths
- Simplify deep link schema definitions
- Remove unused route mappings
- Add proper app package name for force-stop

Technical Changes:
- Remove redundant URL encoding for deep link paths
- Add force-stop for app.timesafari.app before deep links
- Add sleep delay after force-stop for reliability
- Remove unused route mappings from routeMap
- Simplify DID schema to only require id field

This improves deep link testing reliability by properly
resetting app state before each test and simplifies the
deep link handling code by removing unused routes and
redundant URL encoding.
2025-03-10 07:52:21 +00:00
Matthew Raymer 21244efa73 fix(deeplinks): improve DID route handling and URL encoding
- Add colon (:) to safe characters in URL encoding to preserve DID format
- Add test case for simple DID route with "test" identifier
- Improve test descriptions for DID-based deeplinks
- Fix typo in test sequence (/d)

The URL encoding now correctly handles DID format (did:ethr:0x...) while still
encoding other special characters. Added basic DID test case to verify route
handling before testing with actual DID values.
2025-03-10 07:15:29 +00:00
Matthew Raymer 5ed626b92f Merge branch 'deep_linking' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into deep_linking 2025-03-10 05:02:06 +00:00
Matthew Raymer 4562be3bac feat: add deep linking support for DID routes
- Add DID route schema to deepLinks.ts
- Enable Android app link verification
- Add autoVerify flag to Android manifest

Technical Changes:
- Add did schema with id parameter to deepLinkSchemas
- Add DeepLinkParams type for DID routes
- Set android:autoVerify="true" in intent-filter
- Update manifest to handle DID deep links

This enables proper deep linking for DID-based routes and
allows Android to verify app links automatically. The DID
schema allows direct navigation to DID-specific views via
external links.
2025-03-10 05:00:46 +00:00
Matthew Raymer ad9b4836cd feat: add JSON output files and improve test flow
- Add .generated directory for test artifacts
- Save key derivation data to key_derivation.json
- Save account initialization to account_init.json
- Save registration data to registration.json
- Save claim details to claim_details.json
- Save test environment to test-env.sh
- Save contacts data to contacts.json
- Add proper error handling for file operations
- Improve deeplink test flow with JSON-based data
- Add color output and better status messages
- Add ADB device detection and fallback to print mode

Technical Changes:
- Add file system operations with proper error handling
- Standardize JSON output format across Python/TypeScript
- Update test flow to use generated JSON files
- Add proper typing for registration response
- Improve error reporting and debug output

This improves the test workflow by saving all intermediate
data as JSON files that can be used by other test scripts.
The deeplink testing now uses this data instead of environment
variables for better reliability.
2025-03-08 13:01:15 +00:00
Matthew Raymer 32f1f182d7 fix: improve key derivation and logging
- Fix mnemonic validation in Python version
- Add consistent output logging across Python/TypeScript
- Show key derivation details in readable format
- Truncate sensitive values in output
- Match output format between implementations

This fixes the mnemonic error and improves debugging by
adding consistent logging of the key derivation process.
2025-03-08 11:04:17 +00:00
Matthew Raymer 510f6a5faa fix: improve secp256k1 signing in shell script
- Use proper secp256k1 signing tools
- Simplify private key format
- Add fallback signing mechanism
- Match TypeScript/Python signature format
- Fix JWT verification error

This fixes the JWT verification by using proper
secp256k1 signing tools and matching the signature
format of the working implementations.
2025-03-05 14:20:04 +00:00
Matthew Raymer 1bb4e77714 refactor: replace Python crypto with native openssl operations
- Remove Python dependency for cryptographic operations
- Implement pure bash/openssl key generation
- Maintain ES256K signature compatibility
- Add detailed error handling and logging
2025-03-05 14:11:18 +00:00
Matthew Raymer cc10dab3a4 feat: add shell implementation of DID registration flow
- Match Python/TypeScript implementations
- Use consistent JWT signing approach
- Maintain payload compatibility
- Add detailed documentation
2025-03-05 14:08:27 +00:00
Matthew Raymer 0a066dc99c feat: add claim fetching functionality
- Add fetch_claim method to match TypeScript version
- Implement JWT authentication for claim fetching
- Update main flow to fetch claim after registration
- Add error handling and logging
- Match TypeScript API structure

This adds the ability to fetch claim details after
successful DID registration, completing the full
registration and verification flow.
2025-03-05 13:49:54 +00:00
Matthew Raymer eeddab506d feat: implement DID registration with JWT signing
- Add full DID registration flow matching TypeScript version
- Implement ES256K JWT signing with PEM key format
- Add async/await support for JWT operations
- Improve error handling and debug output
- Add rich documentation and type hints

Technical Changes:
- Convert private key to PEM format for JWT signing
- Match TypeScript's JWT payload structure
- Add proper JWT header with ES256K algorithm
- Implement async functions for JWT creation
- Add detailed debug output for JWT parts

Documentation:
- Add module-level docstring with flow description
- Add function-level docstrings with examples
- Document security considerations
- Add technical details and error handling info

Dependencies:
- Add cryptography for key format conversion
- Add jwcrypto for JWT operations
- Update requirements.txt with versions and comments

This commit implements the complete DID registration flow,
matching the TypeScript implementation's behavior and
adding comprehensive documentation and error handling.
2025-03-05 13:44:42 +00:00
Matthew Raymer 9edb3a255c feat: enhance DID visibility management
- Add automatic visibility request when DID not found
- Add rich documentation for script usage and features
- Improve error handling and user feedback
- Add visual indicators for success/failure
- Add HTTPS for API endpoints
- Add proper exit codes for different scenarios
- Add detailed debug logging throughout
- Add file header documentation

This enhances the DID visibility script by adding automatic
visibility requests when a DID is not found, along with
better documentation, error handling and user feedback.
2025-03-04 13:30:10 +00:00
Matthew Raymer b7b208407b feat(scripts): Add DID visibility check script
Adds dids_seen.sh script to check DID visibility permissions in endorser.ch system.
Key features:
- JWT creation and signing using ES256K-R
- DID visibility checking via API
- Environment variable and .env file support
- Debug logging with DEBUG=1 flag
- Command line argument parsing for specific DID checks
- Secure key handling with temporary files
- Pretty-printed JSON output

Security:
- Uses secure temporary files with cleanup
- Validates DER signature format
- Handles key material securely
- Supports environment variable configuration
2025-03-04 13:07:35 +00:00
Matthew Raymer a974ab4f51 refactor: improve DID generation and error handling
- Convert did_generator.sh to output clean JSON
- Add structured error reporting with stages
- Improve debug logging with DEBUG flag
- Better error handling in run-deeplink-tests.sh
- Add detailed debug tracing
- Fix JSON parsing and validation
- Add visual feedback for generated DIDs
- Use printf instead of echo for consistent output
- Remove stderr mixing with stdout
- Add proper exit status handling

This refactors the DID generation process to be more reliable
and maintainable by using structured JSON output and proper
error handling throughout the pipeline.
2025-03-04 12:32:19 +00:00
Matthew Raymer 6685421ee8 fix: WIP: update did_generator.ts to use registration table
Changes:
- Update SQL query to use registration table instead of accounts
- Add proper column names for registration table schema
- Add issuanceDate sorting for latest admin DID
- Improve error messages for database queries
- Add TypeScript types for database row results

This fixes DID generation by using the correct table schema
from the endorser database.
2025-03-03 13:21:51 +00:00
Matthew Raymer f4c5567471 test: enhance deep link testing with real JWT examples
Changes:
- Add real JWT example for invite testing
- Add detailed JWT payload documentation
- Update test-deeplinks.sh with valid claim IDs
- Add test case for single contact invite
- Improve test descriptions and organization

This improves test coverage by using real-world JWT examples
and valid claim identifiers.
2025-03-01 12:28:48 +00:00
Matthew Raymer 86c1abb9be Fixing a goof I made moving between workstations
Merge branch 'deep_linking' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa into deep_linking
2025-03-01 10:26:14 +00:00
Matthew Raymer 02bf0b3f1a docs: add comprehensive JSDoc documentation to views
Changes:
- Add detailed JSDoc headers to ContactImportView
- Add component-level documentation to ProjectViewView
- Document state management and data flow
- Add security considerations and usage examples
- Improve test script documentation and organization
- Add interface documentation for deep linking

This improves code maintainability by documenting component
architecture, workflows and integration points.
2025-02-28 12:45:21 +00:00
Matthew Raymer 89d970da1d docs: improve endorserServer.ts documentation and types
Changes:
- Add comprehensive JSDoc headers with examples
- Improve function documentation with param/return types
- Add module-level documentation explaining purpose
- Clean up testRecursivelyOnStrings implementation
- Add type annotations to cache functions
- Simplify serverMessageForUser implementation

This improves code maintainability by adding clear documentation
and improving type safety throughout the endorser server module.
2025-02-27 13:00:53 +00:00
Matthew Raymer cb03df9240 fix: linkage of capacitor core to use relative links 2025-02-26 11:17:46 +00:00
Matthew Raymer 20620c3aae refactor: reorganize deep linking types and interfaces
Changes:
- Move deep link types from types/ to interfaces/
- Export baseUrlSchema for external use
- Add trailing commas for better git diffs
- Fix type inference for deepLinkSchemas
- Add deepLinks export to interfaces/index.ts
- Remove duplicate SuccessResult interface
- Update import paths in services/deepLinks.ts

This improves code organization by centralizing interface definitions
and fixing type inference issues.
2025-02-26 10:28:55 +00:00
Matthew Raymer 9d04db4a71 docs: add comprehensive deep linking documentation
Changes:
- Add detailed JSDoc headers to deep linking files
- Document type system and validation strategy
- Add architecture overview and error handling docs
- Include usage examples and integration points
- Improve code organization comments

This improves maintainability by documenting the deep linking
system's architecture, type safety, and integration points.
2025-02-26 09:45:08 +00:00
Matthew Raymer 1a9c97fe88 feat(deepLinks): implement comprehensive deep linking system
- Add type-safe deep link parameter validation using Zod
- Implement consistent error handling across all deep link routes
- Add support for query parameters in deep links
- Create comprehensive deep linking documentation
- Add logging for deep link operations

Security:
- Validate all deep link parameters before processing
- Sanitize and type-check query parameters
- Add error boundaries around deep link handling
- Implement route-specific parameter validation

Testing:
- Add parameter validation tests
- Add error handling tests
- Test query parameter support
2025-02-26 09:35:04 +00:00
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.
2025-02-26 09:27:04 +00:00
Matthew Raymer a2e19d7e9a fix: improve TypeScript type safety across views
Changes:
- Add proper type annotations for component properties
- Fix null checks with optional chaining
- Add missing interface properties
- Replace any with proper types where possible
- Move interfaces from endorserServer to interfaces/
- Add proper Router and Route typing
- Add default empty string for optional text fields

This improves type safety and reduces TypeScript errors across views.
2025-02-25 11:36:24 +00:00
Matthew Raymer 42055a2d66 fix: update component and import paths
Changes:
- Update font-awesome component closing tag to match naming
- Change @capacitor/app import to use local wrapper
- Fix component self-closing tags in ContactScanView.vue

This improves consistency in component usage and centralizes
capacitor imports through our wrapper layer.
2025-02-25 09:58:31 +00:00
Matthew Raymer dc16cb393e refactor: move ProviderInfo interface to claims-result.ts
- Move ProviderInfo interface from ClaimView.vue to claims-result.ts
- Add JSDoc documentation to interface properties
- Update imports in ClaimView.vue
- Clean up route handling using vue-router types
- Remove outdated browser compatibility comment

This improves type organization and documentation while reducing
component-level interface definitions.
2025-02-25 09:03:18 +00:00
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
2025-02-24 11:21:08 +00:00
Matthew Raymer fbb9fba347 docs(capacitor): improve main.capacitor.ts documentation and error handling
- Add comprehensive JSDoc header with process flow
- Document supported deep link routes
- Improve error type handling in deep link handler
- Add debug logging for initialization steps
- Update version number to 0.4.4

This improves code maintainability and debugging capabilities for
the Capacitor platform entry point.
2025-02-24 09:37:30 +00:00
Matthew Raymer 3b7a872ae1 refactor: update nostr-tools imports for better tree shaking
Changes:
- Import specific functions from nostr-tools instead of full module
- Replace nip06.accountFromExtendedKey with direct import
- Update related function calls to use imported version

This change reduces bundle size by enabling better tree shaking
of unused nostr-tools functionality.
2025-02-21 11:53:21 +00:00
Matthew Raymer cee7a6ded3 feat(logging): enhance debug logging across app
Improves application logging and error tracking:
- Add structured logging in main.common.ts for app initialization
- Enhance API error handling with detailed context in services
- Add deep link debugging in Capacitor platform
- Improve plan service logging with retry information
- Update endorser server logs for better cache debugging

Technical changes:
- Replace console.error with info for non-critical cache misses
- Add component context to global error handler
- Add detailed logging for plan loading and retries
- Improve deep link route matching logs
- Add mount state logging for Capacitor

This improves debugging capabilities across web and mobile platforms.
2025-02-20 10:36:47 +00:00
Matthew Raymer d2157a7d8c feat(mobile): add deep linking support for Capacitor apps
Adds native deep linking capabilities:
- Configure timesafari:// URL scheme for iOS and Android
- Add @capacitor/app dependency and configuration
- Implement deep link handler with improved error logging
- Support parameterized routes like claim/:id
- Add debug logging for native platforms
- Handle app mounting state for deep links

Technical changes:
- Update AndroidManifest.xml with intent filters
- Add URL scheme to iOS Info.plist
- Add @capacitor/app to Podfile and Gradle
- Enhance main.capacitor.ts with robust deep link handling
2025-02-19 13:07:08 +00:00
Matthew Raymer fbdf72557c fix: disable PWA for Capacitor builds
Updates PWA configuration to:
- Disable PWA features for Capacitor builds
- Add @capacitor/app dependency
- Update environment variable handling in build config

This prevents conflicts between PWA and native app functionality
when building for mobile platforms.

Technical changes:
- Add isCapacitor check to PWA disable logic
- Update VITE_PWA_ENABLED environment variable definition
- Add @capacitor/app to package dependencies
2025-02-18 11:54:42 +00:00
Matthew Raymer 74a412745a refactor: reorganize Vite config into modular files
Split monolithic vite.config.mjs into separate config files:
- vite.config.web.mts
- vite.config.electron.mts
- vite.config.capacitor.mts
- vite.config.pywebview.mts
- vite.config.common.mts
- vite.config.utils.mts

Updates:
- Modify package.json scripts to use specific config files
- Add electron-builder as dev dependency
- Update electron build configuration
- Fix electron resource paths
- Remove old vite.config.mjs and utils.js

This change improves maintainability by:
- Separating concerns for different build targets
- Making build configurations more explicit
- Reducing complexity in individual config files
2025-02-18 11:44:06 +00:00
Matthew Raymer eaf0b76e9e chore: cleanup console logs and test directories
- Remove commented console.log statements from main.ts
- Add test output directories to .gitignore:
  - playwright-tests/
  - test-playwright/
  - test-playwright-results/

Keeps repository clean by excluding test artifacts and removing
unused logging statements.
2025-02-18 09:04:01 +00:00
Matthew Raymer 5550d6a411 feat(tests): Add structured logging and screenshot capture
Enhances test debugging capabilities by adding:
- Structured logging with timestamps and categories (INFO/STEP/SUCCESS/WAIT)
- Systematic screenshot capture at key test steps
- Comprehensive file documentation headers
- Improved error handling with visual state capture
- Organized test step numbering and progress tracking

Key improvements:
- Added screenshot helper function with consistent naming
- Ensured test-results directory exists before captures
- Replaced console.log with structured logging utility
- Added try-catch blocks with failure state capture
- Improved debugging info for gift button not found error

Tests affected:
- 35-record-gift-from-image-share.spec.ts
- 40-add-contact.spec.ts

Note: Screenshots are stored in test-results/ with test-specific prefixes
2025-02-15 12:50:54 +00:00
Matthew Raymer 7d225ea7b2 Touch up gitignore 2025-02-14 11:00:27 +00:00
Matthew Raymer f0d0f63672 WIP (fix): improve electron build configuration and service worker handling
- Properly disable service workers in electron builds
- Add CSP headers for electron security
- Fix path resolution in electron context
- Improve preload script error handling and IPC setup
- Update build scripts for better electron/capacitor compatibility
- Fix router path handling in electron context
- Remove electron-builder dependency
- Streamline build process and output structure

This change improves the stability and security of electron builds while
maintaining PWA functionality in web builds. Service workers are now
properly disabled in electron context, and path resolution issues are
fixed.
2025-02-12 13:17:25 +00:00
Matthew Raymer 976976e2ea chore: update gradle and android build tool versions
- Update gradle wrapper from 8.9 to 8.10.2
- Update android build tools from 8.7.3 to 8.8.0
- Maintain build compatibility with latest tooling

These updates ensure the Android build process uses the latest stable
versions of the build tools and gradle wrapper.
2025-02-12 08:28:32 +00:00
Matthew Raymer d9085ced6d (chore): cleaning up formatting and relative references 2025-02-06 14:08:54 +00:00
Matthew Raymer 43983bd993 (chore): merge mostly pathway changes 2025-02-06 13:34:48 +00:00
Matthew Raymer 6c97cafedb Merge branch 'master' into split_build_process
fix: update import paths from alias to relative

- Replace @ alias imports with relative paths in HiddenDidDialog and UserProfileView
- Maintain consistent import style across components
- Improve build compatibility across different environments

This change helps ensure consistent module resolution across different
build targets including Capacitor and Electron builds.
2025-02-04 03:50:31 +00:00
Matthew Raymer b3b01652c4 Merge changes 2025-02-03 13:27:36 +00:00
Matthew Raymer f8db626d14 Fixes for APP_SERVER definition issue 2025-01-12 03:47:33 +00:00
Matthew Raymer c7ced87845 Merge branch 'master' into split_build_process 2025-01-12 00:05:16 +00:00
Matthew Raymer 94ee9e24ea Merge fixes 2025-01-11 12:45:43 +00:00
Matthew Raymer 9adb8b01ee Android Capacitor configurations 2025-01-10 11:04:59 +00:00
Matthew Raymer 0001eb8784 Updates for cleanup 2025-01-08 01:25:34 +00:00
Matthew Raymer a32c3c7765 Multi-build support; tested successfully for Electron 2025-01-07 09:40:31 +00:00
Matthew Raymer be8ba12df6 Refatored vite.config to be a bit more streamlined before adding alternate build options. This did end up requiring me to remove @ from imports for some reason. Tests came out fine. 2025-01-05 08:38:15 +00:00