diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6c309d7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.env +.env.* +README.md +.next +node_modules +**/node_modules +docstore diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index dfe0e8d..723e0eb 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -10,7 +10,6 @@ jobs: timeout-minutes: 60 runs-on: ubuntu-latest env: - FFMPEG_BIN: /usr/bin/ffmpeg USE_EMBEDDED_WEED_MINI: true BASE_URL: http://127.0.0.1:3003 S3_ENDPOINT: http://127.0.0.1:8333 diff --git a/.gitignore b/.gitignore index 4014f63..55b2755 100644 --- a/.gitignore +++ b/.gitignore @@ -32,9 +32,8 @@ yarn-error.log* .pnpm-debug.log* # env files (can opt-in for committing if needed) -.env -.env.prod -.dockerignore +.env* +!.env.example *.creds # vercel diff --git a/package.json b/package.json index 7e7ffb4..b31ec10 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "start:raw": "next start -p 3003", "lint": "next lint", "test": "playwright test", + "test:ci-env": "CI=true playwright test", "migrate": "node drizzle/scripts/migrate.mjs", "migrate-fs": "node scripts/migrate-fs-v2.mjs", "migrate-fs:dry-run": "node scripts/migrate-fs-v2.mjs --dry-run true", diff --git a/playwright.config.ts b/playwright.config.ts index 3c080b9..a1f9f25 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,5 +1,15 @@ import { defineConfig, devices } from '@playwright/test'; import 'dotenv/config'; +import fs from 'node:fs'; +import path from 'node:path'; +import dotenv from 'dotenv'; + +if (process.env.CI === 'true') { + const envCiPath = path.join(process.cwd(), '.env.ci'); + if (fs.existsSync(envCiPath)) { + dotenv.config({ path: envCiPath, override: true }); + } +} /** * See https://playwright.dev/docs/test-configuration. diff --git a/scripts/openreader-entrypoint.mjs b/scripts/openreader-entrypoint.mjs index 97dcb5d..06dd1d4 100644 --- a/scripts/openreader-entrypoint.mjs +++ b/scripts/openreader-entrypoint.mjs @@ -11,6 +11,15 @@ import * as dotenv from 'dotenv'; function loadEnvFiles() { const cwd = process.cwd(); + const isCi = isTrue(process.env.CI, false); + if (isCi) { + const envCiPath = path.join(cwd, '.env.ci'); + if (fs.existsSync(envCiPath)) { + dotenv.config({ path: envCiPath }); + } + return; + } + const envPath = path.join(cwd, '.env'); const envLocalPath = path.join(cwd, '.env.local'); diff --git a/src/components/SettingsModal.tsx b/src/components/SettingsModal.tsx index 8b3c0e4..50fee42 100644 --- a/src/components/SettingsModal.tsx +++ b/src/components/SettingsModal.tsx @@ -178,7 +178,7 @@ export function SettingsModal({ const { progress, setProgress, estimatedTimeRemaining } = useTimeEstimation(); const { authEnabled, baseUrl: authBaseUrl } = useAuthConfig(); const { data: session } = useAuthSession(); - const { requestOpenSettings, registerSettingsController } = useOnboardingFlow(); + const { changelogOpenSignal } = useOnboardingFlow(); const router = useRouter(); const isBusy = isImportingLibrary; const { @@ -211,25 +211,11 @@ export function SettingsModal({ const isSharedSelected = Boolean(selectedSharedProvider); const selectedProviderOption = ttsProviders.find((p) => p.id === localProviderRef) ?? ttsProviders[0]; - const closeSettings = useCallback(() => { - setIsOpen(false); - setIsChangelogOpen(false); - }, []); - - const openSettings = useCallback((options?: { changelog?: boolean }) => { - setIsOpen(true); - setIsChangelogOpen(Boolean(options?.changelog)); - }, []); - useEffect(() => { - registerSettingsController({ - open: openSettings, - close: closeSettings, - }); - return () => { - registerSettingsController(null); - }; - }, [closeSettings, openSettings, registerSettingsController]); + if (changelogOpenSignal <= 0) return; + setIsOpen(true); + setIsChangelogOpen(true); + }, [changelogOpenSignal]); useEffect(() => { setLocalApiKey(apiKey); @@ -505,7 +491,8 @@ export function SettingsModal({ <>