feat: AI chat tone selector + graph node pinning
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m48s
CI / Deploy production (on server) (push) Failing after 17s

- ai-chat: sélecteur tone (Professional/Créatif/Académique/Décontracté)
  passé via noteContext.tone dans le body vers /api/chat
- network-graph: dragended garde fx/fy → nœud épinglé après drag
  double-clic sur nœud pour désépingler (fx=null, fy=null)
- sprint-status: 6-2 et 6-3 passés en done

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Antigravity
2026-05-29 14:20:50 +00:00
parent aff8e688a5
commit cd54a983c3
3 changed files with 37 additions and 4 deletions

View File

@@ -241,6 +241,11 @@ export function NetworkGraph({
return String(d.clusterId) === selectedClusterId ? 1 : 0.15
})
.on('click', (event, d) => onNoteSelect(d.id))
.on('dblclick', (event, d) => {
d.fx = null
d.fy = null
simulation.alphaTarget(0.1).restart()
})
.call(d3.drag<SVGGElement, D3Node>()
.on('start', dragstarted)
.on('drag', dragged)
@@ -328,8 +333,8 @@ export function NetworkGraph({
function dragended(event: any, d: D3Node) {
if (!event.active) simulation.alphaTarget(0)
d.fx = null
d.fy = null
// Garder le nœud épinglé à sa position après drag (fx/fy non remis à null)
// Double-clic pour désépingler → géré via dblclick ci-dessous
}
return () => {