Skip to content

Releases: tommulkins/hermes-plugin-session-analyzer

v0.3.2 — Unified plugin layout (plugin-catalog ready)

Choose a tag to compare

@tommulkins tommulkins released this 15 Sep 14:54
ae81c5b

Summary

Restructured to the unified package layout the Hermes desktop runtime-loader and the official plugin catalog expect:

  • desktop/plugin.js (UI half) and dashboard/ (backend half) now sit at the repo root
  • Added a native plugin.yaml + no-op __init__.py so the plugin passes hermes plugins validate and the plugin-catalog pinned-source CI
  • install.sh / install.ps1 source paths updated; installed destinations unchanged — existing manual installs keep working
  • Fixed stale dashboard/manifest.json version (0.3.0 → 0.3.2)

No behavior changes. This release is the SHA pin target for the upcoming plugin-catalog entry.

v0.3.1 — Fix Ask AI session-owner resolution error

Choose a tag to compare

@tommulkins tommulkins released this 13 Sep 15:04
5685533

Ask AI no longer fails with Session owner could not be resolved when opening a new session (regression on connections-registry topologies — two or more backends / profiles).

Root cause: Ask AI pre-created the session with a raw session.create RPC and navigated to it. That bypasses the app's own create path, which is the only place owner hints/tiles/rows get stamped, so the renderer's fail-closed owner resolution refused to route any session-scoped RPC (model pick, prompt send, file attach) to the orphaned session — and the session never reached a state.db.

Fix: Ask AI now opens a fresh draft via host.newChat() — the same door the sidebar '+' uses. No session-scoped RPC is issued; the session is created by the app's own path at send time with full owner bookkeeping.

Behavior change: the new session no longer carries a seeded 'Session analysis: …' title; auto-title takes over from the pasted prompt.

v0.3.0 — Readable insights, copy affordances, lint tooling, tests

Choose a tag to compare

@tommulkins tommulkins released this 12 Sep 21:18
a3dc0df

v0.3.0: readable insights, copy affordances, lint tooling, tests

Detail-panel improvements:

  • Tool calls: fixed-width right-aligned count/token columns with a
    labeled header row (tool / calls / ~tokens) — counts no longer drift
    row to row; Files touched moved to its own full-width section below
  • Copy session id: explicit copy-icon button next to the id in the
    detail header, alongside right-click on the id (reuses the list's
    context menu)
  • Cache-reset / re-bill events: pill row replaced with per-event rows
    carrying a plain-language summary (switched to X with cache rebuild,
    upstream 503 re-bill, context compressed); native title tooltips
    dropped (slow, clipped at panel edge)
  • Context growth, Failed calls, Repeated calls: one-line explainers
    spelling out why each signal matters (every token in context is
    re-billed per call; a failed turn spends tokens and produces nothing;
    3+ identical calls is one root cause, not N failures)
  • ANSI strip restored in _failure_detail (regressed in the earlier
    ponytail consolidation; nothing failed without a test, hence the
    suite below)

Tests (new tests/ directory):

  • test_plugin_api.py: 23 unit tests for _detect_failure,
    _failure_detail (ANSI + batch-tool regressions), _strip_ansi,
    _event_summary
  • test_acceptance_live.py: 7 acceptance tests exercising session_detail
    against the real state.db (skip when absent, CI-safe)

Lint tooling:

  • ESLint 9 (flat config) + react-hooks: unused vars, undefined globals,
    hook rules; immutability rule off for the deliberate DOM-drag divider
  • Ruff (E/F/I/B/UP) for the Python backend; PEP 604 isinstance/typing
    updates, B904 raise-from, line-length cleanup; *.py added to
    .prettierignore
  • pnpm lint now runs the trap linter AND eslint; pnpm lint:python for
    ruff

v0.2.1

Choose a tag to compare

@tommulkins tommulkins released this 17 Aug 16:48
5af8ec7

Fix: separator hover/drag dead in packaged builds (issue #2)

The packaged app's Tailwind build only generates classes its own code uses, so plugin-only arbitrary classes (w-[9px], group-hover:opacity-100) were never compiled into the shipped CSS. The sash strip collapsed to 0px width and pointer-events-none on the band wrapper left nothing hit-testable.

  • Separator width is now inline (style={{width: 9}}) — immune to class generation
  • Hover feedback via React state (onPointerEnter/onPointerLeave) instead of the missing group-hover variant
  • Removed pointer-events-none from the band wrapper

Dev workflow

  • Added prettier (pnpm devDep, .prettierrc.json = defaults, lockfile committed) — pnpm run format
  • Manifest 0.2.0 → 0.2.1

v0.2.0 — Token percentages, grouped failures, session about

Choose a tag to compare

@tommulkins tommulkins released this 16 Aug 19:50
25c77df

Feature release on top of v0.1.0.

New in v0.2.0

  • Token percentages — stat tiles and the inline token bar now show each group's share of total: in 71.9k (3%) / cache 2.53M (95%) / out 29.2k (1%). Same denominator in both views.
  • Grouped failed calls — failures are grouped by tool name with count badges; rows inside each group stay chronological. Bordered group boxes.
  • Click-through from tool breakdown — tool names with failures are red clickable buttons that smooth-scroll to that tool's failed-calls group.
  • Session 'About' — the detail view now shows the session's first real user message under the title, so you can tell what a session was about even when the title is unhelpful. No LLM cost (deterministic first-user-message extraction, synthetic wrappers skipped).
  • Manifest version lockstep: 0.2.0.

Install: chmod +x install.sh && ./install.sh (macOS/Linux) or powershell -ExecutionPolicy Bypass -File .\install.ps1 (Windows). Restart Hermes Desktop once.

CI (Windows PS 5.1 parse + config insertion + idempotency, macOS/Linux install.sh) is green on this tag.

v0.1.0 — Session Analyzer

Choose a tag to compare

@tommulkins tommulkins released this 14 Aug 14:01
b8d7738

Initial release of Session Analyzer, per-session analytics for Hermes Desktop.

Features

  • Session list with load-more (up to 500), live title/id filter, FTS content search with snippets
  • Sort: recent or worst (by failed tool calls, red N-failed badges)
  • Per-session detail: input/output/cache tokens, spend, duration, message count, deterministic summary, tool-call breakdown
  • Expandable failed calls with tool arguments; files touched (writes highlighted)
  • Subagents: model, status (completed/error), summary, duration, API calls, input tokens — click to jump to the subagent's own detail; parent id shown on subagent rows
  • Ask AI: one click opens a new session with a ready-made analysis prompt (clipboard, paste + pick judge model)

Install
macOS/Linux: chmod +x install.sh && ./install.sh
Windows: powershell -ExecutionPolicy Bypass -File .\install.ps1

CI verifies installers on Windows PowerShell 5.1 (parse + config insertion + idempotency) and macOS/Linux.