Siren Affiliates – Affiliate & Partner Program Manager for WooCommerce
Changelog
3.4.1
fix(frontend): affiliate dashboard clipped behind portal sidebar — scope Tailwind disclosure trimming to Lite (bounty 645)
fix(lite): bind TermProvider in the free-tier loader
3.4.0
New: Starter recipes — browse a catalog of ready-made program setups, filtered to what works with your store, and launch a fully-configured program in a few clicks.
Fixed: Easy Digital Downloads 3.x — assigning a collaborator to a coupon works again.
Fixed: Ninja Forms integration labels now load from the plugin’s own translations.
3.3.0
fix(wp): register engagements admin page so conversion → engagement link resolves
fix(reporting): aggregate by type, apply date range, support comparison metrics
fix(reporting): update balance & earnings on internally-issued obligations
test(distributions): cover MarkAllocationObligationAsPending; chore(wp): remove dead /payouts mapping
fix(notes): record status transitions from internal flows, not just REST
fix(reporting): apply aggregation/date-range/comparison fixes to queryStandings
collaborators — new stanza with nested aliases (typed, with issuedDate for migration link continuity) and bindings (collaborator→program, collaborator→distributor)
mappings — generic four-field cross-system bridge
tracking / commerce — site-wide settings stanzas
Stripped license/update-checker residue from the lite zip; readme documents the frontend source/build path
Removed live superglobal usage from WordPress request handlers
Added nonce/capability checks to extension save flows
Stopped rewriting active_plugins
Fixed weak JS globals; cleaned up plugin path/url resolution
Switched docs fetching to a WordPress HTTP-backed transport
Added missing lite templates used by live listeners
SetupCollaboratorPortal enqueued the Vite-built portal bundle without type=”module”. 37 shared chunks + main entry all threw Cannot use import statement outside a module; the SPA stalled at “Loading…” forever. Filter added on script_loader_tag that marks every portal handle as a module at tag-render time. RegisterCollaboratorPortalBlock already did this for the editor-preview path; this brings the frontend portal enqueue path in line.
bin/seed-screenshot-data.php was writing to a non-existent totalCount column (actual column is count), silently dropping all activity data. Also fixes activity-type enum to match STRATEGY_TO_ACTIVITY_TYPE (site_visit, content_view, product_sale, form_submission, coupon_use) and seeds per-day periods so the last-6-months activity chart has a real time series.
Inline :root { –background/–foreground/–primary/–accent: …; } overrides generated from block attrs were attached to siren-collaborator-portal-inline and enqueued before the Vite-built Tailwind bundles. The bundles carry their own :root defaults, so they printed last and won the cascade — the editor preview updated but the public portal rendered stock colors. Moved override emission to after the bundle loop, attached via wp_add_inline_style() to the last bundle handle so our rule is last in source order.
Portal Branding inspector panel’s logo field was a TextControl asking for a pasted URL. Replaced with MediaUpload + MediaUploadCheck — WordPress’s native media modal, URL-based storage preserved for backward compat, thumbnail preview + Replace / Remove controls.
Block editor still shows “Your site doesn’t include support for the siren/collaborator-portal block” because the wp-scripts build/blocks/ output isn’t wired into bin/build.php or .github/workflows/release.yml. Release workflow runs frontend:build:all but never wp-scripts build, and the build script doesn’t relocate ./build/ into lib/LiteApplication/build/ where the path resolver expects it. Every essentials install will hit this in the block editor until it’s fixed. Not blocking 3.2.0 — block works at runtime, only the editor is affected.
job_schedules table + cron dispatcher for recurring jobs (telemetry, nightly prunes) — framework designed for it, not built.
Retention/cleanup of old job rows.
Unified “recent jobs” history pane on the Utilities tab (backend endpoint exists; no UI yet).
3.1.2
fix(transactions): stop double-subtracting coupon discounts on WC and EDD orders
3.1.1
fix(lite): unblock beacon recipe handoff for non-admin Siren users
fix(recipes): align plugin with website handoff contract + e2e coverage
3.1.0
fix: Prevent crash when selecting obligation checkboxes
refactor(api): normalize JSON responses at the chokepoint
refactor(rest): attach global interceptors per controller
Activate Notes system with event listeners, REST API, and activity timeline
chore(uat): commit UAT environment tree to source control
fix(notes): decouple extended resolvers from OrgDatastore; 500s on Essentials Activity
fix(notes): add Note to WordPress permission model list
Restore Woo ItemLogged logging and bump phpnomad minima
feat(notes): add automatic notes for collaborator program changes
fix: permanent delete fails due to FK constraints on junction tables
chore: sync plugin version headers to 3.0.1
fix(programs): stop legacy listener from overwriting engagementTypes format