Skip to content
Open
Show file tree
Hide file tree
Changes from 6 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
48 changes: 0 additions & 48 deletions .github/workflows/claude-code-review.yml

This file was deleted.

49 changes: 0 additions & 49 deletions .github/workflows/claude.yml

This file was deleted.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ node_modules
# Build outputs
dist
build
.build
*.tsbuildinfo
.tanstack

Expand Down
23 changes: 5 additions & 18 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The @e18e/eslint-plugin JS plugin and all its e18e/prefer-* rules are being removed. Several have native Oxlint equivalents that are not being enabled, such as typescript/prefer-nullish-coalescing, eslint/prefer-includes, eslint/prefer-object-has-own, unicorn/prefer-array-some, unicorn/prefer-at, and unicorn/prefer-date-now. Consider enabling those to maintain the code-quality enforcement that was previously provided at error level. No Oxlint equivalent exists for other removed rules like e18e/prefer-array-fill, e18e/prefer-array-from-map, and e18e/prefer-regex-test which are silently dropped.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .oxlintrc.json, line 28:

<comment>The `@e18e/eslint-plugin` JS plugin and all its `e18e/prefer-*` rules are being removed. Several have native Oxlint equivalents that are not being enabled, such as `typescript/prefer-nullish-coalescing`, `eslint/prefer-includes`, `eslint/prefer-object-has-own`, `unicorn/prefer-array-some`, `unicorn/prefer-at`, and `unicorn/prefer-date-now`. Consider enabling those to maintain the code-quality enforcement that was previously provided at error level. No Oxlint equivalent exists for other removed rules like `e18e/prefer-array-fill`, `e18e/prefer-array-from-map`, and `e18e/prefer-regex-test` which are silently dropped.</comment>

<file context>
@@ -26,23 +25,7 @@
-    "e18e/prefer-static-regex": "error",
-    "e18e/prefer-timer-args": "error",
-    "e18e/prefer-url-canparse": "error"
+    "react/rules-of-hooks": "error"
   },
   "ignorePatterns": ["node_modules", "dist", "build", "docs", "**/routeTree.gen.ts"]
</file context>

"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["oxc", "eslint", "typescript", "react", "import", "unicorn", "vitest", "jsx-a11y"],
"jsPlugins": ["@e18e/eslint-plugin"],
"env": {
"builtin": true
},
Expand All @@ -15,30 +14,18 @@
"react/style-prop-object": "off",
"import/no-unassigned-import": "off",
"import/no-named-as-default-member": "off",
"no-underscore-dangle": [
"warn",
{ "allow": ["__APP_VERSION__", "__GIT_COMMIT_SHA__"] }
],
"oxc/no-barrel-file": ["warn", { "threshold": 0 }],
"unicorn/no-array-sort": "off",
"unicorn/consistent-function-scoping": "off",
"no-new": "off",
"no-await-in-loop": "off",
"react/no-array-index-key": "off",
"react/jsx-no-useless-fragment": "error",
"react/rules-of-hooks": "error",
"e18e/prefer-array-at": "error",
"e18e/prefer-array-fill": "error",
"e18e/prefer-array-from-map": "error",
"e18e/prefer-array-some": "error",
"e18e/prefer-array-to-reversed": "error",
"e18e/prefer-array-to-sorted": "error",
"e18e/prefer-array-to-spliced": "error",
"e18e/prefer-date-now": "error",
"e18e/prefer-includes": "error",
"e18e/prefer-nullish-coalescing": "error",
"e18e/prefer-object-has-own": "error",
"e18e/prefer-regex-test": "error",
"e18e/prefer-spread-syntax": "off",
"e18e/prefer-static-regex": "error",
"e18e/prefer-timer-args": "error",
"e18e/prefer-url-canparse": "error"
"react/rules-of-hooks": "error"
},
"ignorePatterns": ["node_modules", "dist", "build", "docs", "**/routeTree.gen.ts"]
}
9 changes: 1 addition & 8 deletions apps/native/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"config": {
"usesNonExemptEncryption": false
},
"deploymentTarget": "16.4",
"icon": "./assets/images/sofa.icon",
"bundleIdentifier": "com.jakejarvis.sofa",
"appleTeamId": "B5ZWKBCUTU",
Expand Down Expand Up @@ -65,14 +66,6 @@
"package": "com.jakejarvis.sofa"
},
"plugins": [
[
"expo-build-properties",
{
"ios": {
"deploymentTarget": "16.2"
}
}
],
"expo-router",
"expo-secure-store",
[
Expand Down
109 changes: 55 additions & 54 deletions apps/native/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,76 +17,70 @@
},
"dependencies": {
"@better-auth/expo": "catalog:",
"@expo/metro-runtime": "55.0.6",
"@expo/ui": "55.0.5",
"@formatjs/intl-datetimeformat": "7.3.1",
"@formatjs/intl-getcanonicallocales": "3.2.2",
"@formatjs/intl-locale": "5.3.1",
"@formatjs/intl-numberformat": "9.3.1",
"@formatjs/intl-pluralrules": "6.3.1",
"@formatjs/intl-relativetimeformat": "12.3.1",
"@expo/material-symbols": "0.1.1",
"@expo/metro-runtime": "~57.0.3",
"@expo/ui": "~57.0.4",
"@formatjs/intl-datetimeformat": "7.4.9",
"@formatjs/intl-getcanonicallocales": "3.2.10",
"@formatjs/intl-locale": "5.3.9",
"@formatjs/intl-numberformat": "9.3.11",
"@formatjs/intl-pluralrules": "6.3.10",
"@formatjs/intl-relativetimeformat": "12.3.10",
"@lingui/core": "catalog:",
"@lingui/react": "catalog:",
"@orpc/client": "catalog:",
"@orpc/contract": "catalog:",
"@orpc/tanstack-query": "catalog:",
"@react-native-menu/menu": "2.0.0",
"@react-navigation/elements": "2.9.11",
"@react-navigation/native": "7.1.34",
"@sentry/react-native": "8.6.0",
"@sentry/react-native": "~8.18.0",
"@shopify/flash-list": "2.0.2",
"@sofa/api": "workspace:*",
"@sofa/i18n": "workspace:*",
"@tabler/icons-react-native": "3.40.0",
"@tanstack/query-async-storage-persister": "5.95.2",
"@tabler/icons-react-native": "3.44.0",
"@tanstack/query-async-storage-persister": "5.101.2",
"@tanstack/react-form": "catalog:",
"@tanstack/react-query": "catalog:",
"@tanstack/react-query-persist-client": "5.95.2",
"@tanstack/react-query-persist-client": "5.101.2",
"better-auth": "catalog:",
"burnt": "0.13.0",
"expo": "55.0.8",
"expo-application": "55.0.10",
"expo-build-properties": "55.0.10",
"expo-clipboard": "55.0.9",
"expo-constants": "55.0.9",
"expo-dev-client": "55.0.18",
"expo-device": "55.0.10",
"expo-font": "55.0.4",
"expo-glass-effect": "55.0.8",
"expo-haptics": "55.0.9",
"expo-image": "55.0.6",
"expo-image-picker": "55.0.13",
"expo-linear-gradient": "55.0.9",
"expo-linking": "55.0.8",
"expo-localization": "55.0.9",
"expo-network": "55.0.9",
"expo-router": "55.0.7",
"expo-secure-store": "55.0.9",
"expo-splash-screen": "55.0.12",
"expo-status-bar": "55.0.4",
"expo-system-ui": "55.0.10",
"expo-updates": "55.0.15",
"expo-web-browser": "55.0.10",
"expo-widgets": "55.0.7",
"posthog-react-native": "4.37.6",
"expo": "~57.0.4",
"expo-application": "~57.0.0",
"expo-clipboard": "~57.0.0",
"expo-constants": "~57.0.3",
"expo-dev-client": "~57.0.5",
"expo-device": "~57.0.0",
"expo-font": "~57.0.0",
"expo-glass-effect": "~57.0.0",
"expo-haptics": "~57.0.0",
"expo-image": "~57.0.0",
"expo-image-picker": "~57.0.2",
"expo-linear-gradient": "~57.0.0",
"expo-linking": "~57.0.2",
"expo-localization": "~57.0.0",
"expo-network": "~57.0.0",
"expo-router": "~57.0.4",
"expo-secure-store": "~57.0.0",
"expo-splash-screen": "~57.0.2",
"expo-status-bar": "~57.0.0",
"expo-system-ui": "~57.0.0",
"expo-updates": "~57.0.6",
"expo-web-browser": "~57.0.0",
"expo-widgets": "~57.0.3",
"posthog-react-native": "4.55.0",
"react": "catalog:",
"react-dom": "catalog:",
"react-native": "0.83.2",
"react-native-gesture-handler": "2.30.0",
"react-native-ios-context-menu": "3.2.0",
"react-native-ios-utilities": "5.2.0",
"react-native-keyboard-controller": "1.20.7",
"react-native-mmkv": "4.2.0",
"react-native-nitro-modules": "0.35.0",
"react-native-reanimated": "4.2.1",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.23.0",
"react-native-svg": "15.15.3",
"react-native-worklets": "0.7.2",
"react-native": "0.86.0",
"react-native-gesture-handler": "~2.32.0",
"react-native-keyboard-controller": "1.21.9",
"react-native-mmkv": "~4.3.2",
"react-native-nitro-modules": "~0.36.1",
"react-native-reanimated": "4.5.0",
"react-native-safe-area-context": "~5.7.0",
"react-native-screens": "4.25.2",
"react-native-svg": "15.15.4",
"react-native-worklets": "0.10.0",
"tailwind-merge": "catalog:",
"tailwindcss": "catalog:",
"uniwind": "1.6.1",
"zeego": "3.0.6",
"uniwind": "1.10.0",
"zod": "catalog:"
},
"devDependencies": {
Expand All @@ -95,5 +89,12 @@
"@types/node": "catalog:",
"@types/react": "catalog:",
"typescript": "catalog:"
},
"expo": {
"install": {
"exclude": [
"@sentry/react-native"
]
}
}
}
24 changes: 16 additions & 8 deletions apps/native/src/app/(tabs)/(library)/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,20 @@ function LibraryHeaderRight() {
);
}

function renderLibraryHeaderRight() {
return <LibraryHeaderRight />;
}

function getLibraryHeaderRightItems() {
return [
{
type: "custom" as const,
element: <LibraryHeaderRight />,
hidesSharedBackground: true,
},
];
}

export default function LibraryLayout() {
const { t } = useLingui();
const contentStyle = useResolveClassNames("bg-background");
Expand All @@ -40,13 +54,7 @@ export default function LibraryLayout() {
<Stack
screenOptions={{
contentStyle,
unstable_headerRightItems: () => [
{
type: "custom" as const,
element: <LibraryHeaderRight />,
hidesSharedBackground: true,
},
],
unstable_headerRightItems: getLibraryHeaderRightItems,
}}
>
<Stack.Screen name="index">
Expand Down Expand Up @@ -76,7 +84,7 @@ export default function LibraryLayout() {
screenOptions={{
contentStyle,
headerTitleAlign: "left",
headerRight: () => <LibraryHeaderRight />,
headerRight: renderLibraryHeaderRight,
}}
>
<Stack.Screen name="index">
Expand Down
Loading
Loading