Skip to content

kane-qe: chat card badge, shorter cards, folded shell groups stay folded - #2

Merged
vipulkv merged 17 commits into
LambdaTest:mainfrom
lt-zeeshan:feat/card-verified-footer
Oct 19, 2026
Merged

vipulkv merged 17 commits into
LambdaTest:mainfrom
lt-zeeshan:feat/card-verified-footer

Conversation

@lt-zeeshan

@lt-zeeshan lt-zeeshan commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

What changes

Chat card

  • Every finished card closes with a Verified with KaneAI badge: a solid chip in kane's purple with a shield (⛨), at the right of the buttons row.
  • A suite that ended passed with every test passed says ✓ all N passed instead of its counts. The border still follows the run's own status.
  • The card is shorter: the blank rows are gone. A failed test's card is now 3 rows, the same as a passed one: the step and kane's reason share one line, cut with … if long. The verdict's kind is still in the pane, behind View steps.

Folded shell calls

  • Claude Code folds runs of shell calls into one line ("ran 3 shell commands"). The mod used to unfold any group that held a kane-cli run so its card showed, which spread out every other call in that group too. A group holding one run now stays folded and the run's card is drawn beneath its line.
  • A group holding several runs, or a run call the host gives no id (older desktop apps), is unfolded as before, so each row draws its own card. One drawing cannot hold two Rasters with the same key.
  • A kane-cli command that never became a run (for example "not logged in") stays inside the fold like any other call.

Band

  • One blank row above the band, so it no longer sits tight against Claude's working line.

Directory readiness (findings from the claude.ai directory portal's validation of main)

  • The mascot's seven picture frames moved out of mascot.ts (base64 text) into kane-qe/assets/mascot/<pose>.png, read from the plugin's own folder at session start. Until they load, the desktop picture is the existing vector stand-in.
  • The theme hook (config.set) now passes the change on with return next(e) and updates the palette alongside, instead of awaiting and returning the result itself.
  • A local variable named h (the JSX factory's name) is renamed. This is the most likely cause of the portal's one blocking finding at that line; only the portal can confirm it.
  • kane-qe/README.md gains an install line and a What this mod runs and sends section: every program it starts and why, what it reads, what it hands to Claude (the drafted-objective diff and each prompt it submits), and what it never does.
  • Left as is: the types field in plugin.json (a portal warning; the mod-authoring guide and the local validator use it).

History note

The branch includes three experiments that were tried and reverted (a breathing-dot spinner, a drawn pixel shield, a tick animation on passed cards). Their reverts are in the branch; the net diff contains none of them.

How it was checked

  • claude plugin test kane-qe: 134 pass; claude plugin validate --strict kane-qe passes. A review pass found two bugs in the first version (two runs in one group drew no card; no card where the host omits the call id) and the all-passed mark ignoring the suite's own status; all three are fixed and covered by tests that fail when the fix is undone. claude plugin validate passes for the plugin and the marketplace. Type-check clean.
  • Seen live: the all-passed mark and the closing line on a real suite run; the folded group with a card beneath it and a working button, with a stand-in card.
  • Tests only: the badge's final form (the shield chip), the one-line failure, the band's blank row, and the folded group with a real kane-cli run.
  • Not checked: how ⛨ renders across terminal fonts; the desktop app.

Not in this PR

plugin.json is still 2.0.0. Users who installed from the marketplace only receive these changes through claude plugin update once the version is raised.

🤖 Generated with Claude Code

lt-zeeshan and others added 17 commits October 10, 2026 16:48
… run with nothing failed

Every finished card ends with a Verified with KaneAI line. When the run
passed, or every test of a suite did, that line is green with a tick, the
suite's result reads '✓ all N passed', and the border is green only then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The running step's one-cell spinner swells from a small dot to the
mascot's eye and shrinks back, eight frames at the mascot's step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n's card beneath

The group was unfolded whenever it held a kane-cli run, which spread out
every other shell call in it. The group's own line is now drawn as it
came, with a card under it for each run it holds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on the buttons row

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he tick

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mark is a three-by-two cell shield with a tick on it, drawn like the
mascot, with the words on two rows beside it. It stands at the bottom
right of the card, beside the last line and the buttons, so the card is
no taller.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its step and kane's reason share one line; the kind stays in the pane,
behind View steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The stroke is laid two pixels a step, flashes when whole, holds, and the
mascot returns: about two seconds. It plays where the cell grid can be
repainted, for a pass that is fresh when its card is first drawn.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sed mark

- A folded group stays folded only when it holds one run with its id; with
  several runs, or a run call the host gives no id, it is unfolded so each
  row draws its own card (one tree cannot hold two Rasters of one key).
- The border follows the run's own status again.
- '✓ all N passed' needs the suite to have ended passed as well as every test.
- A reason or step's first line is its first line that is not blank.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on start

The seven frames were base64 text inside mascot.ts; they are now
assets/mascot/<pose>.png, read from the plugin's own folder once the session
starts. Until they are read, the picture is the vector stand-in alone.

Also for the directory's checks: the theme hook passes the change on with
return next(e), and a local named h (the JSX factory's name) is renamed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o Claude

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vipulkv
vipulkv merged commit 36baa9a into LambdaTest:main Oct 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants