Releases: Luis85/claudian
Release list
4.0.0
What's Changed
- chore(release): 4.0.0
- feat(tasks): roster agents in templates + "Add to work order" context menu (#123)
- feat(tasks): edit work-order bodies inline in the Agent Board modal
- feat(tasks): agent-loops library for work orders (#119)
- docs(product): add Agent Roster feature doc
- fix(header): don't truncate the bound-agent chip when the row has space
- docs(tech-debt): record HTTP-tier grant scoping Phase 1 shipped
- fix(agents): provider-gate bound model; thread tool grant to Opencode/Cursor (P1b)
- feat(tools): grant-scope the HTTP tool server by bearer token (Phase 1a)
- fix(skills): invalidate skill cache after direct Library writes
- docs(tools): clarify per-token vs per-conversation scoping guarantee
- docs(tools): spec for HTTP tool-tier grant scoping
- fix(claude): include bound-agent prompt in persistent-query config key
- polish(ui): UX cleanups across roster, libraries, and chips
- style(library): give the shared name-button class a chrome reset
- docs(tech-debt): mark resolved roster follow-ups; record deferrals
- a11y(chat): roving tabindex for the tab strip
- refactor(agents): unify roster view onto shared library shell/card
- i18n(app): localize view titles, ribbon tooltips, command names
- docs(agents): note tool-grant scope divergence in roster UI
- fix(tools): drain in-flight HTTP tool calls before rebuild
- fix(storage): atomic temp+rename writes for JSON config stores
- a11y(agents): mark card + detail-header avatars decorative
- a11y(chat): mark the tab-badge container as role=tablist
- docs(tech-debt): record agent-subsystem improvement-pass deferrals
- a11y(chat): keyboard-operable header buttons + tab badges, ARIA states
- a11y(agents): label inputs, announce states, fix card semantics + picker ARIA
- feat(agents): defer new-agent persistence; loading states; binding hint
- fix(agents): remove projected provider files when a roster agent is deleted
- feat(agents): apply granted skills to bound chats via the bound prompt
- feat(agents): render per-agent icons + icon picker
- harden(tools): atomic+serialized tool-registry load; log roster/projection failures
- refactor(agents): extract tested tool-scoping + provider-resolution helpers
- fix(i18n): correct interpolation, drop dead keys, tidy agent copy
- docs(plan): agent subsystem improvement pass (5-lens review)
- feat(chat): stack the header into a title row + agent/git meta row
- refactor(chat): split TabBar.renderBadge to clear critical complexity
- feat(chat): slim the bound-agent header chip and let the header breathe
- feat(chat): mark agent-bound chat tabs with a badge glyph
- docs(plan): chat header declutter + agent-bound indicators
- docs(spec): chat header declutter + agent-bound indicators
- polish(agents): clearer discard label, header card, save-safe start chat
- style(agents): detail-editor cards, profile header, sticky footer
- feat(agents): extract AgentDetailEditor with card layout + pickers
- feat(agents): reusable collapsible CapabilityPicker
- feat(agents): isRosterAgentDirty for unsaved-change tracking
- i18n(agents): add detail-editor picker + save keys
- docs(plan): agent detail page overhaul implementation plan
- docs(spec): agent detail page overhaul design
- polish(libraries): richer empty states, a11y focus, and card refinements
- docs(tech-debt): record the three deferred hardening decisions
- harden(ui): surface library/roster action failures and fix modal polish
- fix(tasks): resolve work-order personas synchronously from a preloaded roster
- fix(claude): re-apply the claudian tool server when its scoped set changes
- harden(agents): sanitize roster fields before provider projection
- harden(tools): bound user-tool handlers and validate tool names
- fix(skills): require sourced outcome metric/target in framing
- docs(skills): re-run impact-map GREEN after metric hardening (COMPLY)
- docs: add usability to the skill-catalog assumption-map summary
- docs(skills): re-run assumption-map GREEN with usability (COMPLY)
- docs: add usability to the arc-summary assumption categories
- fix(skills): confirm impact-map metric with stakeholders, not just target
- fix(skills): include usability in the feasibility-only common-mistake fix
- fix(skills): add usability to assumption-mapping risk categories
- fix(tasks): drop the redundant "Agent:" prefix from the work-order agent picker
- docs: carry named-human-source gate into the methodology note
- docs(skills): re-run synthesis/JTBD/prioritization GREEN cases (all COMPLY)
- docs(skills): record impact/journey GREEN re-runs (both COMPLY)
- fix(skills): require sourced targets/assumptions in impact + journey maps
- test(skills): re-run persona/NFR GREEN cases; strengthen both skills
- docs(skills): add reproducible RED/GREEN scenarios to evaluation artifact
- docs(skills): align with trigger-only description rule; conditional persona quote
- feat(libraries): rename in editor modals, hide view title bar, cross-library nav
- test(skills): RED/GREEN-harden the discovery skills + address review
- fix(skills): correct riskiest-assumption quadrant axis direction
- docs: add product-discovery agent-skill baseline + research
- feat(libraries): edit tools and skills in a dedicated modal (dot-folder fix)
- feat(agents): project roster agents into provider-native subagent folders
- feat(agents): make bound-agent persona a forceful leading directive (Cursor fix)
- fix(tasks): keep TaskRunCoordinator.run() reservation synchronous
- feat(libraries): overhaul Tool + Skill libraries with create/edit/delete + roster links
- feat(agents): work-orders adopt agent provider/model; new-tab agent chat; library ribbons
- fix(agents): resolve an enabled provider for agent chats; polish the bound-agent chip
- feat(agents): overhaul the Agent Roster UI with provider/model, avatars, roles
- fix(agents): de-dupe bound-agent chip, provider-aware start chat, populate WO agent picker
- feat(agents): scope user tools to a bound agent's grant (Claude)
- docs: update roster follow-ups (avatars/i18n/signal/coverage shipped; enforcement fork)
- feat(tools): wire per-request abort signal into tool host; localize library views
- feat(agents): render roster-agent avatars on the board and detail modal
- feat(agents): add installable starter agent definitions to the roster
- docs: mark non-Claude bound-agent projection shipped
- chore(ci): update LOC and quality baselines for bound-agent prompt changes
- feat(opencode): append bound agent prompt to ACP prompt blocks each turn
- feat(cursor): append bound agent prompt as delimited section in CLI prompt
- feat(codex): thread bound agent system prompt into CodexChatRuntime.query
- feat(chat): fold boundAgentModel into queryOptions.model for non-Claude providers
- docs: update followups (cursor tools + work-order assignment shipped)
- feat(cursor): wire HTTP MCP tool server pre-spawn via writeCursorMcpConfig (Slice 3)
- feat(cursor): add cursorMcpConfig helper and unit tests (Slice 3)
- feat(tasks/chat): thread boundAgentId from work-order through to createConversation (Slice 2B)
- feat(tasks/agents): add roster agents to work-order agent picker (Slice 2A)
- feat(T3): add Start-chat button to each agent roster card
- feat(T2): bound-agent chip in chat header with unbind action
- fix(T1): use ensureViewOpen in openConversation to fix race after activateView
- docs: design spec for wiring the agent roster (chat usability, work-orders, cursor)
- docs: mark cross-provider tools partial (HTTP tier + Opencode shipped)
- test(tools): cover HTTP MCP server bearer-auth reject + constant-time compare
- feat(tools): expose user tools to Opencode via in-process HTTP MCP server
- docs: design spec for in-process HTTP MCP tool tier (replaces stdio)
- docs: mark roster->run chat binding shipped in tech-debt followups
- fix(claude): keep bound-agent model across persistent turns
- chore: bump complexFunctions baseline 235 -> 236
- refactor(agents): keep core free of features import for bound-agent resolution
- chore: update LOC baseline for ClaudeChatRuntime, InputController, main
- feat(roster-view): add Start chat button and use shared agentRosterStore
- feat(input): resolve bound-agent query options at send time
- feat(claude-runtime): thread boundAgentPrompt/Model into query contexts
- i18n: add agentRoster.startChat key to all 10 locales
- feat(agents): thread boundAgentPrompt/boundAgentModel into ClaudeQueryOptionsBuilder
- feat(agents): add boundAgentPrompt/boundAgentModel to ChatRuntimeQueryOptions
- feat(agents): persist and hydrate boundAgentId through conversation storage
- feat(agents): add boundAgentId to Conversation and SessionMetadata types
- docs: design spec for roster->run chat binding (MVP: prompt + model)
- chore: bump ClaudeChatRuntime LOC ceiling 1602 -> 1605
- feat(claude): keep user tools available across the persistent query
- docs: record increment-1 follow-ups (tech-debt)
- fix(agents): prevent duplicate-slug overwrite when creating agents
- test: fix CI guards for new views (LOC ceiling, coverage)
- fix(views): reveal existing leaf when opening roster/tool/skill views
- feat: wire roster store, tool registry, three views, and Claude tool server
- feat(skills): Skill Library view over the vault skill aggregator
- feat(tools): Tool Library view (list, scaffold, reload, errors)
- feat(agents): Agent Roster view with tool/skill pickers
- feat(skills): skill library row mapper
- refactor(tools): address Part B review (typed cast, comments, handler test)
- chore(tools): fix lint (import order, no-global-this) and reduce validateModule complexity
- feat(claude): merge in-process Claudian tool MCP server into query options
- feat(tools): in-process Claude SDK MCP server from registry
- feat(tools): ClaudianToolRegistry discover/transpile/validate
- feat(tools): runtime TS->CJS transpile via sucrase
- feat(tools): ClaudianTool manifest+handler types
- refactor(agents): address Part A review (drop redundant ensureFolder, guard delete emit)
...
claudian-cursor-final
What's Changed
- docs(brain): keep the Brain visible — lessons live in a visible vault folder
- docs: add Brain scheduler & lesson publishing design
- docs(product): add Brain feature overview
- docs(spec): design for the Brain service (consume signals -> lessons -> inject)
- docs(spec): design for implicit interaction-signal capture
- docs(spec): design for feedback signal capture (thumbs -> persisted signal)
- docs(research): deepen Brain research on feedback signals (§5.8)
- docs(research): add Brain self-improving-memory feature research
Full Changelog: 4.0.0...claudian-cursor-final
3.5.0
What's Changed
- Feat/capture prompt as quick action by @Luis85 in #32
- docs(ideas): add GitHub Copilot provider idea note by @Luis85 in #33
- feat(tasks): WO card right-click quick actions by @Luis85 in #36
- Add frontend design quick actions by @Luis85 in #37
- Overhaul Claudian right-click menu order by @Luis85 in #38
- feat(tasks): work-order queue runner for the Agent Board by @Luis85 in #34
- feat(quickActions): quick-action + skill usage leaderboard by @Luis85 in #39
- feat(tasks): work-order execution — live visibility + inline protocols by @Luis85 in #35
- fix(tasks): repair Agent Board queue workflow by @Luis85 in #40
- [codex] Design and plan Orchestrator feature removal by @Luis85 in #41
- [codex] remove orchestrator feature by @Luis85 in #42
Full Changelog: 3.4.0...3.5.0
3.4.0
What's Changed
- chore(cursor): integration hardening PR1 (cold paths + tests) by @Luis85 in #24
- docs(review): comprehensive improvement proposal (2026-06-03) by @Luis85 in #25
- refactor(core): outcome-typed ProviderConversationHistoryService + BaseHistoryService by @Luis85 in #26
- docs(plan): mark history-service-contract shipped (PR #26) by @Luis85 in #28
- SEC-A: provider + MCP secrets into Obsidian SecretStorage (Phases 0–4, complete) by @Luis85 in #27
- feat(tasks): prompt commit & push on Work-Order Accept by @Luis85 in #31
- feat(quickActions): favorites in right-click menu by @Luis85 in #29
- docs: Specorator Agent Harness PRD — the v1 roadmap to a trustworthy vault agent for everyone by @Luis85 in #30
Full Changelog: 3.2.0...3.4.0
3.2.0
3.1.0
What's Changed
- Codebase hardening: stability, security, performance, architecture (Phase 0 → Phase 2 r3) by @Luis85 in #9
- Awaitable cleanup on provider switch + SEC-2 vault-trust gate by @Luis85 in #11
- ConversationStore extraction (ARCH-3) + curated env for live MCP spawns (SEC-4) by @Luis85 in #12
- Split the Tab.ts god file into co-located modules (ARCH-5a) by @Luis85 in #13
- Extract QueuedMessageController from InputController (ARCH-5b) by @Luis85 in #14
- Extract provider-neutral stream projection from StreamController (ARCH-6) by @Luis85 in #15
- perf(chat): cap rendered message history with a load-earlier control by @Luis85 in #17
- docs(adr): transport-agnostic provider seam by @Luis85 in #19
- test(perf): add report-only performance monitoring suite by @Luis85 in #18
- Cleanup: localize steer notice, drop dead delegate, lock applier order by @Luis85 in #16
- docs(adr): revise 0001 after four-pass design review by @Luis85 in #20
- docs: reconcile plugin-improvement proposal with landed work by @Luis85 in #21
Full Changelog: 3.0.0...3.1.0
3.0.0
2.9.0
2.8.0
2.7.1
Cursor integration: real-catalog model picker
The Cursor model picker and per-family mode dropdown now match the live cursor-agent --list-models output. Previously the single-step family resolver collapsed only one trailing token, so multi-suffix ids (e.g. claude-opus-4-7-thinking-low-fast, gpt-5.5-extra-high-fast, claude-4.6-opus-max-thinking) ended up as their own pseudo-families and the mode dropdown was missing most variants. After this release the chat sidebar shows 25 clean families with rich, runnable mode lists.
Fixes
- Iterative family resolver with strong tokens (
none/low/medium/high/xhigh/thinking/fast) and the multi-tokenextra-high.maxis treated as a weak token that only strips when its candidate base has other strong-mode siblings, soclaude-opus-4-7-maxcollapses into the Claude Opus family whilegpt-5.1-codex-maxkeeps its own family. - Standard-mode safety: a family's mode dropdown only includes
Standardwhen the bare family id is itself a real model. Picking a family without a bare id now defaults to the first runnable variant, so the runtime never sends a--modelvalue the CLI rejects (the previous default would have spawned--model claude-opus-4-7which Cursor refuses). - Compound mode UX: labels render as space-separated title case (
Thinking Low Fast,Extra High Fast); the dropdown sorts non-thinking variants first, then by effort, withfastlast. - Parser hardened: drops the trailing
Tip:footer line that previously leaked into the cached catalog as a phantom model id, prefers the explicit-separator from the native<id> - <label>format, and tightens the id pattern so trailing punctuation cannot survive. - Stale
effortLevelrepaired: when the persisted mode is no longer valid for the selected family,resolveCursorModelSelectionForClifalls back to the first runnable variant instead of producing an invalid CLI invocation. - Label polish: dotted version numbers (
Composer 2.5,Kimi K2.5,Grok Build 0.1) are preserved, and the GPT/Gemini/Grok formatters keep size and qualifier tails so the picker no longer collides on lookalike names (GPT-5.4 MinivsGPT-5.4 NanovsGPT-5.4,GPT-5.1 Codex MaxvsGPT-5.1 Codex Mini). Kimi K2.5 moves out of the OpenAI vendor bucket.
Tests
A real-catalog fixture (tests/fixtures/providers/cursor/realCatalog.ts) and 14 new tests pin the 25 families and key compound-mode shapes, so any future change in Cursor's id taxonomy fails this suite loudly instead of silently degrading the picker.
Also in this release
Full Changelog: 2.7.0...2.7.1