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

View File

@@ -6,6 +6,7 @@ import subprocess
from typing import Any
import config
from services import task_project_linker
logger = logging.getLogger(__name__)
@@ -159,3 +160,20 @@ def get_project_detail(name: str) -> dict[str, Any]:
info["status_porcelain"] = status_porcelain
return info
def get_project_tasks(name: str) -> list[dict[str, Any]]:
"""Tasks linked to a project (via task_project_linker)."""
return task_project_linker.link_project_tasks(name)
def get_project_commits_in_window(
name: str,
start_ts: int | None = None,
end_ts: int | None = None,
limit: int = 20,
) -> list[dict[str, Any]]:
"""Commits for a project, optionally within a time window."""
return task_project_linker.link_project_commits(
name, limit=limit, since_ts=start_ts, until_ts=end_ts
)