Context
Discovered in #62: SessionDetailSnapshotProjection is missing several fields that exist on ServerSessionState — currentDiff, currentPlan, turnDiffs, currentTurnId, and turnCount. The fix in #66 works around this by assigning them directly in handleConversationBootstrap, but the projection struct should own these fields for consistency with how all other bootstrap data flows through projections.
Task
Add the missing fields to SessionDetailSnapshotProjection and applySnapshotProjection, then remove the direct assignments added in #66.
Files
OrbitDockNative/OrbitDock/Services/Server/SessionStateProjection.swift
OrbitDockNative/OrbitDock/Services/Server/ServerTypeAdapters.swift
OrbitDockNative/OrbitDock/Services/Server/SessionStore+Events.swift
Acceptance Criteria
SessionDetailSnapshotProjection includes currentDiff, currentPlan, turnDiffs, currentTurnId, turnCount
applySnapshotProjection sets these on the observable
- Direct assignments in
handleConversationBootstrap removed
- Existing tests updated, new test for diff/plan/turn hydration through the projection path
Follow-up from #62: I_kwDORFu4Vs71S6MD
Context
Discovered in #62:
SessionDetailSnapshotProjectionis missing several fields that exist onServerSessionState—currentDiff,currentPlan,turnDiffs,currentTurnId, andturnCount. The fix in #66 works around this by assigning them directly inhandleConversationBootstrap, but the projection struct should own these fields for consistency with how all other bootstrap data flows through projections.Task
Add the missing fields to
SessionDetailSnapshotProjectionandapplySnapshotProjection, then remove the direct assignments added in #66.Files
OrbitDockNative/OrbitDock/Services/Server/SessionStateProjection.swiftOrbitDockNative/OrbitDock/Services/Server/ServerTypeAdapters.swiftOrbitDockNative/OrbitDock/Services/Server/SessionStore+Events.swiftAcceptance Criteria
SessionDetailSnapshotProjectionincludescurrentDiff,currentPlan,turnDiffs,currentTurnId,turnCountapplySnapshotProjectionsets these on the observablehandleConversationBootstrapremovedFollow-up from #62: I_kwDORFu4Vs71S6MD