Skip to content

Releases: nlink-jp/gem-agent

v0.91.1

Choose a tag to compare

@magifd2 magifd2 released this 05 Oct 16:52

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 /clear captures 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

Choose a tag to compare

@magifd2 magifd2 released this 05 Oct 07:14

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_file offset/length). Metadata a server
    appends — "truncated": true, a row total — arrives as the last bytes
    and was never visible before.
  • shell_exec keeps 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_files counts 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_file reads by bytes (ADR-0096 §2). offset/length take 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

Choose a tag to compare

@magifd2 magifd2 released this 30 Sep 02:20

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

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 22:44

A mind map's eleventh branch colour is an indigo instead of a teal the fifth branch nearly shared (mermaid-render v0.5.1). See CHANGELOG.md.

v0.89.0

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 22:35

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

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 14:25

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

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 11:18

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

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 07:10

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

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 05:26

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|iterm2 does it in a new window with
    nobody at the keyboard — exact widths, a mouse drag (-drag), screenshots
    and a trace of every flush — and -drive does the text part under tmux.

v0.85.1

Choose a tag to compare

@magifd2 magifd2 released this 29 Sep 02:10

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 as &#27; into real
    controls. The plain REPL and -p do 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 escprobe re-runs the
    measurement: 0 of 95 after the change.