Maximus upgradus
CodexBar Mobile Build / build-android (push) Failing after 1m38s
CodexBar Mobile Build / release (push) Has been skipped

This commit is contained in:
2026-06-24 20:16:34 +02:00
parent d5b0f9c833
commit ba7d957155
20 changed files with 1192 additions and 642 deletions
+65 -29
View File
@@ -11,17 +11,28 @@ import {
import { SafeAreaView } from "react-native-safe-area-context";
import { router } from "expo-router";
import { MaterialIcons } from "@expo/vector-icons";
import { saveClaudeSessionKey, loadClaudeSessionKey } from "@/lib/storage";
import {
saveClaudeSessionKey,
saveClaudeLastActiveOrg,
clearClaudeLastActiveOrg,
loadClaudeSessionKey,
loadClaudeLastActiveOrg,
} from "@/lib/storage";
export default function OnboardingClaudeScreen() {
const [savedKey, setSavedKey] = useState<string | null>(null);
const [savedOrg, setSavedOrg] = useState<string | null>(null);
const [pendingKey, setPendingKey] = useState("");
const [pendingOrg, setPendingOrg] = useState("");
const [error, setError] = useState<string | null>(null);
useEffect(() => {
loadClaudeSessionKey().then((k) => {
if (k) setSavedKey(k);
});
Promise.all([loadClaudeSessionKey(), loadClaudeLastActiveOrg()]).then(
([k, o]) => {
if (k) setSavedKey(k);
if (o) setSavedOrg(o);
}
);
}, []);
const canSave = pendingKey.trim().startsWith("sk-ant-");
@@ -32,11 +43,16 @@ export default function OnboardingClaudeScreen() {
setError("Session key must start with sk-ant-");
return;
}
const orgTrimmed = pendingOrg.trim() || undefined;
await saveClaudeSessionKey(trimmed);
if (orgTrimmed) await saveClaudeLastActiveOrg(orgTrimmed);
else await clearClaudeLastActiveOrg();
setSavedKey(trimmed);
setSavedOrg(orgTrimmed ?? null);
setPendingKey("");
setPendingOrg("");
setError(null);
}, [pendingKey]);
}, [pendingKey, pendingOrg]);
return (
<SafeAreaView className="flex-1 bg-neutral-950">
@@ -92,27 +108,38 @@ export default function OnboardingClaudeScreen() {
</Text>
{savedKey ? (
<View className="flex-row items-center gap-x-3 bg-neutral-900 rounded-2xl p-4 border border-neutral-800 mb-4">
<View
className="w-10 h-10 rounded-xl items-center justify-center"
style={{ backgroundColor: "#d9770622" }}
>
<MaterialIcons name="check-circle" size={22} color="#d97706" />
<View className="bg-neutral-900 rounded-2xl border border-neutral-800 mb-4 overflow-hidden">
<View className="flex-row items-center gap-x-3 p-4">
<View
className="w-10 h-10 rounded-xl items-center justify-center"
style={{ backgroundColor: "#d9770622" }}
>
<MaterialIcons name="check-circle" size={22} color="#d97706" />
</View>
<View className="flex-1">
<Text className="text-white font-semibold">Connected</Text>
<Text className="text-neutral-500 text-sm font-mono">
{savedKey.slice(0, 16)}
</Text>
</View>
<TouchableOpacity
onPress={() => {
setSavedKey(null);
setSavedOrg(null);
setPendingKey("");
setPendingOrg("");
}}
>
<Text className="text-neutral-400 text-xs">Change</Text>
</TouchableOpacity>
</View>
<View className="flex-1">
<Text className="text-white font-semibold">Connected</Text>
<Text className="text-neutral-500 text-sm font-mono">
{savedKey.slice(0, 16)}
</Text>
</View>
<TouchableOpacity
onPress={() => {
setSavedKey(null);
setPendingKey("");
}}
>
<Text className="text-neutral-400 text-xs">Change</Text>
</TouchableOpacity>
{savedOrg && (
<View className="border-t border-neutral-800 px-4 py-3">
<Text className="text-neutral-500 text-xs font-mono">
org: {savedOrg.slice(0, 8)}
</Text>
</View>
)}
</View>
) : (
<View>
@@ -127,13 +154,22 @@ export default function OnboardingClaudeScreen() {
setPendingKey(t);
setError(null);
}}
placeholder="sk-ant-..."
placeholder="sk-ant-… (required)"
placeholderTextColor="#525252"
autoCapitalize="none"
autoCorrect={false}
secureTextEntry
className="border border-neutral-800 rounded-xl px-4 py-3.5 text-sm text-white bg-neutral-900 mb-3"
/>
<TextInput
value={pendingOrg}
onChangeText={setPendingOrg}
placeholder="lastActiveOrg UUID (optional)"
placeholderTextColor="#525252"
autoCapitalize="none"
autoCorrect={false}
className="border border-neutral-800 rounded-xl px-4 py-3.5 text-sm text-white bg-neutral-900 mb-3"
/>
<TouchableOpacity
onPress={handleSave}
disabled={!canSave}
@@ -149,11 +185,11 @@ export default function OnboardingClaudeScreen() {
</TouchableOpacity>
<View className="bg-neutral-900 rounded-xl p-4 border border-neutral-800">
<Text className="text-neutral-400 text-xs font-semibold uppercase tracking-widest mb-2">
How to find your session key
How to find your credentials
</Text>
<Text className="text-neutral-500 text-sm leading-relaxed">
Open Claude.ai in Chrome DevTools (F12) Application Cookies claude.ai find{" "}
<Text className="text-neutral-300 font-mono">sessionKey</Text>
Open Claude.ai in Chrome DevTools (F12) Application Cookies claude.ai{"\n"}
Copy <Text className="text-neutral-300 font-mono">sessionKey</Text> and optionally <Text className="text-neutral-300 font-mono">lastActiveOrg</Text>
</Text>
</View>
</View>