Enable automatic web search by default; improve toggle behavior and search planning.
This commit is contained in:
+2
-2
@@ -292,8 +292,8 @@
|
||||
<path d="m3 17 5-5 4 4 4-6 5 7" />
|
||||
</svg>
|
||||
</button>
|
||||
<button id="webSearch" class="icon-button" type="button" aria-label="Search the web"
|
||||
title="Search the web" aria-pressed="false">
|
||||
<button id="webSearch" class="icon-button" type="button" aria-label="Automatic web search on — click to disable"
|
||||
title="Automatic web search on — click to disable" aria-pressed="true">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1.6" aria-hidden="true">
|
||||
<circle cx="12" cy="12" r="9" />
|
||||
|
||||
@@ -64,12 +64,14 @@ function toggleChatDrawer() {
|
||||
function handleDisclosureToggle(event) {
|
||||
const disclosure = event.target;
|
||||
if (!(disclosure instanceof HTMLDetailsElement) || !chatDrawer?.contains(disclosure)) return;
|
||||
// Nested disclosures must not close their parent or lose their expanded state.
|
||||
if (!disclosure.matches(".chat-drawer-body > details")) return;
|
||||
if (disclosure.matches(".chat-drawer-more, .chat-drawer-danger")) {
|
||||
const hint = disclosure.querySelector(":scope > summary .chat-drawer-row-hint");
|
||||
if (hint) hint.textContent = disclosure.open ? "Hide" : "Show";
|
||||
}
|
||||
if (disclosure.open) {
|
||||
chatDrawer.querySelectorAll("details[open]").forEach((other) => {
|
||||
chatDrawer.querySelectorAll(".chat-drawer-body > details[open]").forEach((other) => {
|
||||
if (other !== disclosure) other.open = false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ export function createComposerController({
|
||||
if (loadingMsg?.isConnected) loadingMsg.replaceWith(addMessage(reply, false, false, {detached: true}));
|
||||
else addMessage(reply);
|
||||
} else loadingMsg?.remove();
|
||||
webSearchToggle.reset(); reasoningToggle.reset();
|
||||
reasoningToggle.reset();
|
||||
if (visible()) {
|
||||
const followOutput = messagesDiv.scrollHeight - messagesDiv.scrollTop - messagesDiv.clientHeight < 100;
|
||||
const previousScrollTop = messagesDiv.scrollTop;
|
||||
|
||||
@@ -103,6 +103,7 @@ export function createMessageActions({conversation, setNotice, promptPopup, conf
|
||||
chatId: sourceChatId,
|
||||
message: content,
|
||||
model: modelSelect.value,
|
||||
webSearch: webSearchToggle.enabled,
|
||||
confirmed: true
|
||||
}, {timeoutMs: 660000});
|
||||
if (res.error) return setNotice(res.error, "error");
|
||||
@@ -185,7 +186,6 @@ export function createMessageActions({conversation, setNotice, promptPopup, conf
|
||||
card.replaceChildren(...rendered.childNodes);
|
||||
}
|
||||
});
|
||||
webSearchToggle.reset();
|
||||
reasoningToggle.reset();
|
||||
setNotice("Reply regenerated.", "success");
|
||||
} catch (error) {
|
||||
|
||||
@@ -6,14 +6,10 @@
|
||||
/** @typedef {{role: string, content: string, thinking?: string, sources?: WebSource[]}} ChatMessage */
|
||||
|
||||
export function createWebSearchToggle(button) {
|
||||
let enabled = false;
|
||||
const reset = () => {
|
||||
enabled = false;
|
||||
render();
|
||||
};
|
||||
let enabled = true;
|
||||
const render = () => {
|
||||
button.setAttribute("aria-pressed", String(enabled));
|
||||
button.title = enabled ? "Web search enabled" : "Search the web";
|
||||
button.title = enabled ? "Automatic web search on — click to disable" : "Web search off — click to enable";
|
||||
button.setAttribute("aria-label", button.title);
|
||||
};
|
||||
button.addEventListener("click", () => {
|
||||
@@ -21,7 +17,7 @@ export function createWebSearchToggle(button) {
|
||||
render();
|
||||
});
|
||||
render();
|
||||
return {get enabled() { return enabled; }, reset};
|
||||
return {get enabled() { return enabled; }};
|
||||
}
|
||||
|
||||
/** @param {HTMLElement} container @param {WebSource[] | undefined} sources */
|
||||
|
||||
Reference in New Issue
Block a user