73 lines
3.6 KiB
HTML
73 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}AI Agent 项目追踪{% endblock %}</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
|
|
crossorigin="anonymous">
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
|
</head>
|
|
<body class="d-flex flex-column min-vh-100">
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="/">AI Agent 追踪</a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNav">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="mainNav">
|
|
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
<li class="nav-item"><a class="nav-link" href="/">首页</a></li>
|
|
<li class="nav-item"><a class="nav-link" href="/projects">项目列表</a></li>
|
|
<li class="nav-item"><a class="nav-link" href="/search">全局搜索</a></li>
|
|
<li class="nav-item"><a class="nav-link" href="/watchdog" title="每天 9:00 自动生成的 AI Agent 项目升级日报">日报</a></li>
|
|
</ul>
|
|
<form class="d-flex" action="/search" method="get" id="navSearchForm">
|
|
<input class="form-control me-2 nav-search-input" type="search"
|
|
name="q" placeholder="搜索项目 / release / issue" aria-label="Search">
|
|
<button class="btn btn-outline-light" type="submit">搜索</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container py-4 flex-grow-1">
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
<div class="flash-messages">
|
|
{% for category, message in messages %}
|
|
<div class="alert alert-{{ category | default('info') }} alert-dismissible fade show" role="alert">
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer class="bg-dark text-light text-center py-3 mt-auto">
|
|
<div class="container">
|
|
AI Agent 项目追踪 - Powered by Flask
|
|
</div>
|
|
</footer>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
|
|
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
|
|
crossorigin="anonymous"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/marked@15/marked.min.js"
|
|
integrity="sha384-948ahk4ZmxYVYOc+rxN1H2gM1EJ2Duhp7uHtZ4WSLkV4Vtx5MUqnV+l7u9B+jFv+"
|
|
crossorigin="anonymous"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"
|
|
integrity="sha384-ZuC+DIACqSIZTsp+7YF57cR5Y+6qXa7YFbEKdA/EHA/R0T+41dtorqucYl71Zp+t"
|
|
crossorigin="anonymous"></script>
|
|
{% block scripts %}{% endblock %}
|
|
|
|
<!-- 全站浮动 AI 分析面板 -->
|
|
<button id="ai-fab" type="button" title="AI 分析">🤖</button>
|
|
<script type="module" src="{{ url_for('static', filename='js/ai-panel.js') }}"></script>
|
|
</body>
|
|
</html>
|