feat: project overview + timeline + docs center

- services/task_project_linker.py: task<->project mapping (title keywords + workspace_path)
- routes/pages.py: /timeline, /docs, /docs/<path>, enhanced /projects/<name> and /tasks/<id>
- templates: timeline.html, docs.html, doc_view.html (new), project_detail.html + task_detail.html (overhauled)
- config.py: DOCS_DIRS + ProjectConfig color
- base.html: Timeline + Docs nav links
This commit is contained in:
hermes-dashboard
2026-08-17 20:00:37 +08:00
parent 1e5e30ffcb
commit c0cbd683f4
11 changed files with 813 additions and 16 deletions

44
templates/docs.html Normal file
View File

@@ -0,0 +1,44 @@
{% extends "base.html" %}
{% block title %}Docs - Hermes{% endblock %}
{% block content %}
<h2>📚 Documentation Center</h2>
<div class="card">
<p class="text-muted">{{ docs|length }} documents across all docs directories</p>
</div>
<div class="card">
{% if docs %}
<table>
<thead>
<tr>
<th>Title</th>
<th>Path</th>
<th>Size</th>
<th>Modified</th>
<th>Snippet</th>
</tr>
</thead>
<tbody>
{% for d in docs %}
<tr>
<td><a href="/docs/{{ d.rel_path }}">{{ d.title }}</a></td>
<td class="text-small text-muted">{{ d.rel_path }}</td>
<td class="text-small">{{ d.size }} B</td>
<td class="text-small">{{ d.mtime|int|dt }}</td>
<td class="text-small text-muted">{{ d.snippet[:80] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class="text-muted">No documents found</p>
{% endif %}
</div>
<p class="mt-20">
<a href="/" class="btn">← Back to Dashboard</a>
</p>
{% endblock %}