Skip to content

Releases: wnzzer/tendly

v0.1.99

Choose a tag to compare

@github-actions github-actions released this 22 Oct 13:13

✨ Changes

  • Usage: a change of plan restarts what a window counts (bfee2a8)
  • Tests: a browser suite over the whole app (397a1ae)

🐛 Fixes

  • Fix 33 bugs found by an exploratory browser run (66e5558)
    • An empty Pi session continued in Claude Code showed "Invalid
      conversation response": the handoff's boundary had no profile_name,
      so the whole snapshot was refused. The boundary now names its source,
      and one stored without a name is still read.
    • Ctrl+B → made the right pane blink: its locate pulse replaced the
      pane's entrance animation, which replayed from transparent when the
      pulse ended. The pulse runs on an overlay, and a pane enters once.
    • Steer, its menu and stop read as three unrelated buttons, and turned
      green on hover. Steer and its menu are one split button.

Full changelog: v0.1.98...v0.1.99

v0.1.98

Choose a tag to compare

@github-actions github-actions released this 22 Oct 02:12

✨ Changes

  • Mobile: one card per composer control, and a composer that stays on the keyboard (d29421c)

Full changelog: v0.1.97...v0.1.98

v0.1.97

Choose a tag to compare

@github-actions github-actions released this 21 Oct 16:54

🐛 Fixes

  • Fix imported session history and mobile endpoint and permission menus (6077c71)

Full changelog: v0.1.96...v0.1.97

v0.1.96

Choose a tag to compare

@github-actions github-actions released this 21 Oct 08:11

✨ Changes

  • Settings: save as you edit, in the rows Preferences uses (d8e72d0)

Full changelog: v0.1.95...v0.1.96

v0.1.95

Choose a tag to compare

@github-actions github-actions released this 21 Oct 06:32

✨ Changes

  • Unify chat on Rust and persist cross-client handoffs (27144d9)
  • Tests: the real-client smoke check no longer loops over one layer (3b8f9ab)
  • Accounts: each Codex reset credit shows when it expires (ddb422d)

Full changelog: v0.1.94...v0.1.95

v0.1.94

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:01

✨ Changes

  • Models: each model in an endpoint's list shows its context window (39ae9d8)

Full changelog: v0.1.93...v0.1.94

v0.1.93

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:42

✨ Changes

  • Update model prices (d268fc6)
  • Git: the branch menu groups branches by what can be done with them, and cleans up merged ones (d7f5504)
  • Checkouts: a session's views follow it into its worktree (dca4ca6)

Full changelog: v0.1.92...v0.1.93

v0.1.92

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:19

✨ Changes

  • Profiles: each part of the endpoint form is a card, and it fits narrow panes (20266a5)
  • Canvas: "+" no longer offers an empty file editor or preview (3a30d36)
  • Keys: Ctrl+B reaches everything on the canvas, and every move ends in an input (7e82e67)
  • Keys: one grammar and one table for every key in the app (bb9bf65)
  • Keys: lists answer the same keys everywhere, and Esc steps back one level (7606196)
  • Accounts: a Codex account refreshes its allowance where Claude's does (5b9fb23)

Full changelog: v0.1.91...v0.1.92

v0.1.91

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:47

✨ Changes

  • Models: check which ones actually run, name the protocol each check spoke, and prune the rest (ed2c353)
    • POST /api/endpoint-profiles/probe-models takes a draft profile and up to 24
      models and answers per model: ok, unauthorized, not_found, rate_limited,
      timeout or failed. Four at a time, 20s each, 64 KiB of body, no redirects,
      and no upstream text in the detail — a body can echo the credential.
    • The request shape stays in the client's adapter (probe_call): Claude Code
      asks /v1/messages, Codex asks /v1/responses, Pi asks whichever API the
      profile names. Probing is a separate, labelled action, so listing still
      never infers.
    • Each answer carries the protocol it used, and POST probe-plan reports what a
      check would send without sending it. The same model can answer on one API
      and fail on another, so an answer without its protocol is ambiguous; on Pi
      the API is guessed from the URL when the profile is silent, and a guess is
      named as one before the run rather than after a batch of failures.
    • A 404 means "no such model" or "no such route", and the repairs differ. When
      every model comes back not_found the panel says the endpoint probably does
      not serve that protocol, instead of inviting a prune of the whole catalogue.
    • The panel marks rows, filters them, and offers the two prunes people
      actually want: keep only the working ones, or remove the failed ones.
      Rate limits, timeouts and a refused key prove nothing about a model, so they
      are never pruned, and pruning everything is refused with a reason.
  • Prices: other makers' models at their own prices, and a gateway's spelling still finds one (7dd2ba4)
    • The generator keeps each maker's own API as well: gemini, deepseek, zai,
      moonshot, dashscope (Qwen only), xai and minimax. LiteLLM files some under
      the maker's prefix (zai/glm-5.3); clients log the bare name, so that is
      what is stored, and a bare entry wins over a prefixed one. A reseller's copy
      of a model is left out: its price is the reseller's. 91 models become 212.
    • A thinking depth spelled into the name (-thinking, -high, -xhigh, ...)
      is the same model at the same rate; -max, -pro, -mini stay other
      models.
    • A gateway's vendor prefix (openrouter/openai/gpt-5.5) and a display name
      (GPT 5.5) normalize to the id the list uses.
  • Usage: output speed and failure rate per model, where the client logs them (e2382d1)
    • Speed is output tokens over the time from the request leaving to the last
      token arriving, the wait for the first included. Claude Code (recent
      versions) logs each request on an api-request line its reply refers back
      to by requestRef; Pi stamps a message when its request leaves and the entry
      when the reply is complete. Codex logs neither end, so it has no speed.
    • Failure rate is failed over answered plus failed, only for clients that log
      failures. Claude Code's final errors (isApiErrorMessage) count as failed
      and its api_error retries are counted apart; neither names a model, so
      each is put down to the one last asked for. Pi's error stops count, a stop
      the person asked for does not. Codex logs no failed request: it shows no
      rate rather than 0%.
    • A Claude reply logged block by block is merged into one call as it is read,
      taking its duration from the last block, instead of being dropped as a
      duplicate later.
    • The models table gains Speed and Failure rate after Cost, so a narrow
      screen still shows the cost.
  • Terminal: tell the process every grid change, not only the ones a fit makes (9e98e5b)
  • Endpoints: one check that finds the client's protocol, then checks the models over it (3126af4)
  • Terminal: leaving a conversation's terminal goes back to the conversation (562db07)
  • Launch: a client started from inside Claude Code no longer takes itself for part of it (e5b94c5)
  • Claude: a failed turn says what the endpoint said, and a /v1 base still reaches it (ba99d72)
  • Show per-reply token usage for Codex and Pi (72261ad)
  • Add tmux-style pane shortcuts and bulk-close icons (5f2b9a0)
  • Make command palette background opaque (fe2b976)
  • Chat: the Rust clients report each reply's cost the way the bridge does (b3325d3)
  • Profiles: a grouped endpoint form, one check, and a key header per profile (1b06633)

📚 Documentation

  • Docs: say what the screenshot harness is for and how to reach it (6d4c5c9)
  • Readme: the GitCode star badge, next to the GitHub one (98aa9a4)

Full changelog: v0.1.90...v0.1.91

v0.1.90

Choose a tag to compare

@github-actions github-actions released this 18 Oct 12:55

✨ Changes

  • Branch menu: fetch --prune in the background on open so deleted remote branches drop off (2c66088)
  • Codex: throttle streamed command output so a noisy command no longer floods the turn (5e799e9)
  • Chat: a queued message refused after the turn goes back to the queue, not nowhere (391a830)

Full changelog: v0.1.89...v0.1.90