Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fe53f69
chore: promote staging to staging-promote/57c397bd-23120362128 (2026-…
ironclaw-ci[bot] Mar 16, 2026
e212c00
Merge pull request #1246 from nearai/staging-promote/63a23550-2315134…
henrypark133 Mar 16, 2026
8ba8def
Merge pull request #1239 from nearai/staging-promote/946c040f-2313422…
henrypark133 Mar 16, 2026
409a2ab
Merge pull request #1231 from nearai/staging-promote/57c397bd-2312036…
henrypark133 Mar 16, 2026
e397546
Merge pull request #1212 from nearai/staging-promote/3f874e73-2311931…
henrypark133 Mar 16, 2026
2961e70
Merge pull request #1263 from nearai/staging-promote/026beb00-2316821…
henrypark133 Mar 16, 2026
cb5f979
Merge pull request #1260 from nearai/staging-promote/878a67cd-2316611…
henrypark133 Mar 16, 2026
47659e9
Merge pull request #1268 from nearai/staging-promote/c6128f4e-2317034…
henrypark133 Mar 16, 2026
d3e392a
Merge pull request #1267 from nearai/staging-promote/1f209db0-2317013…
henrypark133 Mar 16, 2026
0e7eb7f
Merge pull request #1279 from nearai/staging-promote/4675e961-2317692…
henrypark133 Mar 17, 2026
2b6404e
Merge pull request #1276 from nearai/staging-promote/90655277-2317626…
henrypark133 Mar 17, 2026
deee24c
Merge pull request #1197 from nearai/staging-promote/e0f393bf-2310570…
henrypark133 Mar 17, 2026
1ad1335
chore: release v0.19.0 (#973)
github-actions[bot] Mar 17, 2026
ef5715c
fix: mark ironclaw_safety unpublished in release-plz (#1286)
henrypark133 Mar 17, 2026
059fd97
Merge pull request #1296 from nearai/staging-promote/2784cef4-2318001…
henrypark133 Mar 17, 2026
7a4673c
chore: update WASM artifact SHA256 checksums [skip ci] (#1297)
github-actions[bot] Mar 17, 2026
9bb05d2
Merge pull request #1285 from nearai/staging-promote/5c56032b-2317858…
henrypark133 Mar 17, 2026
59acab4
Merge pull request #1359 from nearai/staging-promote/428303af-2325514…
henrypark133 Mar 18, 2026
2033d77
Merge pull request #1376 from nearai/staging-promote/f2cd1d37-2326279…
henrypark133 Mar 18, 2026
a95a84e
Merge pull request #1379 from nearai/staging-promote/6831bb4d-2326472…
henrypark133 Mar 18, 2026
4566181
feat(gateway): unified settings page with subtabs (#1191)
ilblackdragon Mar 18, 2026
b7a1edf
fix: remove debug_assert guards that panic on valid error paths (#1385)
henrypark133 Mar 19, 2026
94e4d9d
Merge pull request #1389 from nearai/main
henrypark133 Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ exclude = [

[package]
name = "ironclaw"
version = "0.18.0"
version = "0.19.0"
edition = "2024"
rust-version = "1.92"
description = "Secure personal AI assistant that protects your data and expands its capabilities on the fly"
Expand Down
4 changes: 2 additions & 2 deletions registry/channels/discord.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/discord-0.2.0-wasm32-wasip2.tar.gz",
"sha256": "efa1b9019fa33e243f8db1e1fcc732731d45836336bdd26ca19b6fe227ca8b69"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/channel-discord-0.2.1-wasm32-wasip2.tar.gz",
"sha256": "6159cb54aa44a9d8219e29bf0aea9404213b20ff567506fe75f23d4698d6ec18"
}
},
"auth_summary": {
Expand Down
7 changes: 6 additions & 1 deletion registry/channels/feishu.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@
"capabilities": "feishu.capabilities.json",
"crate_name": "feishu-channel"
},
"artifacts": {},
"artifacts": {
"wasm32-wasip2": {
"sha256": "5fca74022264d1c8e78a0853766276f7ffa3cf0d8065b2f51ca10985acad4714",
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/channel-feishu-0.1.1-wasm32-wasip2.tar.gz"
}
},
"auth_summary": {
"method": "manual",
"provider": "Feishu / Lark",
Expand Down
4 changes: 2 additions & 2 deletions registry/channels/telegram.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/telegram-0.2.3-wasm32-wasip2.tar.gz",
"sha256": "b9a83d5a2d1285ce0ec116b354336a1f245f893291ccb01dffbcaccf89d72aed"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/channel-telegram-0.2.4-wasm32-wasip2.tar.gz",
"sha256": "a7cb300ec1c946831cfceaa95c1dc8f30d0f42a3924f3cb5de8098821573f4b8"
}
},
"auth_summary": {
Expand Down
4 changes: 2 additions & 2 deletions registry/tools/github.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/github-0.2.0-wasm32-wasip2.tar.gz",
"sha256": "da9fac56b6f20197a415489bbaec9fefb085a5cf6324cab79ea48a47eb19c13b"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/tool-github-0.2.1-wasm32-wasip2.tar.gz",
"sha256": "92c530b3ad172e2372d819744b5233f1d8f65768e26eb5a6c213eba3ce1de758"
}
},
"auth_summary": {
Expand Down
4 changes: 2 additions & 2 deletions registry/tools/llm-context.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/latest/download/llm-context-wasm32-wasip2.tar.gz",
"sha256": "581cc5867ef3b75116b7ddc8161e63dd92befe2b53e6ad8213c007639aa243c3"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/tool-llm-context-0.1.0-wasm32-wasip2.tar.gz",
"sha256": "d9ced2b1226b879135891e0ee40e072c7c95412e1b2462925a23853e1f92497e"
}
},
"auth_summary": {
Expand Down
4 changes: 2 additions & 2 deletions registry/tools/slack.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/slack-0.2.1-wasm32-wasip2.tar.gz",
"sha256": "d4667e35126986509d862bc3a0088777305d8f41c75de83c1e223b42312ede48"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/tool-slack-0.2.0-wasm32-wasip2.tar.gz",
"sha256": "ccfb0415d7a04f9497726c712d15216de36e86f498b849101283c017f5ab4efb"
}
},
"auth_summary": {
Expand Down
4 changes: 2 additions & 2 deletions registry/tools/telegram.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/telegram-0.2.2-wasm32-wasip2.tar.gz",
"sha256": "b9a83d5a2d1285ce0ec116b354336a1f245f893291ccb01dffbcaccf89d72aed"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/tool-telegram-0.2.0-wasm32-wasip2.tar.gz",
"sha256": "c17065ca41fae5f2a7c43b36144686718cd310a2f22442313bb1aa82bbad0ae4"
}
},
"auth_summary": {
Expand Down
4 changes: 2 additions & 2 deletions registry/tools/web-search.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
},
"artifacts": {
"wasm32-wasip2": {
"url": "https://github.com/nearai/ironclaw/releases/download/v0.18.0/web-search-0.2.0-wasm32-wasip2.tar.gz",
"sha256": "56834573c54ea2a33cea1eb0f04bbdf59f1ef8d8702995cf431b0921302eeccc"
"url": "https://github.com/nearai/ironclaw/releases/download/v0.19.0/tool-web-search-0.2.1-wasm32-wasip2.tar.gz",
"sha256": "bad275ca4ec314adea5241d6b92c44ccf9cebcbca8e30ba2493cc0bcb4b57218"
}
},
"auth_summary": {
Expand Down
1 change: 1 addition & 0 deletions release-plz.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ git_release_enable = false

[[package]]
name = "ironclaw_safety"
publish = false
release = false
8 changes: 8 additions & 0 deletions src/channels/web/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ impl GatewayChannel {
cost_guard: None,
routine_engine: Arc::new(tokio::sync::RwLock::new(None)),
startup_time: std::time::Instant::now(),
active_config: server::ActiveConfigSnapshot::default(),
});

Self {
Expand Down Expand Up @@ -139,6 +140,7 @@ impl GatewayChannel {
cost_guard: self.state.cost_guard.clone(),
routine_engine: Arc::clone(&self.state.routine_engine),
startup_time: self.state.startup_time,
active_config: self.state.active_config.clone(),
};
mutate(&mut new_state);
self.state = Arc::new(new_state);
Expand Down Expand Up @@ -250,6 +252,12 @@ impl GatewayChannel {
self
}

/// Inject the active (resolved) configuration snapshot for the status endpoint.
pub fn with_active_config(mut self, config: server::ActiveConfigSnapshot) -> Self {
self.rebuild_state(|s| s.active_config = config);
self
}

/// Get the auth token (for printing to console on startup).
pub fn auth_token(&self) -> &str {
&self.auth_token
Expand Down
17 changes: 17 additions & 0 deletions src/channels/web/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ impl RateLimiter {
}
}

/// Snapshot of the active (resolved) configuration exposed to the frontend.
#[derive(Debug, Clone, Default, serde::Serialize)]
pub struct ActiveConfigSnapshot {
pub llm_backend: String,
pub llm_model: String,
pub enabled_channels: Vec<String>,
}

/// Shared state for all gateway handlers.
pub struct GatewayState {
/// Channel to send messages to the agent loop.
Expand Down Expand Up @@ -177,6 +185,8 @@ pub struct GatewayState {
pub routine_engine: RoutineEngineSlot,
/// Server startup time for uptime calculation.
pub startup_time: std::time::Instant,
/// Snapshot of active (resolved) configuration for the frontend.
pub active_config: ActiveConfigSnapshot,
}

/// Start the gateway HTTP server.
Expand Down Expand Up @@ -2669,6 +2679,9 @@ async fn gateway_status_handler(
daily_cost,
actions_this_hour,
model_usage,
llm_backend: state.active_config.llm_backend.clone(),
llm_model: state.active_config.llm_model.clone(),
enabled_channels: state.active_config.enabled_channels.clone(),
})
}

Expand All @@ -2694,6 +2707,9 @@ struct GatewayStatusResponse {
actions_this_hour: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
model_usage: Option<Vec<ModelUsageEntry>>,
llm_backend: String,
llm_model: String,
enabled_channels: Vec<String>,
}

#[cfg(test)]
Expand Down Expand Up @@ -2890,6 +2906,7 @@ mod tests {
cost_guard: None,
routine_engine: Arc::new(tokio::sync::RwLock::new(None)),
startup_time: std::time::Instant::now(),
active_config: ActiveConfigSnapshot::default(),
})
}

Expand Down
Loading
Loading