FRE-605: Implement Phase 4 Change Tracking & Merge Logic

- Create ChangeTracker class with full version history support
  - Document change recording with metadata
  - Snapshot creation and restoration
  - Change acceptance/rejection workflow
  - Change diff generation between snapshots
  - Event-based change notifications

- Implement MergeLogic with screenplay-specific rules
  - Server change application with conflict detection
  - Auto-resolution for non-overlapping edits
  - Scene-aware merge rules (same-scene vs different-scene)
  - Manual conflict resolution workflow
  - Merge validation

- Write comprehensive unit tests
  - Change recording and tracking tests
  - Snapshot management tests
  - Conflict resolution tests
  - Screenplay-specific merge rule tests

- Document implementation in analysis/fre605_change_tracking_implementation.md

Architecture: ChangeTracker integrates with Yjs document updates.
MergeLogic applies screenplay-specific rules for concurrent edits.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 02:14:54 -04:00
parent 7c684a42cc
commit b89575fb6e
26 changed files with 3346 additions and 70 deletions

View File

@@ -8,10 +8,13 @@ import { Blog } from './routes/blog/Blog';
import { BlogPost } from './routes/blog/BlogPost';
import { Features } from './routes/features/Features';
import { Pricing } from './routes/pricing/Pricing';
import { About } from './routes/about/About';
import { Faq } from './routes/faq/Faq';
import '../styles/landing.css';
import '../styles/blog.css';
import '../styles/features.css';
import '../styles/pricing.css';
import '../styles/about-faq.css';
const AppLayout = lazy(() => import('./components/layout/AppLayout'));
const Dashboard = lazy(() => import('./components/dashboard/Dashboard'));
@@ -27,6 +30,8 @@ export const routes = [
<Route path="/" component={Landing} />,
<Route path="/features" component={Features} />,
<Route path="/pricing" component={Pricing} />,
<Route path="/about" component={About} />,
<Route path="/faq" component={Faq} />,
<Route path="/blog" component={Blog} />,
<Route path="/blog/:slug" component={BlogPost} />,
<Route path="/sign-in" component={SignIn} />,