Commit Graph

94 Commits

Author SHA1 Message Date
1ea4608f0d feat: remove unused settings DB entries, only uninstall Android on request, bump version to 1.1.1-beta 2025-09-20 21:49:49 -06:00
Jose Olarte III
a3d6b458b1 fix: load environment-specific .env files in iOS/Android/Electron build scripts
- iOS, Android, and Electron build scripts now load .env.development, .env.test, .env.production files
- Previously only loaded generic .env file which doesn't exist
- Ensures consistent image server URL across all build targets
- Fixes issue where build:ios:dev used production image URL instead of test URL
- Aligns with web build script behavior for environment variable precedence

Resolves inconsistent VITE_DEFAULT_IMAGE_API_SERVER values between build targets.
2025-09-18 22:38:53 +08:00
Matthew Raymer
2c439ef439 experiment: setting up emulators 2025-09-15 10:14:09 +00:00
Jose Olarte III
8827c4a973 fix(electron): resolve TypeScript errors in Electron build configuration
- Create separate Electron-specific capacitor config
- Update build script to not copy main config to Electron directory
- Fix TypeScript compilation by excluding main config from Electron tsconfig

Resolves TypeScript compilation errors in npm run build:electron:dev
2025-08-27 19:04:27 +08:00
Matthew Raymer
9f2ef24b2b feat(guard): enhance build architecture guard with Android protection and feedback system
- Add Android-specific build validation for asset management and API routing
- Implement feedback collection system for continuous guard improvement
- Enhance sensitive path detection to include capacitor-assets.config.json and resources/
- Add Android change detection with specific testing guidance
- Integrate feedback analysis command for maintainer insights
- Update guard rules to reflect enhanced Android build system complexity

The guard now protects sophisticated Android build features including asset validation,
resource generation, and platform-specific API routing while collecting usage data
for continuous improvement.
2025-08-22 08:43:21 +00:00
Jose Olarte III
8fc9118d50 feat: Add automatic Android asset validation to prevent build failures
- Add validate_android_assets() function to build-android.sh
- Check for missing source assets (icon.png, splash.png, splash_dark.png)
- Verify Android resources exist (drawable/splash.png, mipmap/*/ic_launcher*.png)
- Auto-regenerate missing resources using @capacitor/assets
- Integrate validation into main build process with exit code 9
- Add npm run assets:validate:android for manual validation
- Support --assets-only flag for asset-only operations
- Create comprehensive documentation in doc/android-asset-validation.md

Fixes build failures caused by missing drawable/splash and mipmap/ic_launcher resources.
Prevents "Android resource linking failed" errors during Gradle builds.

Resolves: Android build failures due to missing asset resources
2025-08-22 16:25:31 +08:00
Matthew Raymer
a6a71628ec fix: resolve mapfile compatibility issue in build architecture guard
- Replace mapfile command with portable alternative for cross-shell compatibility
- Add troubleshooting documentation for common shell compatibility issues
- Update BUILDING.md with Build Architecture Guard documentation
- Ensure script works across different shell environments

Fixes pre-commit hook failures on macOS and other systems where mapfile is not available.
2025-08-22 08:16:04 +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
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
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
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
3aaea9c829 Merge branch 'master' into fix-deep-link 2025-08-19 19:53:38 -06:00
Matthew Raymer
e733089bad feat(git-hooks): enhance pre-commit hook with whitelist support for console statements
Add whitelist functionality to debug checker to allow intentional console statements in specific files:
- Add WHITELIST_FILES configuration for platform services and utilities
- Update pre-commit hook to skip console pattern checks for whitelisted files
- Support regex patterns in whitelist for flexible file matching
- Maintain security while allowing legitimate debug code in platform services

This resolves the issue where the hook was blocking commits due to intentional console statements in whitelisted files like WebPlatformService and CapacitorPlatformService.
2025-08-19 07:49:33 +00:00
Matthew Raymer
1211b87f4e feat(git): implement debug code prevention system with deliberate installation
Implements comprehensive pre-commit hook system to prevent debug code from
reaching protected branches while maintaining developer choice.

- Hooks stored in scripts/git-hooks/ (not in .git tree)
- Deliberate installation required - no forced behavior
- Automated installation script for team members
- Comprehensive testing
- Branch-aware execution (protected vs feature branches)
- Configurable patterns and protected branch list

Philosophy: Each developer chooses whether to use the hook, ensuring
team flexibility while providing powerful debug code prevention tools.
2025-08-19 05:51:05 +00:00
Matthew Raymer
8724f8bbe0 fix: resolve CHANGELOG version mismatch and Android clean hanging issue
- Fix CHANGELOG.md version from [1.0.7] to [1.0.8-beta] to match package.json
- Replace problematic clean:android npm script with robust clean-android.sh script
- Add timeout protection (30s) to prevent adb commands from hanging indefinitely
- Include cross-platform timeout fallback using perl for macOS compatibility
- Improve logging and error handling for Android cleanup process

Fixes team member reported issues:
- CHANGELOG version inconsistency
- clean:android getting stuck during execution
2025-08-19 03:41:30 +00:00
Matthew Raymer
bc1214e9db feat(dev): enhance development environment and dependency management
- Add comprehensive environment setup documentation to README.md
- Add check:dependencies npm script for environment validation
- Update build scripts to use npx for local dependencies
- Enhance Android build script with dependency validation
- Add new check-dependencies.sh script for environment diagnostics
2025-08-19 03:36:57 +00:00
b43ff58b71 fix: Fix logging methods for iOS build. 2025-08-18 19:38:43 -06:00
Matthew Raymer
3aa57c5ced Merge branch 'master' into imagemagick-anrdoid 2025-08-18 06:12:32 +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
e07da3ffe1 fix: Change some build instructions to include BUILD_MODE, and other script tweaks 2025-08-14 08:26:46 -06:00
Matthew Raymer
495a94827a refactor(assets): convert asset management scripts to TypeScript with tsx
- Replace JavaScript asset scripts with TypeScript equivalents
- Install tsx for direct TypeScript execution without compilation
- Add proper TypeScript interfaces for AssetConfig and validation
- Update package.json scripts to use tsx instead of node
- Remove old JavaScript files (assets-config.js, assets-validator.js)
- Maintain all existing functionality while improving type safety
- Fix module syntax issues that caused build failures on macOS

Scripts affected:
- assets:config: node → tsx scripts/assets-config.ts
- assets:validate: node → tsx scripts/assets-validator.ts

Benefits:
- Eliminates CommonJS/ES module syntax conflicts
- Provides better type safety and IntelliSense
- Modernizes development tooling
- Ensures cross-platform compatibility
2025-08-14 09:08:06 +00:00
Matthew Raymer
76749a097d fix(build): update Android build script to use new asset validation
- Replace check-android-resources.sh call with npm run assets:validate
- Fix 'No such file or directory' error in build-android.sh
- Ensure builds work consistently across all development environments
- Maintain build workflow while using new standardized asset system

This fix resolves the build failure that occurred after removing legacy
asset generation scripts, ensuring the new capacitor-assets workflow
integrates seamlessly with existing build orchestration.

Tested: Android build completes successfully with asset validation
Assets: 87 platform assets generated automatically via capacitor-assets
2025-08-14 08:43:40 +00:00
Matthew Raymer
a284067522 feat(assets): standardize asset configuration with capacitor-assets
- Replace manual ImageMagick scripts with official capacitor-assets toolchain
- Consolidate duplicate asset sources to single resources/ directory
- Implement comprehensive asset configuration schema and validation
- Add CI safeguards for asset validation and platform asset detection
- Convert capacitor.config.json to TypeScript format
- Pin Node.js version for deterministic builds
- Remove legacy manual asset generation scripts:
  * generate-icons.sh, generate-ios-assets.sh, generate-android-icons.sh
  * check-android-resources.sh, check-ios-resources.sh
  * purge-generated-assets.sh
- Add new asset management commands:
  * assets:config - generate/update configurations
  * assets:validate - validate configurations
  * assets:clean - clean generated assets (dev only)
  * build:native - build with asset generation
- Create GitHub Actions workflow for asset validation
- Update documentation with new asset management workflow

This standardization eliminates asset duplication, improves build reliability,
and provides a maintainable asset management system using Capacitor defaults.

Breaking Changes: Manual asset generation scripts removed
Migration: Assets now sourced from resources/ directory only
CI: Automated validation prevents committed platform assets
2025-08-14 07:22:26 +00:00
Matthew Raymer
1a6b1e6151 Merge branch 'master' into imagemagick-anrdoid 2025-08-14 05:57:46 +00:00
Matthew Raymer
45a8859a19 fix(assets): resolve Android and iOS resource generation issues
Android build was failing due to missing drawable and mipmap directories
for splash screens and launcher icons. iOS was missing complete asset
catalog structure for app icons and splash screens.

- Create missing Android resource directories (drawable, mipmap-*)
- Add splash screen files to Android drawable directory
- Generate complete set of Android launcher icons
- Create iOS asset catalog structure with proper Contents.json files
- Generate 21 iOS assets (app icons + splash screens) using ImageMagick
- Add resource validation scripts for both platforms
- Enhance Android resource check to auto-create missing directories

NOTE: you need to test this from a fresh clone and after an npm install!

Android build now completes successfully. iOS assets ready for macOS/Xcode
builds. Both platforms have complete resource sets for development.
2025-08-13 07:07:48 +00:00
Matthew Raymer
3926f9289d fix(build): update ImageMagick commands to use modern v7 syntax
- Replace deprecated 'convert' commands with 'magick' for ImageMagick v7+
- Add automatic version detection with fallback to 'convert' for v6 compatibility
- Update generate-android-icons.sh and generate-icons.sh scripts
- Eliminate deprecation warnings during Android builds
- Maintain backward compatibility for older ImageMagick installations

The scripts now automatically detect ImageMagick version and use the appropriate
command syntax, eliminating the "convert command is deprecated" warnings while
preserving functionality across different ImageMagick versions.
2025-08-13 06:42:32 +00:00
Matthew Raymer
ea6757c696 fix(android): resolve icon generation and build script errors
Fixed Android build issues that were preventing successful builds:
- Updated icon generation script to create proper adaptive icons without
  referencing missing drawable files
- Changed log_warning function call to log_warn in build script
- Icon generation now creates foreground mipmap files and proper XML configs
- Build process successfully generates all required Android assets

Resolves "export: production).=: not a valid identifier" error and enables
successful Android builds with automatic resource generation.

https://app.clickup.com/t/86b5uau17
2025-08-13 02:29:49 +00:00
Matthew Raymer
7df52312ba fix(build): resolve shell script export error in .env.development
Fixed malformed comment in .env.development that was causing
"export: production).=: not a valid identifier" error in build scripts.
The comment was split across lines, causing the shell to interpret
" production)." as a variable assignment.

- Removed malformed comment line that was breaking build:web script
- Build script now successfully validates environment and starts server
- Resolves issue preventing Playwright tests from running properly
2025-08-12 06:26:28 +00:00
Matthew Raymer
c27caf8887 Fix build script to fail on TypeScript errors
Update measure_time function to properly handle command exit codes:
- Check command success/failure and return appropriate exit code
- Log failure messages with timing and exit code information
- Ensure TypeScript type checking failures stop the build process
- Maintains timing logs for both success and failure cases

This prevents deployment of code with TypeScript type errors by making
test and production builds fail fast when tsc --noEmit reports issues.
2025-08-06 03:10:17 +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
3b1a63468c Add iOS support for custom API IP configuration
Extend custom API IP feature to iOS platform with platform-appropriate defaults:
- Android: Defaults to 10.0.2.2 for emulator, custom IP for physical devices
- iOS: Uses localhost for simulator, custom IP for physical devices
- Added npm scripts for iOS custom IP builds (dev:custom, test:custom)
- Updated documentation to cover both platforms with examples
- Consistent --api-ip parameter across Android and iOS build scripts

Usage:
  ./scripts/build-ios.sh --dev                    # Default localhost
  ./scripts/build-ios.sh --dev --api-ip 192.168.1.100  # Custom IP
2025-08-05 10:43:51 +00:00
Matthew Raymer
1d6418b02c Add custom API IP support for Android physical device development
Implement --api-ip parameter for Android builds with smart defaults:
- Defaults to 10.0.2.2 for emulator development when no IP specified
- Supports custom IP for physical device development
- Added npm scripts for common use cases (dev:custom, test:custom)
- Updated help documentation with usage examples
- Created comprehensive documentation with troubleshooting guide

Usage:
  ./scripts/build-android.sh --dev                    # Default 10.0.2.2
  ./scripts/build-android.sh --dev --api-ip 192.168.1.100  # Custom IP
2025-08-05 10:26:38 +00:00
Matthew Raymer
32f589b866 Fix Android emulator API connectivity with cleaner build script approach
- Move Android-specific API server logic from common.sh to build-android.sh
- Remove unnecessary ANDROID_BUILD environment variable
- Set localhost:3000 as default in common.sh for all Capacitor builds
- Override to 10.0.2.2:3000 specifically in build-android.sh for Android development
- Fix execution order issue where common.sh ran before ANDROID_BUILD was set
- Maintain proper separation: Android emulator uses 10.0.2.2, iOS simulator uses localhost
2025-08-05 09:08:50 +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
Jose Olarte III
118e93b85a Fix: invalid clean command 2025-07-30 15:45:59 +08: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
53282b4237 fix: resolve duplicate APP_SERVER import declarations
Remove duplicate APP_SERVER imports in ContactsView.vue and ClaimView.vue that were causing compilation errors during testing. The duplicate imports occurred when both files had APP_SERVER imported from constants/app and also assigned as class properties.

- ContactsView.vue: Remove duplicate import, keep class property assignment
- ClaimView.vue: Remove duplicate import, keep class property assignment
- Fixes Vite compilation errors that were blocking test execution
- 33/38 tests now pass successfully

This resolves the "Identifier 'APP_SERVER' has already been declared" errors that were preventing the development server from running properly.
2025-07-24 06:30:16 +00:00
Matthew Raymer
ac1d2095ec Add asset purge script for git history cleanup 2025-07-22 08:42:51 +00:00
Matthew Raymer
29e6d5e099 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
Matthew Raymer
d355d51ea3 feat: centralize identity creation with router navigation guard
Migrate automatic identity creation from scattered view components to centralized
router navigation guard for consistent behavior across all entry points.

**Key Changes:**
- Add global beforeEach navigation guard in router/index.ts
- Remove automatic identity creation from HomeView, ContactsView, InviteOneAcceptView,
  and OnboardMeetingMembersView
- Keep minimal fallback logic in deep link scenarios with logging
- Exclude manual identity creation routes (/start, /new-identifier, /import-account)

**Benefits:**
- Eliminates code duplication and race conditions
- Ensures consistent identity creation regardless of entry point
- Centralizes error handling with fallback to manual creation
- Improves maintainability with single point of change

**Files Modified:**
- src/router/index.ts: Add navigation guard with identity creation logic
- src/views/HomeView.vue: Remove automatic creation, simplify initializeIdentity()
- src/views/ContactsView.vue: Add fallback with logging
- src/views/InviteOneAcceptView.vue: Add fallback with logging
- src/views/OnboardMeetingMembersView.vue: Add fallback with logging

**Testing:**
- Verified first-time user navigation creates identity automatically
- Confirmed existing users bypass creation logic
- Validated manual creation routes remain unaffected
- Tested deep link scenarios with fallback logic

**Documentation:**
- Created docs/identity-creation-migration.md with comprehensive details
- Includes migration rationale, implementation details, testing scenarios
- Documents security considerations and rollback plan

Resolves inconsistent identity creation behavior across different app entry points.
2025-07-17 04:03:05 +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
6d4fb4f57a Remove manual service worker registration; rely on VitePWA auto-registration
- Deleted src/registerServiceWorker.ts and all related imports
- Cleaned up WebPlatformService and main.web.ts to remove manual SW logic
- Updated VitePWA config for correct dev/prod SW handling
- Fixed missing FontAwesome download icon in PWA prompt
- Updated docs to reflect new PWA registration approach

PWA now works reliably in all web environments with zero manual SW code.
2025-07-15 06:13:33 +00:00
Matthew Raymer
14276fbc9c Remove redundant build:capacitor:* script aliases
- Removed 24 redundant build:capacitor:* scripts that were just aliases
- Kept essential build:capacitor and build:capacitor:sync scripts
- Improves script clarity and reduces maintenance overhead
- No functional changes to build processes
2025-07-14 02:00:51 -07:00
Matthew Raymer
bdef67cbe4 Add full iOS build system: script, npm integration, and documentation
- Implement scripts/build-ios.sh with dev/test/prod, IPA, deploy, and Xcode support
- Integrate all iOS build and legacy scripts into package.json (including deploy)
- Update docs/ios-build-scripts.md: mark as complete, add usage and status
- Update README.md: add iOS to quick start, platform builds, and docs links
- Ensure iOS build system matches Android/Electron pattern for consistency
2025-07-11 08:56:12 +00:00
Matthew Raymer
abd8f7a5dd feat: implement script-based database clearing for development
- Add interactive clear-database.sh script with platform detection
- Support Electron SQLite database clearing (Linux/macOS/Windows)
- Provide web browser clearing instructions (custom profiles + DevTools)
- Remove complex programmatic database clearing from platform services
- Update documentation with comprehensive clearing guide
- Add safety features: interactive guidance, platform-specific paths
- Simplify approach: avoid browser storage complications and race conditions

Enables reliable database clearing for development without complex code.
2025-07-11 08:04:28 +00:00
Matthew Raymer
6e00aac0b9 fix(electron): suppress DevTools source map error for Capacitor SQLite plugin
Remove sourceMappingURL comment from plugin.js in @capacitor-community/sqlite to
prevent Electron DevTools from attempting to load the source map via the custom
capacitor-electron:// protocol. This eliminates harmless but noisy 404 warnings
in development. No impact on runtime or debugging.

- Remove //# sourceMappingURL=plugin.js.map from plugin.js
- Confirmed plugin.js.map exists for manual inspection if needed
- No changes to app logic or build process
2025-07-11 06:45:35 +00:00
Matthew Raymer
5f790dd90b refactor: implement clean modular Electron build system
Replace chained npm commands with single build-electron.sh script supporting
multiple build modes (dev/test/prod), platforms (windows/mac/linux), and
package types (appimage/deb/dmg). Add platform validation to prevent
cross-platform build issues and integrate cleaning functionality.

- Replace 15+ chained npm scripts with single modular build script
- Add platform detection and validation with early failure on mismatch
- Support environment-specific builds (development/test/production)
- Add comprehensive documentation in docs/electron-build-patterns.md
- Update BUILDING.md with new build patterns and examples
- Remove legacy electron:build:* scripts and consolidate under build:electron:*
- Add clean:electron script integrated into build process
- Improve error handling and user feedback throughout build process

This refactoring follows DRY principles, eliminates command chaining,
and provides a more maintainable and user-friendly build system.
2025-07-11 06:33:21 +00:00
Matthew Raymer
26f303bae9 Enable full PWA install experience in all web modes
- Add PWAInstallPrompt component for custom install UI and event handling
- Register PWAInstallPrompt in App.vue for global visibility
- Enable PWA features and install prompt in dev, test, and prod (vite.config.web.mts)
- Update service worker registration to work in all environments
- Update docs/build-web-script-integration.md with PWA install guidance and visual cues
- Add scripts/build-web.sh for unified web build/dev workflow

PWA is now installable and testable in all web environments, with clear user prompts and desktop support.
2025-07-11 04:41:38 +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