Skip to content

chore: release v0.22.0#1601

Merged
henrypark133 merged 1 commit intomainfrom
release-plz-2026-03-23T19-05-30Z
Mar 25, 2026
Merged

chore: release v0.22.0#1601
henrypark133 merged 1 commit intomainfrom
release-plz-2026-03-23T19-05-30Z

Conversation

@ironclaw-ci
Copy link
Copy Markdown
Contributor

@ironclaw-ci ironclaw-ci bot commented Mar 23, 2026

🤖 New release

  • ironclaw: 0.21.0 -> 0.22.0 (⚠ API breaking changes)

ironclaw breaking changes

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field GatewayConfig.workspace_read_scopes in /tmp/.tmpTtPA3F/ironclaw/src/config/channels.rs:54
  field GatewayConfig.memory_layers in /tmp/.tmpTtPA3F/ironclaw/src/config/channels.rs:56
  field GatewayConfig.user_tokens in /tmp/.tmpTtPA3F/ironclaw/src/config/channels.rs:60
  field GatewayState.workspace_pool in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/server.rs:331
  field GatewayState.owner_id in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/server.rs:349
  field GatewayState.default_sender_id in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/server.rs:351
  field GatewayState.webhook_rate_limiter in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/server.rs:369
  field MemoryWriteResponse.redirected in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:184
  field MemoryWriteResponse.actual_layer in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:188
  field OrchestratorState.job_owner_cache in /tmp/.tmpTtPA3F/ironclaw/src/orchestrator/api.rs:56
  field TurnToolCall.rationale in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:775
  field TurnToolCall.tool_call_id in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:778
  field ToolCall.reasoning in /tmp/.tmpTtPA3F/ironclaw/src/llm/provider.rs:237
  field ConfigureResult.restart_required in /tmp/.tmpTtPA3F/ironclaw/src/extensions/mod.rs:474
  field TurnInfo.narrative in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:68
  field ActionResponse.needs_restart in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:439
  field Settings.profile_onboarding_completed in /tmp/.tmpTtPA3F/ironclaw/src/settings.rs:115
  field ToolCallInfo.rationale in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:82
  field PendingOAuthFlow.sse_manager in /tmp/.tmpTtPA3F/ironclaw/src/cli/oauth_defaults.rs:475
  field BootInfo.startup_elapsed in /tmp/.tmpTtPA3F/ironclaw/src/boot_screen.rs:36
  field AgentDeps.sandbox_readiness in /tmp/.tmpTtPA3F/ironclaw/src/agent/agent_loop.rs:179
  field AgentDeps.llm_backend in /tmp/.tmpTtPA3F/ironclaw/src/agent/agent_loop.rs:184
  field Thread.pending_messages in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:227
  field Thread.pending_messages in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:227
  field ExtensionSetupRequest.fields in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:418
  field Turn.narrative in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:614
  field Turn.narrative in /tmp/.tmpTtPA3F/ironclaw/src/agent/session.rs:614
  field SetupConfig.steps in /tmp/.tmpTtPA3F/ironclaw/src/setup/wizard.rs:88
  field LlmConfig.gemini_oauth in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:169
  field LlmConfig.openai_codex in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:171
  field LlmConfig.gemini_oauth in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:169
  field LlmConfig.openai_codex in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:171
  field LlmConfig.gemini_oauth in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:169
  field LlmConfig.openai_codex in /tmp/.tmpTtPA3F/ironclaw/src/llm/config.rs:171
  field Config.workspace in /tmp/.tmpTtPA3F/ironclaw/src/config/mod.rs:103
  field Config.workspace in /tmp/.tmpTtPA3F/ironclaw/src/config/mod.rs:103
  field Config.workspace in /tmp/.tmpTtPA3F/ironclaw/src/config/mod.rs:103
  field MemoryWriteRequest.layer in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:167
  field MemoryWriteRequest.append in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:171
  field MemoryWriteRequest.force in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:174
  field ExtensionSetupResponse.fields in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/types.rs:388
  field OAuthRefreshConfig.exchange_proxy_url in /tmp/.tmpTtPA3F/ironclaw/src/tools/wasm/wrapper.rs:64
  field OAuthRefreshConfig.gateway_token in /tmp/.tmpTtPA3F/ironclaw/src/tools/wasm/wrapper.rs:66

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_missing.ron

Failed in:
  enum ironclaw::transcription::TranscriptionError, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/mod.rs:59
  enum ironclaw::channels::web::types::SseEvent, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/types.rs:121
  enum ironclaw::transcription::AudioFormat, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/mod.rs:17

--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant Trigger::Manual 3 -> 4 in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine.rs:90
  variant Trigger::Manual 3 -> 4 in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine.rs:90
  variant RoutineError::MaxConcurrent 8 -> 9 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:392
  variant RoutineError::Database 9 -> 10 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:395
  variant RoutineError::LlmFailed 10 -> 11 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:398
  variant RoutineError::JobDispatchFailed 11 -> 12 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:401
  variant RoutineError::EmptyResponse 12 -> 13 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:404
  variant RoutineError::TruncatedResponse 13 -> 14 in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:407

--- failure enum_struct_variant_field_added: pub enum struct variant field added ---

Description:
An enum's exhaustive struct variant has a new field, which has to be included when constructing or matching on this variant.
        ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_struct_variant_field_added.ron

Failed in:
  field user of variant ToolCommand::Info in /tmp/.tmpTtPA3F/ironclaw/src/cli/tool.rs:86
  field step of variant Command::Onboard in /tmp/.tmpTtPA3F/ironclaw/src/cli/mod.rs:130

--- failure enum_struct_variant_field_missing: pub enum struct variant's field removed or renamed ---

Description:
A publicly-visible enum has a struct variant whose field is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_struct_variant_field_missing.ron

Failed in:
  field tool_permissions of variant RoutineAction::FullJob, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/agent/routine.rs:242
  field tool_permissions of variant RoutineAction::FullJob, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/agent/routine.rs:242

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_variant_added.ron

Failed in:
  variant StatusUpdate:ReasoningUpdate in /tmp/.tmpTtPA3F/ironclaw/src/channels/channel.rs:346
  variant StatusUpdate:TurnCost in /tmp/.tmpTtPA3F/ironclaw/src/channels/channel.rs:353
  variant ProviderProtocol:GithubCopilot in /tmp/.tmpTtPA3F/ironclaw/src/llm/registry.rs:41
  variant ProviderProtocol:GithubCopilot in /tmp/.tmpTtPA3F/ironclaw/src/llm/registry.rs:41
  variant ToolError:AutonomousUnavailable in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:172
  variant WorkspaceError:LayerNotFound in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:308
  variant WorkspaceError:LayerReadOnly in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:311
  variant WorkspaceError:PrivacyRedirectFailed in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:314
  variant WorkspaceError:InjectionRejected in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:317
  variant RoutineError:Cooldown in /tmp/.tmpTtPA3F/ironclaw/src/error.rs:389
  variant Trigger:Webhook in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine.rs:83
  variant Trigger:Webhook in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine.rs:83
  variant Command:Hooks in /tmp/.tmpTtPA3F/ironclaw/src/cli/mod.rs:220
  variant Command:Models in /tmp/.tmpTtPA3F/ironclaw/src/cli/mod.rs:228
  variant Command:Login in /tmp/.tmpTtPA3F/ironclaw/src/cli/mod.rs:272

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_missing.ron

Failed in:
  function ironclaw::agent::routine::parse_tool_permissions, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/agent/routine.rs:268

--- failure function_parameter_count_changed: pub fn parameter count changed ---

Description:
A publicly-visible function now takes a different number of parameters.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_parameter_count_changed.ron

Failed in:
  ironclaw::channels::web::ws::handle_ws_connection now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/ws.rs:65
  ironclaw::channels::web::openai_compat::chat_completions_handler now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/openai_compat.rs:465
  ironclaw::channels::web::server::clear_auth_mode now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/server.rs:1536

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/inherent_method_missing.ron

Failed in:
  SseManager::from_sender, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/sse.rs:48
  SseManager::sender, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/sse.rs:63
  WsServerMessage::from_sse_event, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/types.rs:740

--- failure method_parameter_count_changed: pub method parameter count changed ---

Description:
A publicly-visible method now takes a different number of parameters, not counting the receiver (self) parameter.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/method_parameter_count_changed.ron

Failed in:
  ironclaw::channels::web::sse::SseManager::subscribe_raw now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/sse.rs:108
  ironclaw::channels::web::sse::SseManager::subscribe now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/channels/web/sse.rs:153
  ironclaw::extensions::manager::ExtensionManager::is_relay_channel now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:880
  ironclaw::extensions::manager::ExtensionManager::restore_relay_channels now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:903
  ironclaw::extensions::manager::ExtensionManager::load_persisted_active_channels now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:993
  ironclaw::extensions::manager::ExtensionManager::install now takes 4 parameters instead of 3, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1160
  ironclaw::extensions::manager::ExtensionManager::auth now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1214
  ironclaw::extensions::manager::ExtensionManager::activate now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1230
  ironclaw::extensions::manager::ExtensionManager::list now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1250
  ironclaw::extensions::manager::ExtensionManager::remove now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1485
  ironclaw::extensions::manager::ExtensionManager::upgrade now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1672
  ironclaw::extensions::manager::ExtensionManager::extension_info now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1871
  ironclaw::extensions::manager::ExtensionManager::activate_stored_relay now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4328
  ironclaw::extensions::manager::ExtensionManager::get_setup_schema now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4505
  ironclaw::extensions::manager::ExtensionManager::configure now takes 4 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4929
  ironclaw::extensions::manager::ExtensionManager::configure_token now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:5341
  ironclaw::extensions::ExtensionManager::is_relay_channel now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:880
  ironclaw::extensions::ExtensionManager::restore_relay_channels now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:903
  ironclaw::extensions::ExtensionManager::load_persisted_active_channels now takes 1 parameters instead of 0, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:993
  ironclaw::extensions::ExtensionManager::install now takes 4 parameters instead of 3, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1160
  ironclaw::extensions::ExtensionManager::auth now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1214
  ironclaw::extensions::ExtensionManager::activate now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1230
  ironclaw::extensions::ExtensionManager::list now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1250
  ironclaw::extensions::ExtensionManager::remove now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1485
  ironclaw::extensions::ExtensionManager::upgrade now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1672
  ironclaw::extensions::ExtensionManager::extension_info now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:1871
  ironclaw::extensions::ExtensionManager::activate_stored_relay now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4328
  ironclaw::extensions::ExtensionManager::get_setup_schema now takes 2 parameters instead of 1, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4505
  ironclaw::extensions::ExtensionManager::configure now takes 4 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:4929
  ironclaw::extensions::ExtensionManager::configure_token now takes 3 parameters instead of 2, in /tmp/.tmpTtPA3F/ironclaw/src/extensions/manager.rs:5341
  ironclaw::agent::Scheduler::new now takes 5 parameters instead of 7, in /tmp/.tmpTtPA3F/ironclaw/src/agent/scheduler.rs:81
  ironclaw::agent::routine_engine::RoutineEngine::new now takes 10 parameters instead of 8, in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine_engine.rs:129
  ironclaw::agent::routine_engine::RoutineEngine::check_event_triggers now takes 2 parameters instead of 3, in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine_engine.rs:210
  ironclaw::agent::RoutineEngine::new now takes 10 parameters instead of 8, in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine_engine.rs:129
  ironclaw::agent::RoutineEngine::check_event_triggers now takes 2 parameters instead of 3, in /tmp/.tmpTtPA3F/ironclaw/src/agent/routine_engine.rs:210

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/module_missing.ron

Failed in:
  mod ironclaw::transcription, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/mod.rs:1

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/struct_missing.ron

Failed in:
  struct ironclaw::transcription::OpenAiWhisperProvider, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/openai.rs:12
  struct ironclaw::transcription::ChatCompletionsTranscriptionProvider, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/chat_completions.rs:20
  struct ironclaw::channels::web::auth::AuthState, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/auth.rs:13
  struct ironclaw::transcription::TranscriptionMiddleware, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/mod.rs:86

--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---

Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/struct_pub_field_missing.ron

Failed in:
  field parameters of struct CapabilitiesFile, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/tools/wasm/capabilities_schema.rs:54
  field user_id of struct GatewayState, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/channels/web/server.rs:173
  field sse_sender of struct PendingOAuthFlow, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/cli/oauth_defaults.rs:451

--- failure trait_method_added: pub trait method added ---

Description:
A non-sealed public trait added a new method without a default implementation, which breaks downstream implementations of the trait
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/trait_method_added.ron

Failed in:
  trait method ironclaw::db::JobStore::list_agent_jobs_for_user in file /tmp/.tmpTtPA3F/ironclaw/src/db/mod.rs:412
  trait method ironclaw::db::JobStore::agent_job_summary_for_user in file /tmp/.tmpTtPA3F/ironclaw/src/db/mod.rs:417
  trait method ironclaw::db::RoutineStore::batch_get_last_run_status in file /tmp/.tmpTtPA3F/ironclaw/src/db/mod.rs:535
  trait method ironclaw::db::RoutineStore::get_webhook_routine_by_path in file /tmp/.tmpTtPA3F/ironclaw/src/db/mod.rs:545

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/trait_missing.ron

Failed in:
  trait ironclaw::transcription::TranscriptionProvider, previously in file /tmp/.tmpWG5Sxe/ironclaw/src/transcription/mod.rs:72
Changelog

0.22.0 - 2026-03-25

Added

  • (agent) thread per-tool reasoning through provider, session, and all surfaces (#1513)
  • (cli) show credential auth status in tool info (#1572)
  • multi-tenant auth with per-user workspace isolation (#1118)
  • (cli) add ironclaw models subcommands (list/status/set/set-provider) (#1043)
  • (workspace) multi-scope workspace reads (#1117)
  • (ux) complete UX overhaul — design system, onboarding, web polish (#1277)
  • (gemini_oauth) full Gemini CLI OAuth integration with Cloud Code API (#1356)
  • (shell) add Low/Medium/High risk levels for graduated command approval (closes Add command risk levels (Low/Medium/High) to shell tool for graduated approval #172) (#368)
  • (agent) queue and merge messages during active turns (#1412)
  • (cli) add ironclaw hooks list subcommand (#1023)
  • (extensions) support text setup fields in web configure modal (#496)
  • (llm) add GitHub Copilot as LLM provider (#1512)
  • (workspace) layered memory with sensitivity-based privacy redirect (#1112)
  • (webhooks) add public webhook trigger endpoint for routines (#736)
  • (llm) Add OpenAI Codex (ChatGPT subscription) as LLM provider (#1461)
  • (web) add light theme with dark/light/system toggle (#1457)
  • (agent) activate stuck_threshold for time-based stuck job detection (#1234)
  • chat onboarding and routine advisor (#927)

Fixed

  • ensure LLM calls always end with user message (closes LLM: NEAR AI "No user query found in messages" 400 error on routines #763) (#1259)
  • restore owner-scoped gateway startup (#1625)
  • remove stale stream_token gate from channel-relay activation (#1623)
  • (agent) case-insensitive channel match and user_id filter for event triggers (#1211)
  • (routines) normalize status display across web and CLI (#1469)
  • (tunnel) managed tunnels target wrong port and die from SIGPIPE (#1093)
  • (agent) persist /model selection to .env, TOML, and DB (#1581)
  • post-merge review sweep — 8 fixes across security, perf, and correctness (#1550)
  • generate Mistral-compatible 9-char alphanumeric tool call IDs (#1242)
  • (mcp) handle empty 202 notification acknowledgements (#1539)
  • (tests) eliminate env mutex poison cascade (#1558)
  • (safety) escape tool output XML content and remove misleading sanitized attr (#1067)
  • (oauth) reject malformed ic2.* states in decode_hosted_oauth_state (#1441) (#1454)
  • parameter coercion and validation for oneOf/anyOf/allOf schemas (#1397)
  • persist startup-loaded MCP clients in ExtensionManager (#1509)
  • (deps) patch rustls-webpki vulnerability (RUSTSEC-2026-0049)
  • (routines) add missing extension_manager field in trigger_manual EngineContext
  • (ci) serialize env-mutating OAuth wildcard tests with ENV_MUTEX (#1280) (#1468)
  • (setup) remove redundant LLM config and API keys from bootstrap .env (#1448)
  • resolve wasm broadcast merge conflicts with staging (#395) (#1460)
  • skip credential validation for Bedrock backend (#1011)
  • register sandbox jobs in ContextManager for query tool visibility (#1426)
  • prefer execution-local message routing metadata (#1449)
  • (security) validate embedding base URLs to prevent SSRF (#1221)
  • f32→f64 precision artifact in temperature causes provider 400 errors (#1450)
  • (routines) surface errors when sandbox unavailable for full_job routines (#769)
  • restore libSQL vector search with dynamic dimensions (#1393)
  • staging CI triage — consolidate retry parsing, fix flaky tests, add docs (#1427)

Other


This PR was generated with release-plz.

Staging promotion batches since v0.21.0

No structured staging promotion merges found since v0.21.0.

Auto-updated from structured staging promotion merge bodies on main.

@github-actions github-actions bot added scope: docs Documentation scope: dependencies Dependency updates size: XS < 10 changed lines (excluding docs) risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Mar 23, 2026
@ironclaw-ci ironclaw-ci bot force-pushed the release-plz-2026-03-23T19-05-30Z branch from c5be733 to 6b7b86a Compare March 25, 2026 23:04
@henrypark133 henrypark133 merged commit 0b4e7c7 into main Mar 25, 2026
29 checks passed
@henrypark133 henrypark133 deleted the release-plz-2026-03-23T19-05-30Z branch March 25, 2026 23:44
bkutasi pushed a commit to bkutasi/ironclaw that referenced this pull request Mar 28, 2026
Co-authored-by: ironclaw-ci[bot] <266877842+ironclaw-ci[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: dependencies Dependency updates scope: docs Documentation size: XS < 10 changed lines (excluding docs)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant