Skip to content

Claude/festive einstein c69o8j#4

Open
notrishabhjain wants to merge 71 commits into
LearnWeb3DAO:mainfrom
notrishabhjain:claude/festive-einstein-c69o8j
Open

Claude/festive einstein c69o8j#4
notrishabhjain wants to merge 71 commits into
LearnWeb3DAO:mainfrom
notrishabhjain:claude/festive-einstein-c69o8j

Conversation

@notrishabhjain

Copy link
Copy Markdown

No description provided.

kiro-agent and others added 30 commits May 9, 2026 17:36
- Remove all Next.js files (package.json, tsconfig, src/, public/, etc.)
- Create Android Gradle project structure with AGP 8.2.0
- Add app/build.gradle with compileSdk 34, Room, Material, RecyclerView deps
- Add AndroidManifest.xml with notification listener, receivers, activities
- Create package directories for model, database, service, receiver, ui, util
- Add Android-specific .gitignore
- Add README with project overview and setup instructions

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…ion, priority assignment, and reminder system

- Add Room entity (Task.java) with all fields and priority label helper
- Add TaskDao with CRUD operations and priority-sorted queries
- Add AppDatabase singleton with fallbackToDestructiveMigration
- Add TypeConverters for Long/Date conversions
- Add TaskExtractor for notification parsing and due date extraction
- Add PriorityAssigner with multi-factor scoring (app, keywords, time)
- Add NotificationCaptureService extending NotificationListenerService
- Add ReminderScheduler using AlarmManager.setExactAndAllowWhileIdle
- Add ReminderReceiver with single Mark Complete action button
- Add TaskCompleteReceiver for marking tasks done from notification
- Add BootReceiver to reschedule alarms after device reboot
- Add androidx.preference dependency for PreferenceManager usage

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…and XML resources

- Add colors.xml with priority colors and Material Design palette
- Add strings.xml with all user-facing strings externalized
- Add themes.xml with Material Components DayNight theme
- Add activity_main.xml with Toolbar, RecyclerView, empty state
- Add item_task.xml with priority color bar, task details, Mark Complete button
- Add activity_settings.xml with app toggles and reminder interval spinners
- Add drawable vector icons (check circle, settings) and priority indicator shapes
- Add menu_main.xml with settings action item
- Add adaptive icon XML resources
- Add notification_listener_config.xml
- Add TaskAdapter.java with ViewHolder, priority coloring, complete callback
- Add MainActivity.java with task loading, permission checks, empty state
- Add SettingsActivity.java with per-app toggles and interval configuration
- Add PreferenceManager.java wrapping SharedPreferences for app settings

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…nused allprojects block, remove unused preference dependency

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…alarm perms, goAsync, logging, tests

- Prevent self-capture feedback loop by skipping own package in NotificationCaptureService
- Add duplicate task prevention by checking notificationKey before insert
- Add reminder count field to Task and cap reminders (20 High, 15 Medium, 10 Low)
- Check canScheduleExactAlarms() on API 31+ and fall back to inexact alarms
- Use goAsync() in BootReceiver to prevent process kill during rescheduling
- Replace empty catch blocks with Log.e() in TaskCompleteReceiver and ReminderReceiver
- Add unit tests for TaskExtractor and PriorityAssigner
- Bump Room database version to 2 for new reminderCount column

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…eck, increment ordering

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
feat: Native Android task automation app (TaskFlow)
- Add completedAt, assignee, isFollowUp, linkedTaskId, recurrenceRule,
  recurrenceInterval fields to Task entity
- Create TeamMember, Tag, and TaskTagCrossRef Room entities
- Add new DAO queries for completed tasks, search, filtering, stats
- Create TeamMemberDao and TagDao interfaces
- Bump database version to 3 with all new entities
- Add fragment, viewpager2, work-runtime, mail, gson dependencies
- Add INTERNET, READ_CALENDAR, WRITE_CALENDAR permissions

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
- Create BottomNavigationView with Today, Tasks, Import, Team, More tabs
- Add vector drawable icons for all navigation tabs
- Rewrite activity_main.xml with toolbar, fragment container, and bottom nav
- Create TodayFragment showing due-today and overdue tasks
- Create TasksFragment with full task list and FAB for manual task creation
- Create ImportFragment with clipboard paste, file picker, and parse UI
- Create TeamFragment with member list and add member FAB
- Create MoreFragment with History, Settings, and Export menu items
- Refactor MainActivity to host fragments via FragmentManager
- Add dialog_add_task.xml for manual task creation
- Update strings.xml with all new tab labels, button labels, and empty states

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…ting, undo on complete, swipe gestures, search/filter

- Step 1: Dark/Light Mode Toggle with values-night/colors.xml, PreferenceManager
  theme persistence, SettingsActivity spinner, and AppCompatDelegate integration
- Step 2: History Queue with HistoryFragment, HistoryAdapter, restore/delete actions
- Step 3: Manual Task Creation with TimePickerDialog, validation, and ReminderScheduler
- Step 4: Undo on Complete with 5-second Snackbar and deferred DB persistence
- Step 5: Task Editing with TaskEditActivity, full field editing, and manifest registration
- Step 6: Swipe Gestures with SwipeCallback (left=complete, right=snooze 1hr)
- Step 7: Search and Filter with TextWatcher search and priority filter Chips

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…cript import, team CRUD, calendar integration

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…ring tasks, home screen widget, export/backup, email digest

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…urringTaskManager, and ExportManager

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
- Fix TaskTagCrossRef primary key mismatch: remove @ColumnInfo annotations
  so column names match the primaryKeys field names (taskId, tagId)
- Update TagDao queries to use correct column names (taskId/tagId)
- Fix fragment executor leak: move executor.shutdown() from onDestroy() to
  onDestroyView() in all 5 fragments (FragmentTransaction.replace only calls
  onDestroyView, not onDestroy)
- Fix widget recurring task creation: fetch task before marking complete,
  then create next recurrence via RecurringTaskManager
- Remove unused READ_CALENDAR and WRITE_CALENDAR permissions (calendar
  integration uses ACTION_INSERT intent which delegates to calendar app)

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
feat: comprehensive TaskFlow upgrade - all 4 phases
ci: add GitHub Actions workflow to build debug APK
- Separate widget intent filters in AndroidManifest.xml so APPWIDGET_UPDATE
  is not mixed with custom WIDGET_COMPLETE_TASK action
- Add previewImage to widget_info.xml for better widget picker display
- Add notifyAppWidgetViewDataChanged in onUpdate to force data refresh
- Replace setupAppToggles to show all installed apps via PackageManager
  instead of only previously-seen notification sources
- Fix calendar intent to use task description as event title since
  notification title is often the sender name, not actionable content
…lendar

Fix: Widget, Settings app list, Calendar event title
… field, Subtask entity, DB v4)

- Add 80+ new English, Hindi/Hinglish, and Hindi Unicode keywords to TaskExtractor
- Add starred boolean field with Room annotation to Task entity
- Create Subtask entity with id, taskId, title, completed, createdAt fields
- Create SubtaskDao with CRUD and count query methods
- Add Subtask.class to AppDatabase entities array, bump version to 4
- Add starred task queries and overdue priority escalation to TaskDao
- Replace fixed 1-hour snooze with dialog offering 1hr, 3hr, tomorrow
  morning, and custom date/time picker options
- Add star toggle button on task cards that persists to database
- Starred tasks sort to top via getAllTasksByPriorityWithStarred() query
- Add BadgeUtils to update app icon badge on task creation/completion
- Add btn_star ImageButton and text_subtask_progress to item_task.xml
- Add OnTaskStarListener interface to TaskAdapter
- Call BadgeUtils from NotificationCaptureService, fragments, MainActivity
…duplication

- QuickAddReceiver: persistent notification with RemoteInput for adding tasks directly
- WeeklySummaryWorker: periodic work scheduled for Sunday 6PM with task stats notification
- Smart Deduplication: ConcurrentHashMap-based 5-minute window batching in NotificationCaptureService
- Added quick_add_enabled preference toggle in PreferenceManager
- Registered QuickAddReceiver in AndroidManifest.xml
- Added Quick Add and Weekly Summary strings to strings.xml
- Fix double-remove bug in TaskEditActivity.onSubtaskDelete
- Add ForeignKey CASCADE on Subtask.task_id for data integrity
- Bound deduplication map size and run cleanup before dedup check
- Replace N+1 DB queries in TaskAdapter.bind() with pre-loaded map
…lendar

Fix bugs + add 8 new features + expand keywords
- Add ACTION_VIEW_TASK to TaskWidgetProvider for opening tasks from widget
- Set separate fill-in intents: title click opens detail, checkmark completes
- Use mutable PendingIntent template to support both actions via fill-in
- Register ACTION_VIEW_TASK in AndroidManifest intent-filter
- TaskEditActivity shows Toast and finishes gracefully on missing/invalid task ID
- TaskEditActivity handles null task from DB (deleted between list and click)
- Add onSaveInstanceState/onRestoreInstanceState for configuration changes
- Update widget_info.xml with Android 12+ targetCellWidth/Height and description
- Make widget task title clickable with selectableItemBackground
- Add task_not_found and widget_description strings

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
- Add ACTION_VIEW_TASK to TaskWidgetProvider for opening tasks from widget
- Set separate fill-in intents: title click opens detail, checkmark completes
- Use mutable PendingIntent template to support both actions via fill-in
- Register ACTION_VIEW_TASK in AndroidManifest intent-filter
- TaskEditActivity shows Toast and finishes gracefully on missing/invalid task ID
- TaskEditActivity handles null task from DB (deleted between list and click)
- Add onSaveInstanceState/onRestoreInstanceState for configuration changes
- Update widget_info.xml with Android 12+ targetCellWidth/Height and description
- Make widget task title clickable with selectableItemBackground
- Add task_not_found and widget_description strings
kiro-agent and others added 21 commits May 11, 2026 13:53
…and context-aware task extraction

- Add TranscriptTranslator.java: dictionary-based Hindi/Hinglish to English
  translation using phrase-level then word-level matching with Devanagari support
- Add ContextAwareTaskExtractor.java: full-transcript task extraction using
  sliding window to correlate actions, assignees, and deadlines across sentences
- Update TranscriptParser.java: new workflow translates first, then extracts tasks
  via context-aware extractor, with IntelligentTranscriptAnalyzer as fallback
- Update ImportFragment.java: show collapsible translated transcript section when
  Hindi/Hinglish content is detected
- Add string resources for translation UI section
…d enhanced notification parsing

- SmartTaskCategorizer: auto-categorizes tasks by keyword matching across 6 categories
  (Communication, Development, Documentation, Meeting, Administrative, Personal)
  and suggests priority based on urgency keywords and deadline proximity
- DuplicateTaskDetector: detects near-duplicate tasks using normalized title word
  overlap (>70% threshold) to prevent redundant task creation
- Bulk actions in TasksFragment: long-press enters selection mode with checkboxes,
  supports Complete All, Delete All, Change Priority, Select All/Deselect All
- Enhanced NotificationCaptureService: extracts EXTRA_TEXT_LINES and EXTRA_SUB_TEXT
  for richer context, detects URLs in notification text, uses sender name as assignee
  for messaging apps, swaps title/text for email apps, integrates smart categorization
  and duplicate detection before task creation
- Fix checkbox/priority_bar overlap by re-anchoring priority_bar to
  start_toEndOf checkbox_select in item_task.xml
- Remove English collision words (do, main, to, the) from
  TranscriptTranslator word map to prevent corrupting English text
- Change TaskAdapter selection from position-based Set<Integer> to
  ID-based Set<Long> for stable selection across list mutations
- Move email app title/text swap before buildEnhancedDescription call
  in NotificationCaptureService to fix description duplication
- Cap duplicate task description growth at 2000 chars, keeping only
  last 1500 chars before appending new text
- TaskAdapter: null the OnCheckedChangeListener before calling setChecked()
  to prevent stale listeners from firing on recycled ViewHolders, then
  attach the new listener afterward.

- TranscriptTranslator: replace String.contains() with word-boundary
  matching in hasRomanizedHindiMarkers(). Split input into words and use
  Set membership to avoid false positives where markers like 'hai', 'tak',
  'kal' matched as substrings of English words ('chair', 'take', 'local').
…s-v2

Fix crashes, widget, calendar and overhaul transcript extraction
- Extract messages from Notification.EXTRA_MESSAGES (MessagingStyle) for
  WhatsApp/WhatsApp Business bundled notifications
- Use EXTRA_CONVERSATION_TITLE for group chat names
- Handle summary notifications with EXTRA_TEXT_LINES
- Prefer EXTRA_BIG_TEXT over EXTRA_TEXT when longer
- Add isFinishing() guards on all runOnUiThread calls in TaskEditActivity
- Wrap all executor.execute() blocks in try-catch for shutdown safety
- Add null checks for currentTask in chip close, assignTag, subtask ops
- Handle activity recreation with invalid taskId gracefully
- Add unit tests for WhatsApp null title and WhatsApp Business edge cases

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
… button

- Add WhatsApp self-forward detection: when notification sender matches
  the user's configured WhatsApp display name, auto-create a HIGH priority
  task with source 'WhatsApp (Self-Forward)', skipping deduplication
- Add companion notification with 'Create Task' action button for all
  captured actionable notifications (toggleable via preferences)
- Create NotificationTaskReceiver to handle task creation from action button
- Create NotificationDismissReceiver to handle dismiss action
- Add PreferenceManager keys: whatsapp_self_name, show_task_action_button
- Add WhatsApp name input and task action toggle in SettingsActivity
- Add notification channel 'task_action_channel' with IMPORTANCE_LOW
- Add 60-second auto-dismiss timeout on companion notifications
- Register both receivers in AndroidManifest.xml
- Add all required string resources

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
- Fix self-forward detection to use whatsAppSender (from EXTRA_MESSAGES)
  instead of title variable that gets overwritten by EXTRA_CONVERSATION_TITLE
- Prevent duplicate task creation: when action button is enabled, only post
  companion notification without auto-creating a task (user-initiated mode)
- Fix executor leak in NotificationTaskReceiver by using a static shared
  executor instead of creating a new one per broadcast
- Extract self-forward logic into testable SelfForwardDetector utility
- Add 12 unit tests covering self-forward detection edge cases

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…-and-actions

Fix WhatsApp capture, crash, and add notification actions
- Remove executor.shutdown() from onDestroyView() in TasksFragment and
  TodayFragment, and from onDestroy() in TaskEditActivity. Pending DB
  writes (especially from Snackbar onDismissed callbacks) must complete
  even after the view is destroyed.
- In performUndoableComplete() for both fragments, capture appContext
  before Snackbar creation and use it inside onDismissed. This prevents
  IllegalStateException from requireContext() when fragment is detached.
- Wrap all executor.execute() calls in try-catch for
  RejectedExecutionException. If caught in performUndoableComplete,
  fall back to a temporary executor to guarantee DB persistence.
- Replace requireContext() with safe getContext()+null check in all
  background executor lambdas (loadFilteredTasks, loadTasks, loadStats,
  bulkCompleteSelected, bulkDeleteSelected, bulkChangePriority,
  applySnooze, onTaskStarToggle, showAddTaskDialog).

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…eation

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
… keyword learning

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…learning and UI descriptions

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
… handling

- Cap learned keywords at 200 to prevent unbounded growth in SharedPreferences
- Increase minimum keyword length from 3 to 4 chars and add task-related stop words
- Move self-forward detection before WhatsApp monitor gate so it always works
- Hot-reload learned keywords on each notification instead of only at service start
- Add learned keywords management UI in Settings with count display and clear button

Co-authored-by: Rishabh Jain <43771172+notrishabhjain@users.noreply.github.com>
…ures

Fix critical crashes, WhatsApp chat monitor, app list, approval queue, keyword learning
Complete Phase 1 implementation of the Digital Twin assistant for a project
manager, built from scratch in Kotlin + Jetpack Compose:

- Data layer: Room DB with WorkItem (4 types: MY_TASK/DELEGATED/FOLLOW_UP/
  STATUS_UPDATE), CapturedNotification, CallRecord, ContactTag entities
- Capture: NotificationListenerService (WhatsApp/SMS/email notifications
  batched every 5 min), CallStateReceiver triggering CallRecordingWorker
  60s after call ends, Share Target for corporate email content
- AI: RuleBasedExtractor with English + Hindi/Hinglish keywords for
  offline task detection; GroqTranscriber (Whisper Large v3, free tier
  covers 8h audio/day) for call recording transcription
- UI: 4-tab Compose navigation (Today / Queue / Items / Settings)
  Queue screen with approve/discard per-item; Items screen with
  My Tasks/Delegated/Follow-ups/Done tabs; Settings with Groq API key,
  recordings folder, notification access link
- DI: Hilt throughout (DatabaseModule, NetworkModule, WorkManagerModule)
- CI: GitHub Actions builds debug APK and runs unit tests on every push
- Tests: RuleBasedExtractorTest covers English, Hindi/Hinglish, delegation,
  follow-up, status update, urgency, and date extraction cases

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVHiMrrei1pNf8vpRYEo4E
Complete Phase 1 implementation of the Digital Twin assistant for a project
manager, built from scratch in Kotlin + Jetpack Compose:

- Data layer: Room DB with WorkItem (4 types: MY_TASK/DELEGATED/FOLLOW_UP/
  STATUS_UPDATE), CapturedNotification, CallRecord, ContactTag entities
- Capture: NotificationListenerService (WhatsApp/SMS/email notifications
  batched every 5 min), CallStateReceiver triggering CallRecordingWorker
  60s after call ends, Share Target for corporate email content
- AI: RuleBasedExtractor with English + Hindi/Hinglish keywords for
  offline task detection; GroqTranscriber (Whisper Large v3, free tier
  covers 8h audio/day) for call recording transcription
- UI: 4-tab Compose navigation (Today / Queue / Items / Settings)
  Queue screen with approve/discard per-item; Items screen with
  My Tasks/Delegated/Follow-ups/Done tabs; Settings with Groq API key,
  recordings folder, notification access link
- DI: Hilt throughout (DatabaseModule, NetworkModule, WorkManagerModule)
- CI: GitHub Actions builds debug APK and runs unit tests on every push
- Tests: RuleBasedExtractorTest covers English, Hindi/Hinglish, delegation,
  follow-up, status update, urgency, and date extraction cases

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVHiMrrei1pNf8vpRYEo4E
@notrishabhjain
notrishabhjain force-pushed the claude/festive-einstein-c69o8j branch from c619127 to 6531c4a Compare June 24, 2026 00:46
Copilot AI and others added 8 commits June 24, 2026 00:48
After rebasing onto main, the old Java/Taskflow app's layout XMLs,
resource strings, Java source files, and CI workflows were still present
in the tree, causing AAPT resource-linking failures. This commit removes
all of them so only the new Kotlin Digital Twin app files remain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVHiMrrei1pNf8vpRYEo4E
The old Taskflow app's root build.gradle (AGP 8.2.0) and settings.gradle
were still tracked after the rebase, causing Gradle to fail with:
"plugin com.android.application 8.6.1 already on classpath with version 8.2.0"

Our build.gradle.kts and settings.gradle.kts are the correct replacements.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVHiMrrei1pNf8vpRYEo4E
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants