1
0
This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Timmy-time-dashboard/src/dashboard/templates/hands.html
Alexander Whitestone 622a6a9204 polish: extract inline CSS, add connection status, panel macro, favicon, ollama cache, toast system (#164)
Major:
- Extract all inline <style> blocks from 22 Jinja2 templates into
  static/css/mission-control.css — single cacheable stylesheet
- Add tox lint check that fails on inline <style> in templates

Minor:
1. Connection status indicator in topbar (green/amber/red dot) reflecting
   WebSocket + Ollama reachability, with auto-reconnect
2. Jinja2 {% macro panel(title) %} in macros.html — eliminates repeated
   .card.mc-panel markup; index.html converted as example
3. SVG favicon (purple T + orange dot)
4. 30-second TTL cache on _check_ollama() to avoid blocking the event loop
   on every health poll (asyncio.to_thread was already in place)
5. Toast notification system (McToast.show) for transient status messages —
   wired into connection status for Ollama/WebSocket state changes

Enforcement:
- CLAUDE.md updated with conventions 11-14 (no inline CSS, use panel macro,
  use toasts, never block the event loop)
- tox lint + pre-push environments now fail on inline <style> blocks

https://claude.ai/code/session_014FQ785MQdyJQ4BAXrRSo9w

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 09:52:57 -04:00

93 lines
3.3 KiB
HTML

{% extends "base.html" %}
{% block title %}Hands — Timmy Time{% endblock %}
{% block extra_styles %}{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<!-- Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<h1 class="h3 mb-0">Hands</h1>
<p class="text-muted small mb-0">Autonomous scheduled agents</p>
</div>
<div class="d-flex gap-2">
</div>
</div>
<!-- Main Content Grid -->
<div class="row g-4">
<!-- Left Column: Hands List -->
<div class="col-lg-8">
<div class="card border-0 shadow-sm">
<div class="card-header bg-transparent border-secondary d-flex justify-content-between align-items-center">
<h5 class="mb-0">Active Hands</h5>
<span class="badge bg-secondary">Idle</span>
</div>
<div class="card-body p-0">
<div id="hands-container">
<div class="text-center py-5 text-muted">
<p class="mb-1">No hands are currently active.</p>
<small>Configure hands in the Marketplace to get started.</small>
</div>
</div>
</div>
</div>
<!-- Executions -->
<div class="card border-0 shadow-sm mt-4">
<div class="card-header bg-transparent border-secondary">
<h5 class="mb-0">Recent Executions</h5>
</div>
<div class="card-body p-0">
<div id="executions-container">
<div class="text-center py-4 text-muted">
<small>No recent executions.</small>
</div>
</div>
</div>
</div>
</div>
<!-- Right Column: Approvals & Info -->
<div class="col-lg-4">
<!-- Pending Approvals -->
<div class="card border-0 shadow-sm mb-4">
<div class="card-header bg-transparent border-secondary d-flex justify-content-between align-items-center">
<h5 class="mb-0">Pending Approvals</h5>
<span class="badge bg-warning text-dark" id="approval-count">0</span>
</div>
<div class="card-body p-0">
<div id="approvals-container">
<div class="text-center py-3 text-muted">
<small>No pending approvals.</small>
</div>
</div>
</div>
</div>
<!-- What are Hands -->
<div class="card border-0 shadow-sm">
<div class="card-header bg-transparent border-secondary">
<h5 class="mb-0">What are Hands?</h5>
</div>
<div class="card-body">
<p class="small mb-2">Hands are autonomous agents that run on schedules:</p>
<ul class="list-unstyled small mb-0">
<li class="mb-1">🔮 <strong>Oracle</strong> — Bitcoin intelligence</li>
<li class="mb-1">🔍 <strong>Scout</strong> — OSINT monitoring</li>
<li class="mb-1">✍️ <strong>Scribe</strong> — Content production</li>
<li class="mb-1">💰 <strong>Ledger</strong> — Treasury tracking</li>
<li class="mb-1">🔧 <strong>Forge</strong> — Model management</li>
<li class="mb-1">🎨 <strong>Weaver</strong> — Creative pipeline</li>
<li class="mb-1">🛡️ <strong>Sentinel</strong> — System health</li>
</ul>
</div>
</div>
</div>
</div>
</div>
{% endblock %}