FossilRepo

Simplify sidebar: remove double logo, inline collapse with Dashboard, rename to FossilRepo KB and FossilSCM Guide Sidebar: removed branded header (redundant with top nav logo), moved collapse << button inline next to Dashboard text, removed bottom-pinned toggle. Cleaner, less visual noise. Renamed: Knowledge Base -> FossilRepo KB, Fossil Guide -> FossilSCM Guide. Added Agentic Development KB article documenting the agent workflow.

lmata 2026-04-07 17:46 trunk
Commit 0ad406c878d67f6d842c7c6f1e4e8cfd71e11c261c58a5e4066a4b6c7b924be2
--- templates/dashboard.html
+++ templates/dashboard.html
@@ -106,11 +106,11 @@
106106
<p class="mt-1 text-xs text-gray-500">Organize members into teams</p>
107107
</a>
108108
{% endif %}
109109
{% if perms.pages.view_page %}
110110
<a href="{% url 'pages:list' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
111
- <h3 class="text-sm font-semibold text-gray-100">Fossilrepo KB</h3>
111
+ <h3 class="text-sm font-semibold text-gray-100">FossilRepo KB</h3>
112112
<p class="mt-1 text-xs text-gray-500">Guides, runbooks, documentation</p>
113113
</a>
114114
{% endif %}
115115
{% if perms.organization.view_organization %}
116116
<a href="{% url 'organization:settings' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
117117
--- templates/dashboard.html
+++ templates/dashboard.html
@@ -106,11 +106,11 @@
106 <p class="mt-1 text-xs text-gray-500">Organize members into teams</p>
107 </a>
108 {% endif %}
109 {% if perms.pages.view_page %}
110 <a href="{% url 'pages:list' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
111 <h3 class="text-sm font-semibold text-gray-100">Fossilrepo KB</h3>
112 <p class="mt-1 text-xs text-gray-500">Guides, runbooks, documentation</p>
113 </a>
114 {% endif %}
115 {% if perms.organization.view_organization %}
116 <a href="{% url 'organization:settings' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
117
--- templates/dashboard.html
+++ templates/dashboard.html
@@ -106,11 +106,11 @@
106 <p class="mt-1 text-xs text-gray-500">Organize members into teams</p>
107 </a>
108 {% endif %}
109 {% if perms.pages.view_page %}
110 <a href="{% url 'pages:list' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
111 <h3 class="text-sm font-semibold text-gray-100">FossilRepo KB</h3>
112 <p class="mt-1 text-xs text-gray-500">Guides, runbooks, documentation</p>
113 </a>
114 {% endif %}
115 {% if perms.organization.view_organization %}
116 <a href="{% url 'organization:settings' %}" class="block rounded-lg bg-gray-800 border border-gray-700 p-4 hover:border-brand transition-colors">
117
--- templates/fossil/doc_page.html
+++ templates/fossil/doc_page.html
@@ -1,12 +1,12 @@
11
{% extends "base.html" %}
2
-{% block title %}{{ doc_path }} — Fossil Guide — Fossilrepo{% endblock %}
2
+{% block title %}{{ doc_path }} — FossilSCM Guide — Fossilrepo{% endblock %}
33
44
{% block content %}
55
<div class="max-w-4xl">
66
<div class="mb-4">
7
- <a href="{% url 'fossil:docs' slug=project.slug %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to Fossil Guide</a>
7
+ <a href="{% url 'fossil:docs' slug=project.slug %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to FossilSCM Guide</a>
88
</div>
99
1010
<div class="overflow-hidden rounded-lg bg-gray-800 shadow border border-gray-700">
1111
<div class="px-6 py-4 border-b border-gray-700">
1212
<h1 class="text-lg font-semibold text-gray-100 font-mono">{{ doc_path }}</h1>
1313
--- templates/fossil/doc_page.html
+++ templates/fossil/doc_page.html
@@ -1,12 +1,12 @@
1 {% extends "base.html" %}
2 {% block title %}{{ doc_path }} — Fossil Guide — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="max-w-4xl">
6 <div class="mb-4">
7 <a href="{% url 'fossil:docs' slug=project.slug %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to Fossil Guide</a>
8 </div>
9
10 <div class="overflow-hidden rounded-lg bg-gray-800 shadow border border-gray-700">
11 <div class="px-6 py-4 border-b border-gray-700">
12 <h1 class="text-lg font-semibold text-gray-100 font-mono">{{ doc_path }}</h1>
13
--- templates/fossil/doc_page.html
+++ templates/fossil/doc_page.html
@@ -1,12 +1,12 @@
1 {% extends "base.html" %}
2 {% block title %}{{ doc_path }} — FossilSCM Guide — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="max-w-4xl">
6 <div class="mb-4">
7 <a href="{% url 'fossil:docs' slug=project.slug %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to FossilSCM Guide</a>
8 </div>
9
10 <div class="overflow-hidden rounded-lg bg-gray-800 shadow border border-gray-700">
11 <div class="px-6 py-4 border-b border-gray-700">
12 <h1 class="text-lg font-semibold text-gray-100 font-mono">{{ doc_path }}</h1>
13
--- templates/fossil/docs_index.html
+++ templates/fossil/docs_index.html
@@ -1,11 +1,11 @@
11
{% extends "base.html" %}
2
-{% block title %}Fossil Guide — Fossilrepo{% endblock %}
2
+{% block title %}FossilSCM Guide — Fossilrepo{% endblock %}
33
44
{% block content %}
55
<div class="max-w-4xl">
6
- <h1 class="text-2xl font-bold text-gray-100 mb-2">Fossil Guide</h1>
6
+ <h1 class="text-2xl font-bold text-gray-100 mb-2">FossilSCM Guide</h1>
77
<p class="text-sm text-gray-400 mb-6">Reference documentation for Fossil SCM, bundled with your Fossilrepo installation.</p>
88
99
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
1010
1111
<div class="rounded-lg bg-gray-800 border border-gray-700 p-5">
1212
--- templates/fossil/docs_index.html
+++ templates/fossil/docs_index.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}Fossil Guide — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="max-w-4xl">
6 <h1 class="text-2xl font-bold text-gray-100 mb-2">Fossil Guide</h1>
7 <p class="text-sm text-gray-400 mb-6">Reference documentation for Fossil SCM, bundled with your Fossilrepo installation.</p>
8
9 <div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
10
11 <div class="rounded-lg bg-gray-800 border border-gray-700 p-5">
12
--- templates/fossil/docs_index.html
+++ templates/fossil/docs_index.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}FossilSCM Guide — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="max-w-4xl">
6 <h1 class="text-2xl font-bold text-gray-100 mb-2">FossilSCM Guide</h1>
7 <p class="text-sm text-gray-400 mb-6">Reference documentation for Fossil SCM, bundled with your Fossilrepo installation.</p>
8
9 <div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
10
11 <div class="rounded-lg bg-gray-800 border border-gray-700 p-5">
12
--- templates/includes/sidebar.html
+++ templates/includes/sidebar.html
@@ -1,34 +1,36 @@
11
<aside x-data="{ collapsed: localStorage.getItem('sidebarCollapsed') === 'true', projectsOpen: true, docsOpen: false }"
22
:class="collapsed ? 'w-14' : 'w-60'"
33
class="hidden lg:flex lg:flex-col flex-shrink-0 bg-gray-900 border-r border-gray-700 overflow-y-auto overflow-x-hidden transition-all duration-200">
44
5
- <!-- Sidebar header — branded -->
6
- <div class="px-3 py-4 border-b border-gray-800 flex-shrink-0">
7
- <a href="{% url 'dashboard' %}" class="flex items-center gap-2" :title="collapsed ? 'Fossilrepo' : ''">
8
- <svg class="h-6 w-6 flex-shrink-0 text-brand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
9
- <circle cx="12" cy="12" r="10" stroke-opacity="0.6"/>
10
- <circle cx="12" cy="12" r="4" fill="currentColor" fill-opacity="0.3"/>
11
- <path d="M12 2v4M12 18v4M2 12h4M18 12h4" stroke-opacity="0.4"/>
12
- </svg>
13
- <span x-show="!collapsed" class="text-sm font-bold tracking-tight">
14
- <span class="text-gray-100">fossil</span><span class="text-brand">repo</span>
15
- </span>
16
- </a>
17
- </div>
18
-
195
<nav class="flex-1 px-2 py-3 space-y-1 overflow-y-auto">
206
21
- <!-- Dashboard -->
22
- <a href="{% url 'dashboard' %}"
23
- class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/dashboard/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
24
- :title="collapsed ? 'Dashboard' : ''">
25
- <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
26
- <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12l8.954-8.955a1.126 1.126 0 011.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" />
27
- </svg>
28
- <span x-show="!collapsed" class="truncate">Dashboard</span>
29
- </a>
7
+ <!-- Dashboard + collapse toggle -->
8
+ <div class="flex items-center gap-1">
9
+ <a href="{% url 'dashboard' %}"
10
+ class="flex-1 flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/dashboard/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
11
+ :title="collapsed ? 'Dashboard' : ''">
12
+ <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
13
+ <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12l8.954-8.955a1.126 1.126 0 011.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" />
14
+ </svg>
15
+ <span x-show="!collapsed" class="truncate">Dashboard</span>
16
+ </a>
17
+ <button x-show="!collapsed" @click="collapsed = true; localStorage.setItem('sidebarCollapsed', 'true')"
18
+ class="flex-shrink-0 rounded-md p-1.5 text-gray-600 hover:text-gray-300 hover:bg-gray-800 transition-colors"
19
+ title="Collapse sidebar">
20
+ <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
21
+ <path stroke-linecap="round" stroke-linejoin="round" d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" />
22
+ </svg>
23
+ </button>
24
+ <button x-show="collapsed" style="display:none" @click="collapsed = false; localStorage.setItem('sidebarCollapsed', 'false')"
25
+ class="flex-shrink-0 rounded-md p-1.5 text-gray-600 hover:text-gray-300 hover:bg-gray-800 transition-colors"
26
+ title="Expand sidebar">
27
+ <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
28
+ <path stroke-linecap="round" stroke-linejoin="round" d="M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5" />
29
+ </svg>
30
+ </button>
31
+ </div>
3032
3133
<!-- Explore -->
3234
<a href="{% url 'explore' %}"
3335
class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/explore/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
3436
:title="collapsed ? 'Explore' : ''">
@@ -79,21 +81,21 @@
7981
{% endif %}
8082
</div>
8183
</div>
8284
{% endif %}
8385
84
- <!-- Fossilrepo KB section -->
86
+ <!-- FossilRepo KB section -->
8587
{% if perms.pages.view_page %}
8688
<div>
8789
<button @click="collapsed ? (collapsed = false, docsOpen = true) : (docsOpen = !docsOpen)"
8890
class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/kb/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
89
- :title="collapsed ? 'Fossilrepo KB' : ''">
91
+ :title="collapsed ? 'FossilRepo KB' : ''">
9092
<span class="flex items-center gap-2">
9193
<svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
9294
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" />
9395
</svg>
94
- <span x-show="!collapsed" class="truncate">Fossilrepo KB</span>
96
+ <span x-show="!collapsed" class="truncate">FossilRepo KB</span>
9597
</span>
9698
<svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="docsOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
9799
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
98100
</svg>
99101
</button>
@@ -112,18 +114,18 @@
112114
{% endif %}
113115
</div>
114116
</div>
115117
{% endif %}
116118
117
- <!-- Fossil Guide -->
119
+ <!-- FossilSCM Guide -->
118120
<a href="{% url 'fossil:docs' slug='fossil-scm' %}"
119121
class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if '/fossil/docs/' in request.path %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
120
- :title="collapsed ? 'Fossil Guide' : ''">
122
+ :title="collapsed ? 'FossilSCM Guide' : ''">
121123
<svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
122124
<path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 00-.491 6.347A48.62 48.62 0 0112 20.904a48.62 48.62 0 018.232-4.41 60.46 60.46 0 00-.491-6.347m-15.482 0a50.636 50.636 0 00-2.658-.813A59.906 59.906 0 0112 3.493a59.903 59.903 0 0110.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0112 13.489a50.702 50.702 0 017.74-3.342M6.75 15a.75.75 0 100-1.5.75.75 0 000 1.5zm0 0v-3.675A55.378 55.378 0 0112 8.443m-7.007 11.55A5.981 5.981 0 006.75 15.75v-1.5" />
123125
</svg>
124
- <span x-show="!collapsed" class="truncate">Fossil Guide</span>
126
+ <span x-show="!collapsed" class="truncate">FossilSCM Guide</span>
125127
</a>
126128
127129
<!-- Admin section (collapsible) -->
128130
{% if perms.organization.view_organization or user.is_staff %}
129131
<div x-data="{ adminOpen: window.location.pathname.includes('/settings/') || window.location.pathname.includes('/projects/groups/') }">
@@ -186,17 +188,6 @@
186188
</div>
187189
{% endif %}
188190
189191
</nav>
190192
191
- <!-- Bottom-pinned collapse toggle -->
192
- <div class="flex-shrink-0 border-t border-gray-800 px-2 py-2">
193
- <button @click="collapsed = !collapsed; localStorage.setItem('sidebarCollapsed', collapsed)"
194
- class="flex items-center gap-2 w-full rounded-md px-2 py-2 text-xs text-gray-500 hover:text-white hover:bg-gray-800 transition-colors"
195
- :title="collapsed ? 'Expand sidebar' : 'Collapse sidebar'">
196
- <svg :class="collapsed && 'rotate-180'" class="h-4 w-4 flex-shrink-0 transition-transform duration-200" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
197
- <path stroke-linecap="round" stroke-linejoin="round" d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" />
198
- </svg>
199
- <span x-show="!collapsed" class="truncate">Collapse</span>
200
- </button>
201
- </div>
202193
</aside>
203194
--- templates/includes/sidebar.html
+++ templates/includes/sidebar.html
@@ -1,34 +1,36 @@
1 <aside x-data="{ collapsed: localStorage.getItem('sidebarCollapsed') === 'true', projectsOpen: true, docsOpen: false }"
2 :class="collapsed ? 'w-14' : 'w-60'"
3 class="hidden lg:flex lg:flex-col flex-shrink-0 bg-gray-900 border-r border-gray-700 overflow-y-auto overflow-x-hidden transition-all duration-200">
4
5 <!-- Sidebar header — branded -->
6 <div class="px-3 py-4 border-b border-gray-800 flex-shrink-0">
7 <a href="{% url 'dashboard' %}" class="flex items-center gap-2" :title="collapsed ? 'Fossilrepo' : ''">
8 <svg class="h-6 w-6 flex-shrink-0 text-brand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
9 <circle cx="12" cy="12" r="10" stroke-opacity="0.6"/>
10 <circle cx="12" cy="12" r="4" fill="currentColor" fill-opacity="0.3"/>
11 <path d="M12 2v4M12 18v4M2 12h4M18 12h4" stroke-opacity="0.4"/>
12 </svg>
13 <span x-show="!collapsed" class="text-sm font-bold tracking-tight">
14 <span class="text-gray-100">fossil</span><span class="text-brand">repo</span>
15 </span>
16 </a>
17 </div>
18
19 <nav class="flex-1 px-2 py-3 space-y-1 overflow-y-auto">
20
21 <!-- Dashboard -->
22 <a href="{% url 'dashboard' %}"
23 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/dashboard/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
24 :title="collapsed ? 'Dashboard' : ''">
25 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
26 <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12l8.954-8.955a1.126 1.126 0 011.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" />
27 </svg>
28 <span x-show="!collapsed" class="truncate">Dashboard</span>
29 </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
31 <!-- Explore -->
32 <a href="{% url 'explore' %}"
33 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/explore/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
34 :title="collapsed ? 'Explore' : ''">
@@ -79,21 +81,21 @@
79 {% endif %}
80 </div>
81 </div>
82 {% endif %}
83
84 <!-- Fossilrepo KB section -->
85 {% if perms.pages.view_page %}
86 <div>
87 <button @click="collapsed ? (collapsed = false, docsOpen = true) : (docsOpen = !docsOpen)"
88 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/kb/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
89 :title="collapsed ? 'Fossilrepo KB' : ''">
90 <span class="flex items-center gap-2">
91 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
92 <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" />
93 </svg>
94 <span x-show="!collapsed" class="truncate">Fossilrepo KB</span>
95 </span>
96 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="docsOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
97 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
98 </svg>
99 </button>
@@ -112,18 +114,18 @@
112 {% endif %}
113 </div>
114 </div>
115 {% endif %}
116
117 <!-- Fossil Guide -->
118 <a href="{% url 'fossil:docs' slug='fossil-scm' %}"
119 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if '/fossil/docs/' in request.path %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
120 :title="collapsed ? 'Fossil Guide' : ''">
121 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
122 <path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 00-.491 6.347A48.62 48.62 0 0112 20.904a48.62 48.62 0 018.232-4.41 60.46 60.46 0 00-.491-6.347m-15.482 0a50.636 50.636 0 00-2.658-.813A59.906 59.906 0 0112 3.493a59.903 59.903 0 0110.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0112 13.489a50.702 50.702 0 017.74-3.342M6.75 15a.75.75 0 100-1.5.75.75 0 000 1.5zm0 0v-3.675A55.378 55.378 0 0112 8.443m-7.007 11.55A5.981 5.981 0 006.75 15.75v-1.5" />
123 </svg>
124 <span x-show="!collapsed" class="truncate">Fossil Guide</span>
125 </a>
126
127 <!-- Admin section (collapsible) -->
128 {% if perms.organization.view_organization or user.is_staff %}
129 <div x-data="{ adminOpen: window.location.pathname.includes('/settings/') || window.location.pathname.includes('/projects/groups/') }">
@@ -186,17 +188,6 @@
186 </div>
187 {% endif %}
188
189 </nav>
190
191 <!-- Bottom-pinned collapse toggle -->
192 <div class="flex-shrink-0 border-t border-gray-800 px-2 py-2">
193 <button @click="collapsed = !collapsed; localStorage.setItem('sidebarCollapsed', collapsed)"
194 class="flex items-center gap-2 w-full rounded-md px-2 py-2 text-xs text-gray-500 hover:text-white hover:bg-gray-800 transition-colors"
195 :title="collapsed ? 'Expand sidebar' : 'Collapse sidebar'">
196 <svg :class="collapsed && 'rotate-180'" class="h-4 w-4 flex-shrink-0 transition-transform duration-200" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
197 <path stroke-linecap="round" stroke-linejoin="round" d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" />
198 </svg>
199 <span x-show="!collapsed" class="truncate">Collapse</span>
200 </button>
201 </div>
202 </aside>
203
--- templates/includes/sidebar.html
+++ templates/includes/sidebar.html
@@ -1,34 +1,36 @@
1 <aside x-data="{ collapsed: localStorage.getItem('sidebarCollapsed') === 'true', projectsOpen: true, docsOpen: false }"
2 :class="collapsed ? 'w-14' : 'w-60'"
3 class="hidden lg:flex lg:flex-col flex-shrink-0 bg-gray-900 border-r border-gray-700 overflow-y-auto overflow-x-hidden transition-all duration-200">
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5 <nav class="flex-1 px-2 py-3 space-y-1 overflow-y-auto">
6
7 <!-- Dashboard + collapse toggle -->
8 <div class="flex items-center gap-1">
9 <a href="{% url 'dashboard' %}"
10 class="flex-1 flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/dashboard/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
11 :title="collapsed ? 'Dashboard' : ''">
12 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
13 <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12l8.954-8.955a1.126 1.126 0 011.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" />
14 </svg>
15 <span x-show="!collapsed" class="truncate">Dashboard</span>
16 </a>
17 <button x-show="!collapsed" @click="collapsed = true; localStorage.setItem('sidebarCollapsed', 'true')"
18 class="flex-shrink-0 rounded-md p-1.5 text-gray-600 hover:text-gray-300 hover:bg-gray-800 transition-colors"
19 title="Collapse sidebar">
20 <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
21 <path stroke-linecap="round" stroke-linejoin="round" d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" />
22 </svg>
23 </button>
24 <button x-show="collapsed" style="display:none" @click="collapsed = false; localStorage.setItem('sidebarCollapsed', 'false')"
25 class="flex-shrink-0 rounded-md p-1.5 text-gray-600 hover:text-gray-300 hover:bg-gray-800 transition-colors"
26 title="Expand sidebar">
27 <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
28 <path stroke-linecap="round" stroke-linejoin="round" d="M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5" />
29 </svg>
30 </button>
31 </div>
32
33 <!-- Explore -->
34 <a href="{% url 'explore' %}"
35 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/explore/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
36 :title="collapsed ? 'Explore' : ''">
@@ -79,21 +81,21 @@
81 {% endif %}
82 </div>
83 </div>
84 {% endif %}
85
86 <!-- FossilRepo KB section -->
87 {% if perms.pages.view_page %}
88 <div>
89 <button @click="collapsed ? (collapsed = false, docsOpen = true) : (docsOpen = !docsOpen)"
90 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/kb/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
91 :title="collapsed ? 'FossilRepo KB' : ''">
92 <span class="flex items-center gap-2">
93 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
94 <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" />
95 </svg>
96 <span x-show="!collapsed" class="truncate">FossilRepo KB</span>
97 </span>
98 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="docsOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
99 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
100 </svg>
101 </button>
@@ -112,18 +114,18 @@
114 {% endif %}
115 </div>
116 </div>
117 {% endif %}
118
119 <!-- FossilSCM Guide -->
120 <a href="{% url 'fossil:docs' slug='fossil-scm' %}"
121 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if '/fossil/docs/' in request.path %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
122 :title="collapsed ? 'FossilSCM Guide' : ''">
123 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
124 <path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 00-.491 6.347A48.62 48.62 0 0112 20.904a48.62 48.62 0 018.232-4.41 60.46 60.46 0 00-.491-6.347m-15.482 0a50.636 50.636 0 00-2.658-.813A59.906 59.906 0 0112 3.493a59.903 59.903 0 0110.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0112 13.489a50.702 50.702 0 017.74-3.342M6.75 15a.75.75 0 100-1.5.75.75 0 000 1.5zm0 0v-3.675A55.378 55.378 0 0112 8.443m-7.007 11.55A5.981 5.981 0 006.75 15.75v-1.5" />
125 </svg>
126 <span x-show="!collapsed" class="truncate">FossilSCM Guide</span>
127 </a>
128
129 <!-- Admin section (collapsible) -->
130 {% if perms.organization.view_organization or user.is_staff %}
131 <div x-data="{ adminOpen: window.location.pathname.includes('/settings/') || window.location.pathname.includes('/projects/groups/') }">
@@ -186,17 +188,6 @@
188 </div>
189 {% endif %}
190
191 </nav>
192
 
 
 
 
 
 
 
 
 
 
 
193 </aside>
194
--- templates/pages/page_form.html
+++ templates/pages/page_form.html
@@ -1,11 +1,11 @@
11
{% extends "base.html" %}
22
{% block title %}{{ title }} — Fossilrepo{% endblock %}
33
44
{% block content %}
55
<div class="mb-6">
6
- <a href="{% url 'pages:list' %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to Fossilrepo KB</a>
6
+ <a href="{% url 'pages:list' %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to FossilRepo KB</a>
77
</div>
88
99
<div class="mx-auto max-w-4xl">
1010
<h1 class="text-2xl font-bold text-gray-100 mb-6">{{ title }}</h1>
1111
1212
--- templates/pages/page_form.html
+++ templates/pages/page_form.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}{{ title }} — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="mb-6">
6 <a href="{% url 'pages:list' %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to Fossilrepo KB</a>
7 </div>
8
9 <div class="mx-auto max-w-4xl">
10 <h1 class="text-2xl font-bold text-gray-100 mb-6">{{ title }}</h1>
11
12
--- templates/pages/page_form.html
+++ templates/pages/page_form.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}{{ title }} — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="mb-6">
6 <a href="{% url 'pages:list' %}" class="text-sm text-brand-light hover:text-brand">&larr; Back to FossilRepo KB</a>
7 </div>
8
9 <div class="mx-auto max-w-4xl">
10 <h1 class="text-2xl font-bold text-gray-100 mb-6">{{ title }}</h1>
11
12
--- templates/pages/page_list.html
+++ templates/pages/page_list.html
@@ -1,11 +1,11 @@
11
{% extends "base.html" %}
2
-{% block title %}Fossilrepo KB — Fossilrepo{% endblock %}
2
+{% block title %}FossilRepo KB — Fossilrepo{% endblock %}
33
44
{% block content %}
55
<div class="md:flex md:items-center md:justify-between mb-6">
6
- <h1 class="text-2xl font-bold text-gray-100">Fossilrepo KB</h1>
6
+ <h1 class="text-2xl font-bold text-gray-100">FossilRepo KB</h1>
77
{% if perms.pages.add_page %}
88
<a href="{% url 'pages:create' %}"
99
class="mt-4 md:mt-0 inline-flex items-center rounded-md bg-brand px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-brand-hover">
1010
New Page
1111
</a>
1212
--- templates/pages/page_list.html
+++ templates/pages/page_list.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}Fossilrepo KB — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="md:flex md:items-center md:justify-between mb-6">
6 <h1 class="text-2xl font-bold text-gray-100">Fossilrepo KB</h1>
7 {% if perms.pages.add_page %}
8 <a href="{% url 'pages:create' %}"
9 class="mt-4 md:mt-0 inline-flex items-center rounded-md bg-brand px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-brand-hover">
10 New Page
11 </a>
12
--- templates/pages/page_list.html
+++ templates/pages/page_list.html
@@ -1,11 +1,11 @@
1 {% extends "base.html" %}
2 {% block title %}FossilRepo KB — Fossilrepo{% endblock %}
3
4 {% block content %}
5 <div class="md:flex md:items-center md:justify-between mb-6">
6 <h1 class="text-2xl font-bold text-gray-100">FossilRepo KB</h1>
7 {% if perms.pages.add_page %}
8 <a href="{% url 'pages:create' %}"
9 class="mt-4 md:mt-0 inline-flex items-center rounded-md bg-brand px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-brand-hover">
10 New Page
11 </a>
12

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button