v1.1: refresh icon turns orange when refreshing, reset times show day/time, weekly reset time added, release signing configured

This commit is contained in:
2026-05-22 15:39:33 +00:00
parent 33ac02ead4
commit adb389984e
602 changed files with 29 additions and 50372 deletions
+13 -2
View File
@@ -11,14 +11,25 @@ android {
applicationId = "me.khodak.claudeusage"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
versionCode = 2
versionName = "1.1"
}
signingConfigs {
create("release") {
storeFile = file("claude-widget-release.keystore")
storePassword = "ClaudeWidget2026!"
keyAlias = "claudewidget"
keyPassword = "ClaudeWidget2026!"
}
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.getByName("release")
}
}
@@ -1,144 +0,0 @@
// Generated by view binder compiler. Do not edit!
package me.khodak.claudeusage.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
import me.khodak.claudeusage.R;
public final class ActivityLoginBinding implements ViewBinding {
@NonNull
private final LinearLayout rootView;
@NonNull
public final Button btnDone;
@NonNull
public final Button btnSaveCookie;
@NonNull
public final EditText etCookie;
@NonNull
public final LinearLayout panelBrowser;
@NonNull
public final LinearLayout panelCookie;
@NonNull
public final Button tabBrowser;
@NonNull
public final Button tabCookie;
@NonNull
public final WebView webView;
private ActivityLoginBinding(@NonNull LinearLayout rootView, @NonNull Button btnDone,
@NonNull Button btnSaveCookie, @NonNull EditText etCookie, @NonNull LinearLayout panelBrowser,
@NonNull LinearLayout panelCookie, @NonNull Button tabBrowser, @NonNull Button tabCookie,
@NonNull WebView webView) {
this.rootView = rootView;
this.btnDone = btnDone;
this.btnSaveCookie = btnSaveCookie;
this.etCookie = etCookie;
this.panelBrowser = panelBrowser;
this.panelCookie = panelCookie;
this.tabBrowser = tabBrowser;
this.tabCookie = tabCookie;
this.webView = webView;
}
@Override
@NonNull
public LinearLayout getRoot() {
return rootView;
}
@NonNull
public static ActivityLoginBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static ActivityLoginBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.activity_login, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static ActivityLoginBinding 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.btn_done;
Button btnDone = ViewBindings.findChildViewById(rootView, id);
if (btnDone == null) {
break missingId;
}
id = R.id.btn_save_cookie;
Button btnSaveCookie = ViewBindings.findChildViewById(rootView, id);
if (btnSaveCookie == null) {
break missingId;
}
id = R.id.et_cookie;
EditText etCookie = ViewBindings.findChildViewById(rootView, id);
if (etCookie == null) {
break missingId;
}
id = R.id.panel_browser;
LinearLayout panelBrowser = ViewBindings.findChildViewById(rootView, id);
if (panelBrowser == null) {
break missingId;
}
id = R.id.panel_cookie;
LinearLayout panelCookie = ViewBindings.findChildViewById(rootView, id);
if (panelCookie == null) {
break missingId;
}
id = R.id.tab_browser;
Button tabBrowser = ViewBindings.findChildViewById(rootView, id);
if (tabBrowser == null) {
break missingId;
}
id = R.id.tab_cookie;
Button tabCookie = ViewBindings.findChildViewById(rootView, id);
if (tabCookie == null) {
break missingId;
}
id = R.id.webView;
WebView webView = ViewBindings.findChildViewById(rootView, id);
if (webView == null) {
break missingId;
}
return new ActivityLoginBinding((LinearLayout) rootView, btnDone, btnSaveCookie, etCookie,
panelBrowser, panelCookie, tabBrowser, tabCookie, webView);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,241 +0,0 @@
// Generated by view binder compiler. Do not edit!
package me.khodak.claudeusage.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
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 java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
import me.khodak.claudeusage.R;
public final class ActivityMainBinding implements ViewBinding {
@NonNull
private final ScrollView rootView;
@NonNull
public final Button btnDebug;
@NonNull
public final Button btnLogin;
@NonNull
public final Button btnLogout;
@NonNull
public final Button btnRefresh;
@NonNull
public final LinearLayout layoutLoggedIn;
@NonNull
public final LinearLayout layoutLoggedOut;
@NonNull
public final ProgressBar progressBar;
@NonNull
public final ProgressBar progressBarWeekly;
@NonNull
public final ProgressBar progressIndicator;
@NonNull
public final TextView tvDebugInfo;
@NonNull
public final TextView tvError;
@NonNull
public final TextView tvReset;
@NonNull
public final TextView tvUpdated;
@NonNull
public final TextView tvUsage;
@NonNull
public final TextView tvWeeklyReset;
@NonNull
public final TextView tvWeeklyUsage;
@NonNull
public final TextView tvWidgetHint;
private ActivityMainBinding(@NonNull ScrollView rootView, @NonNull Button btnDebug,
@NonNull Button btnLogin, @NonNull Button btnLogout, @NonNull Button btnRefresh,
@NonNull LinearLayout layoutLoggedIn, @NonNull LinearLayout layoutLoggedOut,
@NonNull ProgressBar progressBar, @NonNull ProgressBar progressBarWeekly,
@NonNull ProgressBar progressIndicator, @NonNull TextView tvDebugInfo,
@NonNull TextView tvError, @NonNull TextView tvReset, @NonNull TextView tvUpdated,
@NonNull TextView tvUsage, @NonNull TextView tvWeeklyReset, @NonNull TextView tvWeeklyUsage,
@NonNull TextView tvWidgetHint) {
this.rootView = rootView;
this.btnDebug = btnDebug;
this.btnLogin = btnLogin;
this.btnLogout = btnLogout;
this.btnRefresh = btnRefresh;
this.layoutLoggedIn = layoutLoggedIn;
this.layoutLoggedOut = layoutLoggedOut;
this.progressBar = progressBar;
this.progressBarWeekly = progressBarWeekly;
this.progressIndicator = progressIndicator;
this.tvDebugInfo = tvDebugInfo;
this.tvError = tvError;
this.tvReset = tvReset;
this.tvUpdated = tvUpdated;
this.tvUsage = tvUsage;
this.tvWeeklyReset = tvWeeklyReset;
this.tvWeeklyUsage = tvWeeklyUsage;
this.tvWidgetHint = tvWidgetHint;
}
@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.btnDebug;
Button btnDebug = ViewBindings.findChildViewById(rootView, id);
if (btnDebug == null) {
break missingId;
}
id = R.id.btnLogin;
Button btnLogin = ViewBindings.findChildViewById(rootView, id);
if (btnLogin == null) {
break missingId;
}
id = R.id.btnLogout;
Button btnLogout = ViewBindings.findChildViewById(rootView, id);
if (btnLogout == null) {
break missingId;
}
id = R.id.btnRefresh;
Button btnRefresh = ViewBindings.findChildViewById(rootView, id);
if (btnRefresh == null) {
break missingId;
}
id = R.id.layoutLoggedIn;
LinearLayout layoutLoggedIn = ViewBindings.findChildViewById(rootView, id);
if (layoutLoggedIn == null) {
break missingId;
}
id = R.id.layoutLoggedOut;
LinearLayout layoutLoggedOut = ViewBindings.findChildViewById(rootView, id);
if (layoutLoggedOut == null) {
break missingId;
}
id = R.id.progressBar;
ProgressBar progressBar = ViewBindings.findChildViewById(rootView, id);
if (progressBar == null) {
break missingId;
}
id = R.id.progressBarWeekly;
ProgressBar progressBarWeekly = ViewBindings.findChildViewById(rootView, id);
if (progressBarWeekly == null) {
break missingId;
}
id = R.id.progressIndicator;
ProgressBar progressIndicator = ViewBindings.findChildViewById(rootView, id);
if (progressIndicator == null) {
break missingId;
}
id = R.id.tvDebugInfo;
TextView tvDebugInfo = ViewBindings.findChildViewById(rootView, id);
if (tvDebugInfo == null) {
break missingId;
}
id = R.id.tvError;
TextView tvError = ViewBindings.findChildViewById(rootView, id);
if (tvError == null) {
break missingId;
}
id = R.id.tvReset;
TextView tvReset = ViewBindings.findChildViewById(rootView, id);
if (tvReset == null) {
break missingId;
}
id = R.id.tvUpdated;
TextView tvUpdated = ViewBindings.findChildViewById(rootView, id);
if (tvUpdated == null) {
break missingId;
}
id = R.id.tvUsage;
TextView tvUsage = ViewBindings.findChildViewById(rootView, id);
if (tvUsage == null) {
break missingId;
}
id = R.id.tvWeeklyReset;
TextView tvWeeklyReset = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyReset == null) {
break missingId;
}
id = R.id.tvWeeklyUsage;
TextView tvWeeklyUsage = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyUsage == null) {
break missingId;
}
id = R.id.tvWidgetHint;
TextView tvWidgetHint = ViewBindings.findChildViewById(rootView, id);
if (tvWidgetHint == null) {
break missingId;
}
return new ActivityMainBinding((ScrollView) rootView, btnDebug, btnLogin, btnLogout,
btnRefresh, layoutLoggedIn, layoutLoggedOut, progressBar, progressBarWeekly,
progressIndicator, tvDebugInfo, tvError, tvReset, tvUpdated, tvUsage, tvWeeklyReset,
tvWeeklyUsage, tvWidgetHint);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,162 +0,0 @@
// Generated by view binder compiler. Do not edit!
package me.khodak.claudeusage.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
import me.khodak.claudeusage.R;
public final class WidgetLayoutBinding implements ViewBinding {
@NonNull
private final LinearLayout rootView;
@NonNull
public final ImageButton btnRefresh;
@NonNull
public final ProgressBar progressBar;
@NonNull
public final ProgressBar progressBarWeekly;
@NonNull
public final TextView tvSessionLabel;
@NonNull
public final TextView tvSessionValue;
@NonNull
public final TextView tvStatus;
@NonNull
public final TextView tvUpdated;
@NonNull
public final TextView tvWeeklyLabel;
@NonNull
public final TextView tvWeeklyValue;
@NonNull
public final LinearLayout widgetRoot;
private WidgetLayoutBinding(@NonNull LinearLayout rootView, @NonNull ImageButton btnRefresh,
@NonNull ProgressBar progressBar, @NonNull ProgressBar progressBarWeekly,
@NonNull TextView tvSessionLabel, @NonNull TextView tvSessionValue,
@NonNull TextView tvStatus, @NonNull TextView tvUpdated, @NonNull TextView tvWeeklyLabel,
@NonNull TextView tvWeeklyValue, @NonNull LinearLayout widgetRoot) {
this.rootView = rootView;
this.btnRefresh = btnRefresh;
this.progressBar = progressBar;
this.progressBarWeekly = progressBarWeekly;
this.tvSessionLabel = tvSessionLabel;
this.tvSessionValue = tvSessionValue;
this.tvStatus = tvStatus;
this.tvUpdated = tvUpdated;
this.tvWeeklyLabel = tvWeeklyLabel;
this.tvWeeklyValue = tvWeeklyValue;
this.widgetRoot = widgetRoot;
}
@Override
@NonNull
public LinearLayout getRoot() {
return rootView;
}
@NonNull
public static WidgetLayoutBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static WidgetLayoutBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.widget_layout, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static WidgetLayoutBinding 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.btn_refresh;
ImageButton btnRefresh = ViewBindings.findChildViewById(rootView, id);
if (btnRefresh == null) {
break missingId;
}
id = R.id.progress_bar;
ProgressBar progressBar = ViewBindings.findChildViewById(rootView, id);
if (progressBar == null) {
break missingId;
}
id = R.id.progress_bar_weekly;
ProgressBar progressBarWeekly = ViewBindings.findChildViewById(rootView, id);
if (progressBarWeekly == null) {
break missingId;
}
id = R.id.tv_session_label;
TextView tvSessionLabel = ViewBindings.findChildViewById(rootView, id);
if (tvSessionLabel == null) {
break missingId;
}
id = R.id.tv_session_value;
TextView tvSessionValue = ViewBindings.findChildViewById(rootView, id);
if (tvSessionValue == null) {
break missingId;
}
id = R.id.tv_status;
TextView tvStatus = ViewBindings.findChildViewById(rootView, id);
if (tvStatus == null) {
break missingId;
}
id = R.id.tv_updated;
TextView tvUpdated = ViewBindings.findChildViewById(rootView, id);
if (tvUpdated == null) {
break missingId;
}
id = R.id.tv_weekly_label;
TextView tvWeeklyLabel = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyLabel == null) {
break missingId;
}
id = R.id.tv_weekly_value;
TextView tvWeeklyValue = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyValue == null) {
break missingId;
}
LinearLayout widgetRoot = (LinearLayout) rootView;
return new WidgetLayoutBinding((LinearLayout) rootView, btnRefresh, progressBar,
progressBarWeekly, tvSessionLabel, tvSessionValue, tvStatus, tvUpdated, tvWeeklyLabel,
tvWeeklyValue, widgetRoot);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,152 +0,0 @@
// Generated by view binder compiler. Do not edit!
package me.khodak.claudeusage.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
import me.khodak.claudeusage.R;
public final class WidgetLayoutSmallBinding implements ViewBinding {
@NonNull
private final LinearLayout rootView;
@NonNull
public final ImageButton btnRefresh;
@NonNull
public final ProgressBar progressBar;
@NonNull
public final ProgressBar progressBarWeekly;
@NonNull
public final TextView tvSessionLabel;
@NonNull
public final TextView tvSessionValue;
@NonNull
public final TextView tvStatus;
@NonNull
public final TextView tvWeeklyLabel;
@NonNull
public final TextView tvWeeklyValue;
@NonNull
public final LinearLayout widgetRoot;
private WidgetLayoutSmallBinding(@NonNull LinearLayout rootView, @NonNull ImageButton btnRefresh,
@NonNull ProgressBar progressBar, @NonNull ProgressBar progressBarWeekly,
@NonNull TextView tvSessionLabel, @NonNull TextView tvSessionValue,
@NonNull TextView tvStatus, @NonNull TextView tvWeeklyLabel, @NonNull TextView tvWeeklyValue,
@NonNull LinearLayout widgetRoot) {
this.rootView = rootView;
this.btnRefresh = btnRefresh;
this.progressBar = progressBar;
this.progressBarWeekly = progressBarWeekly;
this.tvSessionLabel = tvSessionLabel;
this.tvSessionValue = tvSessionValue;
this.tvStatus = tvStatus;
this.tvWeeklyLabel = tvWeeklyLabel;
this.tvWeeklyValue = tvWeeklyValue;
this.widgetRoot = widgetRoot;
}
@Override
@NonNull
public LinearLayout getRoot() {
return rootView;
}
@NonNull
public static WidgetLayoutSmallBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static WidgetLayoutSmallBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.widget_layout_small, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static WidgetLayoutSmallBinding 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.btn_refresh;
ImageButton btnRefresh = ViewBindings.findChildViewById(rootView, id);
if (btnRefresh == null) {
break missingId;
}
id = R.id.progress_bar;
ProgressBar progressBar = ViewBindings.findChildViewById(rootView, id);
if (progressBar == null) {
break missingId;
}
id = R.id.progress_bar_weekly;
ProgressBar progressBarWeekly = ViewBindings.findChildViewById(rootView, id);
if (progressBarWeekly == null) {
break missingId;
}
id = R.id.tv_session_label;
TextView tvSessionLabel = ViewBindings.findChildViewById(rootView, id);
if (tvSessionLabel == null) {
break missingId;
}
id = R.id.tv_session_value;
TextView tvSessionValue = ViewBindings.findChildViewById(rootView, id);
if (tvSessionValue == null) {
break missingId;
}
id = R.id.tv_status;
TextView tvStatus = ViewBindings.findChildViewById(rootView, id);
if (tvStatus == null) {
break missingId;
}
id = R.id.tv_weekly_label;
TextView tvWeeklyLabel = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyLabel == null) {
break missingId;
}
id = R.id.tv_weekly_value;
TextView tvWeeklyValue = ViewBindings.findChildViewById(rootView, id);
if (tvWeeklyValue == null) {
break missingId;
}
LinearLayout widgetRoot = (LinearLayout) rootView;
return new WidgetLayoutSmallBinding((LinearLayout) rootView, btnRefresh, progressBar,
progressBarWeekly, tvSessionLabel, tvSessionValue, tvStatus, tvWeeklyLabel, tvWeeklyValue,
widgetRoot);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,2 +0,0 @@
#- File Locator -
listingFile=../../../outputs/apk/debug/output-metadata.json
@@ -1,2 +0,0 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.2.2
@@ -1,10 +0,0 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "me.khodak.claudeusage",
"variantName": "debug",
"elements": []
}
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_login" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/activity_login.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout"><Targets><Target tag="layout/activity_login_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="121" endOffset="14"/></Target><Target id="@+id/tab_browser" view="Button"><Expressions/><location startLine="14" startOffset="8" endLine="22" endOffset="41"/></Target><Target id="@+id/tab_cookie" view="Button"><Expressions/><location startLine="24" startOffset="8" endLine="32" endOffset="41"/></Target><Target id="@+id/panel_browser" view="LinearLayout"><Expressions/><location startLine="37" startOffset="4" endLine="59" endOffset="18"/></Target><Target id="@+id/webView" view="WebView"><Expressions/><location startLine="43" startOffset="8" endLine="47" endOffset="39"/></Target><Target id="@+id/btn_done" view="Button"><Expressions/><location startLine="49" startOffset="8" endLine="57" endOffset="42"/></Target><Target id="@+id/panel_cookie" view="LinearLayout"><Expressions/><location startLine="62" startOffset="4" endLine="119" endOffset="18"/></Target><Target id="@+id/et_cookie" view="EditText"><Expressions/><location startLine="96" startOffset="8" endLine="108" endOffset="37"/></Target><Target id="@+id/btn_save_cookie" view="Button"><Expressions/><location startLine="110" startOffset="8" endLine="117" endOffset="41"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_main" modulePackage="me.khodak.claudeusage" 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="243" endOffset="12"/></Target><Target id="@+id/progressIndicator" view="ProgressBar"><Expressions/><location startLine="41" startOffset="8" endLine="46" endOffset="39"/></Target><Target id="@+id/layoutLoggedOut" view="LinearLayout"><Expressions/><location startLine="49" startOffset="8" endLine="75" endOffset="22"/></Target><Target id="@+id/btnLogin" view="Button"><Expressions/><location startLine="66" startOffset="12" endLine="73" endOffset="45"/></Target><Target id="@+id/layoutLoggedIn" view="LinearLayout"><Expressions/><location startLine="78" startOffset="8" endLine="240" endOffset="22"/></Target><Target id="@+id/tvUsage" view="TextView"><Expressions/><location startLine="102" startOffset="16" endLine="110" endOffset="46"/></Target><Target id="@+id/progressBar" view="ProgressBar"><Expressions/><location startLine="112" startOffset="16" endLine="121" endOffset="62"/></Target><Target id="@+id/tvReset" view="TextView"><Expressions/><location startLine="123" startOffset="16" endLine="129" endOffset="45"/></Target><Target id="@+id/tvWeeklyUsage" view="TextView"><Expressions/><location startLine="140" startOffset="16" endLine="148" endOffset="46"/></Target><Target id="@+id/progressBarWeekly" view="ProgressBar"><Expressions/><location startLine="150" startOffset="16" endLine="159" endOffset="62"/></Target><Target id="@+id/tvWeeklyReset" view="TextView"><Expressions/><location startLine="161" startOffset="16" endLine="167" endOffset="45"/></Target><Target id="@+id/tvUpdated" view="TextView"><Expressions/><location startLine="169" startOffset="16" endLine="175" endOffset="45"/></Target><Target id="@+id/tvError" view="TextView"><Expressions/><location startLine="177" startOffset="16" endLine="184" endOffset="47"/></Target><Target id="@+id/btnRefresh" view="Button"><Expressions/><location startLine="188" startOffset="12" endLine="195" endOffset="45"/></Target><Target id="@+id/tvWidgetHint" view="TextView"><Expressions/><location startLine="197" startOffset="12" endLine="207" endOffset="39"/></Target><Target id="@+id/btnLogout" view="Button"><Expressions/><location startLine="209" startOffset="12" endLine="216" endOffset="45"/></Target><Target id="@+id/btnDebug" view="Button"><Expressions/><location startLine="218" startOffset="12" endLine="226" endOffset="41"/></Target><Target id="@+id/tvDebugInfo" view="TextView"><Expressions/><location startLine="228" startOffset="12" endLine="238" endOffset="43"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="widget_layout" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/widget_layout.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout" rootNodeViewId="@+id/widget_root"><Targets><Target id="@+id/widget_root" tag="layout/widget_layout_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="168" endOffset="14"/></Target><Target id="@+id/btn_refresh" view="ImageButton"><Expressions/><location startLine="25" startOffset="8" endLine="32" endOffset="50"/></Target><Target id="@+id/tv_session_value" view="TextView"><Expressions/><location startLine="60" startOffset="8" endLine="67" endOffset="38"/></Target><Target id="@+id/progress_bar" view="ProgressBar"><Expressions/><location startLine="71" startOffset="4" endLine="80" endOffset="50"/></Target><Target id="@+id/tv_session_label" view="TextView"><Expressions/><location startLine="82" startOffset="4" endLine="89" endOffset="32"/></Target><Target id="@+id/tv_weekly_value" view="TextView"><Expressions/><location startLine="108" startOffset="8" endLine="115" endOffset="38"/></Target><Target id="@+id/progress_bar_weekly" view="ProgressBar"><Expressions/><location startLine="119" startOffset="4" endLine="128" endOffset="50"/></Target><Target id="@+id/tv_weekly_label" view="TextView"><Expressions/><location startLine="130" startOffset="4" endLine="137" endOffset="32"/></Target><Target id="@+id/tv_status" view="TextView"><Expressions/><location startLine="147" startOffset="8" endLine="156" endOffset="37"/></Target><Target id="@+id/tv_updated" view="TextView"><Expressions/><location startLine="158" startOffset="8" endLine="164" endOffset="36"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="widget_layout_small" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/widget_layout_small.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout" rootNodeViewId="@+id/widget_root"><Targets><Target id="@+id/widget_root" tag="layout/widget_layout_small_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="141" endOffset="14"/></Target><Target id="@+id/btn_refresh" view="ImageButton"><Expressions/><location startLine="25" startOffset="8" endLine="31" endOffset="50"/></Target><Target id="@+id/tv_session_value" view="TextView"><Expressions/><location startLine="52" startOffset="8" endLine="59" endOffset="38"/></Target><Target id="@+id/tv_session_label" view="TextView"><Expressions/><location startLine="61" startOffset="8" endLine="68" endOffset="36"/></Target><Target id="@+id/progress_bar" view="ProgressBar"><Expressions/><location startLine="72" startOffset="4" endLine="81" endOffset="50"/></Target><Target id="@+id/tv_weekly_value" view="TextView"><Expressions/><location startLine="100" startOffset="8" endLine="107" endOffset="38"/></Target><Target id="@+id/tv_weekly_label" view="TextView"><Expressions/><location startLine="109" startOffset="8" endLine="116" endOffset="36"/></Target><Target id="@+id/progress_bar_weekly" view="ProgressBar"><Expressions/><location startLine="120" startOffset="4" endLine="129" endOffset="50"/></Target><Target id="@+id/tv_status" view="TextView"><Expressions/><location startLine="131" startOffset="4" endLine="139" endOffset="30"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_login" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/activity_login.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout"><Targets><Target tag="layout/activity_login_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="121" endOffset="14"/></Target><Target id="@+id/tab_browser" view="Button"><Expressions/><location startLine="14" startOffset="8" endLine="22" endOffset="41"/></Target><Target id="@+id/tab_cookie" view="Button"><Expressions/><location startLine="24" startOffset="8" endLine="32" endOffset="41"/></Target><Target id="@+id/panel_browser" view="LinearLayout"><Expressions/><location startLine="37" startOffset="4" endLine="59" endOffset="18"/></Target><Target id="@+id/webView" view="WebView"><Expressions/><location startLine="43" startOffset="8" endLine="47" endOffset="39"/></Target><Target id="@+id/btn_done" view="Button"><Expressions/><location startLine="49" startOffset="8" endLine="57" endOffset="42"/></Target><Target id="@+id/panel_cookie" view="LinearLayout"><Expressions/><location startLine="62" startOffset="4" endLine="119" endOffset="18"/></Target><Target id="@+id/et_cookie" view="EditText"><Expressions/><location startLine="96" startOffset="8" endLine="108" endOffset="37"/></Target><Target id="@+id/btn_save_cookie" view="Button"><Expressions/><location startLine="110" startOffset="8" endLine="117" endOffset="41"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_main" modulePackage="me.khodak.claudeusage" 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="243" endOffset="12"/></Target><Target id="@+id/progressIndicator" view="ProgressBar"><Expressions/><location startLine="41" startOffset="8" endLine="46" endOffset="39"/></Target><Target id="@+id/layoutLoggedOut" view="LinearLayout"><Expressions/><location startLine="49" startOffset="8" endLine="75" endOffset="22"/></Target><Target id="@+id/btnLogin" view="Button"><Expressions/><location startLine="66" startOffset="12" endLine="73" endOffset="45"/></Target><Target id="@+id/layoutLoggedIn" view="LinearLayout"><Expressions/><location startLine="78" startOffset="8" endLine="240" endOffset="22"/></Target><Target id="@+id/tvUsage" view="TextView"><Expressions/><location startLine="102" startOffset="16" endLine="110" endOffset="46"/></Target><Target id="@+id/progressBar" view="ProgressBar"><Expressions/><location startLine="112" startOffset="16" endLine="121" endOffset="62"/></Target><Target id="@+id/tvReset" view="TextView"><Expressions/><location startLine="123" startOffset="16" endLine="129" endOffset="45"/></Target><Target id="@+id/tvWeeklyUsage" view="TextView"><Expressions/><location startLine="140" startOffset="16" endLine="148" endOffset="46"/></Target><Target id="@+id/progressBarWeekly" view="ProgressBar"><Expressions/><location startLine="150" startOffset="16" endLine="159" endOffset="62"/></Target><Target id="@+id/tvWeeklyReset" view="TextView"><Expressions/><location startLine="161" startOffset="16" endLine="167" endOffset="45"/></Target><Target id="@+id/tvUpdated" view="TextView"><Expressions/><location startLine="169" startOffset="16" endLine="175" endOffset="45"/></Target><Target id="@+id/tvError" view="TextView"><Expressions/><location startLine="177" startOffset="16" endLine="184" endOffset="47"/></Target><Target id="@+id/btnRefresh" view="Button"><Expressions/><location startLine="188" startOffset="12" endLine="195" endOffset="45"/></Target><Target id="@+id/tvWidgetHint" view="TextView"><Expressions/><location startLine="197" startOffset="12" endLine="207" endOffset="39"/></Target><Target id="@+id/btnLogout" view="Button"><Expressions/><location startLine="209" startOffset="12" endLine="216" endOffset="45"/></Target><Target id="@+id/btnDebug" view="Button"><Expressions/><location startLine="218" startOffset="12" endLine="226" endOffset="41"/></Target><Target id="@+id/tvDebugInfo" view="TextView"><Expressions/><location startLine="228" startOffset="12" endLine="238" endOffset="43"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="widget_layout" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/widget_layout.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout" rootNodeViewId="@+id/widget_root"><Targets><Target id="@+id/widget_root" tag="layout/widget_layout_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="168" endOffset="14"/></Target><Target id="@+id/btn_refresh" view="ImageButton"><Expressions/><location startLine="25" startOffset="8" endLine="32" endOffset="50"/></Target><Target id="@+id/tv_session_value" view="TextView"><Expressions/><location startLine="60" startOffset="8" endLine="67" endOffset="38"/></Target><Target id="@+id/progress_bar" view="ProgressBar"><Expressions/><location startLine="71" startOffset="4" endLine="80" endOffset="50"/></Target><Target id="@+id/tv_session_label" view="TextView"><Expressions/><location startLine="82" startOffset="4" endLine="89" endOffset="32"/></Target><Target id="@+id/tv_weekly_value" view="TextView"><Expressions/><location startLine="108" startOffset="8" endLine="115" endOffset="38"/></Target><Target id="@+id/progress_bar_weekly" view="ProgressBar"><Expressions/><location startLine="119" startOffset="4" endLine="128" endOffset="50"/></Target><Target id="@+id/tv_weekly_label" view="TextView"><Expressions/><location startLine="130" startOffset="4" endLine="137" endOffset="32"/></Target><Target id="@+id/tv_status" view="TextView"><Expressions/><location startLine="147" startOffset="8" endLine="156" endOffset="37"/></Target><Target id="@+id/tv_updated" view="TextView"><Expressions/><location startLine="158" startOffset="8" endLine="164" endOffset="36"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="widget_layout_small" modulePackage="me.khodak.claudeusage" filePath="app/src/main/res/layout/widget_layout_small.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.LinearLayout" rootNodeViewId="@+id/widget_root"><Targets><Target id="@+id/widget_root" tag="layout/widget_layout_small_0" view="LinearLayout"><Expressions/><location startLine="1" startOffset="0" endLine="141" endOffset="14"/></Target><Target id="@+id/btn_refresh" view="ImageButton"><Expressions/><location startLine="25" startOffset="8" endLine="31" endOffset="50"/></Target><Target id="@+id/tv_session_value" view="TextView"><Expressions/><location startLine="52" startOffset="8" endLine="59" endOffset="38"/></Target><Target id="@+id/tv_session_label" view="TextView"><Expressions/><location startLine="61" startOffset="8" endLine="68" endOffset="36"/></Target><Target id="@+id/progress_bar" view="ProgressBar"><Expressions/><location startLine="72" startOffset="4" endLine="81" endOffset="50"/></Target><Target id="@+id/tv_weekly_value" view="TextView"><Expressions/><location startLine="100" startOffset="8" endLine="107" endOffset="38"/></Target><Target id="@+id/tv_weekly_label" view="TextView"><Expressions/><location startLine="109" startOffset="8" endLine="116" endOffset="36"/></Target><Target id="@+id/progress_bar_weekly" view="ProgressBar"><Expressions/><location startLine="120" startOffset="4" endLine="129" endOffset="50"/></Target><Target id="@+id/tv_status" view="TextView"><Expressions/><location startLine="131" startOffset="4" endLine="139" endOffset="30"/></Target></Targets></Layout>
@@ -1 +0,0 @@
8

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