From 27a3023d9f7dbe6a2d7b91e346abb3784c99edda Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:10:39 +0000 Subject: [PATCH] feat: add client-side caching to domain search - Implemented a Map-based cache in DomainSearch.svelte to store domain availability results. - Cache persists for 60 seconds (TTL). - Prevents redundant network requests when typing or correcting search queries. - Improves responsiveness by displaying cached results immediately. - Handles race conditions by invalidating pending requests on cache hit. Co-authored-by: yeboster <23556525+yeboster@users.noreply.github.com> --- .jules/palette.md | 1 + dev.log | 97 +++++++++++++++++++++++++++++++++ src/routes/DomainSearch.svelte | 15 ++++- verification_1.png | Bin 0 -> 27771 bytes verification_2.png | Bin 0 -> 27771 bytes verification_final.png | Bin 0 -> 31577 bytes verification_success.png | Bin 0 -> 31577 bytes verify_cache.py | 56 +++++++++++++++++++ 8 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 dev.log create mode 100644 verification_1.png create mode 100644 verification_2.png create mode 100644 verification_final.png create mode 100644 verification_success.png create mode 100644 verify_cache.py diff --git a/.jules/palette.md b/.jules/palette.md index 00f41cd..9cc85e1 100644 --- a/.jules/palette.md +++ b/.jules/palette.md @@ -1,3 +1,4 @@ ## 2024-10-24 - Accessible Icon Props and Loading Button State + **Learning:** Svelte wrapper components (like `Icon.svelte`) must spread `$$restProps` to allow passing accessibility attributes (e.g., `aria-label`) from parent components. Without this, icons remain inaccessible to screen readers. Also, persistent "Success" states on buttons can be confusing; auto-resetting them after a timeout improves clarity. **Action:** Always include `{...$$restProps}` in wrapper components and implement auto-reset logic for temporary success states in interactive elements. diff --git a/dev.log b/dev.log new file mode 100644 index 0000000..5e3ba0d --- /dev/null +++ b/dev.log @@ -0,0 +1,97 @@ +yarn run v1.22.22 +$ vite dev + + VITE v5.4.9 ready in 2589 ms + + ➜ Local: http://localhost:5173/ + ➜ Network: use --host to expose +9:05:34 PM [vite-plugin-svelte] /app/src/components/Icon.svelte:31:1 No scopable elements found in template. If you're using global styles in the style tag, you should move it into an external stylesheet file and import it in JS. See https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md#where-should-i-put-my-global-styles. +DEPRECATION WARNING: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0. + +More info: https://sass-lang.com/d/legacy-js-api + +DEPRECATION WARNING: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0. + +More info and automated migrator: https://sass-lang.com/d/import + + ╷ +1 │ @import './theme-overrides.scss'; + │ ^^^^^^^^^^^^^^^^^^^^^^^^ + ╵ + src/styles/app.scss 1:9 root stylesheet + +DEPRECATION WARNING: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0. + +More info and automated migrator: https://sass-lang.com/d/import + + ╷ +2 │ @import './mixins.scss'; + │ ^^^^^^^^^^^^^^^ + ╵ + src/styles/app.scss 2:9 root stylesheet + +DEPRECATION WARNING: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0. + +More info: https://sass-lang.com/d/legacy-js-api + +9:05:35 PM [vite-plugin-svelte] /app/node_modules/@smui/snackbar/dist/Snackbar.svelte:16:2 A11y: Non-interactive element
should not be assigned mouse or keyboard event listeners. +9:05:35 PM [vite-plugin-svelte] /app/node_modules/@smui/snackbar/dist/Snackbar.svelte:1:0 A11y: Non-interactive element