Skip to content

Releases: amurru/hakase

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:47
7b0aab8

What's Changed

  • feat(cli): add hakase init wizard and actionable first-run errors by @amurru in #99
  • feat(cli): add hakase doctor preflight command by @amurru in #100
  • docs(roadmap): slice Tier 4 install & distribution, defer darwin by @amurru in #102
  • feat(release): add linux arm64 asset and curl|sh installer by @amurru in #103
  • docs: rewrite README quickstart for fast binary onboarding by @amurru in #105
  • feat(prompt-cache): canonical renderer, frozen turn context, append-only assembly (Phase 1) by @amurru in #111
  • fix(session): durable ADK session events visible in-flight (ADK v2.4.0 model contents) by @amurru in #112
  • feat(prompt-cache): context classes + project snapshot decoupling (PC-004/PC-005) by @amurru in #114
  • feat(prompt-cache): single-rewrite compaction + cache telemetry (PC-006/PC-007; resolves #113) by @amurru in #115
  • feat(webui): UX transformation polish across chat, shell, and list views by @amurru in #116
  • Release 0.1.0 by @amurru in #117

Full Changelog: v0.1.0-alpha.10...v0.1.0

v0.1.0-alpha.10

v0.1.0-alpha.10 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 15:20
6212d20

What's Changed

  • feat(finops): live cost meter, budgets, hakase stats (FO-001..FO-005) by @amurru in #82
  • feat(context): implement Context Hygiene (CX-001 to CX-004) by @amurru in #81
  • Implement docs/git-tools/tasks.md T7.x structured git tools by @amurru in #83
  • Fix -race data races in events_test.go and telegram package by @amurru in #84
  • Permissions policy: permissions.json allow/ask/deny per tool+path (PM-001..PM-004, #85) by @amurru in #88
  • fix(security): audit-engine findings H1-H2, M1-M6, L1-L7 by @amurru in #89
  • docs(workflow): add Jules PR prompt part and AGENTS.md hook by @amurru in #91
  • feat(mcp): implement MCP Gateway Phase 1 and Phase 2 (T1.1-T2.3) by @amurru in #92
  • MCP Gateway Phase 3 (T3.1 + T3.2) by @amurru in #95
  • docs(mcp): complete MCP Gateway documentation and QA sign-off by @amurru in #96
  • Release 0.1.0-alpha.10 by @amurru in #97

Full Changelog: v0.1.0-alpha.9...v0.1.0-alpha.10

0.1.0-alpha.9

0.1.0-alpha.9 Pre-release
Pre-release

Choose a tag to compare

@amurru amurru released this 06 Oct 14:04
12d4cab

[0.1.0-alpha.9] - 2026-10-06

Fixed

  • A panicking gate-session probe could wedge every later run. SessionIDFromCtx took the task registry read-lock, called the probed SessionID(), then unlocked — a panicking implementation skipped the unlock while the recover swallowed the panic, leaking the read-lock permanently, after which every run registration blocked forever. The unlock is now deferred. Found by the full package suite: isolated tests passed and only full-suite ordering hung.
  • Pre-existing -race failures filed as #72 (channel router/dispatch test + telegram run test race on fake counters; reproduce on clean develop; normal suite green) — found during Discord T4.2, left out of scope.
  • Two documented knowledge features silently never ran. Since the August package split, SetupRunner plugged the model callbacks into Deps fields nothing reads, while the tools read the knowledge package vars — so search_expansion: true was a quiet no-op (plain BM25, no error) and save_knowledge always used deterministic extraction instead of AI-written summaries/tags/related links. Both now wire directly at startup via a unit-tested helper (the same pattern as the hybrid EmbedFn); the dead Deps fields are deleted so the trap cannot recur, and a bridge regression test pins the path the old suite never exercised (it stubbed the vars directly). Cost note: each agent save_knowledge now makes one model call on the cheapest configured model (worst case ~3k in / ~200 out tokens, sub-cent, saves are rare) — the documented, pre-split behavior, with the deterministic fallback preserved on failure. See docs/knowledge-seams/spec.md KS-001..KS-006.

Added

  • Durable human-in-the-loop resume (opt-in) - a restart (crash, deploy, /restart) while a run is blocked on an approval or clarify gate no longer kills the run: answer the pending prompt after restart and the run continues. durable_resume.enabled: true switches ADK session history to a JSON store under <sessionsDir>/adk/ and records in-flight gate pauses; the classic Runner is unchanged (the ADK graph migration was researched and rejected — see docs/adk-graph-migration/). A clarify answer resumes the paused turn without re-executing any tool; an approval denial settles immediately, while an approval re-drives a fresh turn under a one-shot pre-grant for the exact command — refused when the paused history already holds completed side-effecting calls, since a re-drive would run them twice. Gates are now context-aware too, so /stop unblocks a pending approval instead of waiting out the expiry. The web UI lists interrupted pauses (GET /api/resumable) and re-emits their prompts at startup behind durable_resume.auto_resume_on_startup (prompts answered through the unchanged respond endpoints; stale pauses expire after max_resume_age_minutes, default 30). TUI gates share the mechanism; channel-transport re-emission is a follow-up. See docs/durable-resume/ and #74.

  • Discord channel transport (DM bot over the gateway) - second channel.Channel beside Telegram: DM-only v1 over the gateway websocket (outbound-only, NAT-friendly like Telegram polling) via discordgo v0.29.0 (pure Go, no CGO). Non-privileged intents only (DM content is exempt from MESSAGE_CONTENT, verified in Discord docs); guild messages dropped. Full run lifecycle in DMs (paced status edits ≥5s, chunked 2000-char answers, receipt reactions), approval/clarify buttons over gateway interactions (no public endpoint), all five push events, pairing-code auth in the shared channels.json. channels.discord mirrors telegram config + HAKASE_DISCORD_* env; one Service runs both transports with per-transport trace labels. Text-only v1: attachments declined, voice/threads/guilds/slash-registration deferred. See docs/discord/spec.md DC-001..DC-013.

  • Hybrid knowledge retrieval (embeddings + BM25 via RRF) - opt-in dense retrieval fused with the existing fielded BM25 through Reciprocal Rank Fusion: hybrid_search: true with knowledge_embed_model (e.g. nomic-embed-text on Ollama, text-embedding-3-small on OpenAI; knowledge_embed_base_url overrides the endpoint, defaulting to the primary base_url) routes search_knowledge through HybridSearch, which cosine-ranks every gate-passing note against the query embedding and fuses with BM25 — paraphrase queries recall notes with no token overlap while exact-identifier queries keep BM25 precision. Vectors persist as sidecars (<knowledgedir>/vectors/<slug>.vec.json, validity-gated on note mtime/size + model/dim, lazy batched backfill), so files stay the source of truth with zero new dependencies. Default off: byte-identical search, no network. Runtime endpoint failures degrade to BM25 with a log line (static misconfig fails fast at load); sleep recall and web REST stay BM25-only by design. CLI: knowledge search --hybrid, knowledge bench --hybrid (BM25 vs hybrid tables). See docs/hybrid-retrieval/spec.md HR-001..HR-008.

  • Piper TTS audio provider (generate_audio works) - the existing local Piper TTS (previously Telegram voice replies only) is routed through the media registry as the piper audio provider: audio_provider: piper with a text_to_speech default voice resolves and synthesizes OGG/Opus into the media store (120s default timeout, semaphore, manifest line, <audio controls> snippet). voice selects the per-language voice like Telegram; default stays off with the verbatim actionable message. openai/elevenlabs remain accepted-but-unwired forward-compat. See docs/media-generation/spec.md MG-012.

  • Project-scope hooks with content-hash trust - <project-root>/.hakase/hooks.json layers project PreToolUse / PostToolUse / SessionStart hooks under the user config (user layer runs first; project files can only add hooks, never disable user hooks or the trust gate). Project handlers execute only after explicit per-hook trust (hakase hooks trust [--all] [--yes] [fingerprint-prefix]): the trust key is a content hash over the resolved argv plus local script bytes, so rewriting a script body lapses trust and the hook is skipped loudly until re-trusted. Untrusted hooks never execute — not a warning that proceeds. This deliberately adopts Codex's content-hash model, not Gemini CLI's fingerprint-and-approve (known-broken, gemini-cli#27900).

  • SessionStart hooks - run once per session with stdout/JSON context injected at the head of the first turn (alongside the auto-memory block); empty renders roll back so mid-session trust grants fire later. hakase hooks test <name|prefix> dry-runs any handler with a sample payload and prints the verdict.

  • Hook-config write protection - ~/.hakase/hooks-trust.json joins the sandbox sensitive-files deny list, and agent writes to any */.hakase/hooks.json are denied in path confinement (reads stay allowed). Even if a write landed another way, the trust gate still refuses to execute untrusted hooks.

  • UserPromptSubmit hooks - run on every user prompt with the prompt text in the payload, so hooks can react to content (e.g. inject repo context for test-failure questions); context prepends to the turn, fired once per prompt via a HistoryBuilder slot keyed on message sequence.

  • Hook management without restarts - per-hook "enabled": false skips execution without touching the content fingerprint (toggling never lapses trust), and user-layer edits recompile the live runner in place: hakase hooks add/rm/enable/disable/on/off, POST /api/hooks/user/* + /master behind a full web Hooks page (list, trust, revoke, add/edit forms), and TUI /hooks subcommands (trust --yes with script-preview review, test, add/update/rm/enable/disable/on/off). External CLI edits reach a running server via SIGHUP; trust grants need neither (mtime-cached). See docs/hooks/usage.md.

[0.1.0-alpha.7] - 2026-09-27

Changed

  • Releases are now published as prereleases - every release up to and including v0.1.0-alpha.6 was created without --prerelease, so GitHub treated a 0.x alpha as the latest stable release: /releases/latest resolved to an alpha and upgrade tooling would follow it as though it were stable. New tags are flagged at creation, and v0.1.0-alpha.6 was re-flagged. Consequence: /releases/latest now resolves to the newest stable release rather than the newest alpha, so anything following that redirect - a script, a curl .../releases/latest/... URL, a packaging helper - gets v0.1.0-alpha.5 until a non-prerelease ever ships. Pin a tag or a version instead if you want the current alpha. Nothing in this repository relied on that redirect (the AUR PKGBUILD pins a tag URL), and the flag applies only at creation, so re-running a release for an existing tag will not re-flag it.
  • mermaid 11.16.1 -> 12.0.0, and diagrams now render differently - a deliberate major upgrade, but it carries three changes worth knowing about before you file a bug. useMermaid.ts configures only startOnLoad and securityLevel, so all three of mermaid 12's new defaults apply: (1) the default layout flips from dagre to ELK for flowchart, state, class, ER, requirement and use-case diagrams, which upstream describes as changing how existing diagrams look; (2) the default theme becomes redux-color and the default look neo for ten diagram types including sequence and state, so those change appearance too; (3) the browser floor rises to Safari 17.4+ / ES2024 and Node 22.12+ (mermaid is lazily imported, so this only affects a client that actually renders a diagram, not the rest of the web UI). ELK ships bundled now, so no extra install; its code is fetched only when a diagram uses it, and the tiny build still falls back to dagre. The previous appearance is one line away if it turns out to be unwanted: layout: 'dagre', theme: 'default' and `...
Read more

v0.1.0-alpha.8

v0.1.0-alpha.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 13:45
e5a4c4a

What's Changed

  • chore(aur): bump hakase-bin to 0.1.0.alpha.7 by @amurru in #60
  • perf(agent): cut per-turn prompt cost, stop per-minute cache invalidation, cache MCP tool lists by @amurru in #61
  • Release 0.1.0-alpha.8: dead-MCP-server stall, mcp doctor, 36% smaller prompt by @amurru in #62

Full Changelog: v0.1.0-alpha.7...v0.1.0-alpha.8

v0.1.0-alpha.7

v0.1.0-alpha.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 01:37
ca1f703

What's Changed

  • Post-alpha.6 follow-ups: fix the windows release smoke step, bump the AUR PKGBUILD by @amurru in #54
  • Regenerate .SRCINFO for 0.1.0.alpha.6 by @amurru in #55
  • Close the three post-alpha.6 gaps: dictation fan-out, Telegram model budget, test hermeticity by @amurru in #56
  • chore(deps): bump golang.org/x/oauth2 from 0.36.0 to 0.37.0 in the minor-and-patch group by @dependabot[bot] in #50
  • chore(deps): bump the minor-and-patch group in /webui with 2 updates by @dependabot[bot] in #51
  • chore(deps-dev): bump @types/node from 24.13.3 to 26.6.2 in /webui by @dependabot[bot] in #53
  • chore(deps): bump mermaid from 11.16.1 to 12.0.0 in /webui by @dependabot[bot] in #52
  • Restore main to the alpha.6 state after four dependency bumps landed on it directly by @amurru in #57
  • docs(changelog): record mermaid 12's visible changes by @amurru in #58
  • Release 0.1.0-alpha.7: dictation fan-out, Telegram model budget, prereleases, mermaid 12 by @amurru in #59

Full Changelog: v0.1.0-alpha.6...v0.1.0-alpha.7

v0.1.0-alpha.6

v0.1.0-alpha.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Sep 15:26
66eea8c

What's Changed

  • feat: Visual Execution Canvas (ADK node graph) by @amurru in #9
  • feat(sleep): SkillOpt-Sleep offline skill-evolution loop (plan phases 0-4) by @amurru in #10
  • feat(webui): message navigation rail for chat sessions by @amurru in #11
  • chore: sync develop into main (persistence, sandbox, provider fallback, CI, docs) by @amurru in #23
  • fix: make the Go test suite pass on Windows (first CI run follow-up) by @amurru in #37
  • Agent-written auto-memory (#16) + MCP 2026-07-28 upgrade (#17) by @amurru in #35
  • chore: sync develop into main (darwin builds, darwin CI, CodeQL security fixes) by @amurru in #41
  • test(web) unpin x/time, chore(deps) ignore typescript majors by @amurru in #42
  • chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #24
  • chore(deps): bump actions/setup-go from 5 to 7 by @dependabot[bot] in #25
  • chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #26
  • chore(deps): bump pnpm/action-setup from 4 to 6 by @dependabot[bot] in #28
  • chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #27
  • chore(deps): bump the minor-and-patch group across 1 directory with 14 updates by @dependabot[bot] in #40
  • chore(deps): bump the minor-and-patch group across 1 directory with 15 updates by @dependabot[bot] in #30
  • chore(deps-dev): bump vitest from 4.1.11 to 5.0.1 in /webui by @dependabot[bot] in #31
  • chore(deps): bump vue-router from 4.6.4 to 5.3.1 in /webui by @dependabot[bot] in #34
  • chore(deps): bump @vueuse/core from 14.4.0 to 15.0.0 in /webui by @dependabot[bot] in #33
  • fix(mcp): scheme-gate the OAuth browser opener; fix(config): strict HAKASE_* env overrides by @amurru in #43
  • Voice notes (whisper.cpp in / Piper out), session rewind, OTel GenAI tracing by @amurru in #44
  • feat(webui): add voice dictation support via local whisper STT by @amurru in #47
  • feat(mcp): hakase runs as MCP tools via 'mcp serve --agent' (#45) by @amurru in #46
  • refactor: move STT and TTS config to top-level Config by @amurru in #48
  • Release 0.1.0-alpha.6: MCP server mode, voice in/out, OTel tracing, auto-memory, session rewind, canvas by @amurru in #49

New Contributors

Full Changelog: v0.1.0-alpha.5...v0.1.0-alpha.6

v0.1.0-alpha.5

Choose a tag to compare

@github-actions github-actions released this 07 Sep 14:03
8abdcd1

What's Changed

  • Git tools, project registry & web project management by @amurru in #6
  • fix(deps): bump grpc to v1.83.1 (CVE-2026-84304, DoS via HTTP/2 frame… by @amurru in #7
  • Telegram channels, git tools + project registry, keyless web search fallback, session management by @amurru in #8

Full Changelog: v0.1.0-alpha.4...v0.1.0-alpha.5

v0.1.0-alpha.4

Choose a tag to compare

@github-actions github-actions released this 31 Aug 00:46
e5eb857

What's Changed

  • Sidekick second-model advisor, web slash-command palette, and /compact endpoint by @amurru in #4
  • feat: native Windows port (Path A) + any-browser MCP presets by @amurru in #5

Full Changelog: v0.1.0-alpha.3...v0.1.0-alpha.4

v0.1.0-alpha.3

Choose a tag to compare

@github-actions github-actions released this 23 Aug 22:50
b11a6cc

v0.1.0-alpha.2

Choose a tag to compare

@github-actions github-actions released this 23 Aug 19:11
91f4b8c