Skip to content

Releases: rsbin1178/pips

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 10 Oct 05:38
c1e6e15

v0.1.8

English · 简体中文

The theme catalogue grows from 8 themes to 25, streaming a long reasoning response stops copying the
draft on every delta, and a stream that breaks after producing only reasoning is replayed on the full
budget. stream_idle_timeout_seconds sets the streaming idle bound per provider and per model, and the
binaries are built with Go 1.27.2, which changes how macOS and Windows resolve certificate roots.

Install

macOS and Linux:

curl -fsSL https://raw.githubusercontent.com/rsbin1178/pips/main/install.sh | sh

Windows (PowerShell 5.1 or newer):

irm https://raw.githubusercontent.com/rsbin1178/pips/main/install.ps1 | iex

Both check the archive against the release's SHA256SUMS before installing. PIPS_VERSION pins a tag,
PIPS_BIN_DIR selects the directory, and PIPS_NO_MODIFY_PATH=1 leaves shell and PATH settings alone.

Added

  • The built-in theme catalogue grows from 8 themes to 25. Each theme derives its syntax colours from its
    own palette, so a code fence matches the theme around it. Everforest (dark and light) and Kanagawa use
    their official palettes.
  • auto follows the desktop's light/dark preference. Opening the theme picker asks the terminal for its
    background again.
  • The status line shows the reasoning level the model is using. A model that declares levels but has none
    selected shows (default). A model without a reasoning knob shows no suffix.
  • A fixed band sits between the transcript and the composer, so the composer no longer moves when its
    contents change. The band shows a centred ▼ while newer rows are off screen, and it confirms a drag
    copy.
  • The first transcript row shows a centred ▲ while anything is above the window. Clicking it walks back
    one turn.
  • stream_idle_timeout_seconds, under [providers.<p>] and [providers.<p>.models.<m>]. It sets how
    long a streaming response may stay silent before it aborts with ai.ErrStreamIdle and is replayed. The
    bound is measured between reads, so a stream that keeps delivering is never cut off. A model's value
    overrides its provider's, the default is ten minutes, and the range is 1 to 3600 seconds.
  • config show prints resolved.stream_idle_timeout and resolved.retry_window.

Changed

  • The header names the release alone. The git describe suffix and the dirty marker are gone, and a build
    with no version information reads dev.
  • The retry window follows the idle bound: max(10m, 2×idle). It covers one request's replay and one
    turn's re-issue. With no bound configured it stays at twenty minutes.
  • Tracebacks and debug=2 stack dumps include goroutine labels, which Go 1.27 enables by default.
  • Action required: building from source requires Go 1.27.2, which the release binaries are built with.
  • Action required: on macOS and Windows, Go 1.27 lets a set SSL_CERT_FILE or SSL_CERT_DIR choose
    the certificate roots loaded from disk. Those platforms used to ignore both variables and use the system
    store. If your SSL_CERT_FILE names an incomplete bundle, TLS verification can now fail, and pips
    reports that as a non-retryable error. Set GODEBUG=x509sslcertoverrideplatform=0 to restore the
    previous behaviour.

Fixed

  • The composer and the search field no longer paint their own background. A light theme no longer draws a
    white band across the input inside a dark terminal.
  • A code fence is coloured by the theme on screen, so it no longer keeps the style of whichever theme
    rendered a fence first.
  • Markdown surfaces (the H1 band and the inline-code fill) are painted only when the theme's background
    family matches the one the terminal reported. If the two differ, or the terminal does not answer the
    probe, the cell keeps the terminal's own colour.
  • Switching themes mid-session no longer leaves └ prefixes and stale colour escapes inside a compact
    tool preview.
  • Releasing a drag selection writes the clipboard and no longer writes the saver's fallback file. /copy,
    /export, and a copy with a path keep writing theirs.
  • A cancelled turn delivers the controller's cancel before the turn ends, so a session waiting on it no
    longer waits out its full timeout.
  • A command's captured output and its byte count describe everything the process wrote, not only what had
    been read when the command was reported.
  • A failed output sink is reported as itself, and is no longer replaced by the operation deadline.
  • A stream that broke after streaming only reasoning used to be re-issued on the three-attempt budget, so
    the model thought the whole thing through again. It now gets the same ten replays as a request that
    produced nothing. Answer text and tool calls keep the shorter budget.
  • A turn that gives up after streaming only reasoning no longer leaves the partial thinking on screen
    beside the error.

Performance

  • The live tail is no longer re-rendered every frame once it passes 8 KiB. On a 98 KiB open fence at the
    TUI's own 33 ms cadence over 60 frames: 7.6 repaints a second, worst lag 240 ms. For the whole process on
    the reproducing workload: CPU 5.77 s → 3.53 s, mean CPU 48.3% → 29.5%, allocations 6.24 GB → 2.77 GB, GC
    cycles 464 → 202. Below the threshold a frame is still rendered every time, and a small body stays
    byte-identical to a whole render.
  • Streaming a long reasoning response no longer copies the draft on every delta. On the fixed replay
    (20k reasoning deltas, ~10 s): CPU 17.2 s → 3.5 s in the repeat shape and 19.9 s → 2.9 s in the prose
    shape, allocations 45.6 GB → 0.3 GB, GC cycles 2,744 → 60, peak RSS 214 MB → 85 MB on the heaviest shape.

Verification

  • The full matrix ran on the released commit: Quality (build, go vet, golangci-lint, go mod verify,
    govulncheck, the dependency policy check, and the platform-semantics tests), Agent Plugins on macOS,
    Ubuntu and Windows, and the four sandbox jobs. Race tests cover agent and internal/coding.
  • A configured one-second idle bound aborts a stalled test stream with ai.ErrStreamIdle at the
    transport, and the bytes delivered before the silence survive.
  • The ten-minute default comes from the live gateway measurement behind v0.1.7: over 72 streams the longest
    silence was 4.5 s before the first byte and 1.2 s between chunks.
  • The numbers above come from the fixed replay harness and from the TUI's frame cadence on a 98 KiB open
    fence. The harness compares every visible text and reasoning byte against the source prefix.
  • No live provider was called for this release; the real-provider smoke suite is opt-in and did not run.

简体中文

简体中文 · English

内置主题从 8 套增加到 25 套;流式输出长思考时不再为每个增量复制草稿;只输出思考就中断的流现在按完整
预算重放。stream_idle_timeout_seconds 可以按 provider 与模型设置流空闲上界;发布产物改用 Go 1.27.2
构建,这改变了 macOS 与 Windows 上根证书的解析方式。

安装

macOS 与 Linux:

curl -fsSL https://raw.githubusercontent.com/rsbin1178/pips/main/install.sh | sh

Windows(PowerShell 5.1 及以上):

irm https://raw.githubusercontent.com/rsbin1178/pips/main/install.ps1 | iex

两者都会先用发布出来的 SHA256SUMS 校验归档再安装。PIPS_VERSION 固定版本,PIPS_BIN_DIR 指定安装
目录,PIPS_NO_MODIFY_PATH=1 不改动 shell 与 PATH 设置。

新增

  • 内置主题从 8 套增加到 25 套。每套主题的语法高亮都来自它自己的调色板,代码块与周围的主题一致。
    Everforest(深色与浅色)与 Kanagawa 采用官方调色板。
  • auto 跟随桌面的浅色/深色偏好。打开主题选择器时会重新询问终端背景。
  • 状态栏显示模型正在使用的 reasoning 级别。声明了级别但没有选中的模型显示 (default),没有 reasoning
    开关的模型不显示后缀。
  • 转录与输入框之间多了一条固定带,内容变化时输入框不再移动。屏幕下方还有更新的行时,固定带显示居中的
    ▼,拖拽复制也在这里确认。
  • 窗口上方还有内容时,转录首行显示居中的 ▲,点击它往回翻一轮。
  • stream_idle_timeout_seconds,可写在 [providers.<p>] 与 [providers.<p>.models.<m>] 下。它决定流式
    响应可以静默多久,超过后以 ai.ErrStreamIdle 中止并重放。这个上界按两次读取之间的间隔计算,只要流
    还在产出就不会被切断。模型的值优先于其 provider;默认十分钟,取值范围 1 到 3600 秒。
  • config show 输出 resolved.stream_idle_timeout 与 resolved.retry_window。

变更

  • 顶部标题只显示版本号。git describe 后缀与 dirty 标记都去掉了,没有版本信息的构建显示 dev。
  • 重试窗口跟随空闲上界:max(10m, 2×idle),同时约束单次请求的重放与单轮会话的重发。未配置上界时仍是
    二十分钟。
  • 栈回溯与 debug=2 的栈转储会带上 goroutine 标签,这是 Go 1.27 的默认行为。
  • 需要操作: 从源码构建需要 Go 1.27.2,发布产物也是用它构建的。
  • 需要操作: 在 macOS 与 Windows 上,Go 1.27 会由设置了的 SSL_CERT_FILE 或 SSL_CERT_DIR 决定
    从磁盘加载哪些根证书。这两个变量此前在这两个平台被忽略,只用系统证书库。如果你的 SSL_CERT_FILE
    指向不完整的证书包,TLS 校验现在可能失败,pips 会把它作为不可重试的错误上报。设
    GODEBUG=x509sslcertoverrideplatform=0 可恢复原行为。

修复

  • 输入框与搜索框不再绘制自己的背景,浅色主题在深色终端里不会再画出一条白带。
  • 代码块使用当前屏幕上的主题着色,不再沿用进程里第一个渲染围栏的主题。
  • Markdown 的表面(H1 色带与行内代码底色)只在主题的背景族与终端报告的一致时才绘制。两者不一致,或者
    探测没有应答时,该单元格保持终端自己的颜色。
  • 会话中切换主题后,紧凑工具预览里不再残留 └ 前缀与旧的颜色转义。
  • 拖拽选中松手只写剪贴板,不再写兜底文件。/copy、/export 与带路径的复制仍然写它们自己的文件。
  • 被取消的轮次会在结束前送达控制器的取消,等待它的会话不再白等到超时。
  • 命令的捕获输出与字节数现在描述进程实际写了什么,而不只是上报时读到的部分。
  • 输出 sink 失败时按失败本身上报,不再被操作截止时间顶替。
  • 只输出思考就中断的流以前按三次重发的预算重试,模型只好把整段思考重做一遍。现在它和“什么都没产出”的
    失败一样拿到十次重放;答案文本与工具调用仍然用更短的预算。
  • 只输出思考后放弃的轮次,不再把半截思考留在屏幕上与错误并排显示。

性能

  • 活动尾部超过 8 KiB 后不再每帧重绘。在一段 98 KiB 的未闭合围栏上,按 TUI 自身 33 ms 的帧节奏跑 60 帧:
    每秒重绘 7.6 次,最坏滞后 240 ms。同一负载下整个进程:CPU 5.77 s → 3.53 s,平均 CPU 48.3% → 29.5%,
    分配 6.24 GB → 2.77 GB,GC 次数 464 → 202。低于阈值时仍然每帧渲染,小内容与整份渲染逐字节一致。
  • 流式输出长思考时不再为每个增量复制整份草稿。在固定回放上(2 万个 reasoning 增量,约 10 秒):重复型
    形状 CPU 17.2s → 3.5s,散文型形状 19.9s → 2.9s,分配 45.6 GB → 0.3 GB,GC 次数 2,744 → 60,最重形状
    的峰值 RSS 214 MB → 85 MB。

验证

  • 发布提交上跑完了整个矩阵:Quality(构建、go vet、golangci-lint、go mod verify、govulncheck、
    依赖策略检查与平台语义测试)、macOS / Ubuntu / Windows 上的 Agent Plugins,以及四个 sandbox 任务。
    竞态测试覆盖 agent 与 internal/coding。
  • 把空闲上界配置成一秒后,停滞的测试流在传输层以 ai.ErrStreamIdle 中止,静默前已送达的字节仍然保留。
  • 十分钟默认值来自 v0.1.7 在真实网关上的测量:72 条流里最长的静默是首字节前 4.5 秒、块之间 1.2 秒。
  • 上面的数字来自固定回放装置与 TUI 在 98 KiB 未闭合围栏上的帧节奏。回放装置会把每一个可见的文本与
    reasoning 字节与源前缀比对。
  • 本次发布没有调用真实 provider;真机冒烟套件是可选开启的,没有运行。

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 08 Oct 06:10
67d1532

v0.1.7

English · 简体中文

Interrupted streams recover instead of ending the turn, the transcript no longer re-renders on every
frame, and releases install with a verified download.

Install

macOS and Linux:

curl -fsSL https://raw.githubusercontent.com/rsbin1178/pips/main/install.sh | sh

Windows (PowerShell 5.1 or newer):

irm https://raw.githubusercontent.com/rsbin1178/pips/main/install.ps1 | iex

Both check the archive against the release's SHA256SUMS before installing. PIPS_VERSION pins a tag,
PIPS_BIN_DIR selects the directory, and PIPS_NO_MODIFY_PATH=1 leaves shell and PATH settings alone.

Added

  • install.sh and install.ps1: download, checksum verification, install, version check.
  • Stream idle timeout. A streaming response that stops delivering bytes aborts with ai.ErrStreamIdle
    after ten minutes of silence. WithStreamIdleTimeout overrides it per adapter.
  • Retry episode limits: retry.WithMaxElapsed for one request, agent.WithStreamRecoveryWindow for one
    turn. The CLI sets twenty minutes for both.
  • A retry tally on the interaction journal record: total retries and a breakdown by reason.
  • /status session usage: per-day buckets, per-model rows, durations on the Stats page, and pricing
    from a [cost] table.
  • A Models page, and pointer selection for full-area list rows.
  • LICENSE inside every release archive, a Windows .zip alongside the .tar.gz, and checksums
    covering both.

Changed

  • Interrupted streams regenerate the turn by default. Per-model continuation remains available as an
    opt-in.
  • Retry notices name the reason (rate limited, stream idle, and so on) instead of reporting a
    generic connection error.

Fixed

  • Mid-stream error events that nest code and message under error no longer arrive empty; the
    provider's text and error class are preserved.
  • An answer truncated at the output limit is salvaged rather than discarded.
  • Append-only stores truncate by path, so a tail can be rolled back on Windows.

Performance

  • The transcript no longer rebuilds the Markdown engine for the live block on every frame. A streaming
    repaint costs the tail.

Verification

  • Tests run on macOS, Ubuntu and Windows, with race tests over agent and internal/coding, the
    provider adapter smoke suite, go vet, golangci-lint, govulncheck, and the dependency policy
    check.
  • The stream idle timeout and the retry ceiling were measured on a live gateway before landing: over 72
    streams the longest silence was 4.5s before the first byte and 1.2s between chunks. With the timeout
    set to 5s, four live streams completed without a false abort.
  • Each release installs its own artifacts on Linux and Windows and checks the reported version.

简体中文

简体中文 · English

中断的模型流现在会恢复而不是终止这一轮;转录不再每帧重绘;发布产物带校验,可直接安装。

安装

macOS 与 Linux:

curl -fsSL https://raw.githubusercontent.com/rsbin1178/pips/main/install.sh | sh

Windows(PowerShell 5.1 及以上):

irm https://raw.githubusercontent.com/rsbin1178/pips/main/install.ps1 | iex

两者都会先用发布出来的 SHA256SUMS 校验归档再安装。PIPS_VERSION 固定版本,PIPS_BIN_DIR 指定安装
目录,PIPS_NO_MODIFY_PATH=1 不改动 shell 与 PATH 设置。

新增

  • install.sh 与 install.ps1:下载、校验、安装、版本检查。
  • 流空闲超时:流式响应在静默十分钟后以 ai.ErrStreamIdle 中止;可用 WithStreamIdleTimeout 按适配器
    覆盖。
  • 重试过程上界:retry.WithMaxElapsed 约束单次请求,agent.WithStreamRecoveryWindow 约束单轮会话;
    CLI 两者都取二十分钟。
  • 交互 journal 记录重试次数与原因分布。
  • /status 展示会话用量:按天分桶、按模型的行、Stats 页的耗时,以及来自 [cost] 配置表的金额。
  • 新增 Models 页面;列表整行可点选。
  • 每个发布归档内包含 LICENSE;Windows 除 .tar.gz 外提供 .zip;校验和覆盖两种格式。

变更

  • 中断的流默认按整段重新生成;每模型的"续写"仍作为可选项保留。
  • 重试提示会给出原因(rate limited、stream idle 等),不再统一报成连接错误。

修复

  • 把 code 与 message 嵌在 error 下的流内错误事件不再变成空错误;provider 的原文与错误类别得以保留。
  • 因输出上限被截断的答案会被抢救,而不是丢弃。
  • 仅追加的存储按路径截断,Windows 上也能回滚尾部。

性能

  • 转录不再每帧为活动块重建 Markdown 引擎;流式重绘只处理尾部。

验证

  • 测试在 macOS / Ubuntu / Windows 上运行,另有 agent 与 internal/coding 的竞态测试、provider 适配器
    冒烟、go vet、golangci-lint、govulncheck 与依赖策略检查。
  • 流空闲超时与重试上界在落地前于真实网关上量过:72 条流里最长静默为首字节前 4.5 秒、块之间 1.2 秒;
    把超时设为 5 秒后跑了四条真实流,没有误报。
  • 每次发布都会在 Linux 与 Windows 上安装自己的产物并核对报告的版本。

Full Changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 05 Oct 05:09

Full Changelog: v0.1.5...v0.1.6

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 03 Oct 08:02

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 20 Sep 02:50

Full Changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 18 Sep 09:10

Full Changelog: v0.1.2...v0.1.3

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 15 Sep 15:12

Full Changelog: v0.1.1...v0.1.2