Skip to content

feat: protect campaign edits and persist version state - #112

Merged
Ankit6149 merged 36 commits into
masterfrom
stabilization/edit-safe-version-state
Jul 30, 2026
Merged

feat: protect campaign edits and persist version state#112
Ankit6149 merged 36 commits into
masterfrom
stabilization/edit-safe-version-state

Conversation

@Ankit6149

@Ankit6149 Ankit6149 commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Closes #18.
Closes #20.
Closes #21.

Product outcome

This PR makes regeneration edit-safe, turns campaign/channel/version status into persistent product state, and completes stable campaign identity with explicit create/update/save-as-copy/read/list/delete behavior.

Issue #18 — edit-safe regeneration

  • Stores one generated baseline and one authoritative current draft per channel.
  • Detects manual edits and clears approval when text changes.
  • Adds a deliberate full-regeneration dialog: regenerate unedited destinations, archive and regenerate all, or cancel.
  • Adds per-channel regeneration.
  • Preserves untouched channels byte-for-byte.
  • Archives complete prior campaign versions and supports restore/discard.
  • Restores the generated baseline per channel.
  • Rejects malformed/all-failed regeneration before reducer mutation.
  • Keeps existing drafts intact when a regeneration request fails or a requested destination fails within partial success.

Issue #20 — persistent state and action truth

  • Adds pure selectors for generated, regenerated, edited, approved, needs-review, failed, stale, saved, unsaved, and exported-current state.
  • Adds a persistent campaign status strip with revision, approval/edit counts, last saved time, and export freshness.
  • Adds status text to every channel tab and active draft.
  • Makes publishing/manual handoff require explicit approval of the current revision.
  • Derives copy/export/publish availability from shared selectors and shows visible blocked reasons.
  • Adds accessible live status, modal semantics, Escape cancellation, responsive behavior, and reduced-motion handling.

Issue #21 — stable identity and persistence

  • Uses an injected opaque campaign ID service; titles are never identity.
  • Adds detached-safe create, update, save-as-copy, read, list, and delete application functions.
  • Save updates only the current ID; Save as copy allocates a new ID and preserves the original.
  • Allows multiple campaigns with the same title.
  • Persists generated baselines, channel state, approvals, archives, and editor save/export revisions.
  • Migrates legacy and incomplete additive schema-v1 records without losing drafts/history.
  • Writes completed additive records back through browser and injected store-backed repositories.
  • Excludes temporary provider credentials.
  • Provides export-recovery messaging for browser storage/quota failure.

Documentation

Updates README, AGENTS, domain architecture, campaign migration/rollback, and docs/CAMPAIGN_EDITING_AND_VERSIONING.md. Documentation tests guard regeneration, stable identity, approval, migration, accessibility, and rollback claims.

Exact-head verification

Verified head: 7f669810db8442cb5779ab689945d08bd4a88967

GitHub Actions CI run 254 passed:

  • 123 frontend regression/domain/persistence/UI/documentation tests;
  • edit-safe policy, archive/restore, approval, and state-selector tests;
  • duplicate-title CRUD, detached application calls, Save as copy, legacy/additive migration, and quota recovery tests;
  • production dependency audit with zero vulnerabilities;
  • Next.js production build;
  • MCP protocol/tool tests;
  • Python compatibility tests.

Vercel preview deployment succeeded for the exact final head. No temporary migration scripts/workflows or unresolved review threads remain.

Explicit non-goals

  • Does not implement cloud persistence, sync, collaboration, or server-side version history.
  • Does not implement durable background generation jobs.
  • Does not close generation-quality, connector-verification, or extension-ingestion issues.
  • Does not claim live connector publishing is production-verified.

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
signal-flow-studio Ready Ready Preview Jul 30, 2026 6:08pm

@Ankit6149
Ankit6149 marked this pull request as ready for review July 30, 2026 18:09
@Ankit6149
Ankit6149 merged commit fd707c4 into master Jul 30, 2026
5 checks passed

Copy link
Copy Markdown
Owner Author

Post-merge verification

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

Labels

None yet

Projects

None yet

1 participant