Commit Graph

108 Commits

Author SHA1 Message Date
Jose Olarte III
ae49c0e907 feat(ios): implement native share target for images
Implement iOS Share Extension to enable native image sharing from Photos
and other apps directly into TimeSafari. Users can now share images from
the iOS share sheet, which will open in SharedPhotoView for use as gifts
or profile pictures.

iOS Native Implementation:
- Add TimeSafariShareExtension target with ShareViewController
- Configure App Groups for data sharing between extension and main app
- Implement ShareViewController to process shared images and convert to base64
- Store shared image data in App Group UserDefaults
- Add ShareImageBridge utility to read shared data from App Group
- Update AppDelegate to handle shared-photo deep link and bridge data to JS

JavaScript Integration:
- Add checkAndStoreNativeSharedImage() in main.capacitor.ts to read shared
  images from native layer via temporary file bridge
- Convert base64 data to data URL format for compatibility with base64ToBlob
- Integrate with existing SharedPhotoView component
- Add "shared-photo" to deep link validation schema

Build System:
- Integrate Xcode 26 / CocoaPods compatibility workaround into build-ios.sh
- Add run_pod_install_with_workaround() for explicit pod install
- Add run_cap_sync_with_workaround() for Capacitor sync (which runs pod
  install internally)
- Automatically detect project format version 70 and apply workaround
- Remove standalone pod-install-workaround.sh script

Code Cleanup:
- Remove verbose debug logs from ShareViewController, AppDelegate, and
  main.capacitor.ts
- Retain essential logger calls for production debugging

Documentation:
- Add ios-share-extension-setup.md with manual Xcode setup instructions
- Add ios-share-extension-git-commit-guide.md for version control best practices
- Add ios-share-implementation-status.md tracking implementation progress
- Add native-share-target-implementation.md with overall architecture
- Add xcode-26-cocoapods-workaround.md documenting the compatibility issue

The implementation uses a temporary file bridge (AppDelegate writes to Documents
directory, JS reads via Capacitor Filesystem plugin) as a workaround for
Capacitor plugin auto-discovery issues. This can be improved in the future by
properly registering ShareImagePlugin in Capacitor's plugin registry.
2025-11-24 20:46:58 +08:00
Jose Olarte III
1b4ab7a500 fix(ios): add shared Xcode scheme for App target
Resolves "No Scheme" issue in Xcode by adding a shared scheme file.
Capacitor doesn't automatically create shared schemes, so this needs
to be manually added and committed to version control.
2025-11-24 16:20:12 +08:00
11f122552d chore: bump to version 1.1.3 number 48 2025-11-19 19:58:48 -07:00
f848de15f1 chore: bump version to 1.1.2 build 47 (for fix to seed backup) 2025-11-06 08:54:11 -07:00
232b787b37 chore: bump to version 1.1.1 build 46 (emojis, starred projects, improved onboarding meetings) 2025-11-04 08:36:08 -07:00
Matthew Raymer
23b97d483d Android testing 2025-09-12 08:19:42 +00:00
Jose Olarte III
9dfb2fda27 Chore: regenerate podfile.lock checksum 2025-08-26 15:30:29 +08:00
Jose Olarte III
d3aa2e40a0 Merge branch 'master' into android-safe-area-insets 2025-08-26 15:26:18 +08:00
Jose Olarte III
08cda50f13 Merge branch 'master' into android-safe-area-insets 2025-08-26 15:20:12 +08:00
Jose Olarte III
504f26190f Merge branch 'master' into ios-contact-copy 2025-08-26 14:35:24 +08:00
Jose Olarte III
4ba58145d0 feat: implement safe area insets for Android and add development tooling
- Add @capacitor/status-bar dependency for safe area detection
- Implement SafeAreaPlugin for Android with proper inset calculation
- Create safeAreaInset.js utility for CSS custom property injection
- Update Android manifest and build configuration for plugin
- Integrate safe area handling across Vue components and views
- Update iOS Podfile and Android gradle configurations
- Add commitlint and husky for commit message validation

Technical changes:
- SafeAreaPlugin uses WindowInsets API for Android R+ devices
- Fallback detection for navigation bar and gesture bar heights
- CSS custom properties: --safe-area-inset-{top,bottom,left,right}
- Platform-specific detection (Android WebView only)
- StatusBar plugin integration for top inset calculation
2025-08-22 21:06:11 +08: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
01b2f9e8c1 chore: Bump to version 1.0.7 build 40. 2025-08-18 20:19:55 -06:00
Jose Olarte III
5a4bc9efc5 Merge branch 'master' into ios-contact-copy 2025-08-18 15:34:06 +08:00
Jose Olarte III
47509b1482 Merge branch 'master' into ios-contact-copy 2025-08-13 15:38:16 +08: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
ff61a0bdf3 chore: Bump to v 1.0.6 build 39 2025-08-10 18:37:45 -06:00
Jose Olarte III
c18a6b334f Added: native clipboard service
- Install @capacitor/clipboard@^6.0.0 for native clipboard support
- Create platform-agnostic ClipboardService with iOS/Android native API
2025-07-28 15:58:57 +08:00
64f24dc473 bump to version 1.0.5 and build 38 2025-07-25 06:02:59 -06:00
Matthew Raymer
4b88b63669 chore: reverting files to conform to master 2025-07-23 08:33:21 +00:00
002f240720 bump to version 1.0.4 and build 37 2025-07-20 20:37:26 -06:00
a9a8ba217c bump to version 1.0.3 build 36 2025-07-12 22:10:07 -06:00
Jose Olarte III
b26bc73a0f Feature: lock orientation mode 2025-06-23 17:39:21 +08:00
Jose Olarte III
59b13823c8 Feature: lock orientation mode 2025-06-23 17:39:21 +08:00
419243b5cd on mobile: bump version to 1.0.2 and build to 35 2025-06-20 20:27:16 -06:00
3baa6633a6 on mobile: bump version to 1.0.2 and build to 35 2025-06-20 20:27:16 -06:00
2b7c204013 bump to version 0.5.8 build 34 2025-06-18 16:31:31 -06:00
20ade415dc bump to version 0.5.8 build 34 2025-06-18 16:31:31 -06:00
1a886524b6 bump to build 33 and version 0.5.7 2025-06-18 02:34:18 -06:00
a5c5c2b9dd bump to build 33 and version 0.5.7 2025-06-18 02:34:18 -06:00
911028849b bump to build 32 & version 0.5.6 2025-06-17 05:25:45 -06:00
8629cefa13 bump to build 32 & version 0.5.6 2025-06-17 05:25:45 -06:00
69a9f5306f bump build to 31 and version to 0.5.5 2025-06-16 07:38:16 -06:00
4a43bc9c6c bump build to 31 and version to 0.5.5 2025-06-16 07:38:16 -06:00
Jose Olarte III
2b56f1f09b URL scheme config for iOS
- Registers the timesafari:// URL scheme
- Sets the bundle URL name to app.timesafari
2025-06-16 16:09:08 +08:00
Jose Olarte III
bb2a4ab76e URL scheme config for iOS
- Registers the timesafari:// URL scheme
- Sets the bundle URL name to app.timesafari
2025-06-16 16:09:08 +08:00
63c6cb8dc4 bump to build 30 version 0.5.4 2025-06-13 22:36:28 -06:00
676a301331 bump to build 30 version 0.5.4 2025-06-13 22:36:28 -06:00
5cde144585 fix problem with user-profile page, and bump to build 29 & version 0.5.3 2025-06-12 19:16:02 -06:00
530c7c1a13 fix problem with user-profile page, and bump to build 29 & version 0.5.3 2025-06-12 19:16:02 -06:00
a55cf31a93 bump to build 26 and version 0.5.1 2025-06-11 00:46:46 -06:00
f255ea389b bump to build 26 and version 0.5.1 2025-06-11 00:46:46 -06:00
4e9c7bbf70 bump to build 25 & version 0.5.0 2025-06-09 09:26:21 -06:00
8609f8458d bump to build 25 & version 0.5.0 2025-06-09 09:26:21 -06:00
32f5c52474 fix linting 2025-06-09 09:09:54 -06:00
8f5c34bc5f fix linting 2025-06-09 09:09:54 -06:00
27d253c6ad bump build to 23 and version to 0.4.8 2025-06-07 18:54:56 -06:00
b939a5e592 bump build to 23 and version to 0.4.8 2025-06-07 18:54:56 -06:00
87a41d223f bump to build 22 version 0.4.7 (though I think the android capacitor.config.json appId is wrong) 2025-06-07 18:45:24 -06:00
aa62037fae bump to build 22 version 0.4.7 (though I think the android capacitor.config.json appId is wrong) 2025-06-07 18:45:24 -06:00