Skip to content

Releases: zyoung11/pi-bin

0.1.8

Choose a tag to compare

@zyoung11 zyoung11 released this 04 Sep 15:19

pi-bin v0.1.8

fix:

  • TUI rendered every non-BMP character (emoji) as two U+FFFD replacement chars: the mini-markdown lexer fallback walked the text one UTF-16 code unit at a time, splitting surrogate pairs into lone surrogates that fail UTF-8 encoding on output. Walk surrogate pairs as one character (charCodeAt high/low check; codePointAt has no scriptc lowering)
  • selecting a model without a modelThinkingLevels entry (first pick of a new model via /model) crashed with the scriptc missing-key trap: getModelThinkingLevel indexed the settings record directly, and a missing key traps before ?. can guard. Reads over external settings JSON now go through the dyn record view
  • streaming render crashed (scriptc missing-key trap) when a latex command was cut mid-name by a streaming chunk: renderLatex hit truncated commands like backslash-m and looked them up in typed lookup tables (SYMBOLS, ACCENTS, NEGATED_SYMBOLS, replaceCharacters tables) whose dynamic keys scriptc materializes as fixed slots, so any unseen key traps instead of returning undefined. All dynamic table reads now go through the dyn record view with typeof-string narrowing

0.1.7

Choose a tag to compare

@zyoung11 zyoung11 released this 04 Sep 12:07

pi-bin v0.1.7

fix:

  • bash abort: Esc could not interrupt running commands and orphaned children kept stealing the TTY input (sudo/read password prompts leaked onto the TUI, input felt frozen)
  • spawnProcess silently dropped the detached option (scriptc requires a detached boolean literal; branch into two inline calls) so command shells never led their own process group
  • processGroupId parsed /proc/pid/stat with an off-by-one (returned ppid, not pgrp), making the pid-reuse guard reject every group kill killProcessTree now group-kills group leaders and single-kills non-leaders instead of returning silently
  • with detached fixed, commands run without a controlling terminal: sudo/password prompts fail fast with a pipe-visible error instead of hanging the TUI

0.1.6

Choose a tag to compare

@zyoung11 zyoung11 released this 03 Sep 10:05

pi-bin v0.1.6

fix:

  • continue (-c) crashed with SIGABRT when no top-level .jsonl exists in the
    sessions dir (the normal layout: per-project subdirectories)

0.1.5

Choose a tag to compare

@zyoung11 zyoung11 released this 03 Sep 05:30

pi-bin v0.1.5

fix:

  • streaming: TUI rendered spinner-only and dumped all text at message end;
    scriptc snapshots record fields holding arrays, so output.content stayed an empty
    snapshot until the finish-stage reassignment. Transport now reassigns
    output.content after every block push and message_update passes partialMessage by
    reference
  • json/rpc: toolcall_start events crashed consumers reverse-reading the empty
    partial content; events now carry id/toolName directly, reverse-read and JSON
    round-trip helper removed
  • openai-http: timeoutMs was an absolute request timer killing long generations
    at the 300s default with "This operation was aborted"; now an idle timer re-armed
    on every chunk, cleaned up in finally, with an explicit "Request idle timeout: no
    data received for Ns" error
  • editor: pasted content was submitted as the literal [paste #N] placeholder;
    expansion matched only bare markers while inserted markers always carry a suffix.
    Replaced with a scanner equivalent to upstream's dynamic-RegExp semantics;
    fold-on-paste behavior unchanged from upstream
  • openai-http: declared dialect reasoning fields (reasoning_content, reasoning,
    reasoning_text) on ChatCompletionChunkDelta; scriptc cast copies drop undeclared
    fields, so thinking blocks were never created from OpenAI-compatible endpoints

0.1.0

Choose a tag to compare

@zyoung11 zyoung11 released this 02 Sep 05:19

pi-bin v0.1.0