mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-06 08:24:46 +00:00
* fix(app): hold the loading screen until first-run setup is decided A new user saw the empty home, the sidebar and a logo jump before setup popped in. Startup now keeps the splash while setup may still open over the empty home, for at most 3 s and only while the setup host is reachable. Remembered-workspace restore does not wait. Web dialogs now fade in as they already fade out. (cherry picked from commita0a7620b62) (cherry picked from commit72d7c0bf26) * fix(app): fade the dialog card in and land the dim at once (cherry picked from commit6ef05705a0) (cherry picked from commit71c28b431c) * fix(app): keep the loading screen up while startup redirects (cherry picked from commit0b28d4cbff) (cherry picked from commit13cc485e6f) * test(app): cover a setup host that drops while startup waits (cherry picked from commit2a906ef83e) (cherry picked from commit7b6e21207a) * fix(app): type the web-only dialog enter animation style The CSS animation props are not part of ViewStyle. CI typechecks without the generated expo-env.d.ts, which declares them, so the cast is required there. (cherry picked from commitb887d979d2) * fix(app): keep the setup window mounted when the theme changes The shell's appearance boundary remounts its dialog hosts whenever a theme color changes, so picking a theme in setup, or a system light/dark switch, replaced the open setup window and replayed its fade. Setup draws colors through CSS variables and themed props, which update in place, and changes no font size, so it now sits outside that remount. The dialog enter fade is skipped with reduced motion, and its style is typed for CI, which typechecks without the generated expo-env.d.ts. (cherry picked from commitb24c6eacf8) (cherry picked from commitcb0e9907f5) * docs(changelog): prepare 0.15.2 (cherry picked from commit5af1a8ff66) * chore(release): cut 0.15.2 (cherry picked from commite896c05b09)
218 lines
8.9 KiB
JSON
218 lines
8.9 KiB
JSON
{
|
|
"name": "@getpaseo/app",
|
|
"version": "0.15.2",
|
|
"private": true,
|
|
"main": "index.ts",
|
|
"scripts": {
|
|
"start": "npm run start:expo",
|
|
"start:expo": "cross-env APP_VARIANT=development expo start",
|
|
"reset-project": "node ./scripts/reset-project.js",
|
|
"eas-build-post-install": "npm --prefix ../.. run build:app-deps",
|
|
"android": "npm run dev:android",
|
|
"android:development": "npm run dev:android",
|
|
"android:production": "npm --prefix ../.. run build:client && cross-env APP_VARIANT=production expo prebuild --platform android --clean --non-interactive && cross-env APP_VARIANT=production expo run:android --variant=release",
|
|
"android:release": "npm run android:production",
|
|
"android:clear": "node -e \"require('node:fs').rmSync('android', { recursive: true, force: true })\"",
|
|
"ios": "npm run dev:ios",
|
|
"ios:release": "npm --prefix ../.. run build:client && expo run:ios --configuration Release",
|
|
"web": "npm --prefix ../.. run build:client && concurrently --kill-others --names protocol,client,expo --prefix-colors yellow,blue,magenta \"npm --prefix ../.. run watch:protocol\" \"npm --prefix ../.. run watch:client\" \"npm run web:expo\"",
|
|
"web:expo": "expo start --web",
|
|
"lint": "expo lint",
|
|
"typecheck": "tsgo --noEmit",
|
|
"test": "vitest run",
|
|
"test:browser": "vitest run --project browser",
|
|
"test:e2e": "playwright test --project=browser",
|
|
"test:e2e:diff-performance": "cross-env PASEO_DIFF_PERF_E2E=1 playwright test --project=browser e2e/browser/diff-performance.spec.ts",
|
|
"test:e2e:stream-smoothness": "cross-env PASEO_AGENT_STREAM_PERF_E2E=1 playwright test --project=browser e2e/browser/agent-stream-smoothness.spec.ts",
|
|
"test:e2e:real": "cross-env E2E_FORK_PASEO_HOME_FROM=../../.dev/paseo-home playwright test --project=real-provider",
|
|
"test:e2e:relay-deployment": "npm --prefix ../.. run build:server && npm --prefix ../.. run build:daemon-web-ui && cross-env E2E_FORK_PASEO_HOME_FROM=../../.dev/paseo-home playwright test --project=relay-deployment e2e/browser/relay-deployment-reconnect.real.spec.ts",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"build": "npm run build:web",
|
|
"build:web": "npm --prefix ../.. run build:app-deps && expo export --platform web",
|
|
"profile:composer-typing": "node ./scripts/profile-composer-typing.mjs",
|
|
"profile:explorer-toggle": "node ./scripts/profile-explorer-toggle.mjs",
|
|
"profile:side-pane": "playwright test --config playwright.profile.config.ts side-pane-performance.spec.ts",
|
|
"profile:workspace-switching": "node ./scripts/profile-workspace-switching.mjs",
|
|
"profile:workspace-tabs": "node ./scripts/profile-workspace-tabs.mjs",
|
|
"deploy:web": "npm run build:web && wrangler pages deploy dist --project-name paseo-app --branch main",
|
|
"build:mermaid-runtime": "node ./src/components/markdown/fence/mermaid/build-runtime.mjs",
|
|
"dev:android": "npm --prefix ../.. run build:client && cross-env APP_VARIANT=development expo prebuild --platform android --clean --non-interactive && cross-env APP_VARIANT=development expo run:android --variant=debug",
|
|
"dev:ios": "npm --prefix ../.. run build:client && cross-env APP_VARIANT=development expo run:ios",
|
|
"build:apk": "npm --prefix ../.. run build:apk",
|
|
"build:apk:arm64": "npm --prefix ../.. run build:apk:arm64",
|
|
"test:android": "expo prebuild --platform android --no-install && cd android && ./gradlew :paseo-native-trace:testReleaseUnitTest :paseo-hardware-keyboard:testReleaseUnitTest :react-native-enriched-markdown:testReleaseUnitTest --tests '*InlineCodeFormattingTest' --no-daemon --max-workers=2 -Dorg.gradle.parallel=false"
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/commands": "6.10.4",
|
|
"@codemirror/language": "6.12.4",
|
|
"@codemirror/search": "6.7.1",
|
|
"@codemirror/state": "6.7.1",
|
|
"@codemirror/view": "6.43.6",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@floating-ui/react-native": "^0.10.7",
|
|
"@getpaseo/client": "*",
|
|
"@getpaseo/expo-two-way-audio": "*",
|
|
"@getpaseo/highlight": "*",
|
|
"@getpaseo/plugin": "*",
|
|
"@getpaseo/protocol": "*",
|
|
"@gorhom/bottom-sheet": "^5.2.14",
|
|
"@gorhom/portal": "^1.0.14",
|
|
"@legendapp/list": "^3.7.1",
|
|
"@marijn/find-cluster-break": "^1.0.2",
|
|
"@mattermost/react-native-paste-input": "2.0.1",
|
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
"@react-native-masked-view/masked-view": "0.3.2",
|
|
"@react-native/normalize-colors": "0.86.3",
|
|
"@react-navigation/native": "^7.1.8",
|
|
"@replit/codemirror-vim": "6.3.0",
|
|
"@shopify/react-native-skia": "2.6.2",
|
|
"@tanstack/react-query": "^5.90.11",
|
|
"@tanstack/react-virtual": "^3.13.21",
|
|
"@xterm/addon-clipboard": "^0.3.0-beta.213",
|
|
"@xterm/addon-fit": "^0.12.0-beta.213",
|
|
"@xterm/addon-image": "0.10.0-beta.331",
|
|
"@xterm/addon-ligatures": "^0.11.0-beta.213",
|
|
"@xterm/addon-search": "^0.17.0-beta.213",
|
|
"@xterm/addon-unicode-graphemes": "0.5.0-beta.330",
|
|
"@xterm/addon-unicode11": "^0.10.0-beta.213",
|
|
"@xterm/addon-web-links": "^0.13.0-beta.213",
|
|
"@xterm/addon-webgl": "0.20.0-beta.329",
|
|
"@xterm/xterm": "6.1.0-beta.336",
|
|
"buffer": "^6.0.3",
|
|
"expo": "~57.0.30",
|
|
"expo-asset": "~57.0.20",
|
|
"expo-audio": "~57.0.5",
|
|
"expo-build-properties": "~57.0.22",
|
|
"expo-camera": "~57.0.6",
|
|
"expo-clipboard": "~57.0.2",
|
|
"expo-constants": "~57.0.22",
|
|
"expo-crypto": "~57.0.4",
|
|
"expo-dev-client": "~57.0.20",
|
|
"expo-document-picker": "~57.0.3",
|
|
"expo-file-system": "~57.0.7",
|
|
"expo-haptics": "~57.0.3",
|
|
"expo-image": "~57.0.5",
|
|
"expo-image-manipulator": "~57.0.21",
|
|
"expo-image-picker": "~57.0.20",
|
|
"expo-keep-awake": "~57.0.2",
|
|
"expo-linking": "~57.0.13",
|
|
"expo-localization": "~57.0.2",
|
|
"expo-notifications": "~57.0.23",
|
|
"expo-router": "~57.0.28",
|
|
"expo-sharing": "~57.0.23",
|
|
"expo-splash-screen": "~57.0.10",
|
|
"expo-sqlite": "~57.0.4",
|
|
"expo-system-ui": "~57.0.4",
|
|
"fast-deep-equal": "^3.1.3",
|
|
"htmlparser2": "^12.0.0",
|
|
"i18next": "^26.3.0",
|
|
"lucide-react-native": "^1.50.0",
|
|
"markdown-it": "^10.0.0",
|
|
"mdast-util-from-markdown": "2.0.3",
|
|
"mdast-util-gfm-table": "^2.0.0",
|
|
"mermaid": "^11.16.0",
|
|
"micromark-extension-gfm-table": "^2.1.2",
|
|
"micromark-util-decode-string": "2.0.1",
|
|
"mnemonic-id": "^3.2.7",
|
|
"qrcode": "^1.5.4",
|
|
"react": "19.2.3",
|
|
"react-dom": "19.2.3",
|
|
"react-freeze": "1.0.4",
|
|
"react-i18next": "^17.0.8",
|
|
"react-native": "0.86.3",
|
|
"react-native-draggable-flatlist": "^4.0.3",
|
|
"react-native-edge-to-edge": "^1.7.0",
|
|
"react-native-enriched-markdown": "1.2.0-nightly-20261014-766fc0e67",
|
|
"react-native-gesture-handler": "~2.32.0",
|
|
"react-native-keyboard-controller": "1.21.12",
|
|
"react-native-nitro-modules": "0.35.5",
|
|
"react-native-reanimated": "4.5.5",
|
|
"react-native-safe-area-context": "~5.7.0",
|
|
"react-native-screens": "~4.26.0",
|
|
"react-native-svg": "15.15.4",
|
|
"react-native-unistyles": "^3.2.4",
|
|
"react-native-web": "~0.21.0",
|
|
"react-native-webview": "13.16.1",
|
|
"react-native-worklets": "0.10.4",
|
|
"tiny-invariant": "^1.3.3",
|
|
"turndown": "^7.2.4",
|
|
"turndown-plugin-gfm": "^1.0.2",
|
|
"use-sync-external-store": "^1.6.0",
|
|
"yaml": "^2.8.4",
|
|
"zod": "^4.4.3",
|
|
"zustand": "^5.0.9"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.56.1",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/markdown-it": "^14.1.2",
|
|
"@types/node": "~22.19.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "~19.2.0",
|
|
"@types/turndown": "^5.0.6",
|
|
"@types/ws": "^8.18.1",
|
|
"@vitest/browser": "^4.1.7",
|
|
"@vitest/browser-playwright": "^4.1.7",
|
|
"@xterm/addon-serialize": "0.14.0",
|
|
"@xterm/headless": "6.1.0-beta.334",
|
|
"babel-preset-expo": "~57.0.16",
|
|
"dotenv": "^17.2.3",
|
|
"eas-cli": "^16.24.1",
|
|
"esbuild": "0.28.1",
|
|
"eslint": "^9.25.0",
|
|
"eslint-config-expo": "~57.0.2",
|
|
"expo-gradle-jvmargs": "^1.1.2",
|
|
"fake-indexeddb": "^6.2.5",
|
|
"jsdom": "^20.0.3",
|
|
"material-icon-theme": "^5.32.0",
|
|
"playwright": "^1.56.1",
|
|
"serve-sim": "^0.1.40",
|
|
"typescript": "~5.9.2",
|
|
"vitest": "^4.1.6",
|
|
"wrangler": "^4.105.0",
|
|
"ws": "^8.20.0"
|
|
},
|
|
"enriched-markdown": {
|
|
"enableMath": false,
|
|
"enableCodeHighlight": true,
|
|
"codeHighlightLanguages": [
|
|
"json",
|
|
"html",
|
|
"css",
|
|
"markdown",
|
|
"yaml",
|
|
"go",
|
|
"java",
|
|
"javascript",
|
|
"python",
|
|
"c",
|
|
"rust",
|
|
"bash",
|
|
"typescript",
|
|
"tsx",
|
|
"cpp",
|
|
"swift",
|
|
"php",
|
|
"ruby",
|
|
"c-sharp"
|
|
],
|
|
"enableVideo": false
|
|
},
|
|
"expo": {
|
|
"install": {
|
|
"exclude": [
|
|
"react-native-reanimated",
|
|
"react-native-worklets"
|
|
]
|
|
}
|
|
},
|
|
"reanimated": {
|
|
"staticFeatureFlags": {
|
|
"FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS": false
|
|
}
|
|
}
|
|
}
|