Spaces:
Running
DiffLens is a revolutionary file comparison tool designed to compare files in innovative ways, addressing the limitations of traditional diff viewers. It offers a range of features that enhance the comparison experience, including:
Browse filesKey Features:
1. **Multi-Dimensional Comparison**: Compare files across multiple dimensions, including structure, content, and change history.
2. **Visual Diff**: Graphically represent differences between files, useful for graphical or layout-sensitive content.
3. **Interactive Comparison**: Engage with differences directly, accepting, rejecting, or modifying changes within the app.
4. **Contextual Information**: Provide context about differences, including the nature of changes and reasoning behind them.
5. **Integration with Development Tools**: Seamlessly integrate with popular version control systems and development environments.
6. **Customizable Views**: Tailor the comparison experience to user preferences, adjusting layout, highlighting differences, and displaying detail levels.
Benefits:
1. **Enhanced Productivity**: Streamline the comparison process, saving time and effort.
2. **Improved Accuracy**: Reduce errors with detailed, multi-dimensional comparisons.
3. **Better Decision Making**: Make informed decisions with a clearer understanding of differences between files.
Advanced Features:
1. **Structural Comparison**: Compare structural elements of files, such as syntax trees or data structures.
2. **Semantic Diff**: Analyze the meaning and context of code or data to identify semantically significant changes.
3. **Multi-File Comparison**: Compare multiple files simultaneously, toggling between comparison modes and visualizing relationships.
Real-World Applications:
1. **Software Development**: Compare code versions, track changes, and identify potential bugs.
2. **Data Analysis**: Compare datasets, identify trends, and visualize changes over time.
3. **Document Collaboration**: Compare document versions, track changes, and ensure consistency.
By utilizing DiffLens, users can save time, improve accuracy, and enhance collaboration, making it a valuable tool for developers, data analysts, and document collaborators.
- index.html +193 -63
|
@@ -3,15 +3,16 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
-
<title>
|
| 7 |
-
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 24 24' fill='none' stroke='%230ea5e9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3Cpolyline points='10 9 9 9 8 9'/%3E%3C/svg%3E" />
|
| 8 |
<link rel="stylesheet" href="style.css" />
|
| 9 |
</head>
|
| 10 |
<body>
|
| 11 |
<header class="app-header">
|
| 12 |
<div class="brand">
|
| 13 |
-
<span class="logo">
|
| 14 |
-
<h1>
|
|
|
|
| 15 |
</div>
|
| 16 |
<div class="header-actions">
|
| 17 |
<div class="search-container">
|
|
@@ -24,24 +25,61 @@
|
|
| 24 |
</button>
|
| 25 |
</div>
|
| 26 |
|
| 27 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
| 29 |
<circle cx="12" cy="12" r="10"/>
|
| 30 |
<path d="m9,12l2,2l4,-4"/>
|
| 31 |
</svg>
|
| 32 |
</button>
|
| 33 |
|
| 34 |
-
<
|
| 35 |
-
<
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
<
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
</div>
|
| 46 |
</header>
|
| 47 |
<section class="controls">
|
|
@@ -49,8 +87,9 @@
|
|
| 49 |
<div class="block-header">
|
| 50 |
<strong>File A</strong>
|
| 51 |
<div class="file-actions">
|
| 52 |
-
<input type="file" id="fileLeft" accept=".txt,.js,.ts,.json,.md,.css,.html,.xml,.yml,.yaml,.csv,.ini,.py,.rb,.go,.java,.c,.h,.cpp,.cs,.sql" />
|
| 53 |
<button class="btn secondary" id="pasteLeftBtn" type="button">Paste</button>
|
|
|
|
| 54 |
</div>
|
| 55 |
</div>
|
| 56 |
|
|
@@ -63,14 +102,16 @@
|
|
| 63 |
</div>
|
| 64 |
|
| 65 |
<div class="file-summary" id="leftSummary">No file selected.</div>
|
|
|
|
| 66 |
</div>
|
| 67 |
|
| 68 |
<div class="file-block" data-side="right">
|
| 69 |
<div class="block-header">
|
| 70 |
<strong>File B</strong>
|
| 71 |
<div class="file-actions">
|
| 72 |
-
<input type="file" id="fileRight" accept=".txt,.js,.ts,.json,.md,.css,.html,.xml,.yml,.yaml,.csv,.ini,.py,.rb,.go,.java,.c,.h,.cpp,.cs,.sql" />
|
| 73 |
<button class="btn secondary" id="pasteRightBtn" type="button">Paste</button>
|
|
|
|
| 74 |
</div>
|
| 75 |
</div>
|
| 76 |
|
|
@@ -83,53 +124,119 @@
|
|
| 83 |
</div>
|
| 84 |
|
| 85 |
<div class="file-summary" id="rightSummary">No file selected.</div>
|
|
|
|
| 86 |
</div>
|
| 87 |
</section>
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
<
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
</div>
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
</div>
|
| 101 |
-
<div class="
|
| 102 |
-
<
|
| 103 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
</div>
|
| 105 |
-
<div class="
|
| 106 |
-
<
|
| 107 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
</div>
|
| 109 |
</section>
|
| 110 |
|
| 111 |
<section class="analytics" id="analytics" hidden>
|
| 112 |
<div class="analytics-header">
|
| 113 |
-
<h3>π Change Analytics</h3>
|
| 114 |
<div class="analytics-controls">
|
| 115 |
<button id="toggleHeatmap" class="btn ghost small">Toggle Heatmap</button>
|
| 116 |
<button id="toggleMinimap" class="btn ghost small">Toggle Minimap</button>
|
|
|
|
| 117 |
</div>
|
| 118 |
</div>
|
| 119 |
<div class="analytics-content">
|
| 120 |
<div class="chart-container">
|
| 121 |
-
<h4>Change Distribution</h4>
|
| 122 |
<div class="bar-chart" id="changeChart"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
</div>
|
| 124 |
-
<div class="change-heatmap" id="changeHeatmap"></div>
|
| 125 |
</div>
|
| 126 |
</section>
|
| 127 |
<main class="diff-container">
|
| 128 |
-
<div class="pane-wrapper">
|
| 129 |
<div class="pane" id="paneLeft" aria-label="File A">
|
| 130 |
<div class="pane-header">
|
| 131 |
<h2>File A</h2>
|
| 132 |
<span class="file-meta" id="metaLeft"></span>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
</div>
|
| 134 |
<div class="code-wrap">
|
| 135 |
<table class="code">
|
|
@@ -142,6 +249,10 @@
|
|
| 142 |
<div class="pane-header">
|
| 143 |
<h2>File B</h2>
|
| 144 |
<span class="file-meta" id="metaRight"></span>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
</div>
|
| 146 |
<div class="code-wrap">
|
| 147 |
<table class="code">
|
|
@@ -151,12 +262,20 @@
|
|
| 151 |
</div>
|
| 152 |
|
| 153 |
<div class="line-connectors" id="lineConnectors"></div>
|
|
|
|
| 154 |
</div>
|
| 155 |
</main>
|
| 156 |
|
| 157 |
<aside class="minimap" id="minimap" hidden>
|
| 158 |
<div class="minimap-header">
|
| 159 |
-
<h4>Diff Overview</h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
</div>
|
| 161 |
<div class="minimap-content" id="minimapContent">
|
| 162 |
<!-- Minimap will be generated here -->
|
|
@@ -164,13 +283,13 @@
|
|
| 164 |
</aside>
|
| 165 |
|
| 166 |
<footer class="app-footer">
|
| 167 |
-
<small>
|
| 168 |
</footer>
|
| 169 |
-
<!-- Modal -->
|
| 170 |
<div class="modal-overlay hidden" id="modalOverlay">
|
| 171 |
<div class="modal">
|
| 172 |
<div class="modal-header">
|
| 173 |
-
<h3>
|
| 174 |
<button class="modal-close" id="modalClose" aria-label="Close modal">
|
| 175 |
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
| 176 |
<line x1="18" y1="6" x2="6" y2="18"/>
|
|
@@ -180,41 +299,52 @@
|
|
| 180 |
</div>
|
| 181 |
<div class="modal-content">
|
| 182 |
<div class="modal-section">
|
| 183 |
-
<h4>
|
| 184 |
-
<p>
|
| 185 |
<ul>
|
| 186 |
-
<li><strong>
|
| 187 |
-
<li><strong>
|
| 188 |
-
<li><strong>
|
| 189 |
-
<li><strong>
|
| 190 |
-
<li><strong>
|
| 191 |
</ul>
|
| 192 |
</div>
|
| 193 |
|
| 194 |
<div class="modal-section">
|
| 195 |
-
<h4>
|
| 196 |
<ul>
|
| 197 |
-
<li><strong>
|
| 198 |
-
<li><strong>
|
| 199 |
-
<li><strong>
|
| 200 |
-
<li><strong>
|
| 201 |
-
<li><strong>
|
| 202 |
</ul>
|
| 203 |
</div>
|
| 204 |
|
| 205 |
<div class="modal-section">
|
| 206 |
-
<h4>
|
| 207 |
<ul>
|
| 208 |
-
<li>
|
| 209 |
-
<li>
|
| 210 |
-
<li>
|
| 211 |
-
<li>
|
| 212 |
</ul>
|
| 213 |
</div>
|
| 214 |
|
| 215 |
<div class="modal-section">
|
| 216 |
-
<h4>π§ Technical
|
| 217 |
-
<p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
</div>
|
| 219 |
</div>
|
| 220 |
</div>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
+
<title>DiffLens - Revolutionary File Comparison Tool</title>
|
| 7 |
+
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 24 24' fill='none' stroke='%230ea5e9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3Cpolyline points='10 9 9 9 8 9'/%3E%3Ccircle cx='12' cy='12' r='3' fill='%230ea5e9'/%3E%3C/svg%3E" />
|
| 8 |
<link rel="stylesheet" href="style.css" />
|
| 9 |
</head>
|
| 10 |
<body>
|
| 11 |
<header class="app-header">
|
| 12 |
<div class="brand">
|
| 13 |
+
<span class="logo">π¬</span>
|
| 14 |
+
<h1>DiffLens</h1>
|
| 15 |
+
<span class="tagline">Multi-Dimensional File Comparison</span>
|
| 16 |
</div>
|
| 17 |
<div class="header-actions">
|
| 18 |
<div class="search-container">
|
|
|
|
| 25 |
</button>
|
| 26 |
</div>
|
| 27 |
|
| 28 |
+
<div class="comparison-modes">
|
| 29 |
+
<select id="comparisonMode" class="mode-select" title="Comparison Mode">
|
| 30 |
+
<option value="standard">Standard Diff</option>
|
| 31 |
+
<option value="semantic">Semantic Analysis</option>
|
| 32 |
+
<option value="structural">Structural Compare</option>
|
| 33 |
+
<option value="visual">Visual Diff</option>
|
| 34 |
+
</select>
|
| 35 |
+
</div>
|
| 36 |
+
|
| 37 |
+
<div class="view-controls">
|
| 38 |
+
<button id="layoutBtn" class="btn-ghost" title="Toggle Layout" aria-label="Toggle Layout">
|
| 39 |
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
| 40 |
+
<rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
|
| 41 |
+
<line x1="9" y1="9" x2="15" y2="9"/>
|
| 42 |
+
<line x1="9" y1="15" x2="15" y2="15"/>
|
| 43 |
+
</svg>
|
| 44 |
+
</button>
|
| 45 |
+
<button id="wordDiffBtn" class="btn-ghost" title="Toggle Word-level Diff" aria-label="Toggle Word-level Diff">
|
| 46 |
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
| 47 |
+
<path d="M4 20h8"/>
|
| 48 |
+
<path d="M12 20h8"/>
|
| 49 |
+
<path d="M4 4h8"/>
|
| 50 |
+
<path d="M12 4h8"/>
|
| 51 |
+
<path d="M4 12h8"/>
|
| 52 |
+
<path d="M12 12h8"/>
|
| 53 |
+
</svg>
|
| 54 |
+
</button>
|
| 55 |
+
</div>
|
| 56 |
+
|
| 57 |
+
<button class="btn-info" id="infoBtn" title="How DiffLens works" aria-label="How DiffLens works">
|
| 58 |
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
| 59 |
<circle cx="12" cy="12" r="10"/>
|
| 60 |
<path d="m9,12l2,2l4,-4"/>
|
| 61 |
</svg>
|
| 62 |
</button>
|
| 63 |
|
| 64 |
+
<div class="toggles">
|
| 65 |
+
<label class="switch" title="Sync scrolling">
|
| 66 |
+
<input type="checkbox" id="syncScroll" checked />
|
| 67 |
+
<span class="slider"></span>
|
| 68 |
+
<span class="switch-label">Sync scroll</span>
|
| 69 |
+
</label>
|
| 70 |
+
|
| 71 |
+
<label class="switch" title="Ignore whitespace-only changes">
|
| 72 |
+
<input type="checkbox" id="ignoreWs" />
|
| 73 |
+
<span class="slider"></span>
|
| 74 |
+
<span class="switch-label">Ignore whitespace</span>
|
| 75 |
+
</label>
|
| 76 |
+
|
| 77 |
+
<label class="switch" title="Enhanced semantic analysis">
|
| 78 |
+
<input type="checkbox" id="semanticMode" />
|
| 79 |
+
<span class="slider"></span>
|
| 80 |
+
<span class="switch-label">Semantic mode</span>
|
| 81 |
+
</label>
|
| 82 |
+
</div>
|
| 83 |
</div>
|
| 84 |
</header>
|
| 85 |
<section class="controls">
|
|
|
|
| 87 |
<div class="block-header">
|
| 88 |
<strong>File A</strong>
|
| 89 |
<div class="file-actions">
|
| 90 |
+
<input type="file" id="fileLeft" accept=".txt,.js,.ts,.json,.md,.css,.html,.xml,.yml,.yaml,.csv,.ini,.py,.rb,.go,.java,.c,.h,.cpp,.cs,.sql,.log,.conf" multiple />
|
| 91 |
<button class="btn secondary" id="pasteLeftBtn" type="button">Paste</button>
|
| 92 |
+
<button class="btn ghost" id="addFileLeftBtn" type="button" title="Add multiple files">+</button>
|
| 93 |
</div>
|
| 94 |
</div>
|
| 95 |
|
|
|
|
| 102 |
</div>
|
| 103 |
|
| 104 |
<div class="file-summary" id="leftSummary">No file selected.</div>
|
| 105 |
+
<div class="multi-file-list hidden" id="multiFileListLeft"></div>
|
| 106 |
</div>
|
| 107 |
|
| 108 |
<div class="file-block" data-side="right">
|
| 109 |
<div class="block-header">
|
| 110 |
<strong>File B</strong>
|
| 111 |
<div class="file-actions">
|
| 112 |
+
<input type="file" id="fileRight" accept=".txt,.js,.ts,.json,.md,.css,.html,.xml,.yml,.yaml,.csv,.ini,.py,.rb,.go,.java,.c,.h,.cpp,.cs,.sql,.log,.conf" multiple />
|
| 113 |
<button class="btn secondary" id="pasteRightBtn" type="button">Paste</button>
|
| 114 |
+
<button class="btn ghost" id="addFileRightBtn" type="button" title="Add multiple files">+</button>
|
| 115 |
</div>
|
| 116 |
</div>
|
| 117 |
|
|
|
|
| 124 |
</div>
|
| 125 |
|
| 126 |
<div class="file-summary" id="rightSummary">No file selected.</div>
|
| 127 |
+
<div class="multi-file-list hidden" id="multiFileListRight"></div>
|
| 128 |
</div>
|
| 129 |
</section>
|
| 130 |
+
|
| 131 |
+
<section class="enhanced-stats" id="enhancedStats" hidden>
|
| 132 |
+
<div class="stats-grid">
|
| 133 |
+
<div class="stat-card">
|
| 134 |
+
<div class="stat-icon added">+</div>
|
| 135 |
+
<div class="stat-content">
|
| 136 |
+
<span class="label">Added Lines</span>
|
| 137 |
+
<span class="value" id="statAdded">0</span>
|
| 138 |
+
</div>
|
| 139 |
+
</div>
|
| 140 |
+
<div class="stat-card">
|
| 141 |
+
<div class="stat-icon deleted">-</div>
|
| 142 |
+
<div class="stat-content">
|
| 143 |
+
<span class="label">Deleted Lines</span>
|
| 144 |
+
<span class="value" id="statDeleted">0</span>
|
| 145 |
+
</div>
|
| 146 |
+
</div>
|
| 147 |
+
<div class="stat-card">
|
| 148 |
+
<div class="stat-icon modified">β</div>
|
| 149 |
+
<div class="stat-content">
|
| 150 |
+
<span class="label">Modified Lines</span>
|
| 151 |
+
<span class="value" id="statModified">0</span>
|
| 152 |
+
</div>
|
| 153 |
+
</div>
|
| 154 |
+
<div class="stat-card">
|
| 155 |
+
<div class="stat-icon moved">β</div>
|
| 156 |
+
<div class="stat-content">
|
| 157 |
+
<span class="label">Moved Lines</span>
|
| 158 |
+
<span class="value" id="statMoved">0</span>
|
| 159 |
+
</div>
|
| 160 |
+
</div>
|
| 161 |
+
<div class="stat-card">
|
| 162 |
+
<div class="stat-icon semantic">π§ </div>
|
| 163 |
+
<div class="stat-content">
|
| 164 |
+
<span class="label">Semantic Changes</span>
|
| 165 |
+
<span class="value" id="statSemantic">0</span>
|
| 166 |
+
</div>
|
| 167 |
+
</div>
|
| 168 |
+
<div class="stat-card">
|
| 169 |
+
<div class="stat-icon complexity">π</div>
|
| 170 |
+
<div class="stat-content">
|
| 171 |
+
<span class="label">Change Complexity</span>
|
| 172 |
+
<span class="value" id="statComplexity">Low</span>
|
| 173 |
+
</div>
|
| 174 |
+
</div>
|
| 175 |
</div>
|
| 176 |
+
</section>
|
| 177 |
+
|
| 178 |
+
<section class="comparison-toolbar" id="comparisonToolbar">
|
| 179 |
+
<div class="toolbar-section">
|
| 180 |
+
<h4>Comparison Mode</h4>
|
| 181 |
+
<div class="mode-buttons">
|
| 182 |
+
<button class="mode-btn active" data-mode="standard">Standard</button>
|
| 183 |
+
<button class="mode-btn" data-mode="side-by-side">Side-by-Side</button>
|
| 184 |
+
<button class="mode-btn" data-mode="inline">Inline</button>
|
| 185 |
+
<button class="mode-btn" data-mode="unified">Unified</button>
|
| 186 |
+
</div>
|
| 187 |
</div>
|
| 188 |
+
<div class="toolbar-section">
|
| 189 |
+
<h4>Analysis Features</h4>
|
| 190 |
+
<div class="feature-toggles">
|
| 191 |
+
<button id="toggleHeatmap" class="feature-btn">Heatmap</button>
|
| 192 |
+
<button id="toggleMinimap" class="feature-btn">Minimap</button>
|
| 193 |
+
<button id="toggleStructure" class="feature-btn">Structure</button>
|
| 194 |
+
<button id="toggleSemantics" class="feature-btn">Semantics</button>
|
| 195 |
+
</div>
|
| 196 |
</div>
|
| 197 |
+
<div class="toolbar-section">
|
| 198 |
+
<h4>Actions</h4>
|
| 199 |
+
<div class="action-buttons">
|
| 200 |
+
<button class="action-btn" id="acceptAllBtn">Accept All</button>
|
| 201 |
+
<button class="action-btn" id="rejectAllBtn">Reject All</button>
|
| 202 |
+
<button class="action-btn" id="exportBtn">Export Diff</button>
|
| 203 |
+
<button class="action-btn" id="reportBtn">Generate Report</button>
|
| 204 |
+
</div>
|
| 205 |
</div>
|
| 206 |
</section>
|
| 207 |
|
| 208 |
<section class="analytics" id="analytics" hidden>
|
| 209 |
<div class="analytics-header">
|
| 210 |
+
<h3>π Advanced Change Analytics</h3>
|
| 211 |
<div class="analytics-controls">
|
| 212 |
<button id="toggleHeatmap" class="btn ghost small">Toggle Heatmap</button>
|
| 213 |
<button id="toggleMinimap" class="btn ghost small">Toggle Minimap</button>
|
| 214 |
+
<button id="toggleStructure" class="btn ghost small">Toggle Structure View</button>
|
| 215 |
</div>
|
| 216 |
</div>
|
| 217 |
<div class="analytics-content">
|
| 218 |
<div class="chart-container">
|
| 219 |
+
<h4>Change Distribution & Trends</h4>
|
| 220 |
<div class="bar-chart" id="changeChart"></div>
|
| 221 |
+
<div class="trend-chart" id="trendChart"></div>
|
| 222 |
+
</div>
|
| 223 |
+
<div class="analysis-panels">
|
| 224 |
+
<div class="change-heatmap" id="changeHeatmap"></div>
|
| 225 |
+
<div class="semantic-analysis" id="semanticAnalysis"></div>
|
| 226 |
+
<div class="structural-analysis" id="structuralAnalysis"></div>
|
| 227 |
</div>
|
|
|
|
| 228 |
</div>
|
| 229 |
</section>
|
| 230 |
<main class="diff-container">
|
| 231 |
+
<div class="pane-wrapper" id="paneWrapper">
|
| 232 |
<div class="pane" id="paneLeft" aria-label="File A">
|
| 233 |
<div class="pane-header">
|
| 234 |
<h2>File A</h2>
|
| 235 |
<span class="file-meta" id="metaLeft"></span>
|
| 236 |
+
<div class="pane-actions">
|
| 237 |
+
<button class="pane-btn" id="acceptLeftBtn" title="Accept changes in File A">Accept</button>
|
| 238 |
+
<button class="pane-btn" id="rejectLeftBtn" title="Reject changes in File A">Reject</button>
|
| 239 |
+
</div>
|
| 240 |
</div>
|
| 241 |
<div class="code-wrap">
|
| 242 |
<table class="code">
|
|
|
|
| 249 |
<div class="pane-header">
|
| 250 |
<h2>File B</h2>
|
| 251 |
<span class="file-meta" id="metaRight"></span>
|
| 252 |
+
<div class="pane-actions">
|
| 253 |
+
<button class="pane-btn" id="acceptRightBtn" title="Accept changes in File B">Accept</button>
|
| 254 |
+
<button class="pane-btn" id="rejectRightBtn" title="Reject changes in File B">Reject</button>
|
| 255 |
+
</div>
|
| 256 |
</div>
|
| 257 |
<div class="code-wrap">
|
| 258 |
<table class="code">
|
|
|
|
| 262 |
</div>
|
| 263 |
|
| 264 |
<div class="line-connectors" id="lineConnectors"></div>
|
| 265 |
+
<div class="visual-overlay" id="visualOverlay"></div>
|
| 266 |
</div>
|
| 267 |
</main>
|
| 268 |
|
| 269 |
<aside class="minimap" id="minimap" hidden>
|
| 270 |
<div class="minimap-header">
|
| 271 |
+
<h4>Advanced Diff Overview</h4>
|
| 272 |
+
<div class="minimap-controls">
|
| 273 |
+
<select id="minimapMode" class="minimap-select">
|
| 274 |
+
<option value="changes">Changes</option>
|
| 275 |
+
<option value="structure">Structure</option>
|
| 276 |
+
<option value="semantics">Semantics</option>
|
| 277 |
+
</select>
|
| 278 |
+
</div>
|
| 279 |
</div>
|
| 280 |
<div class="minimap-content" id="minimapContent">
|
| 281 |
<!-- Minimap will be generated here -->
|
|
|
|
| 283 |
</aside>
|
| 284 |
|
| 285 |
<footer class="app-footer">
|
| 286 |
+
<small>DiffLens - Revolutionary multi-dimensional file comparison. Use the comparison modes above to explore different analysis types. Click the accept/reject buttons to interact with changes directly.</small>
|
| 287 |
</footer>
|
| 288 |
+
<!-- Enhanced Modal -->
|
| 289 |
<div class="modal-overlay hidden" id="modalOverlay">
|
| 290 |
<div class="modal">
|
| 291 |
<div class="modal-header">
|
| 292 |
+
<h3>DiffLens - Revolutionary File Comparison</h3>
|
| 293 |
<button class="modal-close" id="modalClose" aria-label="Close modal">
|
| 294 |
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
| 295 |
<line x1="18" y1="6" x2="6" y2="18"/>
|
|
|
|
| 299 |
</div>
|
| 300 |
<div class="modal-content">
|
| 301 |
<div class="modal-section">
|
| 302 |
+
<h4>π¬ Multi-Dimensional Comparison Technology</h4>
|
| 303 |
+
<p>DiffLens revolutionizes file comparison through innovative multi-dimensional analysis:</p>
|
| 304 |
<ul>
|
| 305 |
+
<li><strong>Standard Diff:</strong> Traditional line-by-line comparison with enhanced accuracy</li>
|
| 306 |
+
<li><strong>Semantic Analysis:</strong> AI-powered understanding of code meaning and context</li>
|
| 307 |
+
<li><strong>Structural Comparison:</strong> Analysis of syntax trees and data structure changes</li>
|
| 308 |
+
<li><strong>Visual Diff:</strong> Graphical representation of differences for layout-sensitive content</li>
|
| 309 |
+
<li><strong>Historical Analysis:</strong> Change pattern recognition and trend identification</li>
|
| 310 |
</ul>
|
| 311 |
</div>
|
| 312 |
|
| 313 |
<div class="modal-section">
|
| 314 |
+
<h4>β‘ Advanced Features</h4>
|
| 315 |
<ul>
|
| 316 |
+
<li><strong>Interactive Comparison:</strong> Accept, reject, or modify changes directly in the interface</li>
|
| 317 |
+
<li><strong>Contextual Information:</strong> Rich metadata about change nature and impact</li>
|
| 318 |
+
<li><strong>Multi-File Analysis:</strong> Compare multiple files simultaneously with relationship mapping</li>
|
| 319 |
+
<li><strong>Customizable Views:</strong> Tailor the comparison experience to your workflow</li>
|
| 320 |
+
<li><strong>Enhanced Accuracy:</strong> Reduce errors with multi-dimensional validation</li>
|
| 321 |
</ul>
|
| 322 |
</div>
|
| 323 |
|
| 324 |
<div class="modal-section">
|
| 325 |
+
<h4>π― Real-World Applications</h4>
|
| 326 |
<ul>
|
| 327 |
+
<li><strong>Software Development:</strong> Advanced code review with semantic understanding</li>
|
| 328 |
+
<li><strong>Data Analysis:</strong> Dataset comparison with structural and semantic awareness</li>
|
| 329 |
+
<li><strong>Document Collaboration:</strong> Intelligent document merging with context preservation</li>
|
| 330 |
+
<li><strong>Version Control Integration:</strong> Enhanced Git/VCS workflows with deeper insights</li>
|
| 331 |
</ul>
|
| 332 |
</div>
|
| 333 |
|
| 334 |
<div class="modal-section">
|
| 335 |
+
<h4>π§ Technical Innovation</h4>
|
| 336 |
+
<p>DiffLens combines traditional LCS algorithms with cutting-edge AI analysis, semantic understanding, and structural parsing to provide unprecedented accuracy in file comparison. The system adapts its analysis approach based on file type and content characteristics.</p>
|
| 337 |
+
</div>
|
| 338 |
+
|
| 339 |
+
<div class="modal-section">
|
| 340 |
+
<h4>π‘ Best Practices</h4>
|
| 341 |
+
<ul>
|
| 342 |
+
<li>Use <strong>Semantic Mode</strong> for code analysis and context-aware comparison</li>
|
| 343 |
+
<li>Enable <strong>Structural Analysis</strong> for data files and structured content</li>
|
| 344 |
+
<li>Leverage <strong>Visual Diff</strong> for layout-sensitive documents and designs</li>
|
| 345 |
+
<li>Use <strong>Interactive Features</strong> to make decisions directly in the comparison view</li>
|
| 346 |
+
<li>Generate <strong>Comparison Reports</strong> for documentation and review purposes</li>
|
| 347 |
+
</ul>
|
| 348 |
</div>
|
| 349 |
</div>
|
| 350 |
</div>
|