Skip to content

Releases: Akramovic1/jev-pilot

jev-pilot 0.11.0: the design pack

Choose a tag to compare

@Akramovic1 Akramovic1 released this 26 Sep 15:14

The design pack. UI design work gets your whole design toolkit, not just one skill.

  • The same one Jev request now also asks whether a request is UI design work (web or mobile). Measured on 13 prompts: design requests (a landing page, a redesign, a mobile onboarding flow, "make it look premium", a card component) scored 0.95 to 0.98; everything else 0.09 at most, including a UI bug that is logic, not design. The bar is 0.8.
  • When it is, Claude gets a <jev_design> block: load the design skills for direction and polish (designSkills, default design-taste-frontend, impeccable), check the result against web-design-guidelines before calling it done, and take a direction from the project's own design system first, else from a real product's DESIGN.md in VoltAgent's awesome-design-md, or from real screens through the Mobbin MCP (and Inspo) when connected. Only installed skills and connected tools are named.
  • New switch /jev design on|off and options designPack, designSkills.

jev-pilot 0.10.2

Choose a tag to compare

@Akramovic1 Akramovic1 released this 26 Sep 12:13
  • No more moving pixel. The scarf's loose end stuck out one pixel past the body and dipped every few seconds, which read as a glitch. It's gone: the scarf ends with the body and nothing flaps. The wind timer that drove it is removed too, so a resting pilot redraws only to blink and play. The README's pet images are regenerated.

jev-pilot 0.10.1

Choose a tag to compare

@Akramovic1 Akramovic1 released this 25 Sep 23:39
  • The pilot keeps its shape. A long bubble (a long skill name mid-turn, in a narrow terminal) squeezed the pilot's column, so each of its rows wrapped onto two lines and the drawing came apart. The pilot now has a fixed width that never shrinks; the bubble gives way and cuts its text instead. Checked live at 60 columns mid-turn.

jev-pilot 0.10.0: following Anthropic's Opus 5.5 guidance

Choose a tag to compare

@Akramovic1 Akramovic1 released this 25 Sep 22:52

Following Anthropic's guidance for Opus 5.5 (their post on the cost of a task), checked against my own data before each change.

  • Code stays on Opus. Haiku and Sonnet now get read-only work only (lookups, reading logs and test output, research, reviewing a diff); any subagent that writes or changes code stays on Opus, at a lower effort when the change is simple. The post says to move down "for lookups, not for writing code", and our junior-mode runs agreed. On 20 real subagent briefs from my sessions, the 11 builders and fixers that went to Sonnet now stay on Opus, and read-only reviews and research go to Sonnet. Custom models (budget mode) are for read-only bulk work only too.
  • Effort held where changing it clears the cache. With an API key or a subscription, changing effort keeps the cache on Opus 5.5, so jev-pilot still sets it per turn for free. On Amazon Bedrock, Google Cloud or a gateway, a change clears the cached conversation, so there the first turn's effort is held for the session (no mid-turn raise) and chosen again after a compaction. New option effortChanges: auto (default), per-turn, hold. claude-jev passes on where requests really go (JEV_ANTHROPIC_UPSTREAM), since its router sits in between.
  • Fable when xhigh goes in circles. The post: if Opus 5.5 at xhigh hits the same problem twice, switch to Fable 5.1 and back. When a turn at xhigh or max goes in circles, the step-back note now suggests Claude offer you /model fable for that step.
  • Leaner advice, from Anthropic's /claude-api prompt-audit. It found the anti-patterns the post warns about in jev-pilot's own injected text: the junior's tests run twice, review requested in two places, a review after every graph wave, a plan to sketch in the reply, and "show the bug first, then show it passing" procedures. Rewritten so each check is asked for in one place, as advice rather than a procedure; the confidence numbers no longer go to the model (the bubble still shows them to you).
  • Not changed, on the data: the post advises keeping xhigh for measured gains. Replayed on 76 labelled prompts, every turn jev-pilot starts at xhigh needed it (4 of 4), and a high ceiling only started those four too low (exact 39 to 35). The maxEffort ceiling stays at xhigh; set it to high if you prefer.
  • jev-bench regression check: 8/8 for $1.93 (0.9.x: $1.92; Claude alone on high: $2.20).

jev-pilot 0.9.1: the right platform's skill

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 18:11
  • A platform's skill only for a project on that platform. "Deploy to production" in an AWS CDK project got Vercel's deploy skill attached, because the skill question matched the kind of work (deploying) and nothing said which platform the project uses. jev-pilot now reads what the project deploys with from its file names (cdk.json, vercel.json, netlify.toml, firebase.json, supabase/config.toml, Dockerfile, .github/workflows/…, in the top folder and one level down, once per project, never file contents), and Jev is told that a platform's skill fits only when the request, the conversation or the project shows that platform is in use. Measured on 6 cases: an AWS project deploying (with and without the conversation), no skill, where Vercel's was picked at 0.90 before; a Vercel project, or "deploy to Vercel", keep Vercel's; with nothing known, no guess; a Supabase project keeps the Supabase skill. Checked live in an AWS CDK project: no skill.

jev-pilot 0.9.0: better code, not just cheaper

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 17:40

Better code, not just cheaper. Jev can't judge code, since it never sees your repo, but it can judge the request. The same one request (no extra wait) now also asks four questions, and each acts only when Jev is sure:

  • Vague request ("add caching", "make it better"; 85% bar): Claude is told to ask one short question, or state its assumption in one line, before coding.
  • A bug (80%): show it first with a failing test or a command, then fix it and show the same check passing.
  • A costly area such as money, auth, migrations or security (80%): run the tests that cover it and add one for the changed case, and get a Codex or OpenCode review when one is working.
  • Your correction of the last turn ("it doesn't work", "not what I asked"; 70%): that turn is marked in the ledger. This is jev-pilot's first real quality signal. /jev-pilot:report shows how often each starting effort got corrected, and /jev tune leans up when cheap starts keep getting corrected. It's how you find out whether low effort is really enough for your work.
  • A turn going in circles: the same file edited 4 times, or the same command failing 3 times in a turn. Claude gets a note after that tool call (you don't see it) to step back, read the error in full, name the cause and try something else, and the effort goes up a level once. Before, only failures back to back raised it, and the edit, test, edit, test loop never does that.
  • The questions were measured on sample prompts before use. A first wording rated "add a dark mode toggle" as vague as "add caching"; the final one separates them (0.19 against 0.86). /jev quality off switches all of it off.
  • jev-bench: two quality tasks. A vague request (9-vague) and a money bug with hidden edge-case tests (10-transfer). Honest result: Opus 5.5 already did the right thing on both, with or without jev-pilot (4/4 each; jev-pilot 11% cheaper). On these tasks the advice didn't change the outcome. It's a safety net for the cases where it would, and the correction marks will show over time whether it helps on your own work.
  • Reviewed by Codex (5 findings fixed, then PASS). Corrections mark a turn by the engine's own turn id, never by time. A command's count starts again after it passes. Quality reads still run when effort, model and strategy are all off.

jev-pilot 0.8.2: choose the reviewer's model

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 16:55

Choose the model Codex and OpenCode review with.

  • In your own words: "review this with Codex, Luna, high effort". Claude puts the model in the reviewer's brief, and the reviewer runs Codex with -m and the reasoning effort (OpenCode: -m and --variant).
  • As a default: /jev reviewer codex luna high, /jev reviewer codex effort xhigh, /jev reviewer opencode <model>, /jev reviewer codex default. Checked before saving: Codex models against codex debug models (with each model's own efforts), OpenCode models against opencode models. Kept in models.json, so every session and every install uses it.
  • Always the newest of a tier. A Codex tier name (astra, sol, terra, luna) is kept as the tier, and each session uses its newest model from Codex's current list. Today luna is gpt-5.6-luna; a later Luna is taken up by itself. A full id pins that version.
  • The model and effort are passed to the CLI as quoted arguments, never pasted into the command as text. /jev status shows what each reviewer runs on.

jev-pilot 0.8.1: security and reliability

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 15:37

A security and reliability release, from an independent review (Codex) of everything since 0.5.0.

  • Security: only your claude-jev sessions can use the router. Until now, any program on the machine, or any web page open in a browser, could send requests to jev-router on 127.0.0.1:8799. That meant spending your OpenRouter credit through a custom model, or stopping the router and cutting every claude-jev session off from Claude. Every request now has to come under a secret path. The secret is made once in ~/.claude/jev-pilot/router-secret (readable by you alone) and put in the address by claude-jev. Requests carrying a browser's Origin are refused. /jev status never shows the secret.
  • A stream that breaks mid-answer no longer hangs the turn. The router ends the response on a stream error so Claude Code can retry. When Claude Code goes away mid-answer, the model's request upstream is stopped too, instead of generating on.
  • A graceful stop. Stopping the router (an update, claude-jev router stop) lets answers in flight finish, up to 30 s.
  • The one-request hand-off can't mix prompts. Two prompts in flight each get their own questions (queued per prompt, oldest first), and a look for one never removes another's.
  • Robust records. The router keeps its last good table if it reads models.json half-written. A record written elsewhere counts at most 8 models. /jev mode, junior, reviewer and models refuse extra words.
  • Custom models in workflows. Workflow agents don't pass the Agent tool, so jev-pilot couldn't route them: in budget mode a workflow's agents ran on Opus. The note Claude gets now tells it to set each workflow agent's model (opts.model): Haiku or Sonnet by the work, and in budget mode your custom model for bulk work. Tested: a two-agent reading workflow ran entirely on DeepSeek.
  • jev-router is now version 6. claude-jev replaces an older one (including one without a secret) on its next start. The secret is made once, only when there's none (racing launches share the first one's), kept at mode 600, and never replaced automatically: a damaged one is reported, with how to fix it; the router only takes a models table that is well formed, and keeps its last good one otherwise; uninstalling also stops a router from before the secret.

jev-pilot 0.8.0: your custom models, by name, in /model

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 14:17

Your custom models, by name, in /model.

  • Names you choose. /jev <name> <model> adds any OpenRouter model under a name of your own (/jev flash deepseek/deepseek-v4.1-flash, /jev coder https://openrouter.ai/qwen/qwen3-coder), up to 8, instead of the fixed alpha, beta and gamma. Claude Code sees each as jev-<name>. Names that /jev already uses (status, mode, skills…) are refused. Models set as alpha, beta or gamma before keep their names.
  • Delete one. /jev remove <name> (or /jev <name> off) removes it from every session, from /model, and as the junior (the junior moves to the next model you added).
  • In /model. Each model you add is a row in Claude Code's /model list, with its OpenRouter name and price, in claude-jev sessions (where the router serves it). Pick it to run the whole conversation on it. Press s to keep it to that session: Enter makes it your default for new sessions, plain claude sessions have no router, and /model default sets it back. New rows appear from the next claude-jev session. claude-jev passes them with --settings from a file jev-pilot writes, so your settings.json is never touched.
  • A conversation on a custom model now works. Claude Code's tool search sends tools in a form only Anthropic accepts ("Deferred custom tools are only supported on Anthropic"), so every request from a conversation running on a custom model was failing and quietly answered by Claude through the fallback. The router now sends every tool as a plain tool.
  • Privacy fix: your account details stay with Anthropic. Claude Code adds fields to its requests that are meant for Anthropic alone: your account and device ids, your permission rules and project notes, and context-management settings. The router had been passing them on to OpenRouter for custom-model requests since 0.5.0. It now removes them. A request that falls back to Claude still goes to Anthropic unchanged.
  • A fallback is no longer silent. When a custom model fails and Claude answers instead, the turn ends with a line saying which model and why, and the bubble says so. That's how the tool-search failure above was found.
  • Safety net for a custom default. Where jev-pilot runs without the router and the conversation's model is a custom one, it uses Sonnet for the session and says why.
  • Models added before 0.8 get their OpenRouter name and price filled in automatically.
  • jev-router is now version 4. claude-jev replaces the running one on its next start.

jev-pilot 0.7.0: you choose the custom models

Choose a tag to compare

@Akramovic1 Akramovic1 released this 24 Sep 13:41

You choose the custom models.

  • No default model. alpha, beta and gamma start empty; nothing is sent to a model you didn't pick. (If you already used alpha, it keeps the model it had.)
  • Paste it from OpenRouter. /jev alpha <model> takes the model's id, its page link or its name, as you copy it from openrouter.ai/models. It's looked up in OpenRouter's live list and set with what it is (name, context, price), then checked with a 1-token request. A model OpenRouter doesn't have is refused with the three closest ones to try, newest first; so is one that can't call tools, since a subagent works through them.
  • Kept for every session. The choice is recorded in ~/.claude/jev-pilot/models.json, which every session reads, in any project and whichever way jev-pilot is installed (the plugin's own store is kept per install, so it wasn't enough). A session already open takes up a change made elsewhere at its next prompt.
  • Easy to switch back. /jev alpha shows the slot, its model and the last five models you set, each as the command that sets it again.
  • The modes that hand work to custom models (budget, junior-lead) say how to set one when none is set.