Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c6b97a9
feat(mobile): read workspaces via host fan-out; host-owned rename/del…
saddlepaddle Jul 8, 2026
264995a
feat(mobile): workspace filter sheet redesign, switcher settings sect…
saddlepaddle Jul 8, 2026
05b78c1
feat(mobile): reserve bottom padding on workspace list for docked input
saddlepaddle Jul 8, 2026
68ae97a
feat(mobile): drop tab bar for single-stack nav; integrated header se…
saddlepaddle Jul 8, 2026
6d1657f
feat(mobile): move workspace filters to formSheet route with zustand …
saddlepaddle Jul 8, 2026
90554e6
feat(host-service): ship compiled router type declarations for cross-…
saddlepaddle Jul 8, 2026
e181620
feat(mobile): bottom-docked new chat widget on home
saddlepaddle Jul 8, 2026
07ffffb
feat(mobile): recent-photos carousel with multi-select in the context…
saddlepaddle Jul 8, 2026
f9a58ec
fix(mobile): drop ineffective biome suppression in useVisibleDiffStats
saddlepaddle Jul 8, 2026
9a8f743
fix(mobile): pin expo-image-manipulator to 56.0.17 to match expo-modu…
saddlepaddle Jul 8, 2026
d64376e
fix(mobile): align expo native modules to the expo-modules-core 56.0.…
saddlepaddle Jul 9, 2026
5028734
feat(mobile): settings first pass — account, organization, hosts, bil…
saddlepaddle Jul 9, 2026
2f6b737
fix(mobile): move new-chat widget sheets to native @expo/ui BottomSheet
saddlepaddle Jul 9, 2026
3110524
feat(mobile): branch picker opens as a full-height sheet
saddlepaddle Jul 9, 2026
2d4d4ac
feat(mobile): context sheet medium/large detents; Add button copy for…
saddlepaddle Jul 9, 2026
1931f0b
feat(mobile): single-host workspace view; drop Electric v2_workspaces…
saddlepaddle Jul 9, 2026
0b6a573
fix(mobile): paint sheet chrome with presentationBackground to match …
saddlepaddle Jul 9, 2026
3f30c1e
feat(mobile): screenshots picker in the context sheet
saddlepaddle Jul 9, 2026
9fa7445
feat(mobile): close buttons on all pickers/sheets; search icon in bra…
saddlepaddle Jul 9, 2026
f54c33f
feat(mobile): move new-chat pickers to native formSheet routes
saddlepaddle Jul 9, 2026
eba1533
fix(mobile): native toolbar close buttons on picker and filter sheets
saddlepaddle Jul 9, 2026
8273dde
fix(mobile): native search bar in the branch picker sheet
saddlepaddle Jul 9, 2026
9b002b9
fix(mobile): branch search back to an in-form field under the sheet h…
saddlepaddle Jul 9, 2026
dc118bd
refactor(mobile): collapse useHostWorkspaces to a single-host query
saddlepaddle Jul 9, 2026
41e78d5
fix(mobile): satisfy the formSheet header+ScrollView contract in the …
saddlepaddle Jul 9, 2026
372c6b3
fix(mobile): resolve chat hooks' workspace host without the deleted v…
saddlepaddle Jul 9, 2026
d06ab90
fix(mobile): useWorkspaceHost resolving state must ignore disabled qu…
saddlepaddle Jul 9, 2026
40f0718
fix(mobile): format app.config.ts after rebase conflict resolution
saddlepaddle Jul 9, 2026
0059f16
docs(host-service): document the interim dist-types machinery and its…
saddlepaddle Jul 9, 2026
61d1b83
fix(mobile): sort devDependencies alphabetically (sherif)
saddlepaddle Jul 9, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ node_modules
dist
dist-ssr
dist-electron
dist-types
release
*.local

Expand Down
1 change: 1 addition & 0 deletions .superset/lib/setup/steps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,7 @@ step_write_env() {
write_env_var "NEXT_PUBLIC_ELECTRIC_URL" "https://localhost:$CADDY_ELECTRIC_PORT"
write_env_var "NEXT_PUBLIC_ELECTRIC_PROXY_URL" "https://localhost:$CADDY_ELECTRIC_PORT"
write_env_var "EXPO_PUBLIC_ELECTRIC_URL" "http://localhost:$WRANGLER_PORT"
write_env_var "EXPO_PUBLIC_RELAY_URL" "http://localhost:$RELAY_PORT"
} >> .env

success "Workspace .env written"
Expand Down
7 changes: 7 additions & 0 deletions apps/mobile/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ export default ({ config }: ConfigContext) => ({
},
],
"expo-document-picker",
[
"expo-media-library",
{
photosPermission:
"Superset shows your recent photos so you can attach them to chats.",
},
],
],
extra: {
router: {},
Expand Down
32 changes: 32 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/_layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Stack } from "expo-router";

export default function HomeLayout() {
return (
<Stack
screenOptions={{
headerBackButtonDisplayMode: "minimal",
headerShadowVisible: false,
}}
>
<Stack.Screen name="index" options={{ title: "" }} />
<Stack.Screen
name="filter"
options={{
presentation: "formSheet",
headerShown: false,
sheetAllowedDetents: [1.0],
sheetGrabberVisible: true,
}}
/>
<Stack.Screen
name="new-chat"
options={{
presentation: "formSheet",
headerShown: false,
sheetAllowedDetents: [1.0],
sheetGrabberVisible: true,
}}
/>
</Stack>
);
}
17 changes: 17 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/filter/_layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Stack } from "expo-router";

export default function FilterLayout() {
return (
<Stack
screenOptions={{
headerBackButtonDisplayMode: "minimal",
headerShadowVisible: false,
}}
>
<Stack.Screen name="index" options={{ title: "Filter" }} />
<Stack.Screen name="project" options={{ title: "Project" }} />
<Stack.Screen name="host" options={{ title: "Host" }} />
<Stack.Screen name="sort" options={{ title: "Sort" }} />
</Stack>
);
}
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/filter/host.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { HostFilterScreen } from "@/screens/(authenticated)/(home)/filter/host";

export default HostFilterScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/filter/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { FilterScreen } from "@/screens/(authenticated)/(home)/filter";

export default FilterScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/filter/project.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { ProjectFilterScreen } from "@/screens/(authenticated)/(home)/filter/project";

export default ProjectFilterScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/filter/sort.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { SortFilterScreen } from "@/screens/(authenticated)/(home)/filter/sort";

export default SortFilterScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { WorkspacesScreen } from "@/screens/(authenticated)/(home)/workspaces";

export default WorkspacesScreen;
16 changes: 16 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/new-chat/_layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Stack } from "expo-router";

export default function NewChatLayout() {
return (
<Stack
screenOptions={{
headerBackButtonDisplayMode: "minimal",
headerShadowVisible: false,
}}
>
<Stack.Screen name="branch" options={{ title: "Branch" }} />
<Stack.Screen name="model" options={{ title: "Model" }} />
<Stack.Screen name="project" options={{ title: "Project" }} />
</Stack>
);
}
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/new-chat/branch.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { BranchPickerScreen } from "@/screens/(authenticated)/(home)/new-chat/branch";

export default BranchPickerScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/new-chat/model.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { ModelPickerScreen } from "@/screens/(authenticated)/(home)/new-chat/model";

export default ModelPickerScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/(home)/new-chat/project.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { ProjectPickerScreen } from "@/screens/(authenticated)/(home)/new-chat/project";

export default ProjectPickerScreen;
14 changes: 0 additions & 14 deletions apps/mobile/app/(authenticated)/(tabs)/(home)/_layout.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions apps/mobile/app/(authenticated)/(tabs)/(home)/index.tsx

This file was deleted.

11 changes: 0 additions & 11 deletions apps/mobile/app/(authenticated)/(tabs)/(more)/_layout.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions apps/mobile/app/(authenticated)/(tabs)/(more)/index.tsx

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions apps/mobile/app/(authenticated)/(tabs)/(search)/_layout.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions apps/mobile/app/(authenticated)/(tabs)/(search)/index.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions apps/mobile/app/(authenticated)/(tabs)/(tasks)/[id].tsx

This file was deleted.

11 changes: 0 additions & 11 deletions apps/mobile/app/(authenticated)/(tabs)/(tasks)/_layout.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions apps/mobile/app/(authenticated)/(tabs)/(tasks)/index.tsx

This file was deleted.

34 changes: 0 additions & 34 deletions apps/mobile/app/(authenticated)/(tabs)/_layout.tsx

This file was deleted.

29 changes: 28 additions & 1 deletion apps/mobile/app/(authenticated)/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,41 @@ import { Stack } from "expo-router";
import { useDevicePresence } from "@/hooks/useDevicePresence";
import { CollectionsProvider } from "@/screens/(authenticated)/providers/CollectionsProvider";

const settingsScreenOptions = (title: string) => ({
headerShown: true,
headerBackButtonDisplayMode: "minimal" as const,
headerShadowVisible: false,
title,
});

export default function AuthenticatedLayout() {
useDevicePresence();

return (
<CollectionsProvider>
<Stack screenOptions={{ headerShown: false }}>
<Stack.Screen name="(tabs)" />
<Stack.Screen name="(home)" />
<Stack.Screen name="workspace/[id]" />
<Stack.Screen
name="settings/index"
options={settingsScreenOptions("Settings")}
/>
<Stack.Screen
name="settings/account"
options={settingsScreenOptions("Account")}
/>
<Stack.Screen
name="settings/organization"
options={settingsScreenOptions("Organization")}
/>
<Stack.Screen
name="settings/hosts"
options={settingsScreenOptions("Hosts")}
/>
<Stack.Screen
name="settings/billing"
options={settingsScreenOptions("Billing")}
/>
</Stack>
</CollectionsProvider>
);
Expand Down
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/settings/account.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { AccountSettingsScreen } from "@/screens/(authenticated)/settings/account";

export default AccountSettingsScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/settings/billing.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { BillingSettingsScreen } from "@/screens/(authenticated)/settings/billing";

export default BillingSettingsScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/settings/hosts.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { HostsSettingsScreen } from "@/screens/(authenticated)/settings/hosts";

export default HostsSettingsScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/settings/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { SettingsScreen } from "@/screens/(authenticated)/settings";

export default SettingsScreen;
3 changes: 3 additions & 0 deletions apps/mobile/app/(authenticated)/settings/organization.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { OrganizationSettingsScreen } from "@/screens/(authenticated)/settings/organization";

export default OrganizationSettingsScreen;
9 changes: 9 additions & 0 deletions apps/mobile/hooks/useHostWorkspaces/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export {
getHostWorkspacesQueryKey,
type HostWorkspaceItem,
type HostWorkspaceRow,
type HostWorkspacesCacheOps,
type UseHostWorkspacesResult,
useHostWorkspaces,
type WorkspacesHost,
} from "./useHostWorkspaces";
Loading
Loading