Repository navigation
Releases: nlink-jp/gem-agent
Release list
v0.91.1
Fixed
- A resumed session is told when it began (ADR-0097). The system prompt
said "Session started: " while the conversation being
resumed began days before, and the model was seen taking the
conversation's older date for new work. A resumed session now reads
Resumed: <day>; the conversation above began on <day>., and the runtime
states the same fact as its own message at the resume point — measured on a
resumed session, the system prompt alone left 0 of 5 runs dating new work
today, the note at the resume point 5 of 5. The date is also
captured once per session: a skills reload or MCP change after midnight
no longer moves it, and/clearcaptures a new one.
Documentation
- Where an operator's procedures go (ADR-0096 §7): the integration
reference now says which routes arrive as instructions (instruction files,
skills) and which as data (every tool result, a knowledge-vault server's
notes included), so a procedure meant to be followed is written as a skill
rather than read from a vault; with the skill limits and why no path or
server can be made instruction-grade.
v0.91.0
Changed
- A saved MCP result shows its tail as well as its head (ADR-0096 §1).
A text block too large to hold inline is now previewed by its first 600
and last 200 characters, and the notice names the byte spans shown and
the route to the rest (read_fileoffset/length). Metadata a server
appends —"truncated": true, a row total — arrives as the last bytes
and was never visible before. shell_execkeeps the tail of long output and saves all of it
(ADR-0096 §3). Past 20,000 bytes the model sees the first 15,000 and the
last 5,000 bytes — a script's totals come last and used to be lost — and
the whole output is saved to the work directory (up to 32 MiB), named in
the note. gem-agent writes the file, privately (0600), so no lane's
reach changes. The operator lane is not saved, nor is any lane when the
shell runs without the sandbox, and the note says so.search_filescounts every file it did not search (ADR-0096 §4).
Files over 2 MB (named, up to five), binary files, images, unreadable
files and directories that could not be listed are counted in a
closing line; size and image skips were silent, so a "no matches" could
hide a large log that was never read. Refusals past the five named are
counted too.
Added
read_filereads by bytes (ADR-0096 §2).offset/lengthtake a
byte window — a negative offset counts from the end — so the tail of a
long single-line file is reachable, which a line window never was: a
tool result saved to the work directory past 200 KB could not be read
to its end by the tool its notice named. The note names the bytes
returned, moved to rune boundaries. A plain read cut at 200 KB now says
where to read on.
v0.90.0
Box art on terminals without images now comes from mermaid-render (ADR-0095): flowchart, sequence and ER drawn from the same parse as the pictures, Japanese sequence labels included. mermaid-ascii and its rewrite table are gone. See CHANGELOG.md.
v0.89.1
v0.89.0
Mind maps in replies are drawn as pictures where the terminal draws images (mermaid-render v0.5.0): the tree on two sides of the root, a colour per branch, every node shape, labels wrapped as mermaid wraps them. A label with emphasis, an icon in its text or math shows the source with a note. Fixed: an ER or state label with emphasis the previous rule missed (snake_case) shows the source instead of a picture with the underscores. See CHANGELOG.md.
v0.88.0
Gantt charts in replies are drawn as pictures where the terminal draws images (mermaid-render v0.4.0): sections, tasks placed by dates, durations, after / until and excluded days, milestones, vert markers, the time axis. A chart whose picture would depend on the day it is drawn shows the source with a note. See CHANGELOG.md.
v0.87.0
State diagrams in replies are drawn as pictures where the terminal draws images (mermaid-render v0.3.0): composite states as frames, concurrent regions, choice / fork / join, notes on the side they name. A transition crossing a composite's frame shows the source with a note. See CHANGELOG.md.
v0.86.0
Pie charts in replies are drawn as pictures where the terminal draws images (mermaid-render v0.2.1): slices as mermaid draws them, every item's percentage in a column beside the legend. Also fixed: a reply part that renders to nothing (a comment or link definition alone) printed a blank line since v0.85.0. See CHANGELOG.md.
v0.85.2
Fixed
- Narrowing the window no longer clears the screen (ADR-0094). Pictures
on the screen — mermaid diagrams and/show— stay, and no empty screens
pile into the scrollback: v0.85.0's known limitation. A shrink now erases
only the rows the input frame gained by re-wrapping. Measured on iTerm2 and
kitty, by hand, driven and by mouse drag: no stale copy of the box, no
empty rows, no lost line, the picture kept. Before, the same drag left
565 empty rows and seven copies of the box in iTerm2's scrollback, and
kitty lost every line and picture that was on the screen.
Changed
- The input box's rows end where their text ends (ADR-0094).
They were drawn padded with spaces to the full width, so a repaint during
a window resize — the cursor blink is one — wrote a row as wide as the old
width into a narrower terminal and left a stale copy of the box behind.
The input line's highlight still spans the window, drawn as an erase to
the edge in its colour, and now follows the window's width. - While the window's width is changing, the frame below the conversation
is drawn short (ADR-0094) — every row cut to 19 cells until no report
changing the width has come for 400 ms, then drawn in full. iTerm2 tells the program its new
width only about every 200 ms while it moves its screen continuously, so
a full-width row drawn in between could land wider than the screen.
Development
make resizeprobe(ADR-0094) — the instrument the fix above was
chosen with. It runs the real TUI in a terminal, narrows and widens the
window, and counts stale frames, empty rows and lost history from the
terminal's own text.-auto kitty|iterm2does it in a new window with
nobody at the keyboard — exact widths, a mouse drag (-drag), screenshots
and a trace of every flush — and-drivedoes the text part under tmux.
v0.85.1
Security
- Text from outside the runtime reaches the terminal inert
(ADR-0093). The model's reply, its thoughts, a tool call's detail and
purpose, the approval and ask dialogs,!output and every other
string a TUI message carries reached the terminal with its escape
sequences intact. Measured on tmux, 58 of 80 hostile deliveries acted:
on every channel probed the window title was set, the clipboard buffer
written (OSC 52) and the screen erased; image, hyperlink and DCS
sequences were parsed; the cursor moved; and a CR hid the start of a
line and an unterminated OSC the rest of it — in the approval dialog,
the command being approved. C0 controls other than tab and newline,
DEL, C1 and the bidi embeddings, overrides and isolates are now removed
once, where text enters the TUI; the text of a sequence stays visible
(]0;…), so nothing the operator could have read is hidden. The
Markdown renderer's output is held to the colour codes it writes
itself — none in the plain theme — and closed at the reply's end,
because it decodes character references such asinto real
controls. The plain REPL and-pdo the same when their stream
is a terminal and stay byte-for-byte to a pipe or a file (ADR-0042 §4
amended). The transcript is unchanged.make escprobere-runs the
measurement: 0 of 95 after the change.