From 4b647fdc7332b3db0ec76947d119394f809b8435 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 08:02:31 +0000 Subject: [PATCH 1/4] Initial plan From c4cf1c2cca5891bf1a40a2b959023c8d700cda48 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:29:55 +0000 Subject: [PATCH 2/4] Fix Safari compatibility for share search URL feature Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- .../javascript/controllers/share_url_controller.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/frontend/javascript/controllers/share_url_controller.js b/app/frontend/javascript/controllers/share_url_controller.js index b5710dc18..e2b0971f5 100644 --- a/app/frontend/javascript/controllers/share_url_controller.js +++ b/app/frontend/javascript/controllers/share_url_controller.js @@ -10,8 +10,17 @@ export default class extends Controller { // Build URL from form data const form = this.element; - const params = new URLSearchParams(new FormData(form)).toString(); - const shareUrl = `${form.action}?${params}`; + const formData = new FormData(form); + const params = new URLSearchParams(); + + // Manually add each form field to URLSearchParams for Safari compatibility + for (const [key, value] of formData.entries()) { + if (value) { + params.append(key, value); + } + } + + const shareUrl = `${form.action}?${params.toString()}`; this.outputTarget.value = shareUrl; this.outputTarget.classList.remove("hidden") From 8a00066a0f36dd7a1e81aea013933966f173173b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:30:46 +0000 Subject: [PATCH 3/4] Improve value check to only exclude empty strings Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/frontend/javascript/controllers/share_url_controller.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/frontend/javascript/controllers/share_url_controller.js b/app/frontend/javascript/controllers/share_url_controller.js index e2b0971f5..c67d55d69 100644 --- a/app/frontend/javascript/controllers/share_url_controller.js +++ b/app/frontend/javascript/controllers/share_url_controller.js @@ -15,7 +15,8 @@ export default class extends Controller { // Manually add each form field to URLSearchParams for Safari compatibility for (const [key, value] of formData.entries()) { - if (value) { + // Include all values except empty strings to keep URLs clean + if (value !== '') { params.append(key, value); } } From 1b828d231ee20243c904c73ad6b6d5fa51f040c4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:31:53 +0000 Subject: [PATCH 4/4] Add missing semicolon for code style consistency Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/frontend/javascript/controllers/share_url_controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/frontend/javascript/controllers/share_url_controller.js b/app/frontend/javascript/controllers/share_url_controller.js index c67d55d69..457ff249b 100644 --- a/app/frontend/javascript/controllers/share_url_controller.js +++ b/app/frontend/javascript/controllers/share_url_controller.js @@ -24,7 +24,7 @@ export default class extends Controller { const shareUrl = `${form.action}?${params.toString()}`; this.outputTarget.value = shareUrl; - this.outputTarget.classList.remove("hidden") + this.outputTarget.classList.remove("hidden"); navigator.clipboard.writeText(shareUrl).then(() => { alert("Search URL copied to clipboard!");