modified on local at 2026-07-13 20:26:15
| 1 | 1 | <div class="page-head"> |
| 2 | 2 | <span class="page-eyebrow"><span class="dot"></span> Monitor</span> |
| 3 | 3 | <h1 class="page-title">Schema changes</h1> |
| 4 | 4 | <p class="page-subtitle">Every DDL change captured across every monitored database. Someone ALTERs a column? It shows up here whether they told you or not.</p> |
| 5 | 5 | </div> |
| 6 | ||
| 7 | $picker_html | |
| 8 | 6 | |
| 9 | <form method="get" action="/schema_changes.cgi" style="display:flex;gap:8px;align-items:center;margin-bottom:16px"> | |
| 7 | <form method="get" action="/schema_changes.cgi" style="display:flex;gap:8px;align-items:center;margin-bottom:12px"> | |
| 10 | 8 | <span class="rb-label" style="font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:var(--text-muted);font-weight:700">Table filter</span> |
| 11 | 9 | <input type="text" name="q" value="$q" placeholder="db or table name substring" style="flex:1;background:var(--bg-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:12.5px;font-family:inherit"> |
| 12 | 10 | <button type="submit" class="tr-chip is-active" style="border:none">Apply</button> |
| 13 | 11 | [if:$q]<a class="tr-chip" href="/schema_changes.cgi">Clear</a>[/if] |
| 14 | 12 | </form> |
| 13 | ||
| 14 | $picker_html | |
| 15 | 15 | |
| 16 | 16 | <div class="module glow-amber"> |
| 17 | <div class="module-head"><div class="left"> | |
| 17 | <!-- Status filter tabs --> | |
| 18 | <div class="fc-tabs"> | |
| 19 | <a href="?status=modified$tab_qs_extra" class="fc-tab[if:$tab_modified_active] fc-tab-active[/if]" data-tab="modified"> | |
| 20 | <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg> | |
| 21 | <span>Modified</span> | |
| 22 | <span class="fc-tab-badge">$tab_modified_count</span> | |
| 23 | </a> | |
| 24 | <a href="?status=added$tab_qs_extra" class="fc-tab[if:$tab_added_active] fc-tab-active[/if]" data-tab="added"> | |
| 25 | <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg> | |
| 26 | <span>Added</span> | |
| 27 | <span class="fc-tab-badge">$tab_added_count</span> | |
| 28 | </a> | |
| 29 | <a href="?status=deleted$tab_qs_extra" class="fc-tab[if:$tab_deleted_active] fc-tab-active[/if]" data-tab="deleted"> | |
| 30 | <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"/></svg> | |
| 31 | <span>Deleted</span> | |
| 32 | <span class="fc-tab-badge">$tab_deleted_count</span> | |
| 33 | </a> | |
| 34 | <a href="?status=all$tab_qs_extra" class="fc-tab[if:$tab_all_active] fc-tab-active[/if]" data-tab="all"> | |
| 35 | <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/></svg> | |
| 36 | <span>All</span> | |
| 37 | <span class="fc-tab-badge">$tab_all_count</span> | |
| 38 | </a> | |
| 39 | </div> | |
| 40 | <div class="module-head" style="border-top:0"><div class="left"> | |
| 18 | 41 | <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5v6c0 1.7 4 3 9 3s9-1.3 9-3V5"/></svg></div> |
| 19 | <div class="module-title">DDL diffs</div> | |
| 20 | <span class="module-subtitle">Each row shows what the schema looked like before and after. Click to see the full unified diff of column adds, drops, and alters. $total match this window.</span> | |
| 42 | <div class="module-title">DDL diffs[if:$show_baseline] <span class="pill pill-mute" style="font-size:10px;margin-left:6px">baseline shown</span>[/if]</div> | |
| 43 | <span class="module-subtitle"> | |
| 44 | Each row shows what the schema looked like before and after. Click to see the full unified diff of column adds, drops, and alters. $total match this window. | |
| 45 | [if:$has_baseline_hidden] | |
| 46 | · <a href="?baseline=1" style="color:var(--accent-hi);text-decoration:none">$baseline_hidden baseline capture[if:$has_baseline_hidden]s[/if] hidden</a> | |
| 47 | <span class="ds-help" data-help-title="Baseline schema captures" data-help-body="When a table is first seen (or after a fresh DB wipe), DriftSense captures its DDL as a baseline (<code>first snapshot</code>). Those rows are marked <code>is_baseline=1</code> and hidden by default because they aren't real schema changes -- they're the starting state. Click the link to see them anyway."></span> | |
| 48 | [/if] | |
| 49 | [if:$show_baseline] | |
| 50 | · <a href="?" style="color:var(--accent-hi);text-decoration:none">Hide baseline</a> | |
| 51 | [/if] | |
| 52 | </span> | |
| 21 | 53 | </div></div> |
| 22 | 54 | <div class="module-body tight"> |
| 23 | 55 | [if:$has_rows] |
| 24 | 56 | <table class="tbl"> |
| 25 | 57 | <thead><tr> |
| 26 | 58 | <th style="width:220px">Database.Table</th> |
| 27 | 59 | <th>Change</th> |
| 28 | 60 | <th style="width:110px">30-day rhythm</th> |
| 29 | 61 | <th style="width:110px">Server</th> |
| 30 | 62 | <th style="width:180px">When</th> |
| 31 | 63 | </tr></thead> |
| 32 | 64 | <tbody> |
| 33 | 65 | [loop:@rows] |
| 34 | 66 | <tr> |
| 35 | 67 | <td class="mono"><a href="$diff_url" style="color:var(--accent-hi);text-decoration:none"><strong>$database_name</strong>.<span class="dim">$table_name</span></a></td> |
| 36 | 68 | <td class="mono dim" style="font-size:12px"><a href="$diff_url" style="color:inherit;text-decoration:none">$changes_preview</a></td> |
| 37 | 69 | <td>$sparkline_svg</td> |
| 38 | 70 | <td class="dim">$server_name</td> |
| 39 | 71 | <td class="mono dim"><span class="ts" data-ts="$ts_epoch" data-fmt="datetime">$change_datetime</span></td> |
| 40 | 72 | </tr> |
| 41 | 73 | [/loop] |
| 42 | 74 | </tbody> |
| 43 | 75 | </table> |
| 44 | 76 | [/if] |
| 45 | 77 | [if:!$has_rows] |
| 46 | 78 | <div style="padding:36px 14px;text-align:center;color:var(--text-dim);font-size:13.5px"> |
| 47 | 79 | No schema changes captured in this window. Try widening the range with the chips above, or configure a database monitor in <a href="[url:databases]" style="color:var(--accent-hi)">Databases</a>. |
| 48 | 80 | </div> |
| 49 | 81 | [/if] |
| 50 | 82 | </div> |
| 51 | 83 | </div> |