A real product question, not just a bug. Today dv's release model is one plugin owns one package — the package's plugin owns every op including release. That means you can't have JSR + a GitHub Release for the same package without writing both into one plugin's release op.
A clean v2 design would let users wire a package to a primary plugin (manifest ownership: read/write/update/finalize) AND one or more publish-only "channels" that each fire their own release op after tag minting:
```yaml
discovery:
plugins:
- match: ["apps/*"]
use: { run: "deno run -A ./tools/dv-release/main.ts" }
publishing:
channels:
- { for: "@dv-cli/dv", use: { run: "deno run -A ./tools/gh-releases.ts" } }
```
This is a contract change (new info.supportedOps shape for channel-only plugins; new config section; dv release runs all matching channels after the primary publish). Out of scope for v1; worth doing once enough users want a second channel.
A working example release-only plugin already ships in examples/plugins/github-releases/main.ts as the precedent — runnable via dv plugin verify / dv plugin invoke today, ready to be wired in when the channels contract lands.
Migrated from ROADMAP.md § Opt into multi-channel publishing.
A real product question, not just a bug. Today dv's release model is one plugin owns one package — the package's plugin owns every op including
release. That means you can't have JSR + a GitHub Release for the same package without writing both into one plugin'sreleaseop.A clean v2 design would let users wire a package to a primary plugin (manifest ownership: read/write/update/finalize) AND one or more publish-only "channels" that each fire their own
releaseop after tag minting:```yaml
discovery:
plugins:
- match: ["apps/*"]
use: { run: "deno run -A ./tools/dv-release/main.ts" }
publishing:
channels:
- { for: "@dv-cli/dv", use: { run: "deno run -A ./tools/gh-releases.ts" } }
```
This is a contract change (new
info.supportedOpsshape for channel-only plugins; new config section;dv releaseruns all matching channels after the primary publish). Out of scope for v1; worth doing once enough users want a second channel.A working example release-only plugin already ships in
examples/plugins/github-releases/main.tsas the precedent — runnable viadv plugin verify/dv plugin invoketoday, ready to be wired in when the channels contract lands.Migrated from ROADMAP.md § Opt into multi-channel publishing.