Skip to content

feat(plugins): support multiple --plugin-url values and add PluginName newtype#4680

Merged
bug-ops merged 1 commit into
mainfrom
plugin-url-multi
May 29, 2026
Merged

feat(plugins): support multiple --plugin-url values and add PluginName newtype#4680
bug-ops merged 1 commit into
mainfrom
plugin-url-multi

Conversation

@bug-ops

@bug-ops bug-ops commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary

Breaking changes

  • --plugin-sha256 CLI flag removed; use url@sha256 inline syntax instead
  • .name on AddResult, InstalledPlugin, AutoUpdateResult is now PluginName; use .name.as_str() or .name.to_string() where &str / String is required

Test plan

  • cargo nextest run --workspace --lib --bins — 10572 passed, 22 skipped
  • cargo +nightly fmt --check — clean
  • cargo clippy --workspace --features desktop,ide,server,chat,pdf,scheduler -- -D warnings — clean
  • RUSTFLAGS="-D warnings" cargo check --workspace --all-targets --features desktop,ide,server,chat,pdf,scheduler — clean
  • Two new unit tests for parse_plugin_url_arg (multiple @, bare @, empty string)
  • PluginName doc-tests cover happy path, empty string, >64 char rejection
  • Manual Deserialize for PluginName rejects invalid names; transparent Serialize roundtrips correctly

Closes #4675
Closes #4674

@github-actions github-actions Bot added enhancement New feature or request size/L Large PR (201-500 lines) documentation Improvements or additions to documentation rust Rust code changes labels May 29, 2026
…e newtype (#4675, #4674)

--plugin-url now accepts multiple values via ArgAction::Append; --plugin-sha256
is removed in favour of inline url@sha256 syntax. The runner iterates over all
provided URLs and passes the full Vec<TempDir> to with_ephemeral_plugins().

PluginName newtype introduced in zeph-plugins: TryFrom<String>/TryFrom<&str>
validate on construction via validate_plugin_name(), Deserialize delegates to
TryFrom (never bypasses validation), Serialize remains transparent. AddResult,
InstalledPlugin, and AutoUpdateResult now carry PluginName instead of String.

BREAKING CHANGES:
- --plugin-sha256 flag removed; use url@sha256 inline syntax instead
- .name on AddResult, InstalledPlugin, AutoUpdateResult is now PluginName;
  use .name.as_str() or .name.to_string() where &str/String is required
@bug-ops bug-ops enabled auto-merge (squash) May 29, 2026 21:05
@bug-ops bug-ops force-pushed the plugin-url-multi branch from b8ecf74 to da47864 Compare May 29, 2026 21:05
@bug-ops bug-ops merged commit 616b467 into main May 29, 2026
32 checks passed
@bug-ops bug-ops deleted the plugin-url-multi branch May 29, 2026 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request rust Rust code changes size/L Large PR (201-500 lines)

Projects

None yet

1 participant