Merge branch 'develop' of github.com:floccusaddon/floccus into develop

This commit is contained in:
Marcel Klehr 2025-03-20 17:45:11 +01:00
commit 047fa38fc3
15 changed files with 141 additions and 117 deletions

View File

@ -59,7 +59,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 17 ]
java-version: [ 21 ]
name: android java${{ matrix.java-version }}
steps:
- uses: actions/setup-java@v4

View File

@ -1,5 +1,19 @@
# Changelog
## [5.4.5] - 2025-03-20
### Fixed
* Upgrade to capacitor 7 and Java 21
* fix(Tree#search): Harden search
* fix(Controller): Cap exponential backoff at 1h
* fix(Account): Don't call onSyncFail twice if onSyncStart failed
* fix: Reduce intervention frequency to avoid annoying users
* fix(App): Allow opening any view in a new tab
* fix(Git): Make sure foreign locks are freed when forceLock is set
* fix(NextcloudBookmarks): Make sure lock is freed when forceLock is set
* fix(LocalTabs): Speed up tabs updated callback
## [5.4.4]
### Fixed

View File

@ -7,8 +7,8 @@ android {
applicationId "org.handmadeideas.floccus"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 5004004
versionName "5.4.4"
versionCode 5004005
versionName "5.4.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.

View File

@ -361,7 +361,7 @@
INFOPLIST_FILE = "Floccus New Bookmark/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "Floccus New Bookmark";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 5.4.3;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
@ -395,7 +395,7 @@
INFOPLIST_FILE = "Floccus New Bookmark/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "Floccus New Bookmark";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 5.4.3;
MTL_FAST_MATH = YES;
@ -458,7 +458,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 5.4.3;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@ -510,7 +510,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 5.4.3;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
@ -535,7 +535,7 @@
INFOPLIST_FILE = App/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Floccus;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 5.4.3;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
@ -565,7 +565,7 @@
INFOPLIST_FILE = App/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Floccus;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 5.4.3;
PRODUCT_BUNDLE_IDENTIFIER = org.handmadeideas.floccus;

View File

@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "floccus bookmarks sync",
"short_name": "floccus",
"version": "5.4.4",
"version": "5.4.5",
"description": "__MSG_DescriptionExtension__",
"icons": {
"48": "icons/logo.png",

View File

@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "floccus bookmarks sync",
"short_name": "floccus",
"version": "5.4.4",
"version": "5.4.5",
"description": "__MSG_DescriptionExtension__",
"icons": {
"48": "icons/logo.png",

169
package-lock.json generated
View File

@ -10,17 +10,17 @@
"license": "MPL-2.0",
"dependencies": {
"@byteowls/capacitor-oauth2": "5.x",
"@capacitor/android": "^7.0.0",
"@capacitor/app": "^7.0.0",
"@capacitor/browser": "^7.0.0",
"@capacitor/core": "^7.0.0",
"@capacitor/device": "^7.0.0",
"@capacitor/filesystem": "^7.0.0",
"@capacitor/ios": "^7.0.0",
"@capacitor/network": "^7.0.0",
"@capacitor/preferences": "^7.0.0",
"@capacitor/share": "^7.0.0",
"@capacitor/splash-screen": "^7.0.0",
"@capacitor/android": "7.x",
"@capacitor/app": "7.x",
"@capacitor/browser": "7.x",
"@capacitor/core": "7.x",
"@capacitor/device": "7.x",
"@capacitor/filesystem": "7.x",
"@capacitor/ios": "7.x",
"@capacitor/network": "7.x",
"@capacitor/preferences": "7.x",
"@capacitor/share": "7.x",
"@capacitor/splash-screen": "7.x",
"@isomorphic-git/lightning-fs": "^4.6.0",
"@sentry/vue": "7.x",
"@sentry/webpack-plugin": "2.x",
@ -52,7 +52,7 @@
"devDependencies": {
"@babel/core": "7.x",
"@babel/preset-env": "7.x",
"@capacitor/cli": "^7.0.0",
"@capacitor/cli": "^7.1.0",
"@mdi/font": "^6.6.96",
"@types/node": "^14.14.37",
"@typescript-eslint/eslint-plugin": "^5.2.0",
@ -139,21 +139,21 @@
}
},
"node_modules/@babel/core": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
"integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.9",
"@babel/generator": "^7.26.10",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helpers": "^7.26.9",
"@babel/parser": "^7.26.9",
"@babel/helpers": "^7.26.10",
"@babel/parser": "^7.26.10",
"@babel/template": "^7.26.9",
"@babel/traverse": "^7.26.9",
"@babel/types": "^7.26.9",
"@babel/traverse": "^7.26.10",
"@babel/types": "^7.26.10",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@ -169,13 +169,13 @@
}
},
"node_modules/@babel/generator": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
"integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz",
"integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.26.9",
"@babel/types": "^7.26.9",
"@babel/parser": "^7.26.10",
"@babel/types": "^7.26.10",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@ -430,13 +430,13 @@
}
},
"node_modules/@babel/helpers": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz",
"integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
"integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
"license": "MIT",
"dependencies": {
"@babel/template": "^7.26.9",
"@babel/types": "^7.26.9"
"@babel/types": "^7.26.10"
},
"engines": {
"node": ">=6.9.0"
@ -537,12 +537,12 @@
}
},
"node_modules/@babel/parser": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
"integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
"integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.26.9"
"@babel/types": "^7.26.10"
},
"bin": {
"parser": "bin/babel-parser.js"
@ -1634,9 +1634,9 @@
}
},
"node_modules/@babel/runtime": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
"integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
"integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -1661,16 +1661,16 @@
}
},
"node_modules/@babel/traverse": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
"integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz",
"integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.9",
"@babel/parser": "^7.26.9",
"@babel/generator": "^7.26.10",
"@babel/parser": "^7.26.10",
"@babel/template": "^7.26.9",
"@babel/types": "^7.26.9",
"@babel/types": "^7.26.10",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@ -1679,9 +1679,9 @@
}
},
"node_modules/@babel/types": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
"integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
"version": "7.26.10",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
"integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
@ -1708,12 +1708,12 @@
}
},
"node_modules/@capacitor/android": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-7.0.1.tgz",
"integrity": "sha512-jukJJHfkcyEBOkFBJRD3EwXMIIQo7lSv0ExPWgsIliPdGXLAj6ElvK2JaYEzec3vKyLc4RTNFVv0PMEU0vnImg==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-7.1.0.tgz",
"integrity": "sha512-piPgQViWOjh18H7R8wDkh5uaZ5PwRbMxGZFu39ReP8Y0nZwjS8ESUvJuBm38T+HHJnHM6MnDHmCWnW3ixKqeZw==",
"license": "MIT",
"peerDependencies": {
"@capacitor/core": "^7.0.0"
"@capacitor/core": "^7.1.0"
}
},
"node_modules/@capacitor/app": {
@ -1735,9 +1735,9 @@
}
},
"node_modules/@capacitor/cli": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-7.0.1.tgz",
"integrity": "sha512-KNKT25ZvNL8Gm+zxSxCq8n9FQYUBsZcAGs5lisQKHnDRz7tkTMmMNok+TlNlLn6to78J1k+OtBgpmfbFerpOng==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-7.1.0.tgz",
"integrity": "sha512-oCjB9VB6KNTnBAlzt8tVIuBW+ZniIOCbrsp+nLoa2EfUIgoOGfMHldS4tG9KlTG3pTi5AzeHjSHJIMZwfiz6gg==",
"license": "MIT",
"dependencies": {
"@ionic/cli-framework-output": "^2.2.8",
@ -1779,9 +1779,9 @@
}
},
"node_modules/@capacitor/core": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.0.1.tgz",
"integrity": "sha512-1Ob9bvA/p8g8aNwK6VesxEekGXowLVf6APjkW4LRnr05H+7z/bke+Q5pn9zqh/GgTbIxAQ/rwZrAZvvxkdm1UA==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.1.0.tgz",
"integrity": "sha512-I0a4C8gux5sx+HDamJjCiWHEWRdJU3hejwURFOSwJjUmAMkfkrm4hOsI0dgd+S0eCkKKKYKz9WNm7DAIvhm2zw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
@ -1806,12 +1806,12 @@
}
},
"node_modules/@capacitor/ios": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-7.0.1.tgz",
"integrity": "sha512-RN6S1C1k7ue57DFmJM4EizzsYBrahTTiMhcnlHspFLaojgHbFWZbYq1VriuRKysPU1ka/P+klsdtRFsB5K9jyw==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-7.1.0.tgz",
"integrity": "sha512-ND7GNxtBRnD6Az14D5YRFKFL4VtdLeXE6Zym1SVcKac0NZF18n4DBympBcnfCR61421FCmRlswbpPa9Fr+Czxw==",
"license": "MIT",
"peerDependencies": {
"@capacitor/core": "^7.0.0"
"@capacitor/core": "^7.1.0"
}
},
"node_modules/@capacitor/network": {
@ -1871,9 +1871,9 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
"integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz",
"integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -4329,18 +4329,19 @@
}
},
"node_modules/array.prototype.findlastindex": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
"integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz",
"integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"call-bind": "^1.0.8",
"call-bound": "^1.0.4",
"define-properties": "^1.2.1",
"es-abstract": "^1.23.2",
"es-abstract": "^1.23.9",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"es-shim-unscopables": "^1.0.2"
"es-object-atoms": "^1.1.1",
"es-shim-unscopables": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@ -5285,9 +5286,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001702",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz",
"integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==",
"version": "1.0.30001706",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz",
"integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==",
"funding": [
{
"type": "opencollective",
@ -6614,9 +6615,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.113",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz",
"integrity": "sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==",
"version": "1.5.120",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz",
"integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==",
"license": "ISC"
},
"node_modules/elementtree": {
@ -13508,9 +13509,9 @@
"license": "MIT"
},
"node_modules/postcss/node_modules/nanoid": {
"version": "3.3.9",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz",
"integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==",
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
@ -14832,9 +14833,9 @@
"license": "MIT"
},
"node_modules/sass": {
"version": "1.85.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz",
"integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==",
"version": "1.86.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz",
"integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -16715,9 +16716,9 @@
"license": "MIT"
},
"node_modules/undici": {
"version": "6.21.1",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz",
"integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==",
"version": "6.21.2",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
"integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
"license": "MIT",
"engines": {
"node": ">=18.17"

View File

@ -1,6 +1,6 @@
{
"name": "floccus",
"version": "5.4.4",
"version": "5.4.5",
"description": "Sync your bookmarks privately across browsers and devices",
"scripts": {
"build": "NODE_OPTIONS=--max-old-space-size=5000 gulp",
@ -26,7 +26,7 @@
"devDependencies": {
"@babel/core": "7.x",
"@babel/preset-env": "7.x",
"@capacitor/cli": "^7.0.0",
"@capacitor/cli": "^7.1.0",
"@mdi/font": "^6.6.96",
"@types/node": "^14.14.37",
"@typescript-eslint/eslint-plugin": "^5.2.0",
@ -77,17 +77,17 @@
},
"dependencies": {
"@byteowls/capacitor-oauth2": "5.x",
"@capacitor/android": "^7.0.0",
"@capacitor/app": "^7.0.0",
"@capacitor/browser": "^7.0.0",
"@capacitor/core": "^7.0.0",
"@capacitor/device": "^7.0.0",
"@capacitor/filesystem": "^7.0.0",
"@capacitor/ios": "^7.0.0",
"@capacitor/network": "^7.0.0",
"@capacitor/preferences": "^7.0.0",
"@capacitor/share": "^7.0.0",
"@capacitor/splash-screen": "^7.0.0",
"@capacitor/android": "7.x",
"@capacitor/app": "7.x",
"@capacitor/browser": "7.x",
"@capacitor/core": "7.x",
"@capacitor/device": "7.x",
"@capacitor/filesystem": "7.x",
"@capacitor/ios": "7.x",
"@capacitor/network": "7.x",
"@capacitor/preferences": "7.x",
"@capacitor/share": "7.x",
"@capacitor/splash-screen": "7.x",
"@isomorphic-git/lightning-fs": "^4.6.0",
"@sentry/vue": "7.x",
"@sentry/webpack-plugin": "2.x",
@ -133,4 +133,4 @@
"not KaiOS >= 0",
"not Samsung >= 0"
]
}
}

View File

@ -15,6 +15,7 @@ import {
SlashError
} from '../../errors/Error'
import Crypto from '../Crypto'
import { isOrion } from '../isOrion'
const LOCK_INTERVAL = 2 * 60 * 1000 // Lock every 2mins while syncing
const LOCK_TIMEOUT = 15 * 60 * 1000 // Override lock 0.25h after last time lock has been set
@ -71,7 +72,7 @@ export default class GitAdapter extends CachingAdapter {
this.hash = await Crypto.sha256(JSON.stringify(this.server)) + Date.now()
this.dir = '/' + this.hash + '/'
if (Capacitor.getPlatform() === 'web') {
if (Capacitor.getPlatform() === 'web' && !isOrion) {
const browser = (await import('../browser-api')).default
let hasPermissions, error = false
try {

View File

@ -12,6 +12,7 @@ import {
} from '../../errors/Error'
import { OAuth2Client } from '@byteowls/capacitor-oauth2'
import { Capacitor, CapacitorHttp as Http } from '@capacitor/core'
import { isOrion } from '../isOrion'
const OAuthConfig = {
authorizationBaseUrl: 'https://accounts.google.com/o/oauth2/auth',
@ -198,7 +199,7 @@ export default class GoogleDriveAdapter extends CachingAdapter {
async onSyncStart(needLock = true, forceLock = false) {
Logger.log('onSyncStart: begin')
if (Capacitor.getPlatform() === 'web') {
if (Capacitor.getPlatform() === 'web' && !isOrion) {
const browser = (await import('../browser-api')).default
const origins = ['https://oauth2.googleapis.com/', 'https://www.googleapis.com/']
let hasPermissions, error = false

View File

@ -31,6 +31,7 @@ import {
UnknownFolderUpdateError,
UnknownMoveTargetError, UpdateBookmarkError
} from '../../errors/Error'
import { isOrion } from '../isOrion'
const PAGE_SIZE = 300
const TIMEOUT = 300000
@ -133,7 +134,7 @@ export default class NextcloudBookmarksAdapter implements Adapter, BulkImportRes
}
async onSyncStart(needLock = true, forceLock = false): Promise<void> {
if (Capacitor.getPlatform() === 'web') {
if (Capacitor.getPlatform() === 'web' && !isOrion) {
const browser = (await import('../browser-api')).default
let hasPermissions, error = false
try {

View File

@ -15,6 +15,7 @@ import {
import { CapacitorHttp as Http } from '@capacitor/core'
import { Capacitor } from '@capacitor/core'
import Html from '../serializers/Html'
import { isOrion } from '../isOrion'
const LOCK_INTERVAL = 2 * 60 * 1000 // Lock every 2mins while syncing
const LOCK_TIMEOUT = 15 * 60 * 1000 // Override lock 0.25h after last time lock has been set
@ -269,7 +270,7 @@ export default class WebDavAdapter extends CachingAdapter {
Logger.log('onSyncStart: begin')
this.ended = false
if (Capacitor.getPlatform() === 'web') {
if (Capacitor.getPlatform() === 'web' && !isOrion) {
const browser = (await import('../browser-api')).default
let hasPermissions, error = false
try {

View File

@ -14,7 +14,7 @@ const INACTIVITY_TIMEOUT = 7 * 1000 // 7 seconds
const MAX_BACKOFF_INTERVAL = 1000 * 60 * 60 // 1 hour
const DEFAULT_SYNC_INTERVAL = 15 // 15 minutes
const STALE_SYNC_TIME = 1000 * 60 * 60 * 24 * 2 // two days
const INTERVENTION_INTERVAL = 1000 * 60 * 60 * 24 * 91 // 91 days
const INTERVENTION_INTERVAL = 1000 * 60 * 60 * 24 * 182 // 182 days
class AlarmManager {
constructor(ctl) {

1
src/lib/isOrion.ts Normal file
View File

@ -0,0 +1 @@
export const isOrion = 'userAgentData' in navigator && JSON.stringify(navigator.userAgentData).includes('Orion')

View File

@ -506,7 +506,7 @@ export default {
return []
}
let items
if (this.searchQuery && this.searchQuery.length >= 2) {
if (this.searchQuery && this.searchQuery.trim().length >= 2) {
return this.search(this.searchQuery.toLowerCase().trim(), this.currentFolder)
} else {
items = this.currentFolder.children
@ -515,7 +515,11 @@ export default {
return sortBy(items, [(item) => {
if (this.sortBy === 'url') {
if (item.url) {
return new URL(item.url).hostname
try {
return new URL(item.url).hostname
} catch (e) {
return item.url.toLowerCase()
}
} else {
return '0000000' + item.title.toLowerCase() // folders to the top
}
@ -527,7 +531,7 @@ export default {
}
},
otherSearchItems() {
if (!this.currentFolder && (!this.searchQuery || this.searchQuery.length < 2)) {
if (!this.currentFolder && (!this.searchQuery || this.searchQuery.trim().length < 2)) {
return []
}
return this.search(this.searchQuery.toLowerCase().trim(), this.tree).filter(item => !this.items.includes(item))