summaryrefslogtreecommitdiff
path: root/web/templates
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-23 06:50:43 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-23 06:50:43 +0000
commitb0688c8819da1b7fcb4a97b6ec1fa58050e4841e (patch)
treec62b4ea3e5cdb56225c39ad930dd3e5584053827 /web/templates
parentef7a45361996b7a49226a0b088e2599f2801d017 (diff)
feat: complete Agent Context API Phase 2 & 3 (Write/Create/Management)
- Implement write operations (complete, uncomplete, update due date, update task) - Implement create operations (create task, add shopping item) - Add Trusted Agents management UI in Settings with revocation support - Fix SQLite timestamp scanning bug for completed tasks - Add comprehensive unit tests for all new agent endpoints - Update worklog and feature documentation
Diffstat (limited to 'web/templates')
-rw-r--r--web/templates/index.html36
-rw-r--r--web/templates/settings.html38
2 files changed, 50 insertions, 24 deletions
diff --git a/web/templates/index.html b/web/templates/index.html
index aabe7ff..465e612 100644
--- a/web/templates/index.html
+++ b/web/templates/index.html
@@ -60,43 +60,31 @@
hx-get="/tabs/timeline"
hx-target="#tab-content"
hx-push-url="?tab=timeline"
- onclick="setActiveTab(this)">
- 🗓️ Timeline
- </button>
- <button
- class="tab-button {{if eq .ActiveTab "tasks"}}tab-button-active{{end}}"
- hx-get="/tabs/tasks"
- hx-target="#tab-content"
- hx-push-url="?tab=tasks"
- onclick="setActiveTab(this)">
- ✓ Tasks
+ onclick="setActiveTab(this)"
+ title="Timeline">
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"/></svg>
</button>
<button
class="tab-button {{if eq .ActiveTab "shopping"}}tab-button-active{{end}}"
hx-get="/tabs/shopping"
hx-target="#tab-content"
hx-push-url="?tab=shopping"
- onclick="setActiveTab(this)">
- 🛒 Shopping
- </button>
- <button
- class="tab-button {{if eq .ActiveTab "meals"}}tab-button-active{{end}}"
- hx-get="/tabs/meals"
- hx-target="#tab-content"
- hx-push-url="?tab=meals"
- onclick="setActiveTab(this)">
- 🍽️ Meals
+ onclick="setActiveTab(this)"
+ title="Shopping">
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/></svg>
</button>
<button
class="tab-button {{if eq .ActiveTab "planning"}}tab-button-active{{end}}"
hx-get="/tabs/planning"
hx-target="#tab-content"
hx-push-url="?tab=planning"
- onclick="setActiveTab(this)">
- 📋 Planning
+ onclick="setActiveTab(this)"
+ title="Planning">
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"/></svg>
</button>
- <a href="/conditions" class="tab-button">
- 🌋 Conditions
+ <a href="/conditions" class="tab-button" title="Conditions">🌋</a>
+ <a href="/claudomator/" class="tab-button" title="Claudomator">
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/></svg>
</a>
</nav>
</div>
diff --git a/web/templates/settings.html b/web/templates/settings.html
index ca1d268..ef969ee 100644
--- a/web/templates/settings.html
+++ b/web/templates/settings.html
@@ -167,6 +167,44 @@
</script>
{{end}}
+ <!-- Trusted Agents Section -->
+ <section class="mb-12">
+ <h2 class="text-xl font-medium text-white mb-6 pb-2 border-b border-white/10">Trusted Agents</h2>
+ <div class="grid gap-4" id="agents-list">
+ {{if .Agents}}
+ {{range .Agents}}
+ <div class="card flex items-center gap-4" id="agent-{{.AgentID}}">
+ <div class="flex-1">
+ <div class="flex items-center gap-2">
+ <strong class="text-white">{{.Name}}</strong>
+ {{if not .Trusted}}<span class="text-[10px] bg-red-950 text-red-400 px-2 py-0.5 rounded border border-red-900/50 uppercase tracking-wider">Revoked</span>{{end}}
+ </div>
+ <div class="text-xs font-mono text-slate-500 mt-0.5">{{.AgentID}}</div>
+ <div class="text-[10px] text-slate-400 mt-2 uppercase tracking-widest font-medium">
+ Last seen: {{if .LastSeen}}{{.LastSeen.Format "Jan 02, 15:04"}}{{else}}Never{{end}}
+ </div>
+ </div>
+ <div class="flex items-center gap-4">
+ {{if .Trusted}}
+ <button class="text-xs text-red-400 hover:text-red-300 transition-colors bg-red-950/30 hover:bg-red-950/50 px-3 py-1.5 rounded-lg border border-red-900/30"
+ hx-delete="/settings/agents/{{.AgentID}}"
+ hx-target="#agent-{{.AgentID}}"
+ hx-swap="outerHTML"
+ hx-confirm="Revoke access for agent '{{.Name}}'?">
+ Revoke Access
+ </button>
+ {{else}}
+ <div class="text-xs text-slate-500 italic">Access Revoked</div>
+ {{end}}
+ </div>
+ </div>
+ {{end}}
+ {{else}}
+ <div class="card text-center text-slate-500 py-10">No agents have requested access yet.</div>
+ {{end}}
+ </div>
+ </section>
+
<!-- Data Sources Section -->
<section class="mb-12">
<div class="flex flex-wrap items-center justify-between gap-4 mb-6 pb-2 border-b border-white/10">