Skip to content

Releases: iiTzSenn/Sens

v0.8.0 — dynamic CLI command suggestions

Choose a tag to compare

@iiTzSenn iiTzSenn released this 09 Jul 10:49

Added

  • Dynamic command suggestions — every query command now ends with context-aware
    next steps, with your own argument spliced in: after find login it suggests
    sens who login / sens explain login; after dead-code it points at
    sens who <candidate> to confirm before deleting. When a query finds nothing, the
    suggestions turn into help instead of a dead end (e.g. find with no match nudges you
    to sens exists <keywords> or to reindex). Terminal-only — nothing here reaches the
    model over MCP or the hook.

v0.7.0 — redesigned CLI, agent logos, shareable dashboard

Choose a tag to compare

@iiTzSenn iiTzSenn released this 09 Jul 10:30

Added

  • Shareable dashboardsens dashboard now prints Local / Network / Public URLs
    (Vite-style) with a scannable QR code. --host exposes it on your LAN; --tunnel
    creates a public URL via cloudflared or ngrok if either is installed — and when
    neither is found, prints a "How to install" line with clickable links to their
    official pages. Both are opt-in and guarded by an access token in the link, since the
    dashboard can write your config; by default it stays bound to localhost.

Changed

  • Redesigned terminal UI — every command now shares one modern look, modeled on
    Claude Code / gh / Vercel CLIs: a consistent sens › <command> header, a braille
    spinner with live status while indexing (resolving to / in place), 2-space
    hierarchy with meaningful glyphs (● ○ › → ⎿), thin separators, rounded summary
    boxes, and color that carries meaning (green ok, red error, yellow warning, gray for
    paths/counts/timings) around a single brand accent. Errors are now a single clear line
    with an optional hint — no raw stack traces unless you pass --verbose. All output is
    centralized in one module (src/cli/ui.ts) so the commands stay visually identical.
    Crucially, this styling is terminal-only: the MCP server and the answering hook
    still return plain text, so nothing here changes (or bloats) what the model reads.
    Internally, picocolors was replaced by chalk + ora + boxen.

v0.6.0 — modular rules at session start, multi-agent init, dashboard rules manager

Choose a tag to compare

@iiTzSenn iiTzSenn released this 09 Jul 09:36

Added

  • Modular working rules — the rules are now composable modules (search-first, minimal, no-orphans, optimization, plus opt-in error-handling and testing). A project enables/disables modules or adds its own in sens.config.json; sens rules --list shows the state of each.
  • Rules applied automatically at session startsens init now also wires a SessionStart hook that injects the active rules at the start of every Claude Code session, so they are in force without the model having to load anything.
  • Multi-agent setupsens init --agent codex|copilot|cursor|all writes the sens usage guide + active rules into that agent's instructions file (AGENTS.md, .github/copilot-instructions.md, .cursorrules), between markers so re-running just refreshes the block. --agent claude (default) still installs the skill + hooks.
  • Dashboard rules manager — a "Working rules" panel to view every module, toggle it on or off, and add or remove your own rules, persisted to sens.config.json.

npm: npm i -g sens-mcp@0.6.0 · Full changelog in CHANGELOG.md

v0.5.0 — sens init, an answering hook, and a skill

Choose a tag to compare

@iiTzSenn iiTzSenn released this 08 Jul 15:46

Added

  • sens init — one command to set sens up in a project: builds the index, installs the skill into .claude/skills/sens/, and wires the PreToolUse hook into .claude/settings.json (merging, never clobbering existing settings). This is the recommended setup path; the MCP server stays available for hosts that only speak MCP.
  • Skill — sens now ships as a Claude Code skill (sens skill prints it, or --write installs it). Unlike the always-loaded MCP tool schemas, a skill's guidance only enters context when relevant, so it costs no tokens on turns that don't touch code. It is composed from the same working rules as sens rules.

Improved

  • The hook now answers, not just nudges. When the model is about to grep for a symbol sens knows, the hook substitutes the grep and returns the full who_uses result; a Read of an indexed file gets that file's outline injected; anything sens can't answer falls back to a one-line reminder.
  • One shared query path (runQuery) now backs the CLI, the MCP server and the hook, so usage logging and output formatting are identical across all three — and sens usage records CLI- and hook-driven calls too, not only MCP.

Fixed

  • sens --version reported a hard-coded 0.0.1 regardless of the real version; it now derives from package.json at build time and tracks npm version.

npm: npm i -g sens-mcp@0.5.0 · Full changelog in CHANGELOG.md

v0.4.0 — symbol call graph (explain/path), nudge hook, graph export

Choose a tag to compare

@iiTzSenn iiTzSenn released this 08 Jul 13:03

Added

  • Symbol-level call graph — references now record their caller (the symbol whose body contains each use), turning the flat usage list into a real call/reference graph. Two new queries expose it: explain (a symbol's callers and callees in one call) and path (the shortest chain of calls connecting two symbols). Available as CLI commands (sens explain, sens path) and MCP tools (explain_symbol, symbol_path); who_uses now also shows which symbol each use sits in.
  • Nudge hooksens hook is a PreToolUse hook that gently reminds the model to reach for sens (find_symbol, file_outline, explain_symbol, …) before it greps or reads whole files. Fires at most once per session per tool and stays silent on non-source files.
  • Graph export — the dashboard can export the dependency graph to GEXF, GraphML, DOT, JSON and a CSV edge list via /api/export, so it opens in Gephi, yEd, Cytoscape or Graphviz.

Improved

  • Faster queries — the query engine builds its name/file/id lookups, the import adjacency and the call graph once up front (O(1) lookups), and the engine is memoized per project so repeated MCP calls skip re-reading and re-parsing the index from disk.

npm: npm i -g sens-mcp@0.4.0 · Full changelog in CHANGELOG.md

v0.2.0 — 10 languages, working rules, usage log, smarter dead code

Choose a tag to compare

@iiTzSenn iiTzSenn released this 07 Jul 16:58

✨ Highlights

10 more languages

Beyond JavaScript/TypeScript, Sens now indexes Python, Go, Rust, Java, C#, C, C++, PHP, Ruby and Kotlin via tree-sitter. A mixed repo (e.g. a TS frontend + a Python or Go backend) is indexed as a single project. Adding a language is now a small self-contained parser under src/indexer/languages/.

Working rules the model follows

The MCP server now hands the model a concrete set of coding rules — reuse what exists instead of duplicating, leave no orphan code, keep it minimal but maintainable — each tied to the Sens tool that lets it verify the rule. They load automatically over MCP; you can also print them with sens rules or inject them with the /sens rules prompt.

Know it's actually being used

Every MCP tool call is now recorded to .sens/usage.jsonl. Run sens usage to see exactly which tools the model called, when, and with what arguments — proof, not faith.

Smarter dead_code

dead_code no longer flags code that is used but was invisible to static analysis:

  • dynamic import("./x")
  • export * from "./y" barrels and named re-exports
  • names referenced via string / reflective access (obj["name"], registries)
  • the same, for quoted names in the tree-sitter languages

📦 Install

npx sens-mcp@0.2.0 mcp          # run the MCP server
# or add to .mcp.json:  { "command": "npx", "args": ["-y", "sens-mcp", "mcp"] }

⚠️ Notes

  • Swift is intentionally not included: its tree-sitter grammar crashes Node's WASM teardown. Every other listed language is fully supported.
  • The on-disk index schema was bumped — caches rebuild automatically on first run after upgrading.

Full changelog: 0.1.0...v0.2.0