Add haptic feedback, rich task completion, and Google Sign-In preparation

- Add platform haptic feedback abstraction (HapticFeedback.kt) with
  implementations for Android, iOS, JVM, JS, and WASM
- Enhance CompleteTaskDialog with interactive 5-star rating, image
  thumbnails, and haptic feedback
- Add ImageBitmap platform abstraction for displaying selected images
- Localize TaskTemplatesBrowserSheet with string resources
- Add Android widgets infrastructure (small, medium, large sizes)
- Add Google Sign-In button components and auth flow preparation
- Update strings.xml with new localization keys for completions,
  templates, and document features
- Integrate haptic feedback into ThemePickerDialog

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-12-13 00:51:17 -06:00
parent a3e1c338d2
commit 311a30ed2d
61 changed files with 3200 additions and 290 deletions

View File

@@ -100,6 +100,54 @@
<action android:name="com.example.casera.ACTION_UNCANCEL_TASK" />
</intent-filter>
</receiver>
<!-- Widget Task Complete Receiver -->
<receiver
android:name=".widget.WidgetTaskActionReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.example.casera.COMPLETE_TASK" />
</intent-filter>
</receiver>
<!-- Small Widget Receiver (2x1) -->
<receiver
android:name=".widget.CaseraSmallWidgetReceiver"
android:exported="true"
android:label="@string/widget_small_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/casera_small_widget_info" />
</receiver>
<!-- Medium Widget Receiver (4x2) -->
<receiver
android:name=".widget.CaseraMediumWidgetReceiver"
android:exported="true"
android:label="@string/widget_medium_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/casera_medium_widget_info" />
</receiver>
<!-- Large Widget Receiver (4x4) -->
<receiver
android:name=".widget.CaseraLargeWidgetReceiver"
android:exported="true"
android:label="@string/widget_large_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/casera_large_widget_info" />
</receiver>
</application>
</manifest>