feat: list each declared doc kind as its own homepage card

- compute per-kind home URLs (lib/, api/, wiki/) via _find_home_for_kind
- emit one card per declared kind so multi-kind repos (e.g. doc-forge
  with lib + wiki) appear in each matching homepage section
- declare the doc-forge wiki kind and refresh its vendored site with the
  combined lib + wiki build
This commit is contained in:
2026-09-11 23:38:31 +05:30
parent a32eeaf2b4
commit 42e5ed290e
70 changed files with 58518 additions and 1106 deletions

View File

@@ -225,7 +225,7 @@
<li class="md-nav__item">
<a href="../../" class="md-nav__link">
<a href="../../../wiki/" class="md-nav__link">
@@ -243,6 +243,198 @@
<li class="md-nav__item">
<a href="../../../wiki/01_overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../wiki/02_architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../wiki/03_conventions/" class="md-nav__link">
<span class="md-ellipsis">
Conventions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../wiki/04_iterative_workflow/" class="md-nav__link">
<span class="md-ellipsis">
Iterative Workflow
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../wiki/05_development/01_environment/" class="md-nav__link">
<span class="md-ellipsis">
Environment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../wiki/05_development/02_quality_gates/" class="md-nav__link">
<span class="md-ellipsis">
Quality Gates
</span>
</a>
</li>
</ul>
</nav>
</li>
@@ -270,7 +462,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__container">
@@ -287,14 +479,14 @@
</a>
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
<label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Loaders
</label>
@@ -366,7 +558,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<div class="md-nav__link md-nav__container">
@@ -383,14 +575,14 @@
</a>
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="">
<label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Models
</label>
@@ -508,7 +700,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<div class="md-nav__link md-nav__container">
@@ -525,14 +717,14 @@
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Navigation
</label>
@@ -650,7 +842,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10" >
<div class="md-nav__link md-nav__container">
@@ -667,14 +859,14 @@
</a>
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
<label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Renderers
</label>
@@ -796,7 +988,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" checked>
<div class="md-nav__link md-nav__container">
@@ -813,14 +1005,14 @@
</a>
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
<label class="md-nav__link " for="__nav_11" id="__nav_11_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_6">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
CLI
</label>
@@ -1322,7 +1514,8 @@ build command to generate the final static documentation site.</p>
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-0-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="nf">generate_config</span><span class="p">(</span>
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
<span class="normal"><a href="#__codelineno-0-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="nf">generate_config</span><span class="p">(</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> <span class="n">docs_dir</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> <span class="n">nav_file</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a> <span class="n">template</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
@@ -1331,7 +1524,8 @@ build command to generate the final static documentation site.</p>
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a> <span class="n">modes</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a> <span class="n">site_description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a> <span class="n">site_author</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a> <span class="n">wiki_dir</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</span></code></pre></div></td></tr></table></div>
<div class="doc doc-contents ">
@@ -1339,10 +1533,12 @@ build command to generate the final static documentation site.</p>
<p>Generate an <code>mkdocs.yml</code> configuration file.</p>
<p>The configuration is created by combining a template configuration
with a navigation structure derived from the docforge navigation
specification.</p>
specification (and, when a wiki directory is provided, from the wiki
file structure).</p>
<p>The <code>docs_dir</code> is always written relative to the MkDocs root and is
expected to be the shared documentation parent (for example <code>docs</code>),
with generated sources nested under <code>lib/</code> or <code>api/</code> subdirectories.</p>
with generated sources nested under <code>lib/</code> or <code>api/</code> subdirectories
and hand-written wiki content under a <code>wiki/</code> subdirectory.</p>
<p><span class="doc-section-title">Parameters:</span></p>
@@ -1436,8 +1632,9 @@ template replaces the built-in templates entirely.</p>
<td>
<div class="doc-md-description">
<p>Documentation modes to enable. Each mode contributes its own
built-in template fragment (for example <code>lib</code> or <code>api</code>),
merged on top of the shared <code>mkdocs.common.yml</code> template.</p>
built-in template fragment (for example <code>lib</code>, <code>api</code>, or
<code>wiki</code>), merged on top of the shared <code>mkdocs.common.yml</code>
template.</p>
</div>
</td>
<td>
@@ -1472,6 +1669,23 @@ merged on top of the shared <code>mkdocs.common.yml</code> template.</p>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>wiki_dir</code></td>
<td>
<code>Optional[<span title="pathlib.Path">Path</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional path to a hand-written wiki directory (for example
<code>docs/wiki</code>). When provided, the site navigation is derived
from the wiki file structure and placed before the navigation
groups defined in <code>nav_file</code>.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
@@ -1491,7 +1705,8 @@ merged on top of the shared <code>mkdocs.common.yml</code> template.</p>
</td>
<td>
<div class="doc-md-description">
<p>If the navigation specification or template file cannot be found.</p>
<p>If the navigation specification, template, or wiki directory
cannot be found.</p>
</div>
</td>
</tr>