Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c88e6f4
wip: add liquid client and integrate sdk
PhearZero Jun 4, 2026
8c23e9e
feat: add unistyles
bwmx Jun 5, 2026
6f8ff86
Merge remote-tracking branch 'origin/fix/pnpm-package-json-issues' in…
bwmx Jun 5, 2026
dda11b1
base components & styles, add+load fonts
bwmx Jun 5, 2026
f4be0ff
convert unistyles theme to use semantics/primatives format
bwmx Jun 8, 2026
661ce04
Merge remote-tracking branch 'origin/feat/ac2-baseline-app' into feat…
bwmx Jun 8, 2026
1f8b85d
Merge remote-tracking branch 'origin/main' into feat/ui-ux-base
bwmx Jun 8, 2026
69db931
feat: add gorhom rn bottomsheet
bwmx Jun 8, 2026
39ac49a
fix font name refs
bwmx Jun 8, 2026
75c23cf
feat: `Button` color prop
bwmx Jun 8, 2026
1ca4849
fix: `Button` text should be bold
bwmx Jun 8, 2026
54b330c
feat: TelemetryTracelModal base
bwmx Jun 8, 2026
68824cb
feat: Terms and conditions screen
bwmx Jun 8, 2026
837f433
Merge remote-tracking branch 'origin/main' into feat/ui-ux-base
bwmx Jun 8, 2026
e4895b7
fix: align Telemetry Trace with MVP
bwmx Jun 9, 2026
57b7f74
Merge remote-tracking branch 'origin/feat/ac2-open-claw-reference' in…
bwmx Jun 9, 2026
0fabd52
fmt
bwmx Jun 9, 2026
0584a26
react-native-worklets fix for tests
bwmx Jun 9, 2026
35f9c0d
remove ac2-sdk from vscode workspace
bwmx Jun 9, 2026
5b027c0
update Button variants/colors to provide pills for landing/chat screen
bwmx Jun 9, 2026
d2e4f59
remove terms screen
bwmx Jun 10, 2026
b446a97
wip
bwmx Jun 14, 2026
390a1c3
feat: service secret keys modal
bwmx Jun 14, 2026
afcdfc9
refactor: simplify theme
bwmx Jun 14, 2026
d67048d
Merge origin/main into feat/mvp-ui
bwmx Jun 14, 2026
79bd412
fix: downgrade @xmldom/xmldom to version 0.8.10
bwmx Jun 14, 2026
0010711
feat: preload FontAwesome6 and MaterialIcons fonts using `useFonts`
bwmx Jun 15, 2026
2df8ae5
feat: implement MenuDrawer component with reset wallet functionality
bwmx Jun 15, 2026
df6d3f0
feat: add Controller DID display and copy functionality in MenuDrawer
bwmx Jun 15, 2026
7ac1ee6
chore: remove liquid-auth-js submodule from .gitmodules
bwmx Jun 15, 2026
77e57f5
feat: add ConnectNewAgentModal component for scanning liquid auth QR …
bwmx Jun 15, 2026
633ab68
chore: remove unused duplicate image assets
bwmx Jun 15, 2026
309bbdb
feat: update splash and adaptive icons with new design and colors
bwmx Jun 15, 2026
5d5c296
feat: show splash screen during loading
bwmx Jun 15, 2026
742074f
feat: update react-native-passkey-autofill to version 1.0.0-canary.21
bwmx Jun 15, 2026
9767736
fix: reorder loading check for fonts and status in Index component
bwmx Jun 15, 2026
211d4e7
fix: downgrade broken deps
bwmx Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions __fixtures__/chat-threads.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { ChatThread } from '@/components/ChatRow';

export const mockChatThreads: ChatThread[] = [
{
id: '1',
name: 'Finance Agent',
preview: 'Your transaction has been verified successfully.',
timestamp: '2m ago',
avatarColor: '#1a73e8',
avatarBg: '#e3f2fd',
},
{
id: '2',
name: 'GitHub Agent',
preview: 'Please sign the commit with your passkey to proceed.',
timestamp: '14m ago',
avatarColor: '#34a853',
avatarBg: '#e6f4ea',
},
{
id: '3',
name: 'Lofty AI',
preview: 'Welcome back! Your portfolio update is ready.',
timestamp: '1h ago',
avatarColor: '#ea4335',
avatarBg: '#fce8e6',
},
];
4 changes: 0 additions & 4 deletions ac2-controller.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
"name": "ROOT",
"path": ".",
},
{
"name": "ac2-sdk",
"path": "packages/ac2-sdk",
},
],
"settings": {
"npm.packageManager": "pnpm",
Expand Down
20 changes: 15 additions & 5 deletions app.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,13 @@ module.exports = {
splash: {
image: './assets/splash.png',
resizeMode: 'contain',
backgroundColor: '#ffffff',
backgroundColor: '#1a73e8',
imageWidth: 578,
},
android: {
adaptiveIcon: {
foregroundImage: './assets/adaptive-icon.png',
backgroundColor: '#ffffff',
backgroundColor: '#1a73e8',
},
edgeToEdgeEnabled: true,
predictiveBackGestureEnabled: false,
Expand All @@ -65,13 +66,22 @@ module.exports = {
},
plugins: [
'expo-router',
[
'expo-font',
{
fonts: [
'./assets/fonts/PlusJakartaSans-VariableFont_wght.ttf',
'./assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf',
],
},
],
[
'expo-splash-screen',
{
image: './assets/images/splash-icon.png',
imageWidth: 200,
image: './assets/splash-icon.png',
imageWidth: 578,
resizeMode: 'contain',
backgroundColor: '#ffffff',
backgroundColor: '#1a73e8',
dark: {
backgroundColor: '#000000',
},
Expand Down
36 changes: 23 additions & 13 deletions app/_layout.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
// MUST be first: installs `global.crypto` before any `@noble/hashes` import
// is evaluated. See `lib/runtime/install-crypto.ts`.
import { bootstrap } from '@/lib/keystore/bootstrap';
import '@/lib/runtime/install-crypto';
import { useEventListener } from 'expo';
import { Stack } from 'expo-router';
import { keyStore } from '@/stores/keystore';
import { keyStoreHooks } from '@/stores/before-after';
import { globalPolyfill, setupNavigatorPolyfill } from '@/lib/runtime/polyfill';
import { PreventScreenshotProvider } from '@/providers/PreventScreenshotProvider';
import { ReactNativeProvider, WalletProvider } from '@/providers/ReactNativeProvider';
import { accountsStore } from '@/stores/accounts';
import { keyStoreHooks } from '@/stores/before-after';
import { identitiesStore } from '@/stores/identities';
import { ReactNativeProvider, WalletProvider } from '@/providers/ReactNativeProvider';
import { keyStore } from '@/stores/keystore';
import { passkeysStore } from '@/stores/passkeys';
import { registerGlobals } from 'react-native-webrtc';
import { globalPolyfill, setupNavigatorPolyfill } from '@/lib/runtime/polyfill';
import { ReactKeystoreOptions } from '@algorandfoundation/react-native-keystore';
import ReactNativePasskeyAutofill from '@algorandfoundation/react-native-passkey-autofill';
import { bootstrap } from '@/lib/keystore/bootstrap';
import { PreventScreenshotProvider } from '@/providers/PreventScreenshotProvider';
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
import { useEventListener } from 'expo';
import { Stack } from 'expo-router';
import * as SplashScreen from 'expo-splash-screen';
import React from 'react';
import { ReactKeystoreOptions } from '@algorandfoundation/react-native-keystore';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { registerGlobals } from 'react-native-webrtc';

// Keep the splash screen visible while we fetch resources
SplashScreen.preventAutoHideAsync();

globalPolyfill();
registerGlobals();
Expand Down Expand Up @@ -84,10 +90,14 @@ export default function RootLayout() {
});

return (
<PreventScreenshotProvider>
<GestureHandlerRootView>
<WalletProvider provider={provider}>
<Stack />
<BottomSheetModalProvider>
<PreventScreenshotProvider>
<Stack />
</PreventScreenshotProvider>
</BottomSheetModalProvider>
</WalletProvider>
</PreventScreenshotProvider>
</GestureHandlerRootView>
);
}
73 changes: 21 additions & 52 deletions app/index.tsx
Original file line number Diff line number Diff line change
@@ -1,62 +1,31 @@
import React from 'react';
import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
import { Redirect } from 'expo-router';
import Constants from 'expo-constants';
import { useStore } from '@tanstack/react-store';
import { logsStore } from '@/stores/logs';
import Logo from '@/components/Logo';
import { useProvider } from '@/hooks/useProvider';
import FontAwesome6 from '@expo/vector-icons/FontAwesome6';
import MaterialIcons from '@expo/vector-icons/MaterialIcons';
import { useFonts } from 'expo-font';
import { Redirect } from 'expo-router';
import * as SplashScreen from 'expo-splash-screen';
import React from 'react';

export default function Index() {
const [fontsLoaded] = useFonts({
'PlusJakartaSans-Regular': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
'PlusJakartaSans-Medium': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
'PlusJakartaSans-SemiBold': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
'PlusJakartaSans-Bold': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
'PlusJakartaSans-Italic': require('../assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf'),
...MaterialIcons.font,
...FontAwesome6.font,
});
const { keys, status } = useProvider();
const logs = useStore(logsStore, (state) => state.logs);
const lastLog = logs.length > 0 ? logs[0].message : 'Initializing...';

const config = Constants.expoConfig?.extra?.provider || {
primaryColor: '#3B82F6',
};
React.useEffect(() => {
SplashScreen.hideAsync();
}, []);

if (status === 'loading') {
return (
<View style={styles.container}>
<Logo size={100} style={styles.logo} />
<ActivityIndicator size="large" color={config.primaryColor} />
<View style={styles.content}>
<Text style={styles.text}>{lastLog}</Text>
<Text style={styles.subtext}>Securing your keys and passkeys</Text>
</View>
</View>
);
if (!fontsLoaded || status === 'loading') {
return null;
}

if (keys.length > 0) return <Redirect href="/landing" />;
return <Redirect href="/onboarding" />;
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F8FAFC',
padding: 24,
},
logo: {
marginBottom: 40,
},
content: {
marginTop: 24,
alignItems: 'center',
},
text: {
fontSize: 18,
fontWeight: '600',
color: '#1E293B',
textAlign: 'center',
},
subtext: {
marginTop: 8,
fontSize: 14,
color: '#64748B',
textAlign: 'center',
},
});
Binary file modified assets/adaptive-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file modified assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/images/android-icon-background.png
Binary file not shown.
Binary file removed assets/images/android-icon-foreground.png
Binary file not shown.
Binary file removed assets/images/android-icon-monochrome.png
Binary file not shown.
Binary file removed assets/images/favicon.png
Binary file not shown.
Binary file removed assets/images/icon.png
Binary file not shown.
Binary file removed assets/images/partial-react-logo.png
Binary file not shown.
Binary file removed assets/images/react-logo.png
Binary file not shown.
Binary file removed assets/images/react-logo@2x.png
Binary file not shown.
Binary file removed assets/images/react-logo@3x.png
Binary file not shown.
Binary file removed assets/images/splash-icon.png
Binary file not shown.
Binary file modified assets/partial-react-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/react-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/react-logo@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/react-logo@3x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/splash-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const path = require('path');

module.exports = function (api) {
api.cache(true);

return {
// use the expo preset
presets: ['babel-preset-expo'],
// Ignore sibling workspace projects under /packages for this app build.
ignore: [
(filename) => {
if (!filename) return false;
return filename.includes(`${path.sep}packages${path.sep}`);
},
],
// other config
plugins: [
[
'react-native-unistyles/plugin',
{
// pass root folder of your application
root: 'app',
},
],
'react-native-worklets/plugin',
],
};
};
Loading
Loading