Files
ironclaw/src
Henry Park 2917f1b4f7 fix: restore only active WASM channels at startup (#2562)
* fix: restore only active wasm channels at startup

* fix: address PR review follow-ups

* Merge origin/staging; fix CredentialName newtype + unused import

Merge 120 commits from staging. Fix two compilation issues from the
merge: test used raw String where CredentialName newtype is now required
(staging PR #2611), and unused HashSet import in setup tests after
prior redundant-filter removal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address PR review — owner_id type, naming, whitespace trim

- Use build_runtime_config_updates() in register_channel so boot-time
  owner_id injection matches the post-approval path (numeric when
  parseable as i64, string otherwise).
- Rename persisted_active_channels_raw to persisted_active_channels
  since load_persisted_active_channels already normalizes.
- Trim whitespace from persisted channel names before validation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: derive settings_persistence_available from DB, not workspace adapter

ExtensionManager::settings_store() falls back to the raw DB when no
workspace adapter is set. Check components.db.is_some() so the
persistence flag aligns with the actual settings store availability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: use ExtensionName for persisted WASM channel name validation

Replace hand-rolled validation in normalize_persisted_wasm_channel_names
with ExtensionName::new(), which provides the canonical validation
(trim, hyphen→underscore, path traversal, lowercase-only, no
consecutive underscores). This aligns startup channel name validation
with the rest of the extension system.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Illia Polosukhin <ilblackdragon@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 22:58:05 +09:00
..