From 45b3cd15dff2443da352617988681cb7de0e2181 Mon Sep 17 00:00:00 2001
From: pewdiepie-archdaemon
Date: Sat, 13 Jun 2026 22:23:58 +0900
Subject: [PATCH] Research: rotate textarea placeholder through 10 example
queries
Each time the panel opens we pick a random entry from a list of 10
diverse research prompts (history, tech, food, science, fact-check,
how-to) so the textarea hint feels fresh and shows the breadth of
queries the tool handles instead of always nudging toward the same
Odysseus example.
---
static/js/research/panel.js | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/static/js/research/panel.js b/static/js/research/panel.js
index d515580ad..117addccc 100644
--- a/static/js/research/panel.js
+++ b/static/js/research/panel.js
@@ -7,6 +7,26 @@ import createResearchSynapse from '../researchSynapse.js';
import spinnerModule from '../spinner.js';
import { sortModelIds } from '../modelSort.js';
+// Rotating research textarea placeholders — pick one at random each
+// time the panel is rendered so the example keeps feeling fresh.
+const _RESEARCH_HINTS = [
+ "e.g. Trace Odysseus's ten-year journey home from Troy — every island, monster, and detour, and why each one cost him",
+ "e.g. Compare Rust and Go for building a high-throughput web API in 2026",
+ "e.g. Fact-check whether honey actually never spoils",
+ "e.g. How to roast a duck so the skin stays crispy",
+ "e.g. The collapse of Bronze Age civilizations — leading theories and the evidence behind each",
+ "e.g. Best M.2 NVMe SSDs under $200 for a home AI workstation",
+ "e.g. Why do cats knead with their paws? Cover the leading behavioural explanations",
+ "e.g. Side effects and benefits of long-term creatine supplementation",
+ "e.g. How does end-to-end encryption work in Signal, step by step",
+ "e.g. The history of the printing press in East Asia, 700 CE → 1600 CE",
+];
+function _pickResearchHint() {
+ const i = Math.floor(Math.random() * _RESEARCH_HINTS.length);
+ // Escape double-quotes so we can safely splice into a placeholder="…" attribute.
+ return _RESEARCH_HINTS[i].replace(/"/g, '"');
+}
+
// jobId -> { synapse, status } — survives across _renderJobs() rebuilds so
// the SVG keeps its accumulated nodes/edges between progress events.
const _jobSynapses = new Map();
@@ -354,7 +374,7 @@ function _buildPanelHTML() {
Multi-step web research with an LLM-in-the-loop agent