Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
acabf4f
chore: remove Next.js codebase and set up Android project scaffold
kiro-agent May 9, 2026
d8204e4
feat: implement data layer, NotificationListenerService, task extract…
kiro-agent May 9, 2026
6cd08bb
feat: implement complete UI layer with Activities, Adapter, layouts, …
kiro-agent May 9, 2026
81e65c1
fix: use consistent PreferenceManager across all components, remove u…
kiro-agent May 9, 2026
406ce6e
fix: address review issues - self-capture loop, dedup, reminder cap, …
kiro-agent May 9, 2026
ef9985b
fix: address review issues - goAsync in ReminderReceiver, boot cap ch…
kiro-agent May 9, 2026
7bf5828
Merge pull request #1 from notrishabhjain/feature/taskflow-android-app
notrishabhjain May 9, 2026
2597e5d
feat: expand data model with new entities, DAO queries, and dependencies
kiro-agent May 10, 2026
cbf5ac3
feat: add bottom navigation with 5-tab Fragment architecture
kiro-agent May 10, 2026
3495fdf
feat: add core UX features - dark/light mode, history queue, task edi…
kiro-agent May 10, 2026
9c67577
feat: add intelligence features - multilingual task extraction, trans…
kiro-agent May 10, 2026
a120d99
feat: add polish and power features - tags UI, dashboard stats, recur…
kiro-agent May 10, 2026
7c13e05
chore: mark FEAT-005 as completed
kiro-agent May 10, 2026
6752cf2
chore: add unit tests for MeetingTaskExtractor, TranscriptParser, Rec…
kiro-agent May 10, 2026
2857fbe
fix: resolve critical code review issues
kiro-agent May 10, 2026
b5605d3
Merge pull request #2 from notrishabhjain/feature/comprehensive-upgrade
notrishabhjain May 10, 2026
79c2b70
ci: add GitHub Actions workflow to build debug APK
kiro-agent May 10, 2026
e63898d
fix: exclude conflicting META-INF files from JavaMail dependencies
kiro-agent May 10, 2026
c4d53b0
Merge pull request #3 from notrishabhjain/ci/build-apk-workflow
notrishabhjain May 10, 2026
951227b
fix: widget display, settings app list, and calendar event title
kiro-agent May 11, 2026
b6ac030
Merge pull request #4 from notrishabhjain/fix/bugs-widget-settings-ca…
notrishabhjain May 11, 2026
6df8cc2
fix: make notification capture more permissive for WhatsApp and other…
kiro-agent May 11, 2026
db9f9a8
feat: expand ACTION_KEYWORDS and add database schema changes (starred…
kiro-agent May 11, 2026
2385eb3
feat: implement custom snooze dialog, starred tasks, and badge count
kiro-agent May 11, 2026
5bbbf92
feat: implement subtasks/checklist UI and priority auto-escalation wo…
kiro-agent May 11, 2026
2d5c6dc
feat: add quick-add notification, weekly summary worker, and smart de…
kiro-agent May 11, 2026
41b1cf4
fix: address 4 critical bugs from code review
kiro-agent May 11, 2026
5c302dd
Merge pull request #5 from notrishabhjain/fix/bugs-widget-settings-ca…
notrishabhjain May 11, 2026
fe6d488
fix: widget item click opens task detail and crash-safe TaskEditActivity
kiro-agent May 11, 2026
2886a54
fix: widget item click opens task detail and crash-safe TaskEditActivity
kiro-agent May 11, 2026
16a170b
feat: expand trigger keywords and build intelligent multilingual tran…
kiro-agent May 11, 2026
0db9e4a
feat: expand trigger keywords and build intelligent multilingual tran…
kiro-agent May 11, 2026
5d0baa0
fix: address code review issues from widget/NLP enhancement
kiro-agent May 11, 2026
4c76bda
fix: address code review issues from widget/NLP enhancement
kiro-agent May 11, 2026
daaeb02
Merge pull request #6 from notrishabhjain/fix/widget-crash-multilingu…
notrishabhjain May 11, 2026
ce6cbf3
feat: add release workflow with signed APK and GitHub Release creation
kiro-agent May 11, 2026
c87fcd9
Merge pull request #7 from notrishabhjain/feat/release-workflow
notrishabhjain May 11, 2026
cb0ba92
simplify: use unsigned release APK, remove signing config
kiro-agent May 11, 2026
0c85f2e
Merge pull request #8 from notrishabhjain/fix/unsigned-release
notrishabhjain May 11, 2026
f0b4611
fix: use debug signing for release APK to make it installable
kiro-agent May 11, 2026
f153205
Merge pull request #9 from notrishabhjain/fix/debug-signed-release
notrishabhjain May 11, 2026
72195db
fix: resolve TaskEditActivity crash, blank widget, and calendar integ…
kiro-agent May 11, 2026
962c619
feat: overhaul transcript extraction with Hindi/Hinglish translation …
kiro-agent May 11, 2026
3822e62
feat: add smart categorization, duplicate detection, bulk actions, an…
kiro-agent May 11, 2026
7a78397
fix: address critical issues from semantic review
kiro-agent May 11, 2026
f903fdd
fix: checkbox listener ordering and substring Hindi marker matching
kiro-agent May 11, 2026
46789dd
fix: resolve compilation errors in TasksFragment and string formattin…
kiro-agent May 11, 2026
3d80641
Merge pull request #11 from notrishabhjain/fix/comprehensive-app-fixe…
notrishabhjain May 12, 2026
f23a9dc
fix: WhatsApp notification capture and TaskEditActivity crash prevention
kiro-agent May 12, 2026
8151308
feat: add WhatsApp self-forward task creation and notification action…
kiro-agent May 12, 2026
e9c0e85
fix: address code review issues for notification actions
kiro-agent May 12, 2026
a2d2cab
Merge pull request #12 from notrishabhjain/fix/whatsapp-notifications…
notrishabhjain May 12, 2026
55d2339
fix: prevent crash from executor shutdown during Snackbar callbacks
kiro-agent May 12, 2026
c48ed2d
feat: add WhatsApp Chat Monitor integration for targeted chat task cr…
kiro-agent May 12, 2026
97dd6dc
feat: show all Play Store installed apps in settings and add adaptive…
kiro-agent May 12, 2026
212dfa1
feat: enhance notification task approval/discard system with keyword …
kiro-agent May 12, 2026
fef70fe
fix: address code review issues for keyword learning and notification…
kiro-agent May 12, 2026
0750cb6
Merge pull request #13 from notrishabhjain/fix/critical-bugs-and-feat…
notrishabhjain May 12, 2026
6b1a40e
Initial empty commit
claude Jun 23, 2026
c5ef824
Merge branch 'LearnWeb3DAO:main' into claude/festive-einstein-c69o8j
notrishabhjain Jun 23, 2026
c619127
feat: Phase 1 — Digital Twin Android app scaffold
claude Jun 24, 2026
3877452
Initial empty commit
claude Jun 23, 2026
6531c4a
feat: Phase 1 — Digital Twin Android app scaffold
claude Jun 24, 2026
cd42411
Merge origin/main and resolve conflicts
Copilot Jun 24, 2026
843d38f
chore: remove old Taskflow Java app files (clean-slate rewrite)
claude Jun 24, 2026
7d5d783
fix: remove conflicting Groovy root build files
claude Jun 24, 2026
973feb2
ci: restrict workflow token permissions
Copilot Jun 24, 2026
232ca3c
Merge updated PR branch and finalize conflict resolution
Copilot Jun 24, 2026
6a038cd
Remove stale Taskflow drawable and widget resource files causing AAPT…
claude Jun 24, 2026
da37d4d
Fix drawable attr references incompatible with base theme
claude Jun 24, 2026
2927306
Remove duplicate Theme.DigitalTwin style from merge conflict artifact
claude Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .eslintrc.json

This file was deleted.

35 changes: 35 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Build

on:
push:
branches: [ "**" ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build debug APK
run: ./gradlew assembleDebug --no-daemon

- name: Run unit tests
run: ./gradlew testDebugUnitTest --no-daemon

- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: digital-twin-debug
path: app/build/outputs/apk/debug/app-debug.apk
42 changes: 15 additions & 27 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,37 +1,25 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
*.iml
.gradle
/local.properties
/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
/app/build
*.apk
*.keystore
!debug.keystore
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

.env
.env
34 changes: 0 additions & 34 deletions README.md

This file was deleted.

98 changes: 98 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
namespace = "com.digitaltwin.assistant"
compileSdk = 34

defaultConfig {
applicationId = "com.digitaltwin.assistant"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "0.1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { useSupportLibrary = true }
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = "17"
}

buildFeatures {
compose = true
buildConfig = true
}

packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}

dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.activity.compose)

implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.material.icons.extended)
implementation(libs.androidx.navigation.compose)

implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)
implementation(libs.hilt.work)
ksp(libs.hilt.work.compiler)

implementation(libs.room.runtime)
implementation(libs.room.ktx)
ksp(libs.room.compiler)

implementation(libs.work.runtime.ktx)

implementation(libs.retrofit)
implementation(libs.retrofit.moshi)
implementation(libs.okhttp)
implementation(libs.okhttp.logging)
implementation(libs.moshi.kotlin)

implementation(libs.kotlinx.coroutines.android)
implementation(libs.datastore.preferences)

debugImplementation(libs.androidx.ui.tooling)

testImplementation(libs.junit)
testImplementation(libs.kotlinx.coroutines.test)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
}
3 changes: 3 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Keep Moshi-generated adapters and model classes used for JSON (de)serialization.
-keep class com.digitaltwin.assistant.ai.model.** { *; }
-keepclassmembers class com.digitaltwin.assistant.ai.model.** { *; }
101 changes: 101 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<!-- Capture & connectivity -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- Call capture -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<!-- Voice memo -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!-- Call recording access (scoped by SDK) -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />

<!-- Reminders -->
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />

<application
android:name=".TwinApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DigitalTwin"
tools:targetApi="34">

<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.DigitalTwin">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Share target: capture text shared from any app (e.g. corporate email) -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>

<!-- Passive capture from all app notifications -->
<service
android:name=".capture.TwinNotificationListenerService"
android:exported="true"
android:label="@string/notification_listener_label"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>

<!-- Detect call end to trigger recording capture -->
<receiver
android:name=".capture.CallStateReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>

<!-- Reschedule reminders after reboot -->
<receiver
android:name=".capture.BootReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<!-- Disable default WorkManager initializer; we provide a Hilt-aware factory. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>

</application>

</manifest>
Loading