Skip to content

Releases

v0.2.28

Choose a tag to compare

@github-actions github-actions released this 28 Oct 01:10
v0.2.28
8a576f4
  • Redesign the terminal UI around a compact dark/light semantic palette, with
    denser conversation cards, sidebar sections, footer controls, status surfaces,
    management panels, a centered session title, and a responsive rounded welcome
    card whose shortcut hint remains legible in both themes and narrow terminals.
  • Add comprehensive mouse interaction: scroll the surface under the pointer,
    resize the sidebar, drag the conversation scrollbar, select and copy wrapped
    transcript text, activate code-copy controls and links, operate list panels,
    and expand any foldable conversation card from its full rendered area.
  • Add a modal inline-image viewer with zoom, pan, reset, and protocol-aware
    caching. Kitty terminals upload one bounded PNG stream and update one cropped
    native placement while zooming or panning; pointer events and image work are
    coalesced so they do not starve keyboard input or model events.
  • Render supported Mermaid flowcharts and mind maps directly in the terminal,
    with readable fallbacks for layouts that do not route reliably in character
    cells. Convert common inline, display, and fenced LaTeX-like math notation to
    terminal-friendly Unicode symbols and linear fractions.
  • Improve command and background-task lifecycle handling around timeout,
    cancellation, process-tree cleanup, interactive terminals, and foreground
    commands moved into the task manager, avoiding stale registrations and races
    that could terminate an already-promoted task.
  • Make active feedback calmer and cheaper: coalesce TUI pointer motion, preserve
    the 120 ms hover transition, animate complete pending tool and tool-group
    titles in one shared phase, and limit status-bar breathing to the activity icon
    so labels and elapsed time remain stable.
  • Make session filesystem approvals operation-scoped and explicit. Existing
    directory approvals cover descendants, file approvals remain exact, stale
    sandbox approvals cannot tighten a newer mode, and approved paths are checked
    again before storage and child-policy propagation. Sandboxed child writes
    require overlapping recursive read and write approvals rather than silently
    widening write-only access.
  • Tolerate brief cross-process memory-lock handoffs without failing ordinary
    recall and management operations, while keeping long-running Dream lock
    contention bounded and explicit.
  • Expand regression coverage across pointer routing, selection, image protocols,
    process ownership, security grants, theme resolution, tool animation, memory
    locking, and responsive welcome rendering; refresh the user and architecture
    documentation.

Upgrade note: request_permission filesystem elevation now accepts only read
and write; executable access remains configurable through security policy but
cannot be granted interactively. An explicit session approval overrides a
matching configured deny for its approved operation and scope. Exact-file grants
apply to built-in path tools but cannot be represented safely in the native
subprocess sandbox, and filesystem grants do not constrain commands when process
sandboxing is off.

Full changelog: v0.2.27...v0.2.28

v0.2.27

Choose a tag to compare

@github-actions github-actions released this 17 Oct 08:16
ab4b51d
  • Give headless programmer run and programmer init stable exit codes:
    0 success, 1 runtime error, 2 usage error, 3 --check failed, 4 timeout,
    5 --max-steps reached, 10 input required, 130 interrupted.
  • Add per-run security overrides that are never written back to the
    configuration: --security-profile, --sandbox restricted|network|off,
    --allow-read, --allow-write, --deny-read, --deny-env and
    --no-protect-file-changes. They are also accepted by diagnostics and the
    MCP server commands.
  • Add run options: --config (loaded read-only), --append-prompt and
    --append-prompt-file, --image, --vision/--no-vision, --no-memory,
    --mcp/--no-mcp, --allowed-tools/--disallowed-tools,
    --coauthor/--no-coauthor and --soul-file. JSON and JSONL results now
    include stop_reason, work_mode, security, steps, tool_calls,
    duration_ms, session_id and compactions; JSONL adds start,
    compaction and input_required events. schema_version stays 1.
  • Save and continue headless sessions with --save-session,
    --resume <UUID>, --continue, --fork and --no-save. Headless runs
    hold the same session lock as the TUI, so one session cannot be driven
    twice at once.
  • Compact context during long headless runs, with --compact-tokens,
    --mandatory-compact-tokens and --no-compact overrides. The TUI's
    compaction logic moved to a shared module without behavior changes.
  • Suspend instead of failing when a run needs a person: manual approvals,
    classifier Ask verdicts, ask_user, sandbox permission requests and plan
    review save the session and exit with code 10. The result carries a
    pending object with the question, options and a ready-to-copy
    resume_command; continue with --resume <UUID> --answer <ANSWER> (or
    --answer-file, optionally checked with --answer-id) from the original
    workspace. --work-mode manual suspends automatically; other modes need
    --suspend.
  • Add unit and binary regressions for exit codes, overrides that leave the
    configuration untouched, sessions, compaction and suspension; update the
    headless documentation.

Upgrade note: scripts that treated any non-zero exit as one failure keep
working, but usage errors now exit 2, timeouts 4 and step limits 5 instead
of 1. A headless --work-mode manual run now exits 10 at the first approval
instead of denying the tool call.

Full changelog: v0.2.26...v0.2.27

v0.2.26

Choose a tag to compare

@github-actions github-actions released this 10 Oct 03:33
31204d7
  • Connect the configured mcp_servers in headless programmer run and
    programmer init, so the agent and its sub-agents get the same
    mcp__<server>__<tool> tools as the TUI. Previously headless runs started no
    MCP servers. Servers start after the work mode and classifier are validated;
    one that fails is skipped with a warning on stderr and the run continues.
  • Connect MCP servers concurrently in both the TUI and headless runs. A slow or
    hung server now costs only its own handshake timeout instead of delaying every
    server configured after it. Startup errors keep configuration order, while
    connection status updates arrive in completion order.
  • Share turn assembly between the TUI, headless runs, and sub-agents: one module
    installs the common tool providers, resolves the approval policy once for a
    parent and its children, and applies the same memory-model gate everywhere.
  • Add regressions for shared assembly, the memory and classifier gates, headless
    MCP startup with a failing server, and concurrent startup past a hung server;
    update usage and architecture documentation.

Upgrade note: headless runs with mcp_servers configured now spend time
starting those servers before the first turn, and that time counts against
--timeout.

Full changelog: v0.2.25...v0.2.26

v0.2.25

Choose a tag to compare

@github-actions github-actions released this 04 Oct 06:47
11159f5
  • Fix compaction during long, tool-heavy turns: mandatory safe-point compaction
    includes completed work from the active turn, keeps tool calls paired with
    their outputs, and advances the summary boundary as new history accumulates.
  • Stop repeatedly compacting summary-only history and correct full-history token
    estimates so differences between chat and compact providers do not invent a
    retained context tail. Refresh usage at safe points and start the soft-limit
    cooldown after successful mandatory compaction.
  • Make background compaction and its provider retry cancellable with Esc. Ignore
    late results and pause queued input after cancellation instead of immediately
    restarting manual or automatic compaction.
  • Improve Dream planning diagnostics with categorized HTTP failures and bounded
    cause chains, removing request URLs from transport errors to avoid exposing
    URL credentials. Preserve pending input when planning fails.
  • Add release safeguards: exclude local drafts and runtime files, require green
    CI on the exact release commit, pin builds to the validated SHA, and verify
    complete release notes and all ten uploaded archives before public publication.
  • Expand regression coverage for long-turn compaction, cancellation, historical
    summary placement, Dream failures, and release policy; update documentation.

Full changelog: v0.2.24...v0.2.25

v0.2.24

Choose a tag to compare

@github-actions github-actions released this 03 Oct 05:47
9387090

programmer v0.2.24

Includes the ownership and argument-generation changes listed below for the
withheld v0.2.23 draft, plus:

  • Fix Windows PTY termination by owning a duplicate process handle and correctly
    interpreting Win32 termination results; tolerate only confirmed process exit,
    while preserving genuine termination errors.
  • Add Windows regressions for independent handle ownership, repeated termination,
    already-exited children, and invalid handles. Keep the PTY shutdown regression.
  • Allow the large (8 MiB) synthetic SSE regression sufficient time on loaded hosts.

Full changelog: v0.2.22...v0.2.24


programmer v0.2.23 (withheld draft)

  • Separate UI, execution-loop, and session ownership; preserve interrupted
    responses and isolate task, agent, todo, and checkpoint state across sessions.
  • Seal, cancel, and join session work before replacement or shutdown; retain
    retryable state on close/save failures without stranding queued input.
  • Keep in-flight MCP connection snapshots valid during reload and reject stale
    provider refresh results, including outdated errors and notification counts.
  • Recover delegated task text from durable identity-checked evidence and return
    Started status to the source without inferring completion or persisting consent.
  • Return full Todo IDs and distinguish cancelled approvals from classifier denials.
  • Stop runaway tool-argument generation before execution, return sanitized paired
    tool failures through the normal agent loop, and bound consecutive failures.
  • Expand protocol, lifecycle, shutdown, persistence, and local MCP regressions;
    document actual TUI/process boundary acceptance and current ownership diagrams.

Full changelog: v0.2.22...v0.2.23

v0.2.22

Choose a tag to compare

@github-actions github-actions released this 02 Oct 09:25
0715627

programmer v0.2.22

  • Add browsable Dream audits with source excerpts, inline before/after changes,
    conflict-checked whole-run rollback, and explicit interrupted-transaction recovery.
  • Add a read-only session relationship graph and event timeline with persistent
    ancestor selection, padded rows, keyboard/mouse navigation, and narrow layouts.
  • Keep Dream preview responsive and cancellable without consuming queued inputs;
    distinguish abandoned generation records from unconfirmed activity without
    rewriting audits, and show readable relative times in Dream status.
  • Cache Dream detail layouts, render only visible content, and share conversation
    Markdown and code-block styling for source excerpts.
  • Centralize ready-work dispatch so cancellation and compaction cannot strand
    queued input, while preserving draft, approval, and mandatory-compaction gates.
  • Show mandatory compaction waits instead of stale Running tools status, group
    consecutive tools starting at two calls, and restore accepted input suggestions
    when the draft is deleted.
  • Expand lifecycle, rendering, rollback, scheduling, and input regression coverage
    and update usage and architecture documentation.

Full changelog: v0.2.21...v0.2.22

v0.2.21

Choose a tag to compare

@github-actions github-actions released this 01 Oct 11:45
ae29d0e

programmer v0.2.21

  • Make operation ownership explicit and preserve queued requests until cancellation
    finishes, without bypassing drafts, approvals, or peer consent.
  • Show the last observed execution stage while cancelling, and interrupt pending
    hooks and memory-association waits promptly.
  • Publish explicit diagnostics results to the sidebar from the same snapshot,
    rejecting stale updates and retaining known findings after incomplete checks.
  • Preserve session files on load failures and keep unsaved changes after save
    failures, without automatic idle retries.
  • Isolate task managers per runtime and strengthen runner/tool boundaries with
    typed operation identifiers and narrow question handlers.
  • Add lifecycle, persistence, task isolation, diagnostics, and cancellation
    regression coverage and update architecture documentation.

Full changelog: v0.2.20...v0.2.21

v0.2.20

Choose a tag to compare

@github-actions github-actions released this 01 Oct 01:49
1b0e521

What's Changed

Full Changelog: v0.2.19...v0.2.20

v0.2.19

Choose a tag to compare

@github-actions github-actions released this 30 Sep 15:55
6fa3d4e

What's Changed

Full Changelog: v0.2.18...v0.2.19

v0.2.18

Choose a tag to compare

@github-actions github-actions released this 28 Sep 08:12
8c84059

programmer v0.2.18

  • Remove keyword filtering from memory candidates and increase the default global
    candidate limit from 3 to 30. The memory model selects up to five relevant entries.
  • Exclude memories already added or recalled in live context before applying
    candidate limits. Compacted-away records become eligible again; retained turns
    still count. Apply context tracking to interactive, headless, and child agents.
  • Show unavailable or incomplete token accounting when responses omit usage or
    report all-zero counts, preserving the last positive context count.
  • Allow exact filesystem permission requests while the process sandbox is off,
    including on Windows. Filesystem restrictions and user approval still apply.
  • Render sequential edit_file batches as individual multiline diffs instead of
    displaying escaped JSON.

Full changelog: v0.2.17...v0.2.18