diff --git a/bun.lockb b/bun.lockb index 9315d76..b5a2d4f 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index e4731e6..fd26a25 100644 --- a/package.json +++ b/package.json @@ -39,9 +39,6 @@ "@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", @@ -53,6 +50,8 @@ "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", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 24d19d6..7194a6c 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -519,39 +519,10 @@ 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" @@ -575,7 +546,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.1", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -588,7 +559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.1", + "core-foundation", "libc", ] @@ -707,12 +678,6 @@ 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" @@ -817,15 +782,6 @@ 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" @@ -882,15 +838,6 @@ 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" @@ -1273,10 +1220,8 @@ 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]] @@ -1286,11 +1231,9 @@ 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]] @@ -1447,25 +1390,6 @@ 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" @@ -1563,7 +1487,6 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2", "http", "http-body", "httparse", @@ -1574,23 +1497,6 @@ 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" @@ -1610,11 +1516,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2", - "system-configuration", "tokio", "tower-service", "tracing", - "windows-registry", ] [[package]] @@ -1889,7 +1793,6 @@ dependencies = [ "serde_json", "tauri", "tauri-build", - "tauri-plugin-http", "tauri-plugin-opener", ] @@ -2016,12 +1919,6 @@ 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" @@ -2038,12 +1935,6 @@ 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" @@ -2860,22 +2751,6 @@ 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" @@ -2885,61 +2760,6 @@ 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" @@ -2980,16 +2800,6 @@ 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" @@ -3010,16 +2820,6 @@ 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" @@ -3038,15 +2838,6 @@ 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" @@ -3148,32 +2939,22 @@ 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", @@ -3183,21 +2964,6 @@ 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]] @@ -3206,12 +2972,6 @@ 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" @@ -3234,41 +2994,6 @@ 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" @@ -3668,12 +3393,6 @@ 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" @@ -3727,27 +3446,6 @@ 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" @@ -3768,7 +3466,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.1", + "core-foundation", "core-graphics", "crossbeam-channel", "dispatch", @@ -3947,52 +3645,6 @@ 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" @@ -4218,21 +3870,6 @@ 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" @@ -4245,31 +3882,9 @@ 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" @@ -4526,12 +4141,6 @@ 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" @@ -4746,16 +4355,6 @@ 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" @@ -4800,15 +4399,6 @@ 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" @@ -4975,17 +4565,6 @@ 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" @@ -5476,12 +5055,6 @@ 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" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 1160cbc..b0b4168 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -22,4 +22,3 @@ tauri = { version = "2", features = ["devtools"] } tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" -tauri-plugin-http = "2.0.0" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index fc2c56f..387613c 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -9,17 +9,6 @@ "core:default", "opener:default", "core:window:allow-close", - "core:window:allow-minimize", - { - "identifier": "http:default", - "allow": [ - { - "url": "http://localhost:*/*" - }, - { - "url": "https://meili.site.quack-lab.dev/*" - } - ] - } + "core:window:allow-minimize" ] } \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 2a55dee..4a277ef 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -8,7 +8,6 @@ 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"); diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 09dae5c..fd63982 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -11,7 +11,6 @@ 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(); @@ -72,7 +71,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([]); const [previousNote, setPreviousNote] = useState(null); @@ -101,9 +100,9 @@ const Index = () => { const [includeTagsInSearch, setIncludeTagsInSearch] = useState(true); const [tagGenerationTimeout, setTagGenerationTimeout] = useState(); 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: @@ -135,12 +134,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; @@ -242,7 +241,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: { @@ -250,9 +249,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'); @@ -282,7 +281,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 { @@ -301,7 +300,7 @@ Keep tags concise, use lowercase, and separate words with hyphens if needed.`); } } }, 300); - + setTagGenerationTimeout(timeout); }; @@ -314,7 +313,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]; @@ -322,7 +321,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')}`; } @@ -352,7 +351,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'); } @@ -362,7 +361,7 @@ ${content}${context}`; .split(',') .map((tag: string) => tag.trim()) .filter((tag: string) => tag.length > 0); - + addDebugInfo(`Generated ${tags.length} tags: ${tags.join(', ')}`); return tags; @@ -372,10 +371,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'; @@ -392,14 +391,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 []; } }; @@ -594,7 +593,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...'); @@ -711,31 +710,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); + 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`); } + } catch (error) { + console.error('Error loading notes:', error); 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`); + 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); } - } 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 @@ -1092,7 +1091,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', @@ -1113,7 +1112,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]; @@ -1129,7 +1128,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", @@ -1198,7 +1197,7 @@ ${content}${context}`; document.addEventListener('keydown', handleKeyDown); window.addEventListener('focus', handleWindowFocus); - + return () => { document.removeEventListener('keydown', handleKeyDown); window.removeEventListener('focus', handleWindowFocus); @@ -1347,19 +1346,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) { @@ -1376,7 +1375,7 @@ ${content}${context}`; }), }, 'Create Notes Index')); } - + if (!scratchExists) { addDebugInfo('Creating scratch index...'); createPromises.push(fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes`, { @@ -1391,7 +1390,7 @@ ${content}${context}`; }), }, 'Create Scratch Index')); } - + if (!settingsExists) { addDebugInfo('Creating settings index...'); createPromises.push(fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes`, { @@ -1406,7 +1405,7 @@ ${content}${context}`; }), }, 'Create Settings Index')); } - + if (createPromises.length > 0) { await Promise.all(createPromises); addDebugInfo('All missing indexes created'); @@ -1415,7 +1414,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`, { @@ -1426,7 +1425,7 @@ ${content}${context}`; }, body: JSON.stringify(['date']), }, 'Configure Notes Sortable Attributes'), - + fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${NOTE_INDEX}/settings/ranking-rules`, { method: 'PUT', headers: { @@ -1435,7 +1434,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: { @@ -1444,7 +1443,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', @@ -1454,7 +1453,7 @@ ${content}${context}`; }, body: JSON.stringify(['date']), }, 'Configure Scratch Sortable Attributes'), - + fetchWithTiming(`${MEILISEARCH_ENDPOINT}/indexes/${SCRATCH_INDEX}/settings/filterable-attributes`, { method: 'PUT', headers: { @@ -1463,7 +1462,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', @@ -1474,7 +1473,7 @@ ${content}${context}`; body: JSON.stringify(['key', 'value']), }, 'Configure Settings Filterable Attributes'), ]); - + addDebugInfo(`All index configurations completed: ${Date.now() - configStart}ms`); setIsInitialized(true); @@ -1513,7 +1512,7 @@ ${content}${context}`; currentNoteRef.current?.focus(); console.log('Focus set on current note field'); }, 100); - + return () => clearTimeout(focusTimer); }, []); @@ -1531,7 +1530,7 @@ ${content}${context}`; const dataLoadStartTime = Date.now(); console.log('Starting data loading...'); addDebugInfo('Starting data loading...'); - + await loadNotes(); await loadLatestScratch(); await loadFontSizeSetting(); @@ -1540,7 +1539,7 @@ ${content}${context}`; await loadContextSizeSetting(); await loadIncludeTagsSetting(); await checkOllamaStatus(); - + // Retry Ollama connection after a delay if it failed setTimeout(async () => { if (ollamaStatus === 'offline') { @@ -1548,12 +1547,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(); } @@ -1935,19 +1934,19 @@ ${content}${context}`; Cleanup - -