feat(deps): add tauri http plugin and update dependencies
This commit is contained in:
@@ -39,6 +39,9 @@
|
||||
"@radix-ui/react-toggle-group": "^1.1.0",
|
||||
"@radix-ui/react-tooltip": "^1.1.4",
|
||||
"@tanstack/react-query": "^5.56.2",
|
||||
"@tauri-apps/api": "^2",
|
||||
"@tauri-apps/plugin-http": "^2.5.2",
|
||||
"@tauri-apps/plugin-opener": "^2",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"cmdk": "^1.0.0",
|
||||
@@ -50,8 +53,6 @@
|
||||
"react": "^18.3.1",
|
||||
"react-day-picker": "^8.10.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"@tauri-apps/api": "^2",
|
||||
"@tauri-apps/plugin-opener": "^2",
|
||||
"react-hook-form": "^7.53.0",
|
||||
"react-resizable-panels": "^2.1.3",
|
||||
"react-router-dom": "^6.26.2",
|
||||
|
433
src-tauri/Cargo.lock
generated
433
src-tauri/Cargo.lock
generated
@@ -519,10 +519,39 @@ version = "0.18.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
|
||||
dependencies = [
|
||||
"percent-encoding",
|
||||
"time",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cookie_store"
|
||||
version = "0.21.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9"
|
||||
dependencies = [
|
||||
"cookie",
|
||||
"document-features",
|
||||
"idna",
|
||||
"log",
|
||||
"publicsuffix",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"time",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.10.1"
|
||||
@@ -546,7 +575,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"core-foundation",
|
||||
"core-foundation 0.10.1",
|
||||
"core-graphics-types",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
@@ -559,7 +588,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"core-foundation",
|
||||
"core-foundation 0.10.1",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@@ -678,6 +707,12 @@ dependencies = [
|
||||
"syn 2.0.104",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "data-url"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
version = "0.4.0"
|
||||
@@ -782,6 +817,15 @@ dependencies = [
|
||||
"syn 2.0.104",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "document-features"
|
||||
version = "0.2.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
|
||||
dependencies = [
|
||||
"litrs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dpi"
|
||||
version = "0.1.2"
|
||||
@@ -838,6 +882,15 @@ version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "endi"
|
||||
version = "1.1.0"
|
||||
@@ -1220,8 +1273,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"wasi 0.11.1+wasi-snapshot-preview1",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1231,9 +1286,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"r-efi",
|
||||
"wasi 0.14.2+wasi-0.2.4",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1390,6 +1447,25 @@ dependencies = [
|
||||
"syn 2.0.104",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
|
||||
dependencies = [
|
||||
"atomic-waker",
|
||||
"bytes",
|
||||
"fnv",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"http",
|
||||
"indexmap 2.10.0",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.12.3"
|
||||
@@ -1487,6 +1563,7 @@ dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"httparse",
|
||||
@@ -1497,6 +1574,23 @@ dependencies = [
|
||||
"want",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-rustls"
|
||||
version = "0.27.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
|
||||
dependencies = [
|
||||
"http",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tower-service",
|
||||
"webpki-roots",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-util"
|
||||
version = "0.1.14"
|
||||
@@ -1516,9 +1610,11 @@ dependencies = [
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"system-configuration",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
"windows-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1793,6 +1889,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"tauri",
|
||||
"tauri-build",
|
||||
"tauri-plugin-http",
|
||||
"tauri-plugin-opener",
|
||||
]
|
||||
|
||||
@@ -1919,6 +2016,12 @@ version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
|
||||
|
||||
[[package]]
|
||||
name = "litrs"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.13"
|
||||
@@ -1935,6 +2038,12 @@ version = "0.4.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
|
||||
|
||||
[[package]]
|
||||
name = "lru-slab"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
|
||||
|
||||
[[package]]
|
||||
name = "mac"
|
||||
version = "0.1.1"
|
||||
@@ -2751,6 +2860,22 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "psl-types"
|
||||
version = "2.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac"
|
||||
|
||||
[[package]]
|
||||
name = "publicsuffix"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf"
|
||||
dependencies = [
|
||||
"idna",
|
||||
"psl-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.37.5"
|
||||
@@ -2760,6 +2885,61 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quinn"
|
||||
version = "0.11.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"cfg_aliases",
|
||||
"pin-project-lite",
|
||||
"quinn-proto",
|
||||
"quinn-udp",
|
||||
"rustc-hash",
|
||||
"rustls",
|
||||
"socket2",
|
||||
"thiserror 2.0.12",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"web-time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quinn-proto"
|
||||
version = "0.11.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"getrandom 0.3.3",
|
||||
"lru-slab",
|
||||
"rand 0.9.2",
|
||||
"ring",
|
||||
"rustc-hash",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"slab",
|
||||
"thiserror 2.0.12",
|
||||
"tinyvec",
|
||||
"tracing",
|
||||
"web-time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quinn-udp"
|
||||
version = "0.5.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
|
||||
dependencies = [
|
||||
"cfg_aliases",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"socket2",
|
||||
"tracing",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.40"
|
||||
@@ -2800,6 +2980,16 @@ dependencies = [
|
||||
"rand_core 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
|
||||
dependencies = [
|
||||
"rand_chacha 0.9.0",
|
||||
"rand_core 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.2.2"
|
||||
@@ -2820,6 +3010,16 @@ dependencies = [
|
||||
"rand_core 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.5.1"
|
||||
@@ -2838,6 +3038,15 @@ dependencies = [
|
||||
"getrandom 0.2.16",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
||||
dependencies = [
|
||||
"getrandom 0.3.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.2.0"
|
||||
@@ -2939,22 +3148,32 @@ checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"cookie",
|
||||
"cookie_store",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-rustls",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
"log",
|
||||
"mime",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"quinn",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower-http",
|
||||
@@ -2964,6 +3183,21 @@ dependencies = [
|
||||
"wasm-bindgen-futures",
|
||||
"wasm-streams",
|
||||
"web-sys",
|
||||
"webpki-roots",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.17.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"getrandom 0.2.16",
|
||||
"libc",
|
||||
"untrusted",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2972,6 +3206,12 @@ version = "0.1.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-hash"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.4.1"
|
||||
@@ -2994,6 +3234,41 @@ dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
"rustls-webpki",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
|
||||
dependencies = [
|
||||
"web-time",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.103.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
"untrusted",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.21"
|
||||
@@ -3393,6 +3668,12 @@ version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
version = "2.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||
|
||||
[[package]]
|
||||
name = "swift-rs"
|
||||
version = "1.0.7"
|
||||
@@ -3446,6 +3727,27 @@ dependencies = [
|
||||
"syn 2.0.104",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"core-foundation 0.9.4",
|
||||
"system-configuration-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration-sys"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-deps"
|
||||
version = "6.2.2"
|
||||
@@ -3466,7 +3768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"core-foundation",
|
||||
"core-foundation 0.10.1",
|
||||
"core-graphics",
|
||||
"crossbeam-channel",
|
||||
"dispatch",
|
||||
@@ -3645,6 +3947,52 @@ dependencies = [
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c6ef84ee2f2094ce093e55106d90d763ba343fad57566992962e8f76d113f99"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"dunce",
|
||||
"glob",
|
||||
"percent-encoding",
|
||||
"schemars 0.8.22",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_repr",
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.12",
|
||||
"toml",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fcde333d97e565a7765aad82f32d8672458f7bd77b6ee653830d5dded9d7b5c2"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"cookie_store",
|
||||
"data-url",
|
||||
"http",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"schemars 0.8.22",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"tauri-plugin-fs",
|
||||
"thiserror 2.0.12",
|
||||
"tokio",
|
||||
"url",
|
||||
"urlpattern",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-opener"
|
||||
version = "2.4.0"
|
||||
@@ -3870,6 +4218,21 @@ dependencies = [
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
|
||||
dependencies = [
|
||||
"tinyvec_macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec_macros"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.45.1"
|
||||
@@ -3882,9 +4245,31 @@ dependencies = [
|
||||
"mio",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"tokio-macros",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.104",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
|
||||
dependencies = [
|
||||
"rustls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-util"
|
||||
version = "0.7.15"
|
||||
@@ -4141,6 +4526,12 @@ version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
|
||||
|
||||
[[package]]
|
||||
name = "untrusted"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.5.4"
|
||||
@@ -4355,6 +4746,16 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-time"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webkit2gtk"
|
||||
version = "2.0.1"
|
||||
@@ -4399,6 +4800,15 @@ dependencies = [
|
||||
"system-deps",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webpki-roots"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
|
||||
dependencies = [
|
||||
"rustls-pki-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webview2-com"
|
||||
version = "0.38.0"
|
||||
@@ -4565,6 +4975,17 @@ dependencies = [
|
||||
"windows-link",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-registry"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-result",
|
||||
"windows-strings",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.3.4"
|
||||
@@ -5055,6 +5476,12 @@ dependencies = [
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
|
||||
|
||||
[[package]]
|
||||
name = "zerotrie"
|
||||
version = "0.2.2"
|
||||
|
@@ -22,3 +22,4 @@ tauri = { version = "2", features = ["devtools"] }
|
||||
tauri-plugin-opener = "2"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
tauri-plugin-http = "2.0.0"
|
||||
|
@@ -9,6 +9,17 @@
|
||||
"core:default",
|
||||
"opener:default",
|
||||
"core:window:allow-close",
|
||||
"core:window:allow-minimize"
|
||||
"core:window:allow-minimize",
|
||||
{
|
||||
"identifier": "http:default",
|
||||
"allow": [
|
||||
{
|
||||
"url": "http://localhost:*/*"
|
||||
},
|
||||
{
|
||||
"url": "https://meili.site.quack-lab.dev/*"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -8,6 +8,7 @@ fn greet(name: &str) -> String {
|
||||
pub fn run() {
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_opener::init())
|
||||
.plugin(tauri_plugin_http::init())
|
||||
.invoke_handler(tauri::generate_handler![greet])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
|
@@ -11,6 +11,7 @@ import { toast } from '@/hooks/use-toast';
|
||||
import { Window } from '@tauri-apps/api/window';
|
||||
import { Switch } from '@/components/ui/switch';
|
||||
import { useTheme } from 'next-themes';
|
||||
import { fetch } from '@tauri-apps/plugin-http'
|
||||
|
||||
// Global timer that starts immediately when script loads
|
||||
const GLOBAL_START_TIME = Date.now();
|
||||
@@ -71,7 +72,7 @@ const mapHitToNote = (hit: any): Note => ({
|
||||
const Index = () => {
|
||||
// Log component mount time immediately
|
||||
console.log(`Component mounted after ${Date.now() - GLOBAL_START_TIME}ms`);
|
||||
|
||||
|
||||
const [currentNote, setCurrentNote] = useState('');
|
||||
const [currentNoteTags, setCurrentNoteTags] = useState<string[]>([]);
|
||||
const [previousNote, setPreviousNote] = useState<Note | null>(null);
|
||||
@@ -100,9 +101,9 @@ const Index = () => {
|
||||
const [includeTagsInSearch, setIncludeTagsInSearch] = useState(true);
|
||||
const [tagGenerationTimeout, setTagGenerationTimeout] = useState<NodeJS.Timeout>();
|
||||
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
|
||||
const [systemPrompt, setSystemPrompt] = useState(`You are a helpful assistant that generates searchable tags for journal entries.
|
||||
|
||||
Your task is to analyze the content and generate 1-3 relevant tags that would help the author find this note later.
|
||||
const [systemPrompt, setSystemPrompt] = useState(`You are a helpful assistant that generates searchable tags for journal entries.
|
||||
|
||||
Your task is to analyze the content and generate 1-3 relevant tags that would help the author find this note later.
|
||||
Focus on the quality of tags, not the quantity.
|
||||
|
||||
Focus on:
|
||||
@@ -134,12 +135,12 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
const response = await fetch(url, options);
|
||||
const duration = Date.now() - startTime;
|
||||
debugTiming(operation, startTime);
|
||||
|
||||
|
||||
// Add network diagnostics for slow requests
|
||||
if (duration > 1000) {
|
||||
addDebugInfo(`Slow request: ${operation} took ${duration}ms`);
|
||||
}
|
||||
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
const duration = Date.now() - startTime;
|
||||
@@ -241,7 +242,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
// Add timeout to prevent hanging
|
||||
const controller = new AbortController();
|
||||
const timeoutId = setTimeout(() => controller.abort(), 500);
|
||||
|
||||
|
||||
const response = await fetch(`${OLLAMA_ENDPOINT}/api/tags`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
@@ -249,9 +250,9 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
},
|
||||
signal: controller.signal,
|
||||
});
|
||||
|
||||
|
||||
clearTimeout(timeoutId);
|
||||
|
||||
|
||||
if (response.ok) {
|
||||
setOllamaStatus('online');
|
||||
addDebugInfo('Ollama connection successful');
|
||||
@@ -281,7 +282,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
if (tagGenerationTimeout) {
|
||||
clearTimeout(tagGenerationTimeout);
|
||||
}
|
||||
|
||||
|
||||
const timeout = setTimeout(async () => {
|
||||
if (content.trim() && autoGenerateTags) {
|
||||
try {
|
||||
@@ -300,7 +301,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
}
|
||||
}
|
||||
}, 300);
|
||||
|
||||
|
||||
setTagGenerationTimeout(timeout);
|
||||
};
|
||||
|
||||
@@ -313,7 +314,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
const contextNotes = [];
|
||||
const start = Math.max(0, noteIndex - contextSize);
|
||||
const end = Math.min(noteCache.length, noteIndex + contextSize + 1);
|
||||
|
||||
|
||||
for (let i = start; i < end; i++) {
|
||||
if (i !== noteIndex) {
|
||||
const note = noteCache[i];
|
||||
@@ -321,7 +322,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`);
|
||||
contextNotes.push(`[${date}] ${note.content.substring(0, 200)}${note.content.length > 200 ? '...' : ''}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (contextNotes.length > 0) {
|
||||
context = `\n\nContext from surrounding notes:\n${contextNotes.join('\n\n')}`;
|
||||
}
|
||||
@@ -351,7 +352,7 @@ ${content}${context}`;
|
||||
|
||||
const data = await response.json();
|
||||
const responseText = data.response?.trim();
|
||||
|
||||
|
||||
if (!responseText) {
|
||||
throw new Error('Empty response from Ollama - check if model is loaded');
|
||||
}
|
||||
@@ -361,7 +362,7 @@ ${content}${context}`;
|
||||
.split(',')
|
||||
.map((tag: string) => tag.trim())
|
||||
.filter((tag: string) => tag.length > 0);
|
||||
|
||||
|
||||
addDebugInfo(`Generated ${tags.length} tags: ${tags.join(', ')}`);
|
||||
return tags;
|
||||
|
||||
@@ -371,10 +372,10 @@ ${content}${context}`;
|
||||
} catch (error) {
|
||||
console.error('Error generating tags:', error);
|
||||
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
||||
|
||||
|
||||
// More detailed error logging and user notification
|
||||
let userMessage = 'Failed to generate tags';
|
||||
|
||||
|
||||
if (error instanceof TypeError && error.message.includes('fetch')) {
|
||||
addDebugInfo('Tag generation failed: Network error - Ollama not reachable at localhost:11434');
|
||||
userMessage = 'Ollama not reachable - check if it\'s running on localhost:11434';
|
||||
@@ -391,14 +392,14 @@ ${content}${context}`;
|
||||
addDebugInfo(`Tag generation failed: ${errorMessage}`);
|
||||
userMessage = `Tag generation failed: ${errorMessage}`;
|
||||
}
|
||||
|
||||
|
||||
// Show error to user
|
||||
toast({
|
||||
title: "Tag Generation Failed",
|
||||
description: userMessage,
|
||||
variant: "destructive",
|
||||
});
|
||||
|
||||
|
||||
return [];
|
||||
}
|
||||
};
|
||||
@@ -593,7 +594,7 @@ ${content}${context}`;
|
||||
const noteIndex = noteCache.findIndex(n => n.id === note.id);
|
||||
tags = await generateTags(trimmedContent, noteIndex);
|
||||
}
|
||||
|
||||
|
||||
// Generate tags if none are present and auto-generation is enabled
|
||||
if (autoGenerateTags && tags.length === 0) {
|
||||
addDebugInfo('No tags present, generating tags before saving...');
|
||||
@@ -710,31 +711,31 @@ ${content}${context}`;
|
||||
const data = await response.json();
|
||||
const notes: Note[] = data.hits.map((hit: any) => mapHitToNote(hit));
|
||||
|
||||
if (offset === 0) {
|
||||
setNoteCache(notes);
|
||||
if (notes.length > 0) {
|
||||
setPreviousNote(notes[0]);
|
||||
setCurrentNoteIndex(0);
|
||||
}
|
||||
const loadTime = Date.now() - loadStartTime;
|
||||
addDebugInfo(`Loaded ${notes.length} notes in ${loadTime}ms`);
|
||||
} else {
|
||||
setNoteCache(prev => [...prev, ...notes]);
|
||||
const loadTime = Date.now() - loadStartTime;
|
||||
addDebugInfo(`Loaded ${notes.length} additional notes in ${loadTime}ms`);
|
||||
if (offset === 0) {
|
||||
setNoteCache(notes);
|
||||
if (notes.length > 0) {
|
||||
setPreviousNote(notes[0]);
|
||||
setCurrentNoteIndex(0);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error loading notes:', error);
|
||||
const loadTime = Date.now() - loadStartTime;
|
||||
addDebugInfo(`Failed to load notes after ${loadTime}ms`);
|
||||
toast({
|
||||
title: "Error",
|
||||
description: "Failed to load notes. Please check your connection.",
|
||||
variant: "destructive",
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
addDebugInfo(`Loaded ${notes.length} notes in ${loadTime}ms`);
|
||||
} else {
|
||||
setNoteCache(prev => [...prev, ...notes]);
|
||||
const loadTime = Date.now() - loadStartTime;
|
||||
addDebugInfo(`Loaded ${notes.length} additional notes in ${loadTime}ms`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error loading notes:', error);
|
||||
const loadTime = Date.now() - loadStartTime;
|
||||
addDebugInfo(`Failed to load notes after ${loadTime}ms`);
|
||||
toast({
|
||||
title: "Error",
|
||||
description: "Failed to load notes. Please check your connection.",
|
||||
variant: "destructive",
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
// Load notes around a specific note
|
||||
@@ -1091,7 +1092,7 @@ ${content}${context}`;
|
||||
try {
|
||||
setIsLoading(true);
|
||||
addDebugInfo('Regenerating tags for all notes...');
|
||||
|
||||
|
||||
// Load all notes
|
||||
const response = await fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${NOTE_INDEX}/search`, {
|
||||
method: 'POST',
|
||||
@@ -1112,7 +1113,7 @@ ${content}${context}`;
|
||||
|
||||
const data = await response.json();
|
||||
const notes: Note[] = data.hits.map((hit: any) => mapHitToNote(hit));
|
||||
|
||||
|
||||
let updatedCount = 0;
|
||||
for (let i = 0; i < notes.length; i++) {
|
||||
const note = notes[i];
|
||||
@@ -1128,7 +1129,7 @@ ${content}${context}`;
|
||||
console.error(`Error updating tags for note ${note.id}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
addDebugInfo(`Tag regeneration complete: ${updatedCount} notes updated`);
|
||||
toast({
|
||||
title: "Tag regeneration complete",
|
||||
@@ -1197,7 +1198,7 @@ ${content}${context}`;
|
||||
|
||||
document.addEventListener('keydown', handleKeyDown);
|
||||
window.addEventListener('focus', handleWindowFocus);
|
||||
|
||||
|
||||
return () => {
|
||||
document.removeEventListener('keydown', handleKeyDown);
|
||||
window.removeEventListener('focus', handleWindowFocus);
|
||||
@@ -1346,19 +1347,19 @@ ${content}${context}`;
|
||||
try {
|
||||
console.log('Starting initialization...');
|
||||
addDebugInfo('Starting initialization...');
|
||||
|
||||
|
||||
// Check all indexes in parallel for faster initialization
|
||||
addDebugInfo('Checking all indexes in parallel...');
|
||||
const indexCheckStart = Date.now();
|
||||
|
||||
|
||||
const [notesExists, scratchExists, settingsExists] = await Promise.all([
|
||||
indexExists(NOTE_INDEX),
|
||||
indexExists(SCRATCH_INDEX),
|
||||
indexExists(SCRATCH_INDEX),
|
||||
indexExists(SETTINGS_INDEX)
|
||||
]);
|
||||
|
||||
|
||||
addDebugInfo(`All index checks completed: ${Date.now() - indexCheckStart}ms`);
|
||||
|
||||
|
||||
// Create missing indexes
|
||||
const createPromises = [];
|
||||
if (!notesExists) {
|
||||
@@ -1375,7 +1376,7 @@ ${content}${context}`;
|
||||
}),
|
||||
}, 'Create Notes Index'));
|
||||
}
|
||||
|
||||
|
||||
if (!scratchExists) {
|
||||
addDebugInfo('Creating scratch index...');
|
||||
createPromises.push(fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes`, {
|
||||
@@ -1390,7 +1391,7 @@ ${content}${context}`;
|
||||
}),
|
||||
}, 'Create Scratch Index'));
|
||||
}
|
||||
|
||||
|
||||
if (!settingsExists) {
|
||||
addDebugInfo('Creating settings index...');
|
||||
createPromises.push(fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes`, {
|
||||
@@ -1405,7 +1406,7 @@ ${content}${context}`;
|
||||
}),
|
||||
}, 'Create Settings Index'));
|
||||
}
|
||||
|
||||
|
||||
if (createPromises.length > 0) {
|
||||
await Promise.all(createPromises);
|
||||
addDebugInfo('All missing indexes created');
|
||||
@@ -1414,7 +1415,7 @@ ${content}${context}`;
|
||||
// Configure all indexes in parallel
|
||||
addDebugInfo('Configuring all indexes in parallel...');
|
||||
const configStart = Date.now();
|
||||
|
||||
|
||||
await Promise.all([
|
||||
// Notes index configurations
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${NOTE_INDEX}/settings/sortable-attributes`, {
|
||||
@@ -1425,7 +1426,7 @@ ${content}${context}`;
|
||||
},
|
||||
body: JSON.stringify(['date']),
|
||||
}, 'Configure Notes Sortable Attributes'),
|
||||
|
||||
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${NOTE_INDEX}/settings/ranking-rules`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
@@ -1434,7 +1435,7 @@ ${content}${context}`;
|
||||
},
|
||||
body: JSON.stringify(['sort', 'words', 'typo', 'proximity', 'attribute', 'exactness']),
|
||||
}, 'Configure Notes Ranking Rules'),
|
||||
|
||||
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${NOTE_INDEX}/settings/filterable-attributes`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
@@ -1443,7 +1444,7 @@ ${content}${context}`;
|
||||
},
|
||||
body: JSON.stringify(['date', 'topLetter', 'letterCount', 'topLetterFrequency', 'tags']),
|
||||
}, 'Configure Notes Filterable Attributes'),
|
||||
|
||||
|
||||
// Scratch index configurations
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${SCRATCH_INDEX}/settings/sortable-attributes`, {
|
||||
method: 'PUT',
|
||||
@@ -1453,7 +1454,7 @@ ${content}${context}`;
|
||||
},
|
||||
body: JSON.stringify(['date']),
|
||||
}, 'Configure Scratch Sortable Attributes'),
|
||||
|
||||
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${SCRATCH_INDEX}/settings/filterable-attributes`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
@@ -1462,7 +1463,7 @@ ${content}${context}`;
|
||||
},
|
||||
body: JSON.stringify(['date']),
|
||||
}, 'Configure Scratch Filterable Attributes'),
|
||||
|
||||
|
||||
// Settings index configurations
|
||||
fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${SETTINGS_INDEX}/settings/filterable-attributes`, {
|
||||
method: 'PUT',
|
||||
@@ -1473,7 +1474,7 @@ ${content}${context}`;
|
||||
body: JSON.stringify(['key', 'value']),
|
||||
}, 'Configure Settings Filterable Attributes'),
|
||||
]);
|
||||
|
||||
|
||||
addDebugInfo(`All index configurations completed: ${Date.now() - configStart}ms`);
|
||||
|
||||
setIsInitialized(true);
|
||||
@@ -1512,7 +1513,7 @@ ${content}${context}`;
|
||||
currentNoteRef.current?.focus();
|
||||
console.log('Focus set on current note field');
|
||||
}, 100);
|
||||
|
||||
|
||||
return () => clearTimeout(focusTimer);
|
||||
}, []);
|
||||
|
||||
@@ -1530,7 +1531,7 @@ ${content}${context}`;
|
||||
const dataLoadStartTime = Date.now();
|
||||
console.log('Starting data loading...');
|
||||
addDebugInfo('Starting data loading...');
|
||||
|
||||
|
||||
await loadNotes();
|
||||
await loadLatestScratch();
|
||||
await loadFontSizeSetting();
|
||||
@@ -1539,7 +1540,7 @@ ${content}${context}`;
|
||||
await loadContextSizeSetting();
|
||||
await loadIncludeTagsSetting();
|
||||
await checkOllamaStatus();
|
||||
|
||||
|
||||
// Retry Ollama connection after a delay if it failed
|
||||
setTimeout(async () => {
|
||||
if (ollamaStatus === 'offline') {
|
||||
@@ -1547,12 +1548,12 @@ ${content}${context}`;
|
||||
await checkOllamaStatus();
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
|
||||
const totalTime = Date.now() - dataLoadStartTime;
|
||||
debugTiming('Total Data Loading', dataLoadStartTime);
|
||||
addDebugInfo(`Total Data Loading: ${totalTime}ms`);
|
||||
console.log('Data loading complete');
|
||||
|
||||
|
||||
// Re-focus after data loading to ensure focus is maintained
|
||||
currentNoteRef.current?.focus();
|
||||
}
|
||||
@@ -1934,19 +1935,19 @@ ${content}${context}`;
|
||||
<Trash2 className="h-8 w-8" />
|
||||
Cleanup
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => setIsSettingsOpen(true)}
|
||||
size="sm"
|
||||
variant="outline"
|
||||
<Button
|
||||
onClick={() => setIsSettingsOpen(true)}
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className={getTextClass('base')}
|
||||
>
|
||||
<Settings className="h-4 w-4 mr-2" />
|
||||
Settings
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => setShowDebugPanel(!showDebugPanel)}
|
||||
size="sm"
|
||||
variant="outline"
|
||||
<Button
|
||||
onClick={() => setShowDebugPanel(!showDebugPanel)}
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className={getTextClass('base')}
|
||||
>
|
||||
{showDebugPanel ? 'Hide' : 'Show'} Debug
|
||||
@@ -1962,7 +1963,7 @@ ${content}${context}`;
|
||||
<div className="flex items-center gap-4 mb-3">
|
||||
<div className={`${getTextClass('base')} flex items-center gap-2`}>
|
||||
<span>Ollama Status:</span>
|
||||
<Badge
|
||||
<Badge
|
||||
variant={ollamaStatus === 'online' ? 'default' : ollamaStatus === 'offline' ? 'destructive' : 'secondary'}
|
||||
className={`${getTextClass('base')} px-2 py-1`}
|
||||
>
|
||||
@@ -1971,7 +1972,7 @@ ${content}${context}`;
|
||||
</div>
|
||||
<div className={`${getTextClass('base')} flex items-center gap-2`}>
|
||||
<span>Auto-tags:</span>
|
||||
<Badge
|
||||
<Badge
|
||||
variant={autoGenerateTags ? 'default' : 'secondary'}
|
||||
className={`${getTextClass('base')} px-2 py-1`}
|
||||
>
|
||||
@@ -2023,16 +2024,16 @@ ${content}${context}`;
|
||||
className={`flex-1 border-0 bg-transparent ${getTextClass('base')} p-0 outline-none`}
|
||||
/>
|
||||
{!autoGenerateTags && (
|
||||
<Button
|
||||
onClick={async () => {
|
||||
if (previousNote) {
|
||||
addDebugInfo('Manually generating tags...');
|
||||
const tags = await generateTags(previousNote.content, currentNoteIndex);
|
||||
const updatedNote = { ...previousNote, tags };
|
||||
setPreviousNote(updatedNote);
|
||||
setIsPreviousNoteModified(true);
|
||||
}
|
||||
}}
|
||||
<Button
|
||||
onClick={async () => {
|
||||
if (previousNote) {
|
||||
addDebugInfo('Manually generating tags...');
|
||||
const tags = await generateTags(previousNote.content, currentNoteIndex);
|
||||
const updatedNote = { ...previousNote, tags };
|
||||
setPreviousNote(updatedNote);
|
||||
setIsPreviousNoteModified(true);
|
||||
}
|
||||
}}
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className={`${getTextClass('base')} px-2 py-1 h-6`}
|
||||
@@ -2079,18 +2080,18 @@ ${content}${context}`;
|
||||
<div className="flex-1 bg-card rounded-lg border border-border shadow-sm p-6 overflow-hidden">
|
||||
<div className={`${getTextClass('2xl')} text-muted-foreground mb-3 flex items-center gap-4`}>
|
||||
<div>Current Entry</div>
|
||||
<div className="flex-1 flex items-center gap-2">
|
||||
<span className={`${getTextClass('base')} text-muted-foreground`}>Tags:</span>
|
||||
<input
|
||||
type="text"
|
||||
value={currentNoteTags.join(', ')}
|
||||
onChange={(e) => {
|
||||
const tags = e.target.value.split(',').map(tag => tag.trim()).filter(tag => tag.length > 0);
|
||||
setCurrentNoteTags(tags);
|
||||
}}
|
||||
className={`flex-1 border-0 bg-transparent ${getTextClass('base')} p-0 outline-none`}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex-1 flex items-center gap-2">
|
||||
<span className={`${getTextClass('base')} text-muted-foreground`}>Tags:</span>
|
||||
<input
|
||||
type="text"
|
||||
value={currentNoteTags.join(', ')}
|
||||
onChange={(e) => {
|
||||
const tags = e.target.value.split(',').map(tag => tag.trim()).filter(tag => tag.length > 0);
|
||||
setCurrentNoteTags(tags);
|
||||
}}
|
||||
className={`flex-1 border-0 bg-transparent ${getTextClass('base')} p-0 outline-none`}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Textarea
|
||||
ref={currentNoteRef}
|
||||
@@ -2269,8 +2270,8 @@ ${content}${context}`;
|
||||
<Button onClick={getProblematicNotes} className={`w-full ${getTextClass('2xl')} py-6`}>
|
||||
Analyze Notes
|
||||
</Button>
|
||||
<Button
|
||||
onClick={regenerateAllTags}
|
||||
<Button
|
||||
onClick={regenerateAllTags}
|
||||
variant="outline"
|
||||
className={`w-full ${getTextClass('2xl')} py-6`}
|
||||
disabled={isLoading}
|
||||
@@ -2329,7 +2330,7 @@ ${content}${context}`;
|
||||
{/* Tag Generation Settings */}
|
||||
<div className="space-y-6">
|
||||
<h3 className={`${getTextClass('2xl')} font-semibold`}>Tag Generation</h3>
|
||||
|
||||
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
@@ -2385,7 +2386,7 @@ ${content}${context}`;
|
||||
{/* Display Settings */}
|
||||
<div className="space-y-6">
|
||||
<h3 className={`${getTextClass('2xl')} font-semibold`}>Display</h3>
|
||||
|
||||
|
||||
<div>
|
||||
<label className={`${getTextClass('xl')} font-medium mb-2 block`}>Font Size</label>
|
||||
<Select value={fontSize} onValueChange={saveFontSizeSetting}>
|
||||
@@ -2405,23 +2406,23 @@ ${content}${context}`;
|
||||
{/* Ollama Settings */}
|
||||
<div className="space-y-6">
|
||||
<h3 className={`${getTextClass('2xl')} font-semibold`}>Ollama Configuration</h3>
|
||||
|
||||
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center gap-2">
|
||||
<span className={`${getTextClass('base')}`}>Status:</span>
|
||||
<Badge
|
||||
<Badge
|
||||
variant={ollamaStatus === 'online' ? 'default' : ollamaStatus === 'offline' ? 'destructive' : 'secondary'}
|
||||
className={`${getTextClass('base')} px-2 py-1`}
|
||||
>
|
||||
{ollamaStatus === 'online' ? 'Online' : ollamaStatus === 'offline' ? 'Offline' : 'Unknown'}
|
||||
</Badge>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<label className={`${getTextClass('base')} font-medium`}>Endpoint:</label>
|
||||
<p className={`${getTextClass('base')} text-muted-foreground`}>{OLLAMA_ENDPOINT}</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<label className={`${getTextClass('base')} font-medium`}>Model:</label>
|
||||
<p className={`${getTextClass('base')} text-muted-foreground`}>{OLLAMA_MODEL}</p>
|
||||
|
Reference in New Issue
Block a user