ask_operator: multi-select + free-text fallback
ask_operator now accepts a multi: bool. when true and options is
non-empty, the dashboard renders the choices as checkboxes — operator
picks any subset, answer comes back as a ', '-joined string. when
false (default), options are radio buttons.
independent of multi, a free-text input ('or type your own…') is
always rendered alongside options so the operator is never trapped
by an incomplete list. submit merges checked options + free text into
the single 'answer' field.
schema migration: operator_questions grows a multi INTEGER column
with a one-shot ALTER TABLE on open. backward compatible — old rows
default to 0 (not multi).
prompt + mcp tool description updated; existing dashboard css for
.qform was rewritten around the new vertical layout.
This commit is contained in:
parent
c337cc06f8
commit
8344dd9ab7
7 changed files with 130 additions and 35 deletions
|
|
@ -292,18 +292,36 @@ summary:hover { color: var(--purple); }
|
|||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
}
|
||||
.qform { display: flex; gap: 0.6em; align-items: stretch; margin-top: 0.3em; }
|
||||
.qform input, .qform select {
|
||||
.qform {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5em;
|
||||
margin-top: 0.4em;
|
||||
}
|
||||
.qform .q-options {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.25em;
|
||||
background: var(--bg);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 4px;
|
||||
padding: 0.4em 0.6em;
|
||||
}
|
||||
.qform .q-option label { cursor: pointer; user-select: none; }
|
||||
.qform .q-option input { margin-right: 0.4em; accent-color: var(--amber); }
|
||||
.qform .q-free { display: flex; }
|
||||
.qform .q-free input {
|
||||
flex: 1;
|
||||
font-family: inherit;
|
||||
font-size: 1em;
|
||||
background: var(--bg);
|
||||
color: var(--fg);
|
||||
border: 1px solid var(--border);
|
||||
padding: 0.4em 0.6em;
|
||||
flex: 1;
|
||||
}
|
||||
.qform input::placeholder { color: var(--muted); }
|
||||
.qform input:focus, .qform select:focus { outline: 1px solid var(--amber); }
|
||||
.qform .q-free input::placeholder { color: var(--muted); }
|
||||
.qform .q-free input:focus { outline: 1px solid var(--amber); }
|
||||
.qform button { align-self: flex-start; }
|
||||
.inbox {
|
||||
background: var(--bg-elev);
|
||||
border: 1px solid var(--border);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue