Skip to content

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 07 Aug 19:22

Changed

  • OpenCode Zen and OpenCode Go are one provider each, instead of three.
    The gateway serves some models as Chat Completions, some as Anthropic
    Messages and some as Responses, and the only way to record that used to be
    a separate provider per dialect — six entries in the picker, the same key
    pasted three times per subscription. The dialect now travels with the
    model, so there is one entry per subscription and one key. Existing setups
    are folded together on first launch, keeping their key, their enabled
    models and the context windows already learned; the saved model selection
    and the Codex integration are repointed at the merged provider.

    Models found by discovery are assumed to speak whatever the provider does
    — no catalog publishes which wire a gateway serves a model on. Where that
    guess is wrong, each model on a multi-dialect provider now carries its own
    dialect picker.

Added

  • The running version is stamped in the sidebar footer, next to the
    language switcher. After an update installs there was no way to tell
    which build was actually in front of you short of the Windows uninstall
    list; the stamp is the binary's own version — the same number the
    updater compares against — so it cannot misreport.

Fixed

  • Asking for a native GPT no longer reaches OpenCode instead. The
    gateway serves models under the same names OpenAI uses — gpt-5.5,
    gpt-5.4-mini, grok-4.5 — and a request naming one of those without a
    provider matched whichever provider happened to serve it, silently
    answering with a different model than the one asked for. Unqualified names
    go to the native backend now, unless native-slug mode is on, which is the
    setting whose whole purpose is to publish routed models under bare names.
    The gateway's own copies stay reachable under their full name.
  • Switching a thread from a routed model to a native one no longer breaks
    the next turn.
    It failed with "Item with id 'rs_…' not found. Items are
    not persisted when store is set to false". A routed provider returns no
    item ids, so LoomRouter invents them; the agent keeps them in the thread
    and replays them, and OpenAI's backend rejects an id it never issued.
    Those ids are now removed on the way out, keeping the content of the turn
    and the pairing between a tool call and its result.
  • Routed models can edit files again: apply_patch works through Chat
    upstreams.
    Codex ships it as a freeform tool whose schema is a grammar
    rather than a JSON object, and nothing on the Chat path knew what to do
    with that — strict providers rejected the request outright, and when one
    did answer, the edit came back in a shape Codex filed as an unknown tool
    and aborted. Both directions are translated now, including across turns,
    so the model keeps seeing its own patches and their results.
  • No more console window next to the app on Windows. The binary was
    linked against the console subsystem, so Windows opened a terminal beside
    it on every launch and printed the proxy's log into it — closable only by
    quitting the app. Release builds are GUI binaries now; tauri dev still
    prints its log to the terminal.
  • OpenCode Zen and Go models report their real context window. Five of
    the six OpenCode presets were looking the gateway up under a catalog
    name that does not exist, so the enrichment step quietly found nothing
    and every model on them kept the conservative 128K tag — 1M models like
    deepseek-v4-pro, glm-5.2 and qwen3.6-plus included. That number is
    also what Codex plans turns against, so it compacted conversations
    roughly eight times earlier than it had to. Both gateways now resolve,
    including the models each one publishes with a different window.
  • The context tag no longer renders a raw divisor. kimi-k3 read
    "1.048576M", and every window the vendor counts in round thousands read
    low — grok-4.5's 500K as "488K", gpt-5.4-mini's 400K as "391K".