Skip to content

Commit 5da9bb5

Browse files
committed
feat(system-log): add app presets and example helper for service timelines
1 parent 54c26a4 commit 5da9bb5

3 files changed

Lines changed: 41 additions & 5 deletions

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ nix run . -- --multi-dir ~/Projects/utensils --template compare-panel --sync-tim
3232

3333
# Render system logs (journalctl -> timeline)
3434
nix run . -- --system-log journal --system-log-since "24 hours ago" --template tokyo-night --legend all -o system-journal.mp4
35+
36+
# Service-focused system timeline (recommended preset)
37+
nix run . -- --system-log journal --system-log-since "24 hours ago" --system-log-limit 5000 --template tokyo-night --legend actions --title "System Services" -o system-services.mp4
38+
39+
# Same preset via helper script
40+
./scripts/example-system-services ./out/examples/system-services-example.mp4
3541
```
3642

3743
### Nix build targets
@@ -88,6 +94,7 @@ The web interface uses the same urandom-style visual language (zinc dark base, J
8894
Web UI extras:
8995
- defaults to **single-repo** mode for fast one-off renders
9096
- includes **System Log** mode (`journal`, `kernel`, `auth`) for machine activity timelines
97+
- System Log mode auto-applies a useful preset (`tokyo-night` + `legend=actions` + title `System Services`)
9198
- GitHub-like repo search (`owner/repo` picker)
9299
- selected GitHub repos are cloned/updated locally under `/tmp/envisaged-web-repos`
93100
- POST/redirect/GET flow avoids browser “submit form again” prompts

scripts/example-system-services

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
OUT=${1:-system-services.mp4}
5+
6+
exec nix run . -- \
7+
--system-log journal \
8+
--system-log-since "24 hours ago" \
9+
--system-log-limit 5000 \
10+
--template tokyo-night \
11+
--legend actions \
12+
--title "System Services" \
13+
-o "$OUT"

src/envisaged/web_templates/index.html

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h2 class="mb-4 text-lg font-semibold">New Render</h2>
8585
</label>
8686
<label class="block">
8787
<span class="mb-1 block text-[11px] uppercase label-meta text-zinc-500">Template</span>
88-
<select name="template" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
88+
<select id="template-select" name="template" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
8989
{% for t in templates %}
9090
<option value="{{ t }}" {% if t == default_template %}selected{% endif %}>{{ t }}</option>
9191
{% endfor %}
@@ -95,7 +95,7 @@ <h2 class="mb-4 text-lg font-semibold">New Render</h2>
9595

9696
<label class="block">
9797
<span class="mb-1 block text-[11px] uppercase label-meta text-zinc-500">Title</span>
98-
<input name="title" value="Envisaged Render" class="form-input w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm" />
98+
<input id="title-input" name="title" value="Envisaged Render" class="form-input w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm" />
9999
</label>
100100

101101
<div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
@@ -119,7 +119,7 @@ <h2 class="mb-4 text-lg font-semibold">New Render</h2>
119119
<div id="system-group" class="grid grid-cols-1 sm:grid-cols-3 gap-3">
120120
<label class="block">
121121
<span class="mb-1 block text-[11px] uppercase label-meta text-zinc-500">System Source</span>
122-
<select name="system_log" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
122+
<select id="system-source-select" name="system_log" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
123123
<option value="journal">journal</option>
124124
<option value="kernel">kernel</option>
125125
<option value="auth">auth</option>
@@ -164,7 +164,7 @@ <h2 class="mb-4 text-lg font-semibold">New Render</h2>
164164
</label>
165165
<label class="block">
166166
<span class="mb-1 block text-[11px] uppercase label-meta text-zinc-500">Legend</span>
167-
<select name="legend" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
167+
<select id="legend-select" name="legend" class="form-select w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm">
168168
<option>auto</option>
169169
<option>none</option>
170170
<option>repos</option>
@@ -175,7 +175,7 @@ <h2 class="mb-4 text-lg font-semibold">New Render</h2>
175175
</label>
176176
<label class="block">
177177
<span class="mb-1 block text-[11px] uppercase label-meta text-zinc-500">Legend Limit</span>
178-
<input name="legend_limit" type="number" min="1" max="20" value="8" class="form-input w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm" />
178+
<input id="legend-limit-input" name="legend_limit" type="number" min="1" max="20" value="8" class="form-input w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm" />
179179
</label>
180180
</div>
181181

@@ -223,6 +223,11 @@ <h2 class="text-lg font-semibold">Recent Renders</h2>
223223
const multiReposEl = document.getElementById('multi-repos');
224224
const multiReposGroup = document.getElementById('multi-repos-group');
225225
const systemGroup = document.getElementById('system-group');
226+
const templateSelect = document.getElementById('template-select');
227+
const titleInput = document.getElementById('title-input');
228+
const legendSelect = document.getElementById('legend-select');
229+
const legendLimitInput = document.getElementById('legend-limit-input');
230+
const systemSourceSelect = document.getElementById('system-source-select');
226231
const refreshBtn = document.getElementById('refresh-btn');
227232

228233
function updateModeVisibility() {
@@ -241,6 +246,17 @@ <h2 class="text-lg font-semibold">Recent Renders</h2>
241246

242247
systemGroup.classList.toggle('opacity-50', !system);
243248
systemGroup.classList.toggle('hidden', !system);
249+
250+
if (system && modeEl.dataset.systemPresetApplied !== '1') {
251+
if (titleInput.value.trim() === '' || titleInput.value === 'Envisaged Render') {
252+
titleInput.value = 'System Services';
253+
}
254+
templateSelect.value = 'tokyo-night';
255+
legendSelect.value = 'actions';
256+
legendLimitInput.value = '8';
257+
systemSourceSelect.value = 'journal';
258+
modeEl.dataset.systemPresetApplied = '1';
259+
}
244260
}
245261

246262
modeEl.addEventListener('change', updateModeVisibility);

0 commit comments

Comments
 (0)