yaver-feedback-react-native 0.9.0 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -1
- package/app.plugin.js +126 -9
- package/dist/AuthOverlay.d.ts +1 -14
- package/dist/AuthOverlay.js +9 -62
- package/dist/BlackBox.js +9 -1
- package/dist/DeployPanel.js +65 -0
- package/dist/Discovery.js +13 -8
- package/dist/DogfoodRuntime.d.ts +124 -0
- package/dist/DogfoodRuntime.js +273 -0
- package/dist/FeedbackModal.js +505 -65
- package/dist/LoginScreen.d.ts +1 -5
- package/dist/LoginScreen.js +2 -6
- package/dist/MachinePickerScreen.d.ts +1 -3
- package/dist/MachinePickerScreen.js +6 -18
- package/dist/P2PClient.d.ts +178 -2
- package/dist/P2PClient.js +493 -3
- package/dist/P2PDogfoodDriver.d.ts +12 -0
- package/dist/P2PDogfoodDriver.js +118 -0
- package/dist/PairDeviceModal.d.ts +2 -3
- package/dist/ShakeDetector.js +2 -0
- package/dist/VibeChatScreen.d.ts +11 -1
- package/dist/VibeChatScreen.js +200 -41
- package/dist/YaverFeedback.d.ts +132 -0
- package/dist/YaverFeedback.js +633 -65
- package/dist/YaverModeBadge.d.ts +22 -0
- package/dist/YaverModeBadge.js +219 -0
- package/dist/__tests__/AuthDevices.test.js +1 -48
- package/dist/__tests__/BlackBox.relayPassword.test.d.ts +1 -0
- package/dist/__tests__/BlackBox.relayPassword.test.js +105 -0
- package/dist/__tests__/BlackBoxAutoStart.test.d.ts +1 -0
- package/dist/__tests__/BlackBoxAutoStart.test.js +91 -0
- package/dist/__tests__/BlackBoxAutoStartColdStart.test.d.ts +1 -0
- package/dist/__tests__/BlackBoxAutoStartColdStart.test.js +156 -0
- package/dist/__tests__/BrowserLaneIcon.test.d.ts +3 -0
- package/dist/__tests__/BrowserLaneIcon.test.js +80 -0
- package/dist/__tests__/DogfoodRuntime.test.d.ts +1 -0
- package/dist/__tests__/DogfoodRuntime.test.js +116 -0
- package/dist/__tests__/P2PClient.test.js +2 -2
- package/dist/__tests__/P2PDogfoodDriver.test.d.ts +1 -0
- package/dist/__tests__/P2PDogfoodDriver.test.js +64 -0
- package/dist/__tests__/ReportIdentity.test.d.ts +25 -0
- package/dist/__tests__/ReportIdentity.test.js +180 -0
- package/dist/__tests__/SDKToken.test.js +1 -1
- package/dist/__tests__/ShakeToggle.test.d.ts +1 -0
- package/dist/__tests__/ShakeToggle.test.js +121 -0
- package/dist/__tests__/YaverFeedback.test.js +13 -3
- package/dist/__tests__/deviceDogfood.test.d.ts +1 -0
- package/dist/__tests__/deviceDogfood.test.js +86 -0
- package/dist/__tests__/dogfoodPolicy.test.d.ts +1 -0
- package/dist/__tests__/dogfoodPolicy.test.js +33 -0
- package/dist/__tests__/pickTargetDevice.test.d.ts +1 -0
- package/dist/__tests__/pickTargetDevice.test.js +89 -0
- package/dist/__tests__/reloadActions.test.d.ts +1 -0
- package/dist/__tests__/reloadActions.test.js +129 -0
- package/dist/__tests__/reloadActionsParity.test.d.ts +1 -0
- package/dist/__tests__/reloadActionsParity.test.js +42 -0
- package/dist/__tests__/types.test.js +5 -5
- package/dist/_core/ansi.d.ts +117 -0
- package/dist/_core/ansi.js +468 -0
- package/dist/_core/ansi.test.d.ts +1 -0
- package/dist/_core/ansi.test.js +225 -0
- package/dist/_core/buildFeedbackPrompt.d.ts +4 -9
- package/dist/_core/buildFeedbackPrompt.js +18 -72
- package/dist/_core/constants.d.ts +19 -6
- package/dist/_core/constants.js +20 -7
- package/dist/_core/device.d.ts +1 -5
- package/dist/_core/device.js +5 -14
- package/dist/_core/endpoints.d.ts +0 -7
- package/dist/_core/endpoints.js +0 -7
- package/dist/_core/index.d.ts +4 -0
- package/dist/_core/index.js +4 -0
- package/dist/_core/remoteless.d.ts +44 -0
- package/dist/_core/remoteless.js +75 -0
- package/dist/_core/trace.d.ts +47 -0
- package/dist/_core/trace.js +38 -0
- package/dist/_core/trace.test.d.ts +1 -0
- package/dist/_core/trace.test.js +60 -0
- package/dist/auth.d.ts +3 -60
- package/dist/auth.js +6 -88
- package/dist/deviceDogfood.d.ts +53 -0
- package/dist/deviceDogfood.js +137 -0
- package/dist/dogfoodPolicy.d.ts +25 -0
- package/dist/dogfoodPolicy.js +24 -0
- package/dist/index.d.ts +17 -4
- package/dist/index.js +33 -7
- package/dist/reloadActions.d.ts +88 -0
- package/dist/reloadActions.js +200 -0
- package/dist/storeShots.d.ts +67 -0
- package/dist/storeShots.js +137 -0
- package/dist/types.d.ts +208 -8
- package/package.json +13 -4
- package/src/AuthOverlay.tsx +20 -106
- package/src/BlackBox.ts +10 -1
- package/src/DeployPanel.tsx +74 -0
- package/src/Discovery.ts +13 -8
- package/src/DogfoodRuntime.ts +373 -0
- package/src/FeedbackModal.tsx +619 -79
- package/src/LoginScreen.tsx +2 -22
- package/src/MachinePickerScreen.tsx +6 -21
- package/src/P2PClient.ts +580 -4
- package/src/P2PDogfoodDriver.ts +132 -0
- package/src/PairDeviceModal.tsx +2 -3
- package/src/ShakeDetector.ts +1 -0
- package/src/VibeChatScreen.tsx +232 -42
- package/src/YaverFeedback.ts +631 -68
- package/src/YaverModeBadge.tsx +234 -0
- package/src/__tests__/AuthDevices.test.ts +1 -52
- package/src/__tests__/BlackBox.relayPassword.test.ts +129 -0
- package/src/__tests__/BlackBoxAutoStart.test.ts +111 -0
- package/src/__tests__/BlackBoxAutoStartColdStart.test.ts +191 -0
- package/src/__tests__/BrowserLaneIcon.test.ts +85 -0
- package/src/__tests__/DogfoodRuntime.test.ts +135 -0
- package/src/__tests__/P2PClient.test.ts +2 -2
- package/src/__tests__/P2PDogfoodDriver.test.ts +80 -0
- package/src/__tests__/ReportIdentity.test.ts +212 -0
- package/src/__tests__/SDKToken.test.ts +1 -1
- package/src/__tests__/ShakeToggle.test.ts +153 -0
- package/src/__tests__/YaverFeedback.test.ts +15 -3
- package/src/__tests__/deviceDogfood.test.ts +77 -0
- package/src/__tests__/dogfoodPolicy.test.ts +34 -0
- package/src/__tests__/pickTargetDevice.test.ts +101 -0
- package/src/__tests__/reloadActions.test.ts +171 -0
- package/src/__tests__/reloadActionsParity.test.ts +49 -0
- package/src/__tests__/types.test.ts +5 -5
- package/src/_core/ansi.test.ts +250 -0
- package/src/_core/ansi.ts +475 -0
- package/src/_core/buildFeedbackPrompt.ts +18 -95
- package/src/_core/constants.ts +20 -6
- package/src/_core/device.ts +5 -16
- package/src/_core/endpoints.ts +0 -7
- package/src/_core/index.ts +4 -0
- package/src/_core/remoteless.ts +110 -0
- package/src/_core/trace.test.ts +58 -0
- package/src/_core/trace.ts +75 -0
- package/src/auth.ts +7 -156
- package/src/deviceDogfood.ts +171 -0
- package/src/dogfoodPolicy.ts +40 -0
- package/src/index.ts +61 -11
- package/src/reloadActions.ts +273 -0
- package/src/storeShots.ts +189 -0
- package/src/types.ts +209 -8
- package/dist/GuestOnboardingScreen.d.ts +0 -8
- package/dist/GuestOnboardingScreen.js +0 -282
- package/src/GuestOnboardingScreen.tsx +0 -307
package/src/LoginScreen.tsx
CHANGED
|
@@ -113,11 +113,9 @@ const iconStyles = StyleSheet.create({
|
|
|
113
113
|
|
|
114
114
|
export interface YaverLoginScreenProps {
|
|
115
115
|
/** Invoked once a session token is issued and the user is loaded. */
|
|
116
|
-
onLoggedIn: (token: string
|
|
116
|
+
onLoggedIn: (token: string) => void;
|
|
117
117
|
/** Optional cancel button shown in header. */
|
|
118
118
|
onCancel?: () => void;
|
|
119
|
-
/** Optional prefilled guest invite code from config / deep link. */
|
|
120
|
-
initialInviteCode?: string;
|
|
121
119
|
}
|
|
122
120
|
|
|
123
121
|
/**
|
|
@@ -128,7 +126,6 @@ export interface YaverLoginScreenProps {
|
|
|
128
126
|
export const YaverLoginScreen: React.FC<YaverLoginScreenProps> = ({
|
|
129
127
|
onLoggedIn,
|
|
130
128
|
onCancel,
|
|
131
|
-
initialInviteCode,
|
|
132
129
|
}) => {
|
|
133
130
|
const [busyProvider, setBusyProvider] = useState<OAuthProvider | 'apple' | null>(null);
|
|
134
131
|
const [showEmailForm, setShowEmailForm] = useState(false);
|
|
@@ -137,7 +134,6 @@ export const YaverLoginScreen: React.FC<YaverLoginScreenProps> = ({
|
|
|
137
134
|
const [email, setEmail] = useState('');
|
|
138
135
|
const [password, setPassword] = useState('');
|
|
139
136
|
const [confirmPassword, setConfirmPassword] = useState('');
|
|
140
|
-
const [inviteCode, setInviteCode] = useState((initialInviteCode ?? '').toUpperCase());
|
|
141
137
|
const [emailBusy, setEmailBusy] = useState(false);
|
|
142
138
|
const [emailError, setEmailError] = useState('');
|
|
143
139
|
|
|
@@ -145,8 +141,7 @@ export const YaverLoginScreen: React.FC<YaverLoginScreenProps> = ({
|
|
|
145
141
|
const user = await validateToken(token);
|
|
146
142
|
await saveToken(token);
|
|
147
143
|
if (user) await saveUser(user);
|
|
148
|
-
|
|
149
|
-
onLoggedIn(token, cleanedInviteCode ? { inviteCode: cleanedInviteCode } : undefined);
|
|
144
|
+
onLoggedIn(token);
|
|
150
145
|
};
|
|
151
146
|
|
|
152
147
|
const handleApple = async () => {
|
|
@@ -330,21 +325,6 @@ export const YaverLoginScreen: React.FC<YaverLoginScreenProps> = ({
|
|
|
330
325
|
secureTextEntry
|
|
331
326
|
/>
|
|
332
327
|
)}
|
|
333
|
-
{isSignUp && (
|
|
334
|
-
<TextInput
|
|
335
|
-
style={styles.input}
|
|
336
|
-
placeholder="Invite Code (optional)"
|
|
337
|
-
placeholderTextColor="#666"
|
|
338
|
-
value={inviteCode}
|
|
339
|
-
onChangeText={(value) =>
|
|
340
|
-
setInviteCode(value.toUpperCase().replace(/[^A-Z0-9]/g, '').slice(0, 6))
|
|
341
|
-
}
|
|
342
|
-
autoCapitalize="characters"
|
|
343
|
-
autoCorrect={false}
|
|
344
|
-
maxLength={6}
|
|
345
|
-
/>
|
|
346
|
-
)}
|
|
347
|
-
|
|
348
328
|
{emailError ? (
|
|
349
329
|
<Text style={styles.errorText}>{emailError}</Text>
|
|
350
330
|
) : null}
|
|
@@ -28,9 +28,7 @@ export interface YaverMachinePickerProps {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
* List of remote dev machines the signed-in user
|
|
32
|
-
* - Owned machines (user is the host)
|
|
33
|
-
* - Shared machines (host invited them as a guest)
|
|
31
|
+
* List of remote dev machines owned by the signed-in user.
|
|
34
32
|
*
|
|
35
33
|
* Tapping a device persists it to AsyncStorage and invokes `onPick`. The
|
|
36
34
|
* SDK then uses that device's deviceId for agent discovery (LAN probe +
|
|
@@ -45,7 +43,7 @@ export const YaverMachinePickerScreen: React.FC<YaverMachinePickerProps> = ({
|
|
|
45
43
|
const [loading, setLoading] = useState(true);
|
|
46
44
|
const [refreshing, setRefreshing] = useState(false);
|
|
47
45
|
const [error, setError] = useState<string | null>(null);
|
|
48
|
-
const [list, setList] = useState<DeviceList>({ owned: []
|
|
46
|
+
const [list, setList] = useState<DeviceList>({ owned: [] });
|
|
49
47
|
const [pairingDevice, setPairingDevice] = useState<RemoteDevice | null>(null);
|
|
50
48
|
const [reachability, setReachability] = useState<Record<string, DeviceReachability | undefined>>({});
|
|
51
49
|
|
|
@@ -57,7 +55,7 @@ export const YaverMachinePickerScreen: React.FC<YaverMachinePickerProps> = ({
|
|
|
57
55
|
setList(result);
|
|
58
56
|
setReachability({});
|
|
59
57
|
void (async () => {
|
|
60
|
-
const devices =
|
|
58
|
+
const devices = result.owned;
|
|
61
59
|
const settled = await Promise.allSettled(
|
|
62
60
|
devices.map(async (device) => ({
|
|
63
61
|
deviceId: device.deviceId,
|
|
@@ -74,10 +72,8 @@ export const YaverMachinePickerScreen: React.FC<YaverMachinePickerProps> = ({
|
|
|
74
72
|
return next;
|
|
75
73
|
});
|
|
76
74
|
})();
|
|
77
|
-
if (result.owned.length === 0
|
|
78
|
-
setError(
|
|
79
|
-
'No machines found yet. If you do not have your own computer, redeem a host invite code first. Otherwise run `yaver auth` + `yaver serve` on your machine.',
|
|
80
|
-
);
|
|
75
|
+
if (result.owned.length === 0) {
|
|
76
|
+
setError('No machines found yet. Run `yaver auth` + `yaver serve` on your machine.');
|
|
81
77
|
}
|
|
82
78
|
} catch (err) {
|
|
83
79
|
setError(err instanceof Error ? err.message : String(err));
|
|
@@ -158,13 +154,8 @@ export const YaverMachinePickerScreen: React.FC<YaverMachinePickerProps> = ({
|
|
|
158
154
|
} else if (device.runnerDown) {
|
|
159
155
|
statusLine = 'Runner down — restart the coding agent on the Mac';
|
|
160
156
|
} else {
|
|
161
|
-
// Happy-path subtitle
|
|
157
|
+
// Happy-path subtitle.
|
|
162
158
|
statusLine = device.platform;
|
|
163
|
-
if (device.isGuest && device.hostEmail) {
|
|
164
|
-
statusLine = `${statusLine} • ${device.hostEmail}`;
|
|
165
|
-
} else if (device.accessScope === 'shared-scoped') {
|
|
166
|
-
statusLine = `${statusLine} • paylaşılan`;
|
|
167
|
-
}
|
|
168
159
|
}
|
|
169
160
|
return (
|
|
170
161
|
<TouchableOpacity
|
|
@@ -216,12 +207,6 @@ export const YaverMachinePickerScreen: React.FC<YaverMachinePickerProps> = ({
|
|
|
216
207
|
{list.owned.map(renderDevice)}
|
|
217
208
|
</View>
|
|
218
209
|
)}
|
|
219
|
-
{list.shared.length > 0 && (
|
|
220
|
-
<View style={styles.section}>
|
|
221
|
-
<Text style={styles.sectionTitle}>Paylaşılan (guest)</Text>
|
|
222
|
-
{list.shared.map(renderDevice)}
|
|
223
|
-
</View>
|
|
224
|
-
)}
|
|
225
210
|
{error && <Text style={styles.error}>{error}</Text>}
|
|
226
211
|
</>
|
|
227
212
|
)}
|