A suggestion card sends its prompt

Filling the composer and waiting for Enter made the card a form to review
rather than a thing to press. One click, one reply.

That changes what a prompt has to be. The built-ins ended mid-sentence --
"My plan: " -- because nothing was sent until the person finished the
thought; sent cold they are a model guessing at material nobody gave it. All
three are rewritten to ask for what they need, so the first reply is the
right question instead. There is a test that they end as complete sentences,
since the failure is silent and only visible in the answer.

requestSubmit, not submit: it fires the submit event, which is what htmx
listens for. Same call the Enter key already makes.

Version bumped because app.js is what changed, and the service worker caches
it -- without the bump the first load after this would still only fill the
box.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jaroslav Beneš
2026-08-01 01:12:02 +02:00
parent 584beca22d
commit d9f274ec1a
7 changed files with 45 additions and 30 deletions
+16 -14
View File
@@ -26,31 +26,33 @@ MAX_NAME = 120
MAX_DESCRIPTION = 300
MAX_PROMPT = 4000
# Each ends mid-sentence, so the caret lands exactly where the person has to
# start typing. No Middle-earth flavour: this is functional UI.
# A card is sent the moment it is clicked, so each of these has to work cold --
# with nothing pasted and nothing typed. They are written to ask for what they
# need, which turns the first reply into the right question rather than a guess
# at material nobody has given yet.
#
# No Middle-earth flavour: this is functional UI.
DEFAULTS: tuple[tuple[str, str, str], ...] = (
(
"Explain this",
"Paste something confusing and get it back in plain language.",
"Explain the following in plain language. Start with one sentence "
"summarising it, then the details that actually matter, then anything I "
"should watch out for. If I have not pasted anything yet, ask me for it "
"rather than guessing.\n\n",
"Get something confusing back in plain language.",
"I want something explained in plain language. Ask me what it is, then "
"give me one sentence summarising it, the details that actually matter, "
"and anything I should watch out for.",
),
(
"Draft a reply",
"Turn a message you have received into an answer you can send.",
"Help me reply to the message below. If the tone I want and the outcome "
"I am after are not obvious from it, ask me before writing. Then give me "
"a draft I could send as it stands.\n\n",
"I need to reply to a message. Ask me what it says, what tone I want and "
"what outcome I am after, then write a draft I could send as it stands.",
),
(
"Find the flaw",
"Have a plan argued with before you commit to it.",
"I am going to describe a plan. Argue against it: what is most likely to "
"go wrong, what am I assuming without evidence, and what would change "
"your mind. Do not soften it, and do not agree just because I sound "
"confident.\n\nMy plan: ",
"I want a plan argued with. Ask me what the plan is, then tell me what is "
"most likely to go wrong, what I am assuming without evidence, and what "
"would change your mind. Do not soften it, and do not agree just because "
"I sound confident.",
),
)