Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ Local workspace additions:
- Prefer the `jcodemunch` MCP server for repository exploration when it is available.
- Use `jcodemunch` for symbol search, file outlines, repo outlines, and targeted code retrieval before falling back to broad file reads.
- Fall back to `rg`, `sed`, and direct file reads when `jcodemunch` is unavailable or when raw file context is clearly more appropriate.
- For UI architecture work, prefer deletion over adaptation when an abstraction is dormant, duplicated, or only partially wired.
- Maintain one primary styling path. Remove inactive Tailwind/NativeWind plumbing rather than preserving “optional” styling systems.
- Maintain one runtime theme source. Do not keep fake appearance modes or duplicate token layers alive for compatibility alone.
- Prefer a small primitive layer (`text`, `icon`, `pressable`, `surface`, `field`, `button`, `list-row`) and compose feature widgets from it.
- Reduce role-based duplication by extracting shared presenters and thin role-specific data containers when possible.
- Remove pass-through screen/layout wrappers unless they enforce a real invariant shared across routes.
2 changes: 1 addition & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = (api) => {
api.cache(true);
return {
presets: [["babel-preset-expo", { jsxImportSource: "nativewind" }], "nativewind/babel"],
presets: ["babel-preset-expo"],
plugins: ["react-native-reanimated/plugin"],
};
};
116 changes: 6 additions & 110 deletions bun.lock

Large diffs are not rendered by default.

15 changes: 13 additions & 2 deletions convex/calendarNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -645,8 +645,19 @@ export const syncMyGoogleCalendarEventsInternal = internalAction({
importedCount: v.number(),
importedRemovedCount: v.number(),
}),
handler: async (ctx, args) => {
const currentUser = await ctx.runQuery(api.users.getCurrentUser as any, {});
handler: async (
ctx,
args,
): Promise<{
ok: boolean;
syncedCount: number;
removedCount: number;
importedCount: number;
importedRemovedCount: number;
}> => {
const currentUser = (await ctx.runQuery(api.users.getCurrentUser as any, {})) as
| { _id: Id<"users">; role: string }
| null;
if (!currentUser || (currentUser.role !== "instructor" && currentUser.role !== "studio")) {
throw new ConvexError("Only instructors and studios can sync Google Calendar");
}
Expand Down
3 changes: 0 additions & 3 deletions global.css

This file was deleted.

3 changes: 1 addition & 2 deletions metro.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
const path = require("node:path");
const { getDefaultConfig } = require("expo/metro-config");
const { withNativeWind } = require("nativewind/metro");

const config = getDefaultConfig(__dirname);

Expand Down Expand Up @@ -45,4 +44,4 @@ config.transformer.getTransformOptions = async () => ({
},
});

module.exports = withNativeWind(config, { input: "./global.css" });
module.exports = config;
1 change: 0 additions & 1 deletion nativewind-env.d.ts

This file was deleted.

6 changes: 1 addition & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"version": "1.0.0",
"scripts": {
"dev": "bun run ./scripts/dev/dev.ts",
"postinstall": "node ./scripts/patches/patch-react-native-css-interop-safe-area.mjs && node ./scripts/patches/patch-expo-devtools-keep-awake.mjs && node ./scripts/patches/patch-expo-router-react-navigation-dedupe.mjs",
"postinstall": "node ./scripts/patches/patch-expo-devtools-keep-awake.mjs && node ./scripts/patches/patch-expo-router-react-navigation-dedupe.mjs",
"start": "expo start",
"reset-project": "node ./scripts/reset-project.js",
"android": "node ./scripts/android/start-expo.mjs",
Expand Down Expand Up @@ -58,7 +58,6 @@
"convex": "^1.32.0",
"expo": "~55.0.5",
"expo-auth-session": "~55.0.7",
"expo-blur": "~55.0.8",
"expo-build-properties": "~55.0.9",
"expo-calendar": "~55.0.9",
"expo-constants": "~55.0.7",
Expand All @@ -73,7 +72,6 @@
"expo-linking": "~55.0.7",
"expo-localization": "~55.0.8",
"expo-location": "~55.1.2",
"expo-navigation-bar": "~55.0.8",
"expo-notifications": "~55.0.11",
"expo-router": "~55.0.4",
"expo-secure-store": "~55.0.8",
Expand All @@ -85,7 +83,6 @@
"expo-web-browser": "~55.0.9",
"geojson": "^0.5.0",
"i18next": "^25.8.14",
"nativewind": "4.2.2",
"react": "19.2.0",
"react-dom": "19.2.0",
"react-i18next": "^16.5.5",
Expand All @@ -107,7 +104,6 @@
"@types/react": "~19.2.14",
"babel-preset-expo": "~55.0.10",
"knip": "^5.85.0",
"tailwindcss": "3.4.19",
"typescript": "~5.9.3"
},
"private": true
Expand Down
26 changes: 22 additions & 4 deletions scripts/android/install-release-device-linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,22 @@ quarantine_stale_node_module_android_outputs() {
fi
}

clean_stale_app_release_outputs() {
rm -rf \
"$PROJECT_ROOT/android/app/build/intermediates/incremental/packageRelease" \
"$PROJECT_ROOT/android/app/build/intermediates/incremental/assembleRelease" \
"$PROJECT_ROOT/android/app/build/intermediates/apk/release" \
"$PROJECT_ROOT/android/app/build/intermediates/packaged_manifests/release" \
"$PROJECT_ROOT/android/app/build/outputs/apk/release"
}

run_release_build() {
(
cd android
NODE_ENV=production ./gradlew "${GRADLE_ARGS[@]}"
)
}

ensure_android_project
printf 'sdk.dir=%s\n' "$ANDROID_HOME" > "$PROJECT_ROOT/android/local.properties"

Expand Down Expand Up @@ -185,10 +201,12 @@ if ! run_autolinking_probe; then
fi
fi

(
cd android
NODE_ENV=production ./gradlew "${GRADLE_ARGS[@]}"
)
if ! run_release_build; then
echo "Release build failed. Cleaning stale release packaging outputs and retrying once..."
clean_stale_app_release_outputs
quarantine_stale_node_module_android_outputs
run_release_build
fi

APK_PATH="$PROJECT_ROOT/android/app/build/outputs/apk/release/app-release.apk"
if [[ ! -f "$APK_PATH" ]]; then
Expand Down
43 changes: 0 additions & 43 deletions scripts/patches/patch-react-native-css-interop-safe-area.mjs

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions src/app/(app)/(instructor-tabs)/instructor/jobs/_layout.tsx

This file was deleted.

5 changes: 0 additions & 5 deletions src/app/(app)/(instructor-tabs)/instructor/map/_layout.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -286,10 +286,7 @@ export default function CalendarSettingsScreen() {
: null;

return (
<TabScreenScrollView
routeKey="instructor/profile"
style={[styles.screen, { backgroundColor: palette.appBg }]}
>
<TabScreenScrollView style={[styles.screen, { backgroundColor: palette.appBg }]}>
<KitList inset>
<KitListItem title={t("profile.settings.calendar.provider.none")}>
<View style={{ marginTop: 8 }}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,6 @@ export default function IdentityVerificationScreen() {

return (
<TabScreenScrollView
routeKey="instructor/profile"
style={{ flex: 1, backgroundColor: palette.appBg }}
contentContainerStyle={{ paddingTop: 16, paddingBottom: 44, gap: 22 }}
>
Expand Down
Loading