Skip to content

0.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 23:38
· 26 commits to main since this release
48536ea

Added

  • New on-device reasoning models in the catalog, the /model picker, and --model:
    • Ornith-1.0-9B (mlx-community/Ornith-1.0-9B-4bit / -8bit) - plans with <think>
      reasoning and native tool calls, and sees images, so it appears in both the planner and
      vision pickers plus a new DeepAgent (Ornith) preset that uses it for both roles.
    • Qwen3.6 (mlx-community/Qwen3.6-27B-OptiQ-4bit ~20 GB, Qwen3.6-35B-A3B-OptiQ-4bit
      MoE ~24.7 GB) - the strongest local planners in the catalog; text-only.
    • Gemma 4 E4B (mlx-community/gemma-4-e4b-it-8bit ~9 GB, gemma-4-e4b-it-OptiQ-4bit
      ~7.5 GB) - reasons in Gemma's thought channel with native tool calls; a new
      DeepAgent (Gemma 4) preset pairs it with the LFM2.5 VLM for vision.
      All run with their model cards' recommended sampling and a 40k on-device context window.
  • Prefill cache. The agent prompt's computed state is reused across rounds, queries, and now
    processes - the base snapshot persists to disk, so a fresh ripple launch resumes it instead
    of re-prefilling the ~10k-token system+tools prompt (cold prompt processing ~14 s → ~0.2 s
    measured on Ornith 9B). Toggleable in /config ▸ Capabilities as Prefill cache
    (prefixKVCache in settings.json), honored by the REPL and headless runs.
  • Apple Notes tools. The agent can list, read, create, and update Apple Notes
    (apple_notes toolset; writes are approval-gated, reads are not).
  • /tools browser - a two-level browser of the agent's tools grouped by toolset, with each
    tool's description, parameters, and a [needs approval] badge.
  • ripple works in its launch directory. Filesystem tools and the @ picker root at the
    directory ripple was started in, and each session's transcript is written to
    .ripple/sessions/ inside it (--log <dir> overrides).
  • Bordered three-choice approval prompt (Approve / Reject / Always allow, arrow keys or
    a/r/A) and a gradient ASCII-art launch wordmark.

Fixed

  • Failures are never silent. A turn that dies mid-generation ends with a red
    ✗ turn failed - <reason> line under whatever streamed (the loader's real reason included),
    instead of an empty answer. A broken planner no longer keeps ripple chat from starting:
    launch falls back to the default model when it's on disk, or opens on the chosen model anyway
    and retries on the first message - either way a transcript note says what happened. A failed
    /model switch notes the failure and keeps the current planner. Headless runs print the
    loader's recorded reason and exit non-zero.
  • Download progress is real. Multi-GB pulls no longer sit at 0% (the hub's Xet transport
    reports no incremental progress; the bar now blends live in-flight bytes), the /model Local
    tab draws its progress bar inside the panel (it was hidden behind the menu) with esc to
    cancel, and a cold (re)load names its phase - loading <model> into memory…,
    prefilling the prompt… - instead of a bare "working…".
  • The tokens/sec readout measures real decode speed - every generated token (reasoning +
    answer) over active decoding time, excluding prefill, tool runs, and round transitions.
  • A turn renders in the order it happened. Reasoning / tool / plan / answer blocks keep
    their streamed sequence instead of being grouped by type.
  • ask_user (and every tool with nested array/object parameters) works on the Ornith,
    Qwen3.6, and Gemma 4 planners
    - tool schemas are now passed into generation so nested
    values arrive typed.