Diff -- /var/www/vhosts/3dshawn.com/site1/TEMPLATES/named_releases.html

O Operator
Diff

/var/www/vhosts/3dshawn.com/site1/TEMPLATES/named_releases.html

modified on local at 2026-07-12 00:35:33

Added
+8
lines
Removed
-0
lines
Context
111
unchanged
Blobs
from def89dd3ea6d
to 2de1e6efad1f
Restore this content →
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.
11<div class="page-head">
22 <span class="page-eyebrow"><span class="dot"></span> Bookmark</span>
33 <h1 class="page-title">Named releases</h1>
44 <p class="page-subtitle">Retroactively bookmark a moment. "Before the schema refactor." "Customer verified this worked." "Before I fired the intern." Every blob referenced by a named release is protected from auto-purge, so restore-to-moment always works &mdash; scoped portfolio-wide or to a single site.</p>
5</div>
6
7<div class="ds-guide">
8 <div class="dsg-icon">i</div>
9 <div>
10 <span class="dsg-title">Three ways to pin content:</span>
11 (1) <strong>Portfolio-wide</strong>: leave scope as "All monitored sites" &mdash; protects every blob captured up to <em>now</em>. (2) <strong>Per-site</strong>: pick a monitor &mdash; only that site's blobs are pinned. (3) <strong>Explicit pins</strong><span class="ds-help" data-help-title="Explicit pins" data-help-body="Instead of pinning &quot;everything captured before this moment&quot;, explicit pins tie a release to specific <code>NAMED_RELEASE_PINS</code> rows &mdash; each pointing at a chosen <code>file_changes_id</code>. Auto-purge always keeps those specific blobs. Use <a href='/pin_hotspots.cgi'>Pin hotspots</a> to create one." data-help-link="/pin_hotspots.cgi" data-help-link-label="Pin hotspots"></span>: use <a href="/pin_hotspots.cgi">Pin hotspots</a> to freeze the current-latest blobs of the churniest files. Set a <strong>Drift alert URL</strong> below and DriftSense will page you when any pinned file's current SHA no longer matches its pinned SHA.
12 </div>
513</div>
614
715<div class="module glow-emerald" style="margin-bottom:16px">
816 <div class="module-head"><div class="left">
917 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 13V7a2 2 0 0 0-2-2h-4l-2-3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h5"/><path d="M14 19l2 2 4-4"/></svg></div>
1018 <div class="module-title">Create a bookmark</div>
1119 <span class="module-subtitle">Names the current moment. Everything captured up to now becomes restorable from this label forever.</span>
1220 </div></div>
1321 <div class="module-body">
1422 <form method="post" action="/named_releases.cgi" style="display:flex;flex-direction:column;gap:12px">
1523 <input type="hidden" name="save" value="1">
1624
1725 <div style="display:flex;gap:12px">
1826 <label style="flex:1;display:flex;flex-direction:column;gap:4px">
1927 <span class="rb-label">Name</span>
2028 <input type="text" name="name" required placeholder="e.g. before-schema-refactor"
2129 style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-family:var(--mono);font-size:12.5px">
2230 </label>
2331 <label style="flex:2;display:flex;flex-direction:column;gap:4px">
2432 <span class="rb-label">Description</span>
2533 <input type="text" name="description" placeholder="Optional context"
2634 style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:12.5px">
2735 </label>
2836 <label style="width:160px;display:flex;flex-direction:column;gap:4px">
2937 <span class="rb-label">By</span>
3038 <input type="text" name="released_by" value="Operator"
3139 style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:12.5px">
3240 </label>
3341 </div>
3442
3543 <label style="display:flex;flex-direction:column;gap:4px">
3644 <span class="rb-label">Scope <span class="dim" style="text-transform:none;letter-spacing:0;font-size:10.5px">&mdash; leave "All monitored sites" for a portfolio-wide bookmark</span></span>
3745 <select name="scope_monitor_id" style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:12.5px">
3846 <option value="0">All monitored sites (portfolio-wide)</option>
3947 [loop:@monitors]
4048 <option value="$mid">$label</option>
4149 [/loop]
4250 </select>
4351 </label>
4452
4553 <div style="display:flex;gap:12px">
4654 <label style="flex:1;display:flex;flex-direction:column;gap:4px">
4755 <span class="rb-label">Drift alerts <span class="dim" style="text-transform:none;letter-spacing:0;font-size:10.5px">(optional)</span></span>
4856 <select name="alert_delivery_kind" style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:12.5px">
4957 <option value="none">Off</option>
5058 <option value="generic_webhook">Generic HTTP webhook</option>
5159 <option value="slack">Slack webhook</option>
5260 <option value="discord">Discord webhook</option>
5361 </select>
5462 </label>
5563 <label style="flex:2;display:flex;flex-direction:column;gap:4px">
5664 <span class="rb-label">Delivery URL <span class="dim" style="text-transform:none;letter-spacing:0;font-size:10.5px">&mdash; fires when any pinned file drifts from its pinned SHA</span></span>
5765 <input type="text" name="alert_delivery_url" placeholder="https://hooks.slack.com/... (leave blank to disable)"
5866 style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-family:var(--mono);font-size:11.5px">
5967 </label>
6068 </div>
6169
6270 <div style="display:flex;justify-content:flex-end">
6371 <button type="submit" class="tr-chip is-active" style="border:none;padding:8px 18px">Save bookmark</button>
6472 </div>
6573 </form>
6674 </div>
6775</div>
6876
6977<div class="module glow-teal">
7078 <div class="module-head"><div class="left">
7179 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><line x1="4" y1="9" x2="20" y2="9"/><line x1="4" y1="15" x2="20" y2="15"/><line x1="10" y1="3" x2="8" y2="21"/><line x1="16" y1="3" x2="14" y2="21"/></svg></div>
7280 <div class="module-title">All bookmarks</div>
7381 <span class="module-subtitle">$total bookmarks. Protected ones (default) survive auto-purge; unlocked ones are eligible for cleanup after the retention window.</span>
7482 </div></div>
7583 <div class="module-body tight">
7684 [if:$has_rows]
7785 <table class="tbl">
7886 <thead><tr>
7987 <th>Name</th>
8088 <th style="width:150px">Scope</th>
8189 <th style="width:110px">By</th>
8290 <th style="width:110px">Protection</th>
8391 <th style="width:130px">Moment</th>
8492 <th style="width:150px">Actions</th>
8593 </tr></thead>
8694 <tbody>
8795 [loop:@rows]
8896 <tr>
8997 <td><strong>$name</strong><div class="dim" style="font-size:11.5px;margin-top:2px">$description</div></td>
9098 <td>
9199 <span class="pill $scope_pill" style="font-size:10px">$scope_lbl</span>
92100 <div class="mono dim" style="font-size:10.5px;margin-top:3px">$scope_h</div>
93101 </td>
94102 <td class="dim">$released_by</td>
95103 <td><span class="pill $lock_pill">$lock_lbl</span></td>
96104 <td class="mono dim"><span class="ts" data-ts="$released_epoch" data-fmt="datetime">$released_h</span></td>
97105 <td>
98106 <a href="/restore_release.cgi?release_id=$id" class="tr-chip" style="padding:3px 10px;font-size:11px">Restore all</a>
99107 </td>
100108 </tr>
101109 [/loop]
102110 </tbody>
103111 </table>
104112 [/if]
105113 [if:!$has_rows]
106114 <div style="padding:36px 14px;text-align:center;color:var(--text-dim);font-size:13.5px">
107115 No bookmarks yet. Save your first one above.
108116 </div>
109117 [/if]
110118 </div>
111119</div>