research-nex-chat

Research: nex chat new-dialog cursor-block "█" corruption — root cause + fix proposal

Metadata

Statusdone
Assignedagent-1784
Agent identity3184716484e6f0ea08bb13539daf07686ee79d440505f1fdf2de0357707034c3
Created2026-05-02T23:52:57.995777474+00:00
Started2026-05-03T00:53:26.155185779+00:00
Completed2026-05-03T01:00:00.779006326+00:00
Tagsresearch,nex,chat,tui,bug, eval-scheduled
Eval score0.94
└ blocking impact0.95
└ completeness1.00
└ coordination overhead0.95
└ correctness0.95
└ downstream usability0.85
└ efficiency0.95
└ intent fidelity0.79
└ style adherence0.95

Description

Description

graph.jsonl carries \"endpoint\":\"https://lambda01.tail334fe6.ts.net:30000█\" for chat-31 (the FULL BLOCK U+2588 cursor glyph appended to the URL). Other chats with the same endpoint are clean. Find where the cursor cell got captured into the value.

Investigation scope (READ ONLY — no source mods)

  • src/tui/viz_viewer/event.rs:1548-1559 (Endpoint AddNew field per-keystroke handler)
  • src/tui/viz_viewer/event.rs:807-820 (paste handler routing)
  • Hypotheses to test:
    1. Bracketed paste of own-rendered field captured the rendered cursor cell
    2. Kitty / iTerm cursor-position reporting (escape sequence) leaks into the input
    3. Tab-out-of-field / select-by-mouse copies the cursor cell glyph
    4. crossterm key event for the cursor block char itself (some terminals emit it)
  • Reproduce: open wg tui against scratch dir, fill out new-chat dialog with focus on Endpoint, try various flows (Tab off, Enter submit, click outside, paste own value back via terminal-level bracketed paste).

Deliverable (via wg log)

  • Root cause: file:line of the path that introduces "█" into the value
  • Concrete fix proposal: exact patch shape (filter chars > U+2500? strip cursor glyph in submit-handler? block bracketed paste of own UI? etc.)
  • Repro script that produces the corruption deterministically (so the fix has a regression test)

Validation

  • Root cause cited with file:line
  • Fix proposal is concrete (line-level, not architectural hand-wave)
  • Repro script produces corruption pre-fix
  • No source modifications in this task

Depends on

Required by

Log