fix(ios): close final release review blockers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Dennis V
2026-07-14 17:49:53 +00:00
parent c287ecad70
commit d1071b2a44
10 changed files with 50 additions and 16 deletions

View File

@@ -7,6 +7,7 @@
import { View, Text, TouchableOpacity, StyleSheet, useColorScheme, Modal, Linking } from "react-native"
import { Ionicons } from "@expo/vector-icons"
import { PRIVACY_POLICY_URL } from "../lib/links"
interface Props {
visible: boolean
@@ -45,9 +46,7 @@ export function TelemetryConsentModal({ visible, onAllow, onDecline }: Props) {
</View>
{/* Privacy policy link */}
<TouchableOpacity
onPress={() => Linking.openURL("https://agentlabs.cc/opencode/privacy")}
>
<TouchableOpacity onPress={() => Linking.openURL(PRIVACY_POLICY_URL)}>
<Text style={styles.privacyLink}>Read our full privacy policy</Text>
</TouchableOpacity>

1
src/lib/links.ts Normal file
View File

@@ -0,0 +1 @@
export const PRIVACY_POLICY_URL = "https://dzianisv.github.io/opencode-mobile/privacy/"

View File

@@ -232,7 +232,10 @@ export function createClient(config: ClientConfig) {
try {
yield JSON.parse(data)
} catch (err) {
console.warn("[SSE] Failed to parse event:", data.slice(0, 200), err)
console.warn("[SSE] Failed to parse event", {
length: data.length,
error: err instanceof Error ? err.message : String(err),
})
}
}
}

View File

@@ -50,6 +50,8 @@ export function initSentry() {
return scrubEvent(event)
},
beforeBreadcrumb(crumb) {
// Console output can contain malformed server payloads, prompts, or code.
if (crumb.category === "console") return null
if (crumb.data && typeof crumb.data === "object") {
crumb.data = redactObject(crumb.data as Record<string, unknown>)
}
@@ -149,6 +151,7 @@ function scrubEvent<T extends Sentry.Event>(event: T): T {
}
}
if (event.breadcrumbs) {
event.breadcrumbs = event.breadcrumbs.filter((crumb) => crumb.category !== "console")
for (const crumb of event.breadcrumbs) {
if (typeof crumb.message === "string") crumb.message = redactString(crumb.message)
if (crumb.data && typeof crumb.data === "object") {