mirror of
https://github.com/OFFIS-ESC/constellation-analyzer
synced 2026-01-27 15:53:42 +00:00
Implements a comprehensive timeline system that enables documents to contain multiple constellation states with branching timelines. This allows users to create different versions of their analysis for temporal evolution, alternative scenarios, or what-if analysis. Core Features: - Timeline store managing multiple states per document with branching structure - Visual timeline panel with React Flow-based state graph visualization - State management: create, switch, rename, duplicate (parallel/series), delete - Per-state undo/redo history (max 50 actions per state) - Context menu for timeline node operations - Collapsible timeline panel (always visible, moved toolbar to panel header) Architecture Changes: - Document structure: removed top-level graph field, states now only in timeline - Global types: nodeTypes and edgeTypes are now global per document, not per state - State graphs: only contain nodes and edges, types inherited from document - Persistence: full timeline serialization/deserialization with all states - History system: converted from document-level to per-state independent stacks Timeline Components: - TimelineView: main timeline visualization with state nodes and edges - BottomPanel: collapsible container with timeline controls in header - StateNode: custom node component showing state info and active indicator - CreateStateDialog: dialog for creating new timeline states - RenameStateDialog: dialog for renaming existing states - Context menu: right-click operations (rename, duplicate parallel/series, delete) Document Management: - Documents always have timeline (initialized with root state on creation) - Timeline persisted with document in localStorage - Export/import includes complete timeline with all states - Migration support for legacy single-state documents Store Updates: - timelineStore: manages timelines, states, and timeline operations - historyStore: per-state history with independent undo/redo stacks - workspaceStore: saves/loads timeline data, handles global types - panelStore: added timeline panel visibility state - useActiveDocument: syncs timeline state with graph editor Context Menu Improvements: - Smart viewport edge detection to prevent overflow - Click-outside detection for React Flow panes - Consistent styling across application Files Added: - src/types/timeline.ts - Timeline type definitions - src/stores/timelineStore.ts - Timeline state management - src/components/Timeline/TimelineView.tsx - Main timeline component - src/components/Timeline/BottomPanel.tsx - Timeline panel container - src/components/Timeline/StateNode.tsx - State node visualization - src/components/Timeline/CreateStateDialog.tsx - State creation dialog - src/components/Timeline/RenameStateDialog.tsx - State rename dialog Files Removed: - src/stores/persistence/middleware.ts - Obsolete persistence middleware Documentation: - Added comprehensive timeline feature documentation - Implementation checklists and quick reference guides - Temporal analysis concepts and UX guidelines 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
443 lines
11 KiB
Markdown
443 lines
11 KiB
Markdown
# Temporal & Scenario Analysis - Quick Reference Card
|
|
|
|
## At a Glance
|
|
|
|
**What is this?**
|
|
A tool for temporal evolution analysis and scenario exploration of constellation graphs.
|
|
|
|
**What it's NOT:**
|
|
Version control (Git), undo/redo, or collaborative editing.
|
|
|
|
**Key Idea:**
|
|
Capture snapshots of your graph at different times or scenarios, then compare and analyze them.
|
|
|
|
---
|
|
|
|
## Core Concepts (5-Second Summary)
|
|
|
|
| Concept | What It Is | Example |
|
|
|---------|-----------|---------|
|
|
| **State** | Snapshot of graph at specific moment | "Q1 2023", "Session 5", "Strategy A" |
|
|
| **Timeline** | Ordered sequence of states | Jan → Feb → Mar → Apr |
|
|
| **Scenario** | Alternative branch from a point | Current → Strategy A vs Strategy B |
|
|
| **Comparison** | Visual diff between two states | What changed from Q1 to Q4? |
|
|
| **Journey** | Track one actor across states | How did Alice's role evolve? |
|
|
|
|
---
|
|
|
|
## Common Use Cases
|
|
|
|
### 1. Historical Tracking
|
|
Track how your network changed over time
|
|
- **Example**: Company org chart 2020-2024
|
|
- **Action**: Capture state at each quarter/year
|
|
|
|
### 2. Therapeutic Progress
|
|
Show relationship evolution across sessions
|
|
- **Example**: Family therapy sessions 1-10
|
|
- **Action**: Capture state after each session
|
|
|
|
### 3. Strategic Planning
|
|
Explore different future scenarios
|
|
- **Example**: 3 different growth strategies
|
|
- **Action**: Branch scenarios from current state
|
|
|
|
### 4. Project Evolution
|
|
Show stakeholder changes through project phases
|
|
- **Example**: Kickoff → Planning → Execution → Closure
|
|
- **Action**: Capture state at each phase
|
|
|
|
---
|
|
|
|
## Quick Actions
|
|
|
|
### Capture a State
|
|
1. Work on your graph
|
|
2. Click "Capture State" button (toolbar)
|
|
3. Label it (e.g., "Q1 2023")
|
|
4. Add notes (optional)
|
|
5. Done!
|
|
|
|
### Load a State
|
|
1. Click state selector dropdown (toolbar)
|
|
2. Choose state from list
|
|
3. Graph updates to that state
|
|
|
|
### Compare Two States
|
|
1. Select state A
|
|
2. Click "Compare" button
|
|
3. Select state B
|
|
4. View differences (side-by-side or overlay)
|
|
|
|
### Create Timeline
|
|
1. Capture several states
|
|
2. Open timeline panel (bottom)
|
|
3. States auto-appear in order
|
|
4. Use scrubber to navigate
|
|
|
|
### Create Scenario Branch
|
|
1. Load the branching point state
|
|
2. Menu → States → Create Scenario Branch
|
|
3. Name it and add description
|
|
4. Modify graph for this scenario
|
|
5. Capture states along the scenario
|
|
|
|
---
|
|
|
|
## Keyboard Shortcuts
|
|
|
|
| Shortcut | Action |
|
|
|----------|--------|
|
|
| `Ctrl+Shift+S` | Capture current state |
|
|
| `Ctrl+Shift+T` | Toggle timeline panel |
|
|
| `Ctrl+Shift+C` | Open comparison view |
|
|
| `←` / `→` | Navigate timeline (when focused) |
|
|
| `Space` | Play/pause animation (when focused) |
|
|
| `Ctrl+J` | View actor journeys |
|
|
| `Ctrl+Shift+P` | Presentation mode |
|
|
| `Esc` | Exit modal/presentation |
|
|
|
|
---
|
|
|
|
## UI Components
|
|
|
|
### Toolbar (Top)
|
|
```
|
|
Current State: Q3 2023 ▼ [📸 Capture] [🔍 Compare]
|
|
```
|
|
- **State Selector**: Dropdown to switch states
|
|
- **Capture Button**: Create new state
|
|
- **Compare Button**: Compare two states
|
|
|
|
### Timeline Panel (Bottom)
|
|
```
|
|
●═══●═══●═══●═══●
|
|
Q1 Q2 Q3 Q4 Now
|
|
```
|
|
- **Markers**: Click to load state
|
|
- **Scrubber**: Drag to animate through timeline
|
|
- **Controls**: Navigate, play, compare
|
|
|
|
### Right Panel
|
|
When state is selected, shows:
|
|
- State metadata (date, label, notes)
|
|
- Quick stats (actors, relations)
|
|
- Navigation (previous/next)
|
|
- Actions (edit, compare, delete)
|
|
|
|
---
|
|
|
|
## Comparison Modes
|
|
|
|
### Side-by-Side
|
|
Two graphs shown next to each other
|
|
- **Best for**: Overall comparison
|
|
- **Pros**: Clear separation
|
|
- **Cons**: Takes more screen space
|
|
|
|
### Overlay
|
|
Changes highlighted on single graph
|
|
- **Best for**: Detailed change analysis
|
|
- **Pros**: Shows changes in context
|
|
- **Cons**: Can be cluttered with many changes
|
|
|
|
### Diff List
|
|
Text list of all changes
|
|
- **Best for**: Systematic review
|
|
- **Pros**: Comprehensive, exportable
|
|
- **Cons**: Less visual
|
|
|
|
---
|
|
|
|
## Change Indicators
|
|
|
|
### Visual Coding
|
|
- 🟢 **Green**: Added (new actors/relations)
|
|
- 🔴 **Red**: Removed (deleted actors/relations)
|
|
- 🟡 **Yellow**: Modified (changed properties)
|
|
- ⚪ **Gray**: Unchanged
|
|
|
|
### Change Types
|
|
- **Actor Added**: New person/entity joined
|
|
- **Actor Removed**: Person/entity left
|
|
- **Actor Modified**: Role, name, or properties changed
|
|
- **Relation Added**: New connection formed
|
|
- **Relation Removed**: Connection broken
|
|
- **Relation Modified**: Relationship type or strength changed
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### Naming States
|
|
✅ **Good**: "Q3 2023: Post-Merger Integration"
|
|
❌ **Bad**: "State 3"
|
|
|
|
✅ **Good**: "Session 5: Breakthrough Session"
|
|
❌ **Bad**: "May 15"
|
|
|
|
✅ **Good**: "Strategy A: Aggressive Growth (Optimistic)"
|
|
❌ **Bad**: "Option 1"
|
|
|
|
### When to Capture States
|
|
✅ Capture at **significant milestones**
|
|
✅ Capture at **regular intervals** (quarterly, sessions)
|
|
✅ Capture **before major changes**
|
|
|
|
❌ Don't capture for every tiny edit
|
|
❌ Don't create states "just in case"
|
|
❌ Don't capture without context/labels
|
|
|
|
### Organizing States
|
|
✅ **Use timelines** for temporal sequences
|
|
✅ **Use scenarios** for alternatives
|
|
✅ **Add descriptions** explaining what changed
|
|
✅ **Tag states** for easy finding
|
|
|
|
❌ Don't mix temporal and scenario in same timeline
|
|
❌ Don't create orphaned states without context
|
|
❌ Don't forget to clean up old/unused states
|
|
|
|
---
|
|
|
|
## Common Workflows
|
|
|
|
### Workflow: Temporal Analysis
|
|
```
|
|
1. Start with current graph
|
|
2. Capture state: "Jan 2024"
|
|
3. Make changes to graph
|
|
4. Capture state: "Feb 2024"
|
|
5. Repeat monthly
|
|
6. View timeline
|
|
7. Compare Jan vs Dec
|
|
8. Animate evolution
|
|
```
|
|
|
|
### Workflow: Scenario Exploration
|
|
```
|
|
1. Create current state: "Current Reality"
|
|
2. Branch scenario: "Strategy A"
|
|
3. Modify graph for Strategy A
|
|
4. Capture: "Strategy A - Year 1"
|
|
5. Return to "Current Reality"
|
|
6. Branch scenario: "Strategy B"
|
|
7. Develop Strategy B
|
|
8. Compare Strategy A vs B
|
|
```
|
|
|
|
### Workflow: Actor Journey
|
|
```
|
|
1. Ensure multiple states captured
|
|
2. Select actor on graph
|
|
3. Click "View Journey" (right panel)
|
|
4. See actor's timeline
|
|
5. Review changes over time
|
|
6. Export journey report
|
|
```
|
|
|
|
---
|
|
|
|
## Data Model Summary
|
|
|
|
### State
|
|
```typescript
|
|
{
|
|
stateId: "unique-id",
|
|
stateType: "temporal" | "scenario",
|
|
snapshot: { nodes, edges },
|
|
temporal: { label, timestamp },
|
|
// OR
|
|
scenario: { label, description, assumptions },
|
|
notes: "What changed and why"
|
|
}
|
|
```
|
|
|
|
### Timeline
|
|
```typescript
|
|
{
|
|
timelineId: "unique-id",
|
|
label: "Project Evolution",
|
|
states: ["state1", "state2", "state3"]
|
|
}
|
|
```
|
|
|
|
### Scenario Branch
|
|
```typescript
|
|
{
|
|
branchId: "unique-id",
|
|
label: "Strategy A",
|
|
states: ["stateA1", "stateA2"],
|
|
color: "#3b82f6"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Comparison Output
|
|
|
|
### Summary Statistics
|
|
- Total actors: Before → After (Δ)
|
|
- Total relations: Before → After (Δ)
|
|
- Network density change
|
|
- Centrality changes
|
|
|
|
### Detailed Changes
|
|
- Actors added: [list]
|
|
- Actors removed: [list]
|
|
- Actors modified: [list with changes]
|
|
- Relations added: [list]
|
|
- Relations removed: [list]
|
|
- Relations modified: [list with changes]
|
|
|
|
### Export Formats
|
|
- PDF report with graphs
|
|
- JSON data for analysis
|
|
- CSV for spreadsheet
|
|
- HTML interactive report
|
|
|
|
---
|
|
|
|
## Performance Tips
|
|
|
|
### For Large Graphs (100+ actors)
|
|
- Capture states selectively
|
|
- Use state pagination
|
|
- Enable caching
|
|
- Reduce animation quality if needed
|
|
|
|
### For Many States (50+ states)
|
|
- Organize into multiple timelines
|
|
- Use semantic search (ChromaDB)
|
|
- Archive old states
|
|
- Export/backup regularly
|
|
|
|
### For Smooth Animation
|
|
- Limit number of frames
|
|
- Use simplified rendering
|
|
- Adjust animation speed
|
|
- Close other applications
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Problem: State won't load
|
|
**Solution**: Check if state data is corrupted, try restarting app
|
|
|
|
### Problem: Comparison is slow
|
|
**Solution**: Large graph - reduce comparison mode quality or use diff list
|
|
|
|
### Problem: Animation is choppy
|
|
**Solution**: Reduce animation speed or quality setting
|
|
|
|
### Problem: Can't find a state
|
|
**Solution**: Use search function or check timeline filters
|
|
|
|
### Problem: Timeline is cluttered
|
|
**Solution**: Create multiple timelines, archive old states
|
|
|
|
---
|
|
|
|
## Implementation Status
|
|
|
|
| Phase | Feature | Status | Priority |
|
|
|-------|---------|--------|----------|
|
|
| 1 | Core State Management | 🔲 Not Started | HIGH |
|
|
| 2 | Temporal Analysis | 🔲 Not Started | HIGH |
|
|
| 3 | Comparison & Diff | 🔲 Not Started | HIGH |
|
|
| 4 | Scenario Branching | 🔲 Not Started | MEDIUM |
|
|
| 5 | Actor Journeys | 🔲 Not Started | MEDIUM |
|
|
| 6 | Animation & Presentation | 🔲 Not Started | MEDIUM |
|
|
| 7 | ChromaDB Integration | 🔲 Not Started | MEDIUM |
|
|
| 8 | Advanced Features | 🔲 Not Started | LOW |
|
|
|
|
---
|
|
|
|
## Resources
|
|
|
|
### Documentation
|
|
- **Summary**: `TEMPORAL_ANALYSIS_SUMMARY.md`
|
|
- **Full Plan**: `TEMPORAL_SCENARIO_IMPLEMENTATION_PLAN.md`
|
|
- **User Guide**: `TEMPORAL_QUICK_START.md`
|
|
- **Examples**: `VISUAL_EXAMPLES.md`
|
|
- **Checklist**: `IMPLEMENTATION_CHECKLIST.md`
|
|
- **This Card**: `QUICK_REFERENCE.md`
|
|
|
|
### Key Files (To Be Created)
|
|
- Types: `/src/types/temporal.ts`
|
|
- Store: `/src/stores/stateStore.ts`
|
|
- Components: `/src/components/TemporalAnalysis/`
|
|
|
|
---
|
|
|
|
## FAQs
|
|
|
|
**Q: Will this replace normal editing?**
|
|
A: No, it's optional. You can ignore states and use app normally.
|
|
|
|
**Q: Can I undo after capturing a state?**
|
|
A: Yes, undo/redo is separate. States don't affect edit history.
|
|
|
|
**Q: How many states can I create?**
|
|
A: No hard limit, but recommend <100 per document for performance.
|
|
|
|
**Q: Can I delete a state?**
|
|
A: Yes, but be careful - this can't be undone.
|
|
|
|
**Q: Can I rename states?**
|
|
A: Yes, edit state metadata anytime.
|
|
|
|
**Q: Can states be shared?**
|
|
A: Yes, they're included in document export/import.
|
|
|
|
**Q: What's the difference between temporal and scenario?**
|
|
A: Temporal = time progression. Scenario = alternative branches.
|
|
|
|
**Q: Can I merge scenarios?**
|
|
A: No, scenarios are independent explorations for comparison.
|
|
|
|
---
|
|
|
|
## Quick Tips
|
|
|
|
💡 **Tip 1**: Label states descriptively - your future self will thank you
|
|
|
|
💡 **Tip 2**: Use comparison view liberally - it's the most powerful feature
|
|
|
|
💡 **Tip 3**: Animate timelines for presentations - it's impressive!
|
|
|
|
💡 **Tip 4**: Track key actors across states to tell their story
|
|
|
|
💡 **Tip 5**: Capture states BEFORE making major changes (safety net)
|
|
|
|
💡 **Tip 6**: Use scenarios to explore "what if" without commitment
|
|
|
|
💡 **Tip 7**: Export comparison reports for documentation
|
|
|
|
💡 **Tip 8**: Clean up old/unused states periodically
|
|
|
|
---
|
|
|
|
## Remember
|
|
|
|
This is about **storytelling and analysis**, not version control!
|
|
|
|
Think: "How did this network evolve?" not "What edits did I make?"
|
|
|
|
Use states to:
|
|
- ✅ Show temporal evolution
|
|
- ✅ Explore scenarios
|
|
- ✅ Compare alternatives
|
|
- ✅ Track actor journeys
|
|
- ✅ Present findings
|
|
|
|
Not to:
|
|
- ❌ Undo/redo edits
|
|
- ❌ Track every change
|
|
- ❌ Collaborate on editing
|
|
- ❌ Version control your work
|
|
|
|
---
|
|
|
|
**Happy analyzing!** 🎉
|