Browse Source

chore(dev): upgrade capacitor to latest

charlie 6 months ago
parent
commit
c9a87a0e37

+ 2 - 2
android/app/capacitor.build.gradle

@@ -2,8 +2,8 @@
 
 android {
   compileOptions {
-      sourceCompatibility JavaVersion.VERSION_17
-      targetCompatibility JavaVersion.VERSION_17
+      sourceCompatibility JavaVersion.VERSION_21
+      targetCompatibility JavaVersion.VERSION_21
   }
 }
 

+ 2 - 2
android/build.gradle

@@ -8,8 +8,8 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:8.1.1'
-        classpath 'com.google.gms:google-services:4.3.15'
+        classpath 'com.android.tools.build:gradle:8.7.2'
+        classpath 'com.google.gms:google-services:4.4.2'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files

BIN
android/gradle/wrapper/gradle-wrapper.jar


+ 3 - 1
android/gradle/wrapper/gradle-wrapper.properties

@@ -1,5 +1,7 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
+networkTimeout=10000
+validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 31 - 13
android/gradlew

@@ -15,6 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+# SPDX-License-Identifier: Apache-2.0
+#
 
 ##############################################################################
 #
@@ -55,7 +57,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +82,12 @@ do
     esac
 done
 
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD=maximum
@@ -133,22 +134,29 @@ location of your Java installation."
     fi
 else
     JAVACMD=java
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+    if ! command -v java >/dev/null 2>&1
+    then
+        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 
 Please set the JAVA_HOME variable in your environment to match the
 location of your Java installation."
+    fi
 fi
 
 # Increase the maximum file descriptors if we can.
 if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
+        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC2039,SC3045
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
     case $MAX_FD in  #(
       '' | soft) :;; #(
       *)
+        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC2039,SC3045
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
@@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then
     done
 fi
 
-# Collect all arguments for the java command;
-#   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-#     shell script including quotes and variable substitutions, so put them in
-#     double quotes to make sure that they get re-expanded; and
-#   * put everything else in single quotes, so that it's not re-expanded.
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+#   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+#     and any embedded shellness will be escaped.
+#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+#     treated as '${Hostname}' itself on the command line.
 
 set -- \
         "-Dorg.gradle.appname=$APP_BASE_NAME" \
@@ -205,6 +217,12 @@ set -- \
         org.gradle.wrapper.GradleWrapperMain \
         "$@"
 
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+    die "xargs is not available"
+fi
+
 # Use "xargs" to parse quoted args.
 #
 # With -n1 it outputs one arg per line, with the quotes and backslashes removed.

+ 21 - 16
android/gradlew.bat

@@ -13,8 +13,10 @@
 @rem See the License for the specific language governing permissions and
 @rem limitations under the License.
 @rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
 
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
 @rem ##########################################################################
 @rem
 @rem  Gradle startup script for Windows
@@ -25,7 +27,8 @@
 if "%OS%"=="Windows_NT" setlocal
 
 set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
@@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 
 set JAVA_EXE=java.exe
 %JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
 
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
 
 goto fail
 
@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 
 if exist "%JAVA_EXE%" goto execute
 
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
 
 goto fail
 
@@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 
 :end
 @rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
 
 :fail
 rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
 
 :mainEnd
 if "%OS%"=="Windows_NT" endlocal

+ 11 - 11
android/variables.gradle

@@ -1,16 +1,16 @@
 ext {
-    minSdkVersion = 22
-    compileSdkVersion = 33
-    targetSdkVersion = 33
-    androidxActivityVersion = '1.7.0'
-    androidxAppCompatVersion = '1.6.1'
+    minSdkVersion = 23
+    compileSdkVersion = 35
+    targetSdkVersion = 35
+    androidxActivityVersion = '1.9.2'
+    androidxAppCompatVersion = '1.7.0'
     androidxCoordinatorLayoutVersion = '1.2.0'
-    androidxCoreVersion = '1.10.0'
-    androidxFragmentVersion = '1.5.6'
+    androidxCoreVersion = '1.15.0'
+    androidxFragmentVersion = '1.8.4'
     junitVersion = '4.13.2'
-    androidxJunitVersion = '1.1.5'
-    androidxEspressoCoreVersion = '3.5.1'
+    androidxJunitVersion = '1.2.1'
+    androidxEspressoCoreVersion = '3.6.1'
     cordovaAndroidVersion = '10.1.1'
-    coreSplashScreenVersion = '1.0.0'
-    androidxWebkitVersion = '1.6.1'
+    coreSplashScreenVersion = '1.0.1'
+    androidxWebkitVersion = '1.12.1'
 }

+ 1 - 1
gulpfile.js

@@ -161,7 +161,7 @@ const common = {
       stdio: 'inherit',
     })
 
-    cp.execSync(`npx cap run ${mode} --external`, {
+    cp.execSync(`npx cap run ${mode}`, {
       stdio: 'inherit',
       env: Object.assign(process.env, {
         LOGSEQ_APP_SERVER_URL,

+ 1 - 1
ios/App/Podfile

@@ -1,6 +1,6 @@
 require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
 
-platform :ios, '13.0'
+platform :ios, '14.0'
 use_frameworks!
 
 # workaround to avoid Xcode caching of Pods that requires

+ 131 - 0
ios/App/Podfile.lock

@@ -0,0 +1,131 @@
+PODS:
+  - AgeEncryption (1.0.6)
+  - Alamofire (5.6.2)
+  - AWSCore (2.27.10)
+  - AWSS3 (2.27.10):
+    - AWSCore (= 2.27.10)
+  - Capacitor (7.2.0):
+    - CapacitorCordova
+  - CapacitorActionSheet (7.0.1):
+    - Capacitor
+  - CapacitorApp (7.0.1):
+    - Capacitor
+  - CapacitorCamera (7.0.1):
+    - Capacitor
+  - CapacitorClipboard (7.0.1):
+    - Capacitor
+  - CapacitorCordova (7.2.0)
+  - CapacitorFilesystem (7.0.1):
+    - Capacitor
+  - CapacitorHaptics (7.0.1):
+    - Capacitor
+  - CapacitorKeyboard (7.0.1):
+    - Capacitor
+  - CapacitorShare (7.0.1):
+    - Capacitor
+  - CapacitorSplashScreen (7.0.1):
+    - Capacitor
+  - CapacitorStatusBar (7.0.1):
+    - Capacitor
+  - CapacitorVoiceRecorder (5.0.0):
+    - Capacitor
+  - CapawesomeCapacitorBackgroundTask (7.0.1):
+    - Capacitor
+  - CapgoCapacitorNavigationBar (7.1.2):
+    - Capacitor
+  - LogseqCapacitorFileSync (5.0.2):
+    - AgeEncryption (~> 1.0.6)
+    - Alamofire
+    - AWSS3
+    - Capacitor
+  - SendIntent (0.0.1):
+    - Capacitor
+
+DEPENDENCIES:
+  - "Capacitor (from `../../node_modules/@capacitor/ios`)"
+  - "CapacitorActionSheet (from `../../node_modules/@capacitor/action-sheet`)"
+  - "CapacitorApp (from `../../node_modules/@capacitor/app`)"
+  - "CapacitorCamera (from `../../node_modules/@capacitor/camera`)"
+  - "CapacitorClipboard (from `../../node_modules/@capacitor/clipboard`)"
+  - "CapacitorCordova (from `../../node_modules/@capacitor/ios`)"
+  - "CapacitorFilesystem (from `../../node_modules/@capacitor/filesystem`)"
+  - "CapacitorHaptics (from `../../node_modules/@capacitor/haptics`)"
+  - "CapacitorKeyboard (from `../../node_modules/@capacitor/keyboard`)"
+  - "CapacitorShare (from `../../node_modules/@capacitor/share`)"
+  - "CapacitorSplashScreen (from `../../node_modules/@capacitor/splash-screen`)"
+  - "CapacitorStatusBar (from `../../node_modules/@capacitor/status-bar`)"
+  - CapacitorVoiceRecorder (from `../../node_modules/capacitor-voice-recorder`)
+  - "CapawesomeCapacitorBackgroundTask (from `../../node_modules/@capawesome/capacitor-background-task`)"
+  - "CapgoCapacitorNavigationBar (from `../../node_modules/@capgo/capacitor-navigation-bar`)"
+  - "LogseqCapacitorFileSync (from `../../node_modules/@logseq/capacitor-file-sync`)"
+  - SendIntent (from `../../node_modules/send-intent`)
+
+SPEC REPOS:
+  trunk:
+    - AgeEncryption
+    - Alamofire
+    - AWSCore
+    - AWSS3
+
+EXTERNAL SOURCES:
+  Capacitor:
+    :path: "../../node_modules/@capacitor/ios"
+  CapacitorActionSheet:
+    :path: "../../node_modules/@capacitor/action-sheet"
+  CapacitorApp:
+    :path: "../../node_modules/@capacitor/app"
+  CapacitorCamera:
+    :path: "../../node_modules/@capacitor/camera"
+  CapacitorClipboard:
+    :path: "../../node_modules/@capacitor/clipboard"
+  CapacitorCordova:
+    :path: "../../node_modules/@capacitor/ios"
+  CapacitorFilesystem:
+    :path: "../../node_modules/@capacitor/filesystem"
+  CapacitorHaptics:
+    :path: "../../node_modules/@capacitor/haptics"
+  CapacitorKeyboard:
+    :path: "../../node_modules/@capacitor/keyboard"
+  CapacitorShare:
+    :path: "../../node_modules/@capacitor/share"
+  CapacitorSplashScreen:
+    :path: "../../node_modules/@capacitor/splash-screen"
+  CapacitorStatusBar:
+    :path: "../../node_modules/@capacitor/status-bar"
+  CapacitorVoiceRecorder:
+    :path: "../../node_modules/capacitor-voice-recorder"
+  CapawesomeCapacitorBackgroundTask:
+    :path: "../../node_modules/@capawesome/capacitor-background-task"
+  CapgoCapacitorNavigationBar:
+    :path: "../../node_modules/@capgo/capacitor-navigation-bar"
+  LogseqCapacitorFileSync:
+    :path: "../../node_modules/@logseq/capacitor-file-sync"
+  SendIntent:
+    :path: "../../node_modules/send-intent"
+
+SPEC CHECKSUMS:
+  AgeEncryption: 23c203675d5e4883a18b133ab1d5e61ff29e0c18
+  Alamofire: d368e1ff8a298e6dde360e35a3e68e6c610e7204
+  AWSCore: dbad318b7ff0fd86fb8387d3ad1f30049c05bc58
+  AWSS3: 0cf2cedb263368f624ca721e5c56a8cb59fc44bc
+  Capacitor: 106e7a4205f4618d582b886a975657c61179138d
+  CapacitorActionSheet: 24609588961cc27c87e8b033be92b5eee65b5d4c
+  CapacitorApp: d63334c052278caf5d81585d80b21905c6f93f39
+  CapacitorCamera: eb8687d8687fed853598ec9460d94bcd5e16babe
+  CapacitorClipboard: b98aead5dc7ec595547fc2c5d75bacd2ae3338bc
+  CapacitorCordova: 5967b9ba03915ef1d585469d6e31f31dc49be96f
+  CapacitorFilesystem: 307f97c27a265edf8396a1c9c235592fd8572fe3
+  CapacitorHaptics: 70e47470fa1a6bd6338cd102552e3846b7f9a1b3
+  CapacitorKeyboard: 969647d0ca2e5c737d7300088e2517aa832434e2
+  CapacitorShare: 58d6c2da63b093e8693287b2d36db92435538435
+  CapacitorSplashScreen: 19cd3573e57507e02d6f34597a8c421e00931487
+  CapacitorStatusBar: 275cbf2f4dfc00388f519ef80c7ec22edda342c9
+  CapacitorVoiceRecorder: 872ea857b497ce2c71afe3e4eb5de0a74290c0db
+  CapawesomeCapacitorBackgroundTask: 834d797abc9933fac4354490d1a2f3c0e389b98d
+  CapgoCapacitorNavigationBar: 3a0e93a40b7da3d3cb74c0410bb761a1525406be
+  LogseqCapacitorFileSync: 541dcd5492b8aeb2257cce3d18bb9ed5800cfcad
+  SendIntent: 0a17b6984c4f27e9dfa56513267ba2c044a5a6c8
+
+PODFILE CHECKSUM: d9e4df9f9578f817a4148a5e29ee928f271e4cc8
+
+COCOAPODS: 1.11.2

+ 194 - 194
package.json

@@ -1,196 +1,196 @@
 {
-    "name": "logseq",
-    "version": "0.0.1",
-    "private": true,
-    "main": "static/electron.js",
-    "devDependencies": {
-        "@axe-core/playwright": "=4.4.4",
-        "@capacitor/cli": "^5.0.0",
-        "@playwright/test": "=1.51.0",
-        "@tailwindcss/aspect-ratio": "0.4.2",
-        "@tailwindcss/forms": "0.5.3",
-        "@tailwindcss/typography": "0.5.7",
-        "@types/gulp": "^4.0.7",
-        "autoprefixer": "^10.4.13",
-        "cross-env": "^7.0.3",
-        "cssnano": "^5.1.13",
-        "del": "^6.0.0",
-        "glob": "9.0.0",
-        "gulp": "^4.0.2",
-        "gulp-replace": "^1.1.4",
-        "gulp-postcss": "^10.0.0",
-        "ip": "1.1.9",
-        "semver": "7.5.2",
-        "karma": "^6.4.4",
-        "karma-chrome-launcher": "^3.2.0",
-        "karma-cljs-test": "^0.1.0",
-        "npm-run-all": "^4.1.5",
-        "playwright": "=1.51.0",
-        "postcss": "^8.4.47",
-        "postcss-cli": "10.0.0",
-        "postcss-functions": "^4.0.2",
-        "postcss-import": "15.0.0",
-        "postcss-import-ext-glob": "2.0.1",
-        "postcss-nested": "6.0.0",
-        "purgecss": "4.0.2",
-        "shadow-cljs": "2.26.0",
-        "stylelint": "^13.8.0",
-        "stylelint-config-standard": "^20.0.0",
-        "tailwindcss": "3.3.5",
-        "tailwindcss-animate": "^1.0.7",
-        "typescript": "^4.4.3"
-    },
-    "scripts": {
-        "watch": "run-p gulp:watch cljs:watch",
-        "electron-watch": "run-p gulp:watch cljs:electron-watch",
-        "app-watch": "run-p gulp:watch cljs:app-watch",
-        "release": "run-s gulp:build cljs:release",
-        "release-app": "run-s gulp:build cljs:release-app",
-        "dev-release-app": "run-s gulp:build cljs:dev-release-app",
-        "dev-electron-app": "gulp electron",
-        "release-electron": "run-s gulp:build && gulp electronMaker",
-        "debug-electron": "cd static/ && yarn electron:debug",
-        "e2e-test": "cross-env DEBUG=pw:api CI=true npx playwright test --reporter github",
-        "run-android-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync android && npx cap run android",
-        "run-ios-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync ios && npx cap run ios",
-        "clean": "gulp clean",
-        "test": "run-s cljs:test cljs:run-test",
-        "report": "run-s cljs:report",
-        "style:lint": "stylelint \"src/**/*.css\"",
-        "gulp:watch": "gulp watch",
-        "gulp:build": "cross-env NODE_ENV=production gulp build",
-        "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production",
-        "css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch",
-        "cljs:watch": "clojure -M:cljs watch app electron",
-        "cljs:watch-storybook": "clojure -M:cljs watch stories-dev",
-        "cljs:app-watch": "clojure -M:cljs watch app",
-        "cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"",
-        "cljs:release": "clojure -M:cljs release app publishing electron",
-        "cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing",
-        "cljs:release-app": "clojure -M:cljs release app",
-        "cljs:release-publishing": "clojure -M:cljs release publishing",
-        "cljs:test": "clojure -M:test compile test",
-        "cljs:run-test": "node static/tests.js",
-        "cljs:dev-release-app": "clojure -M:cljs release app --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"",
-        "cljs:dev-release-electron": "clojure -M:cljs release app electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing",
-        "cljs:debug": "clojure -M:cljs release app --debug",
-        "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app report.html",
-        "cljs:build-electron": "clojure -A:cljs compile app electron",
-        "cljs:lint": "clojure -M:clj-kondo --parallel --lint src --cache false",
-        "ios:dev": "cross-env PLATFORM=ios gulp cap",
-        "android:dev": "cross-env PLATFORM=android gulp cap",
-        "tldraw:build": "yarn --cwd packages/tldraw install",
-        "amplify:build": "yarn --cwd packages/amplify install",
-        "ui:build": "yarn --cwd packages/ui install",
-        "postinstall": "yarn tldraw:build && yarn amplify:build && yarn ui:build"
-    },
-    "dependencies": {
-        "@capacitor/action-sheet": "^5.0.7",
-        "@capacitor/android": "^5.0.0",
-        "@capacitor/app": "^5.0.0",
-        "@capacitor/camera": "^5.0.0",
-        "@capacitor/clipboard": "^5.0.0",
-        "@capacitor/core": "^5.0.0",
-        "@capacitor/filesystem": "^5.0.0",
-        "@capacitor/haptics": "^5.0.0",
-        "@capacitor/ios": "^5.0.0",
-        "@capacitor/keyboard": "^5.0.0",
-        "@capacitor/share": "^5.0.0",
-        "@capacitor/splash-screen": "^5.0.0",
-        "@capacitor/status-bar": "^5.0.0",
-        "@capawesome/capacitor-background-task": "^5.0.0",
-        "@capgo/capacitor-navigation-bar": "^6.0.0",
-        "@dnd-kit/core": "^6.0.8",
-        "@dnd-kit/sortable": "^7.0.2",
-        "@emoji-mart/data": "^1.1.2",
-        "@emoji-mart/react": "^1.1.1",
-        "@excalidraw/excalidraw": "0.16.1",
-        "@glidejs/glide": "^3.6.0",
-        "@highlightjs/cdn-assets": "10.4.1",
-        "@isomorphic-git/lightning-fs": "^4.6.0",
-        "@js-joda/core": "3.2.0",
-        "@js-joda/locale_en-us": "3.1.1",
-        "@js-joda/timezone": "2.5.0",
-        "@logseq/capacitor-file-sync": "5.0.2",
-        "@logseq/diff-merge": "0.2.2",
-        "@logseq/react-tweet-embed": "1.3.1-1",
-        "@logseq/sqlite-wasm": "=0.1.0",
-        "@radix-ui/colors": "^0.1.8",
-        "@sentry/react": "^6.18.2",
-        "@sentry/tracing": "^6.18.2",
-        "@tabler/icons-react": "^2.47.0",
-        "@tabler/icons-webfont": "^2.47.0",
-        "@tippyjs/react": "4.2.5",
-        "bignumber.js": "^9.0.2",
-        "capacitor-voice-recorder": "^5.0.0",
-        "check-password-strength": "2.0.7",
-        "chokidar": "3.5.1",
-        "chrono-node": "2.2.4",
-        "codemirror": "5.65.18",
-        "comlink": "^4.4.1",
-        "d3-force": "3.0.0",
-        "diff": "5.0.0",
-        "dompurify": "2.4.0",
-        "electron": "35.0.1",
-        "electron-dl": "^4.0.0",
-        "emoji-mart": "^5.5.2",
-        "fs": "0.0.1-security",
-        "fs-extra": "9.1.0",
-        "fuse.js": "6.4.6",
-        "grapheme-splitter": "1.0.4",
-        "graphology": "0.20.0",
-        "html2canvas": "^1.4.1",
-        "ignore": "5.1.8",
-        "inter-ui": "^3.19.3",
-        "interactjs": "^1.10.17",
-        "jszip": "3.8.0",
-        "katex": "^0.16.10",
-        "marked": "^5.1.2",
-        "mldoc": "^1.5.9",
-        "path": "0.12.7",
-        "path-complete-extname": "1.0.0",
-        "pdfjs-dist": "^3.9.179",
-        "photoswipe": "^5.3.7",
-        "pixi-graph-fork": "0.2.0",
-        "pixi.js": "6.2.0",
-        "posthog-js": "1.10.2",
-        "prop-types": "^15.7.2",
-        "react": "17.0.2",
-        "react-dom": "17.0.2",
-        "react-grid-layout": "0.16.6",
-        "react-intersection-observer": "^9.3.5",
-        "react-resize-context": "3.0.0",
-        "react-textarea-autosize": "8.3.3",
-        "react-tippy": "1.4.0",
-        "react-transition-group": "4.3.0",
-        "react-virtuoso": "4.12.5",
-        "remove-accents": "0.4.2",
-        "reveal.js": "^4.5.0",
-        "sanitize-filename": "1.6.3",
-        "send-intent": "^5.0.0",
-        "shepherd.js": "^9.1.0",
-        "tailwind-capitalize-first-letter": "^1.0.4",
-        "threads": "1.6.5",
-        "url": "^0.11.0",
-        "yargs-parser": "20.2.4"
-    },
-    "resolutions": {
-        "pixi-graph-fork/@pixi/app": "6.2.0",
-        "pixi-graph-fork/@pixi/constants": "6.2.0",
-        "pixi-graph-fork/@pixi/core": "6.2.0",
-        "pixi-graph-fork/@pixi/display": "6.2.0",
-        "pixi-graph-fork/@pixi/graphics": "6.2.0",
-        "pixi-graph-fork/@pixi/interaction": "6.2.0",
-        "pixi-graph-fork/@pixi/loaders": "6.2.0",
-        "pixi-graph-fork/@pixi/ticker": "6.2.0",
-        "pixi-graph-fork/@pixi/sprite": "6.2.0",
-        "pixi-graph-fork/@pixi/text": "6.2.0",
-        "pixi-graph-fork/@pixi/text-bitmap": "6.2.0",
-        "pixi-graph-fork/@pixi/utils": "6.2.0",
-        "pixi-graph-fork/@pixi/runner": "6.2.0",
-        "pixi-graph-fork/@pixi/mesh": "6.2.0",
-        "pixi-graph-fork/@pixi/settings": "6.2.0",
-        "pixi-graph-fork/@pixi/mixin-get-child-by-name": "6.2.0",
-        "pixi-graph-fork/@pixi/math": "6.2.0"
-    }
+  "name": "logseq",
+  "version": "0.0.1",
+  "private": true,
+  "main": "static/electron.js",
+  "devDependencies": {
+    "@axe-core/playwright": "=4.4.4",
+    "@capacitor/cli": "^7.0.0",
+    "@playwright/test": "=1.51.0",
+    "@tailwindcss/aspect-ratio": "0.4.2",
+    "@tailwindcss/forms": "0.5.3",
+    "@tailwindcss/typography": "0.5.7",
+    "@types/gulp": "^4.0.7",
+    "autoprefixer": "^10.4.13",
+    "cross-env": "^7.0.3",
+    "cssnano": "^5.1.13",
+    "del": "^6.0.0",
+    "glob": "9.0.0",
+    "gulp": "^4.0.2",
+    "gulp-postcss": "^10.0.0",
+    "gulp-replace": "^1.1.4",
+    "ip": "1.1.9",
+    "karma": "^6.4.4",
+    "karma-chrome-launcher": "^3.2.0",
+    "karma-cljs-test": "^0.1.0",
+    "npm-run-all": "^4.1.5",
+    "playwright": "=1.51.0",
+    "postcss": "^8.4.47",
+    "postcss-cli": "10.0.0",
+    "postcss-functions": "^4.0.2",
+    "postcss-import": "15.0.0",
+    "postcss-import-ext-glob": "2.0.1",
+    "postcss-nested": "6.0.0",
+    "purgecss": "4.0.2",
+    "semver": "7.5.2",
+    "shadow-cljs": "2.26.0",
+    "stylelint": "^13.8.0",
+    "stylelint-config-standard": "^20.0.0",
+    "tailwindcss": "3.3.5",
+    "tailwindcss-animate": "^1.0.7",
+    "typescript": "^4.4.3"
+  },
+  "scripts": {
+    "watch": "run-p gulp:watch cljs:watch",
+    "electron-watch": "run-p gulp:watch cljs:electron-watch",
+    "app-watch": "run-p gulp:watch cljs:app-watch",
+    "release": "run-s gulp:build cljs:release",
+    "release-app": "run-s gulp:build cljs:release-app",
+    "dev-release-app": "run-s gulp:build cljs:dev-release-app",
+    "dev-electron-app": "gulp electron",
+    "release-electron": "run-s gulp:build && gulp electronMaker",
+    "debug-electron": "cd static/ && yarn electron:debug",
+    "e2e-test": "cross-env DEBUG=pw:api CI=true npx playwright test --reporter github",
+    "run-android-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync android && npx cap run android",
+    "run-ios-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync ios && npx cap run ios",
+    "clean": "gulp clean",
+    "test": "run-s cljs:test cljs:run-test",
+    "report": "run-s cljs:report",
+    "style:lint": "stylelint \"src/**/*.css\"",
+    "gulp:watch": "gulp watch",
+    "gulp:build": "cross-env NODE_ENV=production gulp build",
+    "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production",
+    "css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch",
+    "cljs:watch": "clojure -M:cljs watch app electron",
+    "cljs:watch-storybook": "clojure -M:cljs watch stories-dev",
+    "cljs:app-watch": "clojure -M:cljs watch app",
+    "cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"",
+    "cljs:release": "clojure -M:cljs release app publishing electron",
+    "cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing",
+    "cljs:release-app": "clojure -M:cljs release app",
+    "cljs:release-publishing": "clojure -M:cljs release publishing",
+    "cljs:test": "clojure -M:test compile test",
+    "cljs:run-test": "node static/tests.js",
+    "cljs:dev-release-app": "clojure -M:cljs release app --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"",
+    "cljs:dev-release-electron": "clojure -M:cljs release app electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing",
+    "cljs:debug": "clojure -M:cljs release app --debug",
+    "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app report.html",
+    "cljs:build-electron": "clojure -A:cljs compile app electron",
+    "cljs:lint": "clojure -M:clj-kondo --parallel --lint src --cache false",
+    "ios:dev": "cross-env PLATFORM=ios gulp cap",
+    "android:dev": "cross-env PLATFORM=android gulp cap",
+    "tldraw:build": "yarn --cwd packages/tldraw install",
+    "amplify:build": "yarn --cwd packages/amplify install",
+    "ui:build": "yarn --cwd packages/ui install",
+    "postinstall": "yarn tldraw:build && yarn amplify:build && yarn ui:build"
+  },
+  "dependencies": {
+    "@capacitor/action-sheet": "^7.0.0",
+    "@capacitor/android": "^7.0.0",
+    "@capacitor/app": "^7.0.0",
+    "@capacitor/camera": "^7.0.0",
+    "@capacitor/clipboard": "^7.0.0",
+    "@capacitor/core": "^7.0.0",
+    "@capacitor/filesystem": "^7.0.0",
+    "@capacitor/haptics": "^7.0.0",
+    "@capacitor/ios": "^7.0.0",
+    "@capacitor/keyboard": "^7.0.0",
+    "@capacitor/share": "^7.0.0",
+    "@capacitor/splash-screen": "^7.0.0",
+    "@capacitor/status-bar": "^7.0.0",
+    "@capawesome/capacitor-background-task": "7.0.1",
+    "@capgo/capacitor-navigation-bar": "7.1.2",
+    "@dnd-kit/core": "^6.0.8",
+    "@dnd-kit/sortable": "^7.0.2",
+    "@emoji-mart/data": "^1.1.2",
+    "@emoji-mart/react": "^1.1.1",
+    "@excalidraw/excalidraw": "0.16.1",
+    "@glidejs/glide": "^3.6.0",
+    "@highlightjs/cdn-assets": "10.4.1",
+    "@isomorphic-git/lightning-fs": "^4.6.0",
+    "@js-joda/core": "3.2.0",
+    "@js-joda/locale_en-us": "3.1.1",
+    "@js-joda/timezone": "2.5.0",
+    "@logseq/capacitor-file-sync": "5.0.2",
+    "@logseq/diff-merge": "0.2.2",
+    "@logseq/react-tweet-embed": "1.3.1-1",
+    "@logseq/sqlite-wasm": "=0.1.0",
+    "@radix-ui/colors": "^0.1.8",
+    "@sentry/react": "^6.18.2",
+    "@sentry/tracing": "^6.18.2",
+    "@tabler/icons-react": "^2.47.0",
+    "@tabler/icons-webfont": "^2.47.0",
+    "@tippyjs/react": "4.2.5",
+    "bignumber.js": "^9.0.2",
+    "capacitor-voice-recorder": "^5.0.0",
+    "check-password-strength": "2.0.7",
+    "chokidar": "3.5.1",
+    "chrono-node": "2.2.4",
+    "codemirror": "5.65.18",
+    "comlink": "^4.4.1",
+    "d3-force": "3.0.0",
+    "diff": "5.0.0",
+    "dompurify": "2.4.0",
+    "electron": "35.0.1",
+    "electron-dl": "^4.0.0",
+    "emoji-mart": "^5.5.2",
+    "fs": "0.0.1-security",
+    "fs-extra": "9.1.0",
+    "fuse.js": "6.4.6",
+    "grapheme-splitter": "1.0.4",
+    "graphology": "0.20.0",
+    "html2canvas": "^1.4.1",
+    "ignore": "5.1.8",
+    "inter-ui": "^3.19.3",
+    "interactjs": "^1.10.17",
+    "jszip": "3.8.0",
+    "katex": "^0.16.10",
+    "marked": "^5.1.2",
+    "mldoc": "^1.5.9",
+    "path": "0.12.7",
+    "path-complete-extname": "1.0.0",
+    "pdfjs-dist": "^3.9.179",
+    "photoswipe": "^5.3.7",
+    "pixi-graph-fork": "0.2.0",
+    "pixi.js": "6.2.0",
+    "posthog-js": "1.10.2",
+    "prop-types": "^15.7.2",
+    "react": "17.0.2",
+    "react-dom": "17.0.2",
+    "react-grid-layout": "0.16.6",
+    "react-intersection-observer": "^9.3.5",
+    "react-resize-context": "3.0.0",
+    "react-textarea-autosize": "8.3.3",
+    "react-tippy": "1.4.0",
+    "react-transition-group": "4.3.0",
+    "react-virtuoso": "4.12.5",
+    "remove-accents": "0.4.2",
+    "reveal.js": "^4.5.0",
+    "sanitize-filename": "1.6.3",
+    "send-intent": "^5.0.0",
+    "shepherd.js": "^9.1.0",
+    "tailwind-capitalize-first-letter": "^1.0.4",
+    "threads": "1.6.5",
+    "url": "^0.11.0",
+    "yargs-parser": "20.2.4"
+  },
+  "resolutions": {
+    "pixi-graph-fork/@pixi/app": "6.2.0",
+    "pixi-graph-fork/@pixi/constants": "6.2.0",
+    "pixi-graph-fork/@pixi/core": "6.2.0",
+    "pixi-graph-fork/@pixi/display": "6.2.0",
+    "pixi-graph-fork/@pixi/graphics": "6.2.0",
+    "pixi-graph-fork/@pixi/interaction": "6.2.0",
+    "pixi-graph-fork/@pixi/loaders": "6.2.0",
+    "pixi-graph-fork/@pixi/ticker": "6.2.0",
+    "pixi-graph-fork/@pixi/sprite": "6.2.0",
+    "pixi-graph-fork/@pixi/text": "6.2.0",
+    "pixi-graph-fork/@pixi/text-bitmap": "6.2.0",
+    "pixi-graph-fork/@pixi/utils": "6.2.0",
+    "pixi-graph-fork/@pixi/runner": "6.2.0",
+    "pixi-graph-fork/@pixi/mesh": "6.2.0",
+    "pixi-graph-fork/@pixi/settings": "6.2.0",
+    "pixi-graph-fork/@pixi/mixin-get-child-by-name": "6.2.0",
+    "pixi-graph-fork/@pixi/math": "6.2.0"
+  }
 }