Repository navigation
Description
What happened
In the terminal view, an OmO pane's side panel (the panel OmO's own TUI draws: SESSION / model /
elapsed / tokens / cache / CONTEXT / FILES / MEMORY) renders wrong. Three defects, all of them
inside the panel's rows:
-
The FILES rows are ragged. Rows that should start in one column start at x 320, 324, 331,
299, 312, 318, 340 and 299 px in the attached crop. Measured from the PNG, where one cell is
8.1 px wide, that is a spread of 5 cells. The same rows read from herdr itself are one column,
each starting with the same leading cell. -
Every FILES row and both MEMORY rows carry a dotted line. 3 px on, 2 px off, 5 px period,
starting just left of the row's first glyph and running to the panel's right edge, well past the
end of the row's text. The pane's text has no such characters: the same rows in
herdr pane read --format ansiare plain text followed by spaces, with no box or dash character
and no underline attribute anywhere in the read. The line is drawn while rendering, it is not
sent by the app. -
The CONTEXT meter is painted twice. A short bar on the
usedline (crop y 116-128) and the
full bar on the line below (y 130-145), and each bar has a gap inside it (16 px in the first,
6 px in the second). A run of block cells tiles with no gap, and the app paints one bar.
What I expected: the panel's rows in one column, one meter row, no dotted lines, matching what the
pane's own text says.
Steps:
- Open a pane that runs OmO with its side panel on (terminal at least 120 columns wide, omo
tuiMode: fullscreen, so the panel is the right-hand column). - Let a turn run so the FILES and MEMORY sections fill in.
- Look at the panel: the FILES rows drift, every file row has a dotted line under it, and the
context meter is drawn on two lines.
How often
Every time
herdr web ui version
0.4.5
How it runs
herdr plugin
Server PC
Ubuntu 24.04.5 LTS x64 (AMD EPYC 7663), herdr 0.9.3
Device and browser
Desktop browser window. From the crop: one cell is 8.1 x 16 px, which is the default 13 px terminal
font at device pixel ratio 1.
How the device reaches the server
This PC (localhost)
How it signs in
Nothing (this PC)
Agent and PC
OmO (omo-ai 5.1.28, engine senpi 2026.10.10-10), local PC. The panel is OmO's own TUI side panel
(side_panel in omo's config, tuiMode: fullscreen).
Screenshots or logs
Evidence: a crop of the pane (718 x 564 px). Its background is exactly #181613, this app's amber
dark terminal background, which is how I know the render comes from this app and not from herdr's
own terminal. Every measurement above is taken from that image; say so and I will attach it.
Two controls, both of the same kind of pane on the same server:
- The same pane over SSH in Termius, a native terminal: the panel looks right.
- Read by herdr itself (not by the app), a different OmO pane, same OmO build:
$ herdr pane read w2:p27 --source visible
...
FILES 8 changed
M .gitignore +3/-0
M AGENTS.md +9/-8
?? .agents/
?? .herdr-web-ui/
?? artifacts/
?? reports/
?? skills-lock.json
?? zammad/
MEMORY chat-efaa4c77
...
used <bar: 3 filled cells, then 24 shaded cells> 8%
Those rows are one column with one leading cell each, no dotted line under any of them, and the
meter is one row. The same read with --format ansi carries no underline SGR around them, so the
dotted line in the screenshot exists only in the render.
Related: #289 (box-drawing lines are broken) and #268 (a wide glyph sits wrong in its two-cell
slot) look like the same family of glyph placement problems, but the defective rows here are ASCII
and the meter's block cells are the only non-ASCII glyphs involved.
Activity
hong-tm commentedon Oct 10, 2026
20261010-1401-24.7572411.mp4
devswha commentedon Oct 11, 2026
Thanks for the detailed report and the video. #763 fixes the dotted lines: OmO wraps each panel row in an OSC 8 link with its own scheme, herdr keeps that link open over the row's padding, and xterm.js draws a dashed underline under every linked cell. The web UI now leaves out links it cannot open.\n\nThe ragged FILES rows and the doubled context meter did not reproduce here (OmO 5.1.29 with , herdr 0.9.3, side layout at 156 columns), and the frames of your video show aligned rows too. Could you share:\n\n1. the crop you mentioned, and\n2. at the moment it looks wrong, the browser terminal's size against the pane's (for example typed in a shell pane of the same tab, and the window width)?\n\nOne possible cause is a browser grid narrower than the pane, where a cursor position past the last column wraps the rest of the row. That is unconfirmed, so the issue stays open for now.
fix(terminal): keep queued clicks on the attach input and drop unopen…
hong-tm commentedon Oct 12, 2026
I recorded in the same screen, one is from web one is from the termius. The resolution is set to 1920 * 1080 and showing the same session. The side panel keep displacement during the scroling and it is not happend in the termius.
recording.mp4
hong-tm commentedon Oct 14, 2026
The newer recording in my October 12 comment compares the same OmO session in the Web UI and Termius on the same screen at 1920 x 1080:
#739 (comment)
The behavior I am reporting there is displacement of the side panel while scrolling in the Web UI. It does not happen in Termius. Please check the scrolling portions of that newer recording; aligned rows in a still frame do not capture the behavior I mean. This is separate from the dotted underlines addressed by #763.
The OmO configuration used for this setup has
side_panel.enabled: trueandtuiMode: "fullscreen". In the OmO 5.1.30 plugin I checked, fullscreen supplies the layout needed for the right-hand column. Regular mode puts the panel above the editor, so switching to regular mode changes the layout being tested.The 1920 x 1080 figure is the screen resolution, not a measurement of the browser terminal grid. I do not yet have synchronized browser grid and pane dimensions from the moment the displacement occurs, so the width-mismatch explanation remains unconfirmed.
Could you check the scrolling/repaint behavior in the newer recording, and specify the browser-side measurement you need to compare with the pane's columns and rows?
devswha commentedon Oct 17, 2026
Thanks, the scrolling recording pinned it down. Chrome compresses runs of fullwidth punctuation such as
,。(), and the web terminal measured those characters while they were compressed. Every later cell of a row containing them was drawn too far right, so the side panel moved as different transcript lines scrolled beside it. Termius draws text natively, so it was not affected. A fix is in review (#1300). Once it ships, could you check whether the doubled context meter is gone too? We could not reproduce that part.fix(terminal): keep fullwidth punctuation from shifting the rest of i…
devswha commentedon Oct 19, 2026
Closing: the side panel shifting while scrolling is fixed by #1300 (Chrome compressed runs of fullwidth punctuation, so every later cell of those rows was drawn too far right), and the dotted underlines by #763. The doubled context meter did not reproduce and most likely was the shifted row beside it. Please reopen if it still shows on a release with #1300.