Pull request explained

Add campaign export: channel sizes, fit-to-box text and a campaign sheet

038ac77 → main1 commit44 files+1041 −52

Marketing needs one message in every channel size. This adds nine canvas formats (LinkedIn, Open Graph, headers, an email header at 2×, and four display ads with 150 KB budgets), a data-od-fit attribute that shrinks long translations until they fit, and a campaignSheet export option that shows every shape and every other piece of the campaign on one image.

Before and after

BeforeAfter
Display adsNo ad sizes; hand-typed width/height, no byte budgetpreset: "banner-mrec" and three more, each capped at 150 KB
German copyOverflows and is reported as an errorMarked data-od-fit, it shrinks in 5% steps to 70%, and the shrink is reported as a note
Reviewing a campaignOne shape sheet per designcampaign-sheet.png: every shape plus the landing page and email

Risks

How it was tested

Review tour

OrderFilesWhat to look for
1core/src/poster/formats.tsThe nine formats; scale and inDefaultSheet
2core/src/poster/pageScripts.tsfitBoundText: how fit is judged, and restoring the authored size
3core/src/export/exportArtifact.tsPer-shape scale; the campaign sheet built from the collection
4core/src/poster/shapeSheet.tsImage mime and size caps on tiles
5core/src/test/unit/campaignKit.test.tsCoverage of the above
6vscode/package.json, mcp-server/src/*, cli/src/*Schemas and flags; mechanical
7content/**/campaign.md, surfaces.json, generated promptsThe campaign flow text; the rest is generated

Sources