fix(editor): AI composer 400, slash-menu arrows, drag handle, block outline, hint
- AI (space) -> 400 DeepSeek: fdAgent.generate now uses the clean no-tools /api/agent/generate endpoint instead of the tool-enabled conversation engine (which sends tools/tool_choice schemas DeepSeek rejects). Fixes the composer, Ask AI, AI meeting note and summarize flows. - Slash menu arrows: selection highlight was invisible on open (nothing marked), so up/down appeared dead. Call _rs() on open + after filtering, and give the selected item an accent background + left bar. Verified with jsdom harness: Down/Up move selection, Enter applies. - Block outline when selected: suppress focus rings (outline/box-shadow) on all editable blocks ([data-bid], .block-content, page title). - Drag handle (6-dot): add .block-wrapper:hover/:focus-within .block-handle so it shows on hover for normal blocks (only column-wrappers showed it before). - Empty-block hint: brighter (--text-secondary, opacity .75) so the "Press space for AI or / for commands" text is clearly visible on empty paras. - VERSION + app.main -> 5.1.3; CHANGELOG updated. - 271 tests pass; page renders 200; /api/agent/generate route registered; JS validated (node --check + jsdom).
This commit is contained in:
+22
-2
@@ -2243,6 +2243,10 @@ button.breadcrumb-current { max-width: 260px; }
|
||||
.block-wrapper:hover {
|
||||
background: rgba(0,0,0,0.02);
|
||||
}
|
||||
.block-wrapper:hover .block-handle,
|
||||
.block-wrapper:focus-within .block-handle {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* 6-dot drag handle */
|
||||
.block-handle {
|
||||
@@ -2332,7 +2336,8 @@ button.breadcrumb-current { max-width: 260px; }
|
||||
}
|
||||
.block-content.empty::before {
|
||||
content: attr(data-placeholder);
|
||||
color: var(--text-dim);
|
||||
color: var(--text-secondary);
|
||||
opacity: .75;
|
||||
pointer-events: none;
|
||||
font-style: normal;
|
||||
}
|
||||
@@ -4580,10 +4585,25 @@ button.breadcrumb-current { max-width: 260px; }
|
||||
@keyframes ai-pulse { 0%,100%{opacity:.45} 50%{opacity:1} }
|
||||
.slash-menu { flex-direction: column; }
|
||||
.slash-menu .sm-footer:hover { background: var(--bg-hover); }
|
||||
.slash-item.selected { background: var(--bg-hover); }
|
||||
.slash-item.selected { background: rgba(35,131,226,.16); box-shadow: inset 2px 0 0 var(--accent,#2383E2); }
|
||||
.slash-item.selected .slash-item-name { color: var(--text); }
|
||||
.slash-item-hint { font-size: 12px; color: var(--text-dim); opacity: .7; }
|
||||
.sm-preview { font-family: inherit; }
|
||||
.sm-preview h2 { margin: 0 0 6px; }
|
||||
.sm-preview .sm-pv-label { font-size: 11px; color: var(--text-dim); text-transform: uppercase; letter-spacing: .4px; margin: 8px 0 2px; }
|
||||
#_aiC { font-family: inherit; }
|
||||
|
||||
/* No focus "contour" on selected/editable blocks */
|
||||
.block-content:focus,
|
||||
.block-content:focus-visible,
|
||||
[data-bid]:focus,
|
||||
[data-bid]:focus-visible,
|
||||
.page-title-input:focus { outline: none !important; box-shadow: none !important; }
|
||||
|
||||
/* Drag handle: keep hover-visible but drop the invisible default outside gutter */
|
||||
.block-handle { opacity: .0; }
|
||||
.block-wrapper:hover .block-handle,
|
||||
.block-wrapper:focus-within .block-handle { opacity: 1; }
|
||||
.aici-result p { margin: 0 0 8px; }
|
||||
.aici-result h1,.aici-result h2,.aici-result h3,.aici-result h4 { margin: 10px 0 6px; font-weight: 700; }
|
||||
.aici-result h1{font-size:1.4em}.aici-result h2{font-size:1.25em}.aici-result h3{font-size:1.1em}.aici-result h4{font-size:1em}
|
||||
|
||||
Reference in New Issue
Block a user