Architecture: How should git graph visualization and enhanced commit detai...
Documentation for Sessions
🏗️ Architecture: How should git graph visualization and enhanced commit detai...
Date: 2026-03-21
Time: 16:50:02 UTC
Session: gspace1-253.6
Agent: angular
Confidence: 88%
Status: ✅ Documented
📋 Decision Context
Question:
How should git graph visualization and enhanced commit detail be architected as sub-components in the git-operations library?
Task: S251: Enhance git-operations with graph visualization and commit detail
🎯 Decision Made
Chosen:
Decomposed architecture: (1) git-commit-detail — expandable panel showing commit diff summary when clicking a commit. (2) git-graph — SVG-based branch topology visualization with commit nodes, branch lanes, merge lines. (3) Enhanced state service with graph data model. Each is a standalone Angular component exported from the library, composable independently.
Options Considered:
- Monolithic git-graph component (violates engineering standard)
- Decomposed sub-components (chosen — maintainable, reusable)
- 3rd party gitgraph.js (dependency bloat, limited customization)
💭 Reasoning
The global engineering standard mandates: small focused units, reusable architecture, clear boundaries. A monolithic git-graph component would violate separation of concerns and make maintenance by AI agents difficult. The decomposed approach: git-commit-detail handles click-to-expand logic independently, git-graph handles SVG rendering independently, and the state service provides the data model. A 3rd party library (gitgraph.js) was rejected because: (1) adds 50KB+ dependency, (2) limited Angular integration, (3) harder to customize to match our dark theme and role-based features, (4) we need tight integration with our state service signals. Custom SVG is ~200 lines and gives full control.
📁 Files Involved
libs/libs-structural/git-operations/src/lib/components/git-commit-detail/libs/libs-structural/git-operations/src/lib/components/git-graph/
🔗 Related
- Decision ID:
dev_1774111802647_rc9smr0 - Session: 253
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation