zot/internal/agent
patriceckhart 3e59a3cfd3 fix(tui): three cursor/alignment fixes in the editor and /help
1. Drag-dropped long paths no longer strand the prompt glyph on
   its own line. wrapLine() used to break before rune-splitting an
   oversized token, which produced:

     row 0: "▌"
     row 1: "  '/var/folders/.../TemporaryItems/NSIRD_screencaptu"
     row 2: "  re_CohJs2/Screenshot 2026-04-19 at 20.15.44.png..."

   Because the prompt ("▌ ") was a separately-tokenised prefix,
   overflow broke the line after writing it and started the long
   token on row 1. That also shifted locateCursor's rune-walk, so
   the terminal cursor drew in the wrong column after the user
   typed anything past the paste. Fix: when the token will need
   rune-by-rune splitting anyway (wider than width - contW), skip
   the precautionary newline and stream runes from the current
   column, wrapping naturally. Added two regression tests.

2. The spinner glyph and the funny-line message now render in
   Theme.Assistant (the same cyan as the `▍ zot` role label) so
   the busy band reads coherently with the rest of the chat.
   Elapsed time stays muted; model name, stats, cost, context
   meter, and cwd are unchanged. Fixed double-coloring in
   StatusBar: the outer Accent wrapper was overriding the spinner
   color the caller had set, so pre-colored segments now pass
   through unmodified.

3. /help key-binding column alignment. Single-cell multibyte
   runes like ← → · were being measured by byte length (3 bytes
   each) instead of display width (1 cell), which overshot the
   labelWidth calc AND caused the pad() function to return the
   raw string without adding spaces. The `alt+← / alt+→` row
   ended shorter than its neighbours and its description started
   in the wrong column. Fix: use runewidth.StringWidth everywhere
   in help.go's alignment math.
2026-04-19 20:25:34 +02:00
..
extensions feat(ext): phase 4 - full-event interception, arg rewrites, /reload-ext 2026-04-19 17:02:04 +02:00
modes fix(tui): three cursor/alignment fixes in the editor and /help 2026-04-19 20:25:34 +02:00
tools perf(prompt): cut system prompt to the bone (410 -> 54 tokens) 2026-04-19 17:39:38 +02:00
args.go fix(no-yolo): don't auto-refuse tool calls in non-interactive modes 2026-04-19 19:17:05 +02:00
botcmd.go fix ci on windows: split detach helper into posix/windows variants 2026-04-18 10:58:10 +02:00
botcmd_unix.go fix ci on windows: split detach helper into posix/windows variants 2026-04-18 10:58:10 +02:00
botcmd_windows.go fix ci on windows: split detach helper into posix/windows variants 2026-04-18 10:58:10 +02:00
build.go feat(skills): user skills now opt-in via --with-skills 2026-04-19 16:03:26 +02:00
changelog.go feat(tui): show github release notes once after upgrading 2026-04-19 16:12:13 +02:00
cli.go fix(cli): load extensions in print and json modes too 2026-04-19 20:00:36 +02:00
config.go feat(tui): show github release notes once after upgrading 2026-04-19 16:12:13 +02:00
extcmd.go feat: extension system (subprocess + json-rpc, any language) 2026-04-19 14:09:43 +02:00
modelsync.go initial commit 2026-04-17 20:36:38 +02:00
rpc.go fix(no-yolo): don't auto-refuse tool calls in non-interactive modes 2026-04-19 19:17:05 +02:00
systemprompt.go feat(auth,tui): dark login pages + /logout picker 2026-04-19 20:14:22 +02:00
update.go tui: show 'update available' banner at top of chat 2026-04-18 11:49:22 +02:00