Skip to content

Opt into multi-channel publishing #20

Description

@ben-laird

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestv2Deferred beyond v1

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions