Add .gitignore, remove build artifacts from repo

This commit is contained in:
James (ClawdBot) 2026-01-28 08:29:16 +00:00
parent 16d2f2164c
commit 9811d73d3f
490 changed files with 22 additions and 48431 deletions

22
.gitignore vendored Normal file
View File

@ -0,0 +1,22 @@
# Gradle
.gradle/
build/
app/build/
# IDE
.idea/
*.iml
local.properties
# Generated
*.apk
*.aab
*.ap_
*.dex
# Logs
*.log
# OS
.DS_Store
Thumbs.db

Binary file not shown.

View File

@ -1,2 +0,0 @@
#Wed Jan 28 08:08:47 UTC 2026
gradle.version=8.5

Binary file not shown.

View File

@ -1,210 +0,0 @@
// Generated by view binder compiler. Do not edit!
package com.inou.clawdnode.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import com.inou.clawdnode.R;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
public final class ActivityMainBinding implements ViewBinding {
@NonNull
private final ScrollView rootView;
@NonNull
public final Button btnConnect;
@NonNull
public final Button btnDisconnect;
@NonNull
public final Button btnGrantCallScreening;
@NonNull
public final Button btnGrantNotifications;
@NonNull
public final Button btnGrantPermissions;
@NonNull
public final Button btnSaveGateway;
@NonNull
public final Button btnViewAuditLog;
@NonNull
public final EditText etGatewayToken;
@NonNull
public final EditText etGatewayUrl;
@NonNull
public final TextView tvCallScreeningStatus;
@NonNull
public final TextView tvConnectionStatus;
@NonNull
public final TextView tvLiveLog;
@NonNull
public final TextView tvNotificationStatus;
@NonNull
public final TextView tvPermissionsStatus;
private ActivityMainBinding(@NonNull ScrollView rootView, @NonNull Button btnConnect,
@NonNull Button btnDisconnect, @NonNull Button btnGrantCallScreening,
@NonNull Button btnGrantNotifications, @NonNull Button btnGrantPermissions,
@NonNull Button btnSaveGateway, @NonNull Button btnViewAuditLog,
@NonNull EditText etGatewayToken, @NonNull EditText etGatewayUrl,
@NonNull TextView tvCallScreeningStatus, @NonNull TextView tvConnectionStatus,
@NonNull TextView tvLiveLog, @NonNull TextView tvNotificationStatus,
@NonNull TextView tvPermissionsStatus) {
this.rootView = rootView;
this.btnConnect = btnConnect;
this.btnDisconnect = btnDisconnect;
this.btnGrantCallScreening = btnGrantCallScreening;
this.btnGrantNotifications = btnGrantNotifications;
this.btnGrantPermissions = btnGrantPermissions;
this.btnSaveGateway = btnSaveGateway;
this.btnViewAuditLog = btnViewAuditLog;
this.etGatewayToken = etGatewayToken;
this.etGatewayUrl = etGatewayUrl;
this.tvCallScreeningStatus = tvCallScreeningStatus;
this.tvConnectionStatus = tvConnectionStatus;
this.tvLiveLog = tvLiveLog;
this.tvNotificationStatus = tvNotificationStatus;
this.tvPermissionsStatus = tvPermissionsStatus;
}
@Override
@NonNull
public ScrollView getRoot() {
return rootView;
}
@NonNull
public static ActivityMainBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static ActivityMainBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.activity_main, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static ActivityMainBinding bind(@NonNull View rootView) {
// The body of this method is generated in a way you would not otherwise write.
// This is done to optimize the compiled bytecode for size and performance.
int id;
missingId: {
id = R.id.btnConnect;
Button btnConnect = ViewBindings.findChildViewById(rootView, id);
if (btnConnect == null) {
break missingId;
}
id = R.id.btnDisconnect;
Button btnDisconnect = ViewBindings.findChildViewById(rootView, id);
if (btnDisconnect == null) {
break missingId;
}
id = R.id.btnGrantCallScreening;
Button btnGrantCallScreening = ViewBindings.findChildViewById(rootView, id);
if (btnGrantCallScreening == null) {
break missingId;
}
id = R.id.btnGrantNotifications;
Button btnGrantNotifications = ViewBindings.findChildViewById(rootView, id);
if (btnGrantNotifications == null) {
break missingId;
}
id = R.id.btnGrantPermissions;
Button btnGrantPermissions = ViewBindings.findChildViewById(rootView, id);
if (btnGrantPermissions == null) {
break missingId;
}
id = R.id.btnSaveGateway;
Button btnSaveGateway = ViewBindings.findChildViewById(rootView, id);
if (btnSaveGateway == null) {
break missingId;
}
id = R.id.btnViewAuditLog;
Button btnViewAuditLog = ViewBindings.findChildViewById(rootView, id);
if (btnViewAuditLog == null) {
break missingId;
}
id = R.id.etGatewayToken;
EditText etGatewayToken = ViewBindings.findChildViewById(rootView, id);
if (etGatewayToken == null) {
break missingId;
}
id = R.id.etGatewayUrl;
EditText etGatewayUrl = ViewBindings.findChildViewById(rootView, id);
if (etGatewayUrl == null) {
break missingId;
}
id = R.id.tvCallScreeningStatus;
TextView tvCallScreeningStatus = ViewBindings.findChildViewById(rootView, id);
if (tvCallScreeningStatus == null) {
break missingId;
}
id = R.id.tvConnectionStatus;
TextView tvConnectionStatus = ViewBindings.findChildViewById(rootView, id);
if (tvConnectionStatus == null) {
break missingId;
}
id = R.id.tvLiveLog;
TextView tvLiveLog = ViewBindings.findChildViewById(rootView, id);
if (tvLiveLog == null) {
break missingId;
}
id = R.id.tvNotificationStatus;
TextView tvNotificationStatus = ViewBindings.findChildViewById(rootView, id);
if (tvNotificationStatus == null) {
break missingId;
}
id = R.id.tvPermissionsStatus;
TextView tvPermissionsStatus = ViewBindings.findChildViewById(rootView, id);
if (tvPermissionsStatus == null) {
break missingId;
}
return new ActivityMainBinding((ScrollView) rootView, btnConnect, btnDisconnect,
btnGrantCallScreening, btnGrantNotifications, btnGrantPermissions, btnSaveGateway,
btnViewAuditLog, etGatewayToken, etGatewayUrl, tvCallScreeningStatus, tvConnectionStatus,
tvLiveLog, tvNotificationStatus, tvPermissionsStatus);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}

View File

@ -1,12 +0,0 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.inou.clawdnode;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.inou.clawdnode";
public static final String BUILD_TYPE = "debug";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "0.1.0";
}

View File

@ -1,2 +0,0 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.2.2

View File

@ -1,10 +0,0 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "com.inou.clawdnode",
"variantName": "debug",
"elements": []
}

View File

@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_main" modulePackage="com.inou.clawdnode" filePath="app/src/main/res/layout/activity_main.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.ScrollView"><Targets><Target tag="layout/activity_main_0" view="ScrollView"><Expressions/><location startLine="1" startOffset="0" endLine="287" endOffset="12"/></Target><Target id="@+id/tvConnectionStatus" view="TextView"><Expressions/><location startLine="33" startOffset="8" endLine="41" endOffset="48"/></Target><Target id="@+id/etGatewayUrl" view="EditText"><Expressions/><location startLine="53" startOffset="8" endLine="61" endOffset="47"/></Target><Target id="@+id/etGatewayToken" view="EditText"><Expressions/><location startLine="63" startOffset="8" endLine="71" endOffset="48"/></Target><Target id="@+id/btnSaveGateway" view="Button"><Expressions/><location startLine="73" startOffset="8" endLine="80" endOffset="48"/></Target><Target id="@+id/btnConnect" view="Button"><Expressions/><location startLine="89" startOffset="12" endLine="97" endOffset="48"/></Target><Target id="@+id/btnDisconnect" view="Button"><Expressions/><location startLine="99" startOffset="12" endLine="106" endOffset="45"/></Target><Target id="@+id/tvNotificationStatus" view="TextView"><Expressions/><location startLine="141" startOffset="16" endLine="147" endOffset="49"/></Target><Target id="@+id/btnGrantNotifications" view="Button"><Expressions/><location startLine="151" startOffset="12" endLine="157" endOffset="45"/></Target><Target id="@+id/tvCallScreeningStatus" view="TextView"><Expressions/><location startLine="182" startOffset="16" endLine="188" endOffset="49"/></Target><Target id="@+id/btnGrantCallScreening" view="Button"><Expressions/><location startLine="192" startOffset="12" endLine="198" endOffset="45"/></Target><Target id="@+id/tvPermissionsStatus" view="TextView"><Expressions/><location startLine="223" startOffset="16" endLine="229" endOffset="49"/></Target><Target id="@+id/btnGrantPermissions" view="Button"><Expressions/><location startLine="233" startOffset="12" endLine="239" endOffset="45"/></Target><Target id="@+id/tvLiveLog" view="TextView"><Expressions/><location startLine="253" startOffset="8" endLine="264" endOffset="48"/></Target><Target id="@+id/btnViewAuditLog" view="Button"><Expressions/><location startLine="267" startOffset="8" endLine="274" endOffset="48"/></Target></Targets></Layout>

View File

@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_main" modulePackage="com.inou.clawdnode" filePath="app/src/main/res/layout/activity_main.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.ScrollView"><Targets><Target tag="layout/activity_main_0" view="ScrollView"><Expressions/><location startLine="1" startOffset="0" endLine="287" endOffset="12"/></Target><Target id="@+id/tvConnectionStatus" view="TextView"><Expressions/><location startLine="33" startOffset="8" endLine="41" endOffset="48"/></Target><Target id="@+id/etGatewayUrl" view="EditText"><Expressions/><location startLine="53" startOffset="8" endLine="61" endOffset="47"/></Target><Target id="@+id/etGatewayToken" view="EditText"><Expressions/><location startLine="63" startOffset="8" endLine="71" endOffset="48"/></Target><Target id="@+id/btnSaveGateway" view="Button"><Expressions/><location startLine="73" startOffset="8" endLine="80" endOffset="48"/></Target><Target id="@+id/btnConnect" view="Button"><Expressions/><location startLine="89" startOffset="12" endLine="97" endOffset="48"/></Target><Target id="@+id/btnDisconnect" view="Button"><Expressions/><location startLine="99" startOffset="12" endLine="106" endOffset="45"/></Target><Target id="@+id/tvNotificationStatus" view="TextView"><Expressions/><location startLine="141" startOffset="16" endLine="147" endOffset="49"/></Target><Target id="@+id/btnGrantNotifications" view="Button"><Expressions/><location startLine="151" startOffset="12" endLine="157" endOffset="45"/></Target><Target id="@+id/tvCallScreeningStatus" view="TextView"><Expressions/><location startLine="182" startOffset="16" endLine="188" endOffset="49"/></Target><Target id="@+id/btnGrantCallScreening" view="Button"><Expressions/><location startLine="192" startOffset="12" endLine="198" endOffset="45"/></Target><Target id="@+id/tvPermissionsStatus" view="TextView"><Expressions/><location startLine="223" startOffset="16" endLine="229" endOffset="49"/></Target><Target id="@+id/btnGrantPermissions" view="Button"><Expressions/><location startLine="233" startOffset="12" endLine="239" endOffset="45"/></Target><Target id="@+id/tvLiveLog" view="TextView"><Expressions/><location startLine="253" startOffset="8" endLine="264" endOffset="48"/></Target><Target id="@+id/btnViewAuditLog" view="Button"><Expressions/><location startLine="267" startOffset="8" endLine="274" endOffset="48"/></Target></Targets></Layout>

View File

@ -1,7 +0,0 @@
#Wed Jan 28 08:28:34 UTC 2026
com.inou.clawdnode.app-main-37\:/drawable/ic_notification.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/drawable_ic_notification.xml.flat
com.inou.clawdnode.app-main-37\:/drawable/input_background.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/drawable_input_background.xml.flat
com.inou.clawdnode.app-main-37\:/mipmap-hdpi/ic_launcher.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/mipmap-hdpi_ic_launcher.xml.flat
com.inou.clawdnode.app-main-37\:/mipmap-hdpi/ic_launcher_round.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/mipmap-hdpi_ic_launcher_round.xml.flat
com.inou.clawdnode.app-main-37\:/xml/network_security_config.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/xml_network_security_config.xml.flat
com.inou.clawdnode.app-mergeDebugResources-34\:/layout/activity_main.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/merged_res/debug/layout_activity_main.xml.flat

File diff suppressed because one or more lines are too long

View File

@ -1,288 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
android:background="#F8F7F6"
tools:context=".ui.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Header -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ClawdNode"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="#B45309"
android:layout_marginBottom="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AI-powered phone assistant"
android:textSize="14sp"
android:textColor="#78716C"
android:layout_marginBottom="32dp" />
<!-- Connection Status -->
<TextView
android:id="@+id/tvConnectionStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Disconnected"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#DC2626"
android:layout_marginBottom="24dp" />
<!-- Gateway Configuration -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gateway Configuration"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="12dp" />
<EditText
android:id="@+id/etGatewayUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Gateway URL (e.g., http://100.x.x.x:18789)"
android:inputType="textUri"
android:padding="12dp"
android:background="@drawable/input_background"
android:layout_marginBottom="8dp" />
<EditText
android:id="@+id/etGatewayToken"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Gateway Token"
android:inputType="textPassword"
android:padding="12dp"
android:background="@drawable/input_background"
android:layout_marginBottom="12dp" />
<Button
android:id="@+id/btnSaveGateway"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save Configuration"
android:backgroundTint="#B45309"
android:textColor="#FFFFFF"
android:layout_marginBottom="24dp" />
<!-- Connection Controls -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="32dp">
<Button
android:id="@+id/btnConnect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Connect"
android:backgroundTint="#059669"
android:textColor="#FFFFFF"
android:layout_marginEnd="8dp" />
<Button
android:id="@+id/btnDisconnect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Disconnect"
android:backgroundTint="#DC2626"
android:textColor="#FFFFFF" />
</LinearLayout>
<!-- Permissions Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Permissions"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="12dp" />
<!-- Notification Listener -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Notification Access"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvNotificationStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Not granted"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantNotifications"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Call Screening -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call Screening"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvCallScreeningStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Not granted"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantCallScreening"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Runtime Permissions -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Phone &amp; Audio Permissions"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvPermissionsStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Some missing"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantPermissions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Live Log -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connection Log"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="8dp" />
<TextView
android:id="@+id/tvLiveLog"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#1C1917"
android:textColor="#22C55E"
android:fontFamily="monospace"
android:textSize="11sp"
android:padding="12dp"
android:scrollbars="vertical"
android:gravity="bottom"
android:layout_marginBottom="16dp" />
<!-- Audit Log -->
<Button
android:id="@+id/btnViewAuditLog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="View Audit Log"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917"
android:layout_marginBottom="16dp" />
<!-- Version -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="v0.1.0 • Security-first design"
android:textSize="12sp"
android:textColor="#A8A29E"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</ScrollView>

View File

@ -1,7 +0,0 @@
#Wed Jan 28 08:28:34 UTC 2026
com.inou.clawdnode.app-main-5\:/drawable/ic_notification.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/drawable/ic_notification.xml
com.inou.clawdnode.app-main-5\:/drawable/input_background.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/drawable/input_background.xml
com.inou.clawdnode.app-main-5\:/mipmap-hdpi/ic_launcher.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher.xml
com.inou.clawdnode.app-main-5\:/mipmap-hdpi/ic_launcher_round.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher_round.xml
com.inou.clawdnode.app-main-5\:/xml/network_security_config.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/xml/network_security_config.xml
com.inou.clawdnode.app-packageDebugResources-2\:/layout/activity_main.xml=/home/johan/dev/clawdnode-android/app/build/intermediates/packaged_res/debug/layout/activity_main.xml

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/main/res"><file name="ic_launcher" path="/home/johan/dev/clawdnode-android/app/src/main/res/mipmap-hdpi/ic_launcher.xml" qualifiers="hdpi-v4" type="mipmap"/><file name="ic_launcher_round" path="/home/johan/dev/clawdnode-android/app/src/main/res/mipmap-hdpi/ic_launcher_round.xml" qualifiers="hdpi-v4" type="mipmap"/><file path="/home/johan/dev/clawdnode-android/app/src/main/res/values/colors.xml" qualifiers=""><color name="ic_launcher_background">#B45309</color></file><file path="/home/johan/dev/clawdnode-android/app/src/main/res/values/strings.xml" qualifiers=""><string name="app_name">ClawdNode</string></file><file path="/home/johan/dev/clawdnode-android/app/src/main/res/values/themes.xml" qualifiers=""><style name="Theme.ClawdNode" parent="Theme.Material3.Light.NoActionBar">
<item name="colorPrimary">#B45309</item>
<item name="colorPrimaryDark">#92400E</item>
<item name="colorAccent">#B45309</item>
<item name="android:statusBarColor">#F8F7F6</item>
<item name="android:windowLightStatusBar">true</item>
</style></file><file name="network_security_config" path="/home/johan/dev/clawdnode-android/app/src/main/res/xml/network_security_config.xml" qualifiers="" type="xml"/><file name="input_background" path="/home/johan/dev/clawdnode-android/app/src/main/res/drawable/input_background.xml" qualifiers="" type="drawable"/><file name="ic_notification" path="/home/johan/dev/clawdnode-android/app/src/main/res/drawable/ic_notification.xml" qualifiers="" type="drawable"/><file name="activity_main" path="/home/johan/dev/clawdnode-android/app/src/main/res/layout/activity_main.xml" qualifiers="" type="layout"/></source></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>

View File

@ -1,288 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
android:background="#F8F7F6"
tools:context=".ui.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Header -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ClawdNode"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="#B45309"
android:layout_marginBottom="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AI-powered phone assistant"
android:textSize="14sp"
android:textColor="#78716C"
android:layout_marginBottom="32dp" />
<!-- Connection Status -->
<TextView
android:id="@+id/tvConnectionStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Disconnected"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#DC2626"
android:layout_marginBottom="24dp" />
<!-- Gateway Configuration -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gateway Configuration"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="12dp" />
<EditText
android:id="@+id/etGatewayUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Gateway URL (e.g., http://100.x.x.x:18789)"
android:inputType="textUri"
android:padding="12dp"
android:background="@drawable/input_background"
android:layout_marginBottom="8dp" />
<EditText
android:id="@+id/etGatewayToken"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Gateway Token"
android:inputType="textPassword"
android:padding="12dp"
android:background="@drawable/input_background"
android:layout_marginBottom="12dp" />
<Button
android:id="@+id/btnSaveGateway"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save Configuration"
android:backgroundTint="#B45309"
android:textColor="#FFFFFF"
android:layout_marginBottom="24dp" />
<!-- Connection Controls -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="32dp">
<Button
android:id="@+id/btnConnect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Connect"
android:backgroundTint="#059669"
android:textColor="#FFFFFF"
android:layout_marginEnd="8dp" />
<Button
android:id="@+id/btnDisconnect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Disconnect"
android:backgroundTint="#DC2626"
android:textColor="#FFFFFF" />
</LinearLayout>
<!-- Permissions Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Permissions"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="12dp" />
<!-- Notification Listener -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Notification Access"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvNotificationStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Not granted"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantNotifications"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Call Screening -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call Screening"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvCallScreeningStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Not granted"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantCallScreening"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Runtime Permissions -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Phone &amp; Audio Permissions"
android:textSize="14sp"
android:textColor="#1C1917" />
<TextView
android:id="@+id/tvPermissionsStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✗ Some missing"
android:textSize="12sp"
android:textColor="#78716C" />
</LinearLayout>
<Button
android:id="@+id/btnGrantPermissions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grant"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917" />
</LinearLayout>
<!-- Live Log -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connection Log"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#1C1917"
android:layout_marginBottom="8dp" />
<TextView
android:id="@+id/tvLiveLog"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#1C1917"
android:textColor="#22C55E"
android:fontFamily="monospace"
android:textSize="11sp"
android:padding="12dp"
android:scrollbars="vertical"
android:gravity="bottom"
android:layout_marginBottom="16dp" />
<!-- Audit Log -->
<Button
android:id="@+id/btnViewAuditLog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="View Audit Log"
android:backgroundTint="#E5E2DE"
android:textColor="#1C1917"
android:layout_marginBottom="16dp" />
<!-- Version -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="v0.1.0 • Security-first design"
android:textSize="12sp"
android:textColor="#A8A29E"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</ScrollView>

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/build/intermediates/shader_assets/debug/out"/></dataSet></merger>

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/debug/jniLibs"/></dataSet></merger>

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/johan/dev/clawdnode-android/app/src/debug/shaders"/></dataSet></merger>

View File

@ -1,25 +0,0 @@
R_DEF: Internal format may change without notice
local
color ic_launcher_background
drawable ic_notification
drawable input_background
id btnConnect
id btnDisconnect
id btnGrantCallScreening
id btnGrantNotifications
id btnGrantPermissions
id btnSaveGateway
id btnViewAuditLog
id etGatewayToken
id etGatewayUrl
id tvCallScreeningStatus
id tvConnectionStatus
id tvLiveLog
id tvNotificationStatus
id tvPermissionsStatus
layout activity_main
mipmap ic_launcher
mipmap ic_launcher_round
string app_name
style Theme.ClawdNode
xml network_security_config

View File

@ -1,271 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.inou.clawdnode"
4 android:versionCode="1"
5 android:versionName="0.1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="29"
9 android:targetSdkVersion="34" />
10
11 <!-- Network -->
12 <uses-permission android:name="android.permission.INTERNET" />
12-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:6:5-67
12-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:6:22-64
13 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
13-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:7:5-79
13-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:7:22-76
14
15 <!-- Foreground service -->
16 <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
16-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:10:5-77
16-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:10:22-74
17 <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
17-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:11:5-89
17-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:11:22-86
18 <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
18-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:12:5-77
18-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:12:22-74
19 <uses-permission android:name="android.permission.WAKE_LOCK" />
19-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:13:5-68
19-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:13:22-65
20
21 <!-- Phone/Calls -->
22 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
22-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:16:5-75
22-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:16:22-72
23 <uses-permission android:name="android.permission.READ_CALL_LOG" />
23-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:17:5-72
23-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:17:22-69
24 <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
24-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:18:5-77
24-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:18:22-74
25 <uses-permission android:name="android.permission.CALL_PHONE" />
25-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:19:5-69
25-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:19:22-66
26 <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
26-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:20:5-75
26-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:20:22-72
27
28 <!-- Audio for voice -->
29 <uses-permission android:name="android.permission.RECORD_AUDIO" />
29-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:23:5-71
29-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:23:22-68
30 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
30-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:24:5-80
30-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:24:22-77
31
32 <!-- Contacts for caller ID -->
33 <uses-permission android:name="android.permission.READ_CONTACTS" />
33-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:27:5-72
33-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:27:22-69
34
35 <!-- Notifications (bind to notification listener) -->
36 <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
36-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:30:5-31:47
36-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:30:22-90
37
38 <permission
38-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:22:5-24:47
39 android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
39-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:23:9-81
40 android:protectionLevel="signature" />
40-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:24:9-44
41
42 <uses-permission android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" />
42-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:26:5-97
42-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:26:22-94
43
44 <application
44-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:33:5-101:19
45 android:name="com.inou.clawdnode.ClawdNodeApp"
45-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:34:9-37
46 android:allowBackup="false"
46-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:35:9-36
47 android:appComponentFactory="androidx.core.app.CoreComponentFactory"
47-->[androidx.core:core:1.12.0] /home/johan/.gradle/caches/transforms-3/440a64c1659b3784956be1ef27019da1/transformed/core-1.12.0/AndroidManifest.xml:28:18-86
48 android:debuggable="true"
49 android:extractNativeLibs="false"
50 android:icon="@mipmap/ic_launcher"
50-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:36:9-43
51 android:label="@string/app_name"
51-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:37:9-41
52 android:networkSecurityConfig="@xml/network_security_config"
52-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:41:9-69
53 android:roundIcon="@mipmap/ic_launcher_round"
53-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:38:9-54
54 android:supportsRtl="true"
54-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:39:9-35
55 android:theme="@style/Theme.ClawdNode" >
55-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:40:9-47
56
57 <!-- Main Activity -->
58 <activity
58-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:45:9-53:20
59 android:name="com.inou.clawdnode.ui.MainActivity"
59-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:46:13-44
60 android:exported="true"
60-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:47:13-36
61 android:theme="@style/Theme.ClawdNode" >
61-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:48:13-51
62 <intent-filter>
62-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:49:13-52:29
63 <action android:name="android.intent.action.MAIN" />
63-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:50:17-69
63-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:50:25-66
64
65 <category android:name="android.intent.category.LAUNCHER" />
65-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:51:17-77
65-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:51:27-74
66 </intent-filter>
67 </activity>
68
69 <!-- Core Foreground Service -->
70 <service
70-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:56:9-63:19
71 android:name="com.inou.clawdnode.service.NodeService"
71-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:57:13-48
72 android:exported="false"
72-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:58:13-37
73 android:foregroundServiceType="specialUse" >
73-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:59:13-55
74 <property
74-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:60:13-62:85
75 android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
75-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:61:17-76
76 android:value="AI phone assistant connecting to personal gateway" />
76-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:62:17-82
77 </service>
78
79 <!-- Notification Listener Service -->
80 <service
80-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:66:9-73:19
81 android:name="com.inou.clawdnode.notifications.NotificationListener"
81-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:67:13-63
82 android:exported="true"
82-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:68:13-36
83 android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
83-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:69:13-87
84 <intent-filter>
84-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:70:13-72:29
85 <action android:name="android.service.notification.NotificationListenerService" />
85-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:71:17-99
85-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:71:25-96
86 </intent-filter>
87 </service>
88
89 <!-- Call Screening Service -->
90 <service
90-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:76:9-83:19
91 android:name="com.inou.clawdnode.calls.CallScreener"
91-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:77:13-47
92 android:exported="true"
92-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:78:13-36
93 android:permission="android.permission.BIND_SCREENING_SERVICE" >
93-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:79:13-75
94 <intent-filter>
94-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:80:13-82:29
95 <action android:name="android.telecom.CallScreeningService" />
95-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:81:17-79
95-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:81:25-76
96 </intent-filter>
97 </service>
98
99 <!-- InCall Service for voice interaction -->
100 <service
100-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:86:9-99:19
101 android:name="com.inou.clawdnode.calls.VoiceCallService"
101-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:87:13-51
102 android:exported="true"
102-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:88:13-36
103 android:permission="android.permission.BIND_INCALL_SERVICE" >
103-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:89:13-72
104 <meta-data
104-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:90:13-92:41
105 android:name="android.telecom.IN_CALL_SERVICE_UI"
105-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:91:17-66
106 android:value="false" />
106-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:92:17-38
107 <meta-data
107-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:93:13-95:41
108 android:name="android.telecom.IN_CALL_SERVICE_RINGING"
108-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:94:17-71
109 android:value="false" />
109-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:95:17-38
110
111 <intent-filter>
111-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:96:13-98:29
112 <action android:name="android.telecom.InCallService" />
112-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:97:17-72
112-->/home/johan/dev/clawdnode-android/app/src/main/AndroidManifest.xml:97:25-69
113 </intent-filter>
114 </service>
115
116 <provider
116-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:24:9-32:20
117 android:name="androidx.startup.InitializationProvider"
117-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:25:13-67
118 android:authorities="com.inou.clawdnode.androidx-startup"
118-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:26:13-68
119 android:exported="false" >
119-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:27:13-37
120 <meta-data
120-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:29:13-31:52
121 android:name="androidx.emoji2.text.EmojiCompatInitializer"
121-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:30:17-75
122 android:value="androidx.startup" />
122-->[androidx.emoji2:emoji2:1.2.0] /home/johan/.gradle/caches/transforms-3/40af677edc9e981bf1ec9bb11c8b1d32/transformed/emoji2-1.2.0/AndroidManifest.xml:31:17-49
123 <meta-data
123-->[androidx.lifecycle:lifecycle-process:2.7.0] /home/johan/.gradle/caches/transforms-3/01096349b0936ba7f741e909295c017b/transformed/lifecycle-process-2.7.0/AndroidManifest.xml:29:13-31:52
124 android:name="androidx.lifecycle.ProcessLifecycleInitializer"
124-->[androidx.lifecycle:lifecycle-process:2.7.0] /home/johan/.gradle/caches/transforms-3/01096349b0936ba7f741e909295c017b/transformed/lifecycle-process-2.7.0/AndroidManifest.xml:30:17-78
125 android:value="androidx.startup" />
125-->[androidx.lifecycle:lifecycle-process:2.7.0] /home/johan/.gradle/caches/transforms-3/01096349b0936ba7f741e909295c017b/transformed/lifecycle-process-2.7.0/AndroidManifest.xml:31:17-49
126 <meta-data
126-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:29:13-31:52
127 android:name="androidx.profileinstaller.ProfileInstallerInitializer"
127-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:30:17-85
128 android:value="androidx.startup" />
128-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:31:17-49
129 </provider>
130
131 <receiver
131-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:34:9-52:20
132 android:name="androidx.profileinstaller.ProfileInstallReceiver"
132-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:35:13-76
133 android:directBootAware="false"
133-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:36:13-44
134 android:enabled="true"
134-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:37:13-35
135 android:exported="true"
135-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:38:13-36
136 android:permission="android.permission.DUMP" >
136-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:39:13-57
137 <intent-filter>
137-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:40:13-42:29
138 <action android:name="androidx.profileinstaller.action.INSTALL_PROFILE" />
138-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:41:17-91
138-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:41:25-88
139 </intent-filter>
140 <intent-filter>
140-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:43:13-45:29
141 <action android:name="androidx.profileinstaller.action.SKIP_FILE" />
141-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:44:17-85
141-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:44:25-82
142 </intent-filter>
143 <intent-filter>
143-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:46:13-48:29
144 <action android:name="androidx.profileinstaller.action.SAVE_PROFILE" />
144-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:47:17-88
144-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:47:25-85
145 </intent-filter>
146 <intent-filter>
146-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:49:13-51:29
147 <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
147-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:50:17-95
147-->[androidx.profileinstaller:profileinstaller:1.3.0] /home/johan/.gradle/caches/transforms-3/4dbbd11a74d28bd64c37893cccf57482/transformed/profileinstaller-1.3.0/AndroidManifest.xml:50:25-92
148 </intent-filter>
149 </receiver>
150 </application>
151
152</manifest>

View File

@ -1,152 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.inou.clawdnode"
android:versionCode="1"
android:versionName="0.1.0" >
<uses-sdk
android:minSdkVersion="29"
android:targetSdkVersion="34" />
<!-- Network -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Foreground service -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Phone/Calls -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<!-- Audio for voice -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Contacts for caller ID -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- Notifications (bind to notification listener) -->
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
<permission
android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
android:protectionLevel="signature" />
<uses-permission android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" />
<application
android:name="com.inou.clawdnode.ClawdNodeApp"
android:allowBackup="false"
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:debuggable="true"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ClawdNode" >
<!-- Main Activity -->
<activity
android:name="com.inou.clawdnode.ui.MainActivity"
android:exported="true"
android:theme="@style/Theme.ClawdNode" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Core Foreground Service -->
<service
android:name="com.inou.clawdnode.service.NodeService"
android:exported="false"
android:foregroundServiceType="specialUse" >
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="AI phone assistant connecting to personal gateway" />
</service>
<!-- Notification Listener Service -->
<service
android:name="com.inou.clawdnode.notifications.NotificationListener"
android:exported="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
<!-- Call Screening Service -->
<service
android:name="com.inou.clawdnode.calls.CallScreener"
android:exported="true"
android:permission="android.permission.BIND_SCREENING_SERVICE" >
<intent-filter>
<action android:name="android.telecom.CallScreeningService" />
</intent-filter>
</service>
<!-- InCall Service for voice interaction -->
<service
android:name="com.inou.clawdnode.calls.VoiceCallService"
android:exported="true"
android:permission="android.permission.BIND_INCALL_SERVICE" >
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_UI"
android:value="false" />
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_RINGING"
android:value="false" />
<intent-filter>
<action android:name="android.telecom.InCallService" />
</intent-filter>
</service>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="com.inou.clawdnode.androidx-startup"
android:exported="false" >
<meta-data
android:name="androidx.emoji2.text.EmojiCompatInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.lifecycle.ProcessLifecycleInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.profileinstaller.ProfileInstallerInitializer"
android:value="androidx.startup" />
</provider>
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:directBootAware="false"
android:enabled="true"
android:exported="true"
android:permission="android.permission.DUMP" >
<intent-filter>
<action android:name="androidx.profileinstaller.action.INSTALL_PROFILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SKIP_FILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SAVE_PROFILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@ -1,152 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.inou.clawdnode"
android:versionCode="1"
android:versionName="0.1.0" >
<uses-sdk
android:minSdkVersion="29"
android:targetSdkVersion="34" />
<!-- Network -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Foreground service -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Phone/Calls -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<!-- Audio for voice -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Contacts for caller ID -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- Notifications (bind to notification listener) -->
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
<permission
android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
android:protectionLevel="signature" />
<uses-permission android:name="com.inou.clawdnode.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" />
<application
android:name="com.inou.clawdnode.ClawdNodeApp"
android:allowBackup="false"
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:debuggable="true"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ClawdNode" >
<!-- Main Activity -->
<activity
android:name="com.inou.clawdnode.ui.MainActivity"
android:exported="true"
android:theme="@style/Theme.ClawdNode" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Core Foreground Service -->
<service
android:name="com.inou.clawdnode.service.NodeService"
android:exported="false"
android:foregroundServiceType="specialUse" >
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="AI phone assistant connecting to personal gateway" />
</service>
<!-- Notification Listener Service -->
<service
android:name="com.inou.clawdnode.notifications.NotificationListener"
android:exported="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
<!-- Call Screening Service -->
<service
android:name="com.inou.clawdnode.calls.CallScreener"
android:exported="true"
android:permission="android.permission.BIND_SCREENING_SERVICE" >
<intent-filter>
<action android:name="android.telecom.CallScreeningService" />
</intent-filter>
</service>
<!-- InCall Service for voice interaction -->
<service
android:name="com.inou.clawdnode.calls.VoiceCallService"
android:exported="true"
android:permission="android.permission.BIND_INCALL_SERVICE" >
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_UI"
android:value="false" />
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_RINGING"
android:value="false" />
<intent-filter>
<action android:name="android.telecom.InCallService" />
</intent-filter>
</service>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="com.inou.clawdnode.androidx-startup"
android:exported="false" >
<meta-data
android:name="androidx.emoji2.text.EmojiCompatInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.lifecycle.ProcessLifecycleInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.profileinstaller.ProfileInstallerInitializer"
android:value="androidx.startup" />
</provider>
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:directBootAware="false"
android:enabled="true"
android:exported="true"
android:permission="android.permission.DUMP" >
<intent-filter>
<action android:name="androidx.profileinstaller.action.INSTALL_PROFILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SKIP_FILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SAVE_PROFILE" />
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@ -1,20 +0,0 @@
{
"version": 3,
"artifactType": {
"type": "MERGED_MANIFESTS",
"kind": "Directory"
},
"applicationId": "com.inou.clawdnode",
"variantName": "debug",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "0.1.0",
"outputFile": "AndroidManifest.xml"
}
],
"elementType": "File"
}

Some files were not shown because too many files have changed in this diff Show More