summaryrefslogtreecommitdiff
path: root/web/templates/frag-activity.tmpl
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-08-02 23:43:08 -0300
committerGabriel Schneider <[email protected]>2026-08-03 09:54:39 -0300
commit5ec72f8723d795d0b02d7e9ebb9f555f0c7e6a2e (patch)
treef12f4b700fff4ff6f7e818d2a542672ba0b8d76e /web/templates/frag-activity.tmpl
parenta9263daee9413c5eff3c1f1bebcd224442fd8685 (diff)
downloadnotevi-5ec72f8723d795d0b02d7e9ebb9f555f0c7e6a2e.tar.gz
notevi-5ec72f8723d795d0b02d7e9ebb9f555f0c7e6a2e.zip
rebrand to notevi: one CLI over the jj sidecar
vr and vrsite become a single binary. vrsite/ folds into a web package in one module (0x4200.cafe/notevi); "notevi web" serves and exports exactly what vrsite did, and "notevi read/grep/note/query" is unchanged. The sidecar is renamed with it: notevi_log, notevi-log.jsonl, and the description "private: notevi log". The pre-rebrand names are still recognized, so an old repository opens and reads; it is renamed in place on the first write, or up front with "notevi migrate DIR...". That rename cannot be a single mv inside jj run. jj only auto-tracks a *new* file in the run working copy below a size limit it does not take from the command line, so writing a whole log under a name the change has never held is silently dropped while jj reports success. ensureLogFile creates the file empty first and lets every later byte be a modification of a tracked file, which snapshots at any size; that also fixes the same latent bug when importing a large legacy vr-log.jsonl. Adds a bem-te-vi mark (favicon and nav brand) and a README. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Diffstat (limited to 'web/templates/frag-activity.tmpl')
-rw-r--r--web/templates/frag-activity.tmpl36
1 files changed, 36 insertions, 0 deletions
diff --git a/web/templates/frag-activity.tmpl b/web/templates/frag-activity.tmpl
new file mode 100644
index 0000000..071c556
--- /dev/null
+++ b/web/templates/frag-activity.tmpl
@@ -0,0 +1,36 @@
+{{/* Who is reading the codebase right now, straight off the log tail. */}}
+{{define "activity"}}
+{{if .Compact}}
+ <div class="actlist">
+ {{range .Sessions}}
+ <div class="act{{if .Live}} on{{end}}" title="{{.Agent}} · {{.Model}} · {{.Dir}}">
+ {{if and $.Live .ID}}<a class="chip am{{.Bit}}" href="{{$.Href "session" .ID}}">{{.Short}}</a>
+ {{else}}<span class="chip am{{.Bit}}">{{.Short}}</span>{{end}}
+ <span class="what">{{.LastOp}}</span>
+ <span class="when">{{.Ago}}</span>
+ </div>
+ {{end}}
+ {{if not .Sessions}}<p class="meta hint">nothing logged yet</p>{{end}}
+ </div>
+{{else}}
+ <table class="acttable">
+ <thead><tr><th>agent</th><th>model</th><th>session</th><th>last op</th><th>when</th><th>r/g/n</th><th>dir</th></tr></thead>
+ <tbody>
+ {{range .Sessions}}
+ <tr class="{{if .Live}}on{{end}}">
+ <td><span class="chip am{{.Bit}}">{{.Short}}</span>{{if .Live}}<span class="pulse" title="active">●</span>{{end}}</td>
+ <td>{{.Model}}{{if .Reason}}<span class="meta">/{{.Reason}}</span>{{end}}</td>
+ <td>{{if and $.Live .ID}}<a href="{{$.Href "session" .ID}}" title="{{.ID}}"><code>{{short .ID}}</code></a>
+ {{else}}<code title="{{.ID}}">{{short .ID}}</code>{{end}}</td>
+ <td class="what">{{.LastOp}}</td>
+ <td>{{.Ago}}</td>
+ <td class="meta">{{.Reads}}/{{.Greps}}/{{.Notes}}</td>
+ <td class="meta dir" title="{{.Dir}}">{{base .Dir}}</td>
+ </tr>
+ {{end}}
+ </tbody>
+ </table>
+ {{if not .Sessions}}<p class="meta hint">nothing logged yet</p>{{end}}
+ <p class="meta">live = active in the last {{.Window}}</p>
+{{end}}
+{{end}}