graph, search, api_catalog pages: back/forward history stack (PanelNav/dpNav). File artifact paths open in external tabs via card.repo (Gitea source URL) or card.docs (cargo docs for .rs) — openFile/openFileInPanel removed from all pages. Tera | safe required for URL values inside <script> blocks (auto-escape of slashes). card.ncl: repo field added. insert_brand_ctx: injects card_repo/card_docs into Tera context. #[onto_api] proc-macro: source_file = file!() emitted; ApiRouteEntry.source_file populated in primary catalog handler. migration 0007-card-repo-field: check card.ncl for repo field; skip if absent.
23 lines
1009 B
HTML
23 lines
1009 B
HTML
{% if migrations and migrations | length > 0 %}
|
|
<span id="mig-badge-{{ slug }}" hx-swap-oob="true"
|
|
class="badge badge-sm badge-warning">
|
|
○ {{ migrations | length }} migration{% if migrations | length > 1 %}s{% endif %}
|
|
</span>
|
|
<details class="collapse collapse-arrow bg-warning/10 border border-warning/30 rounded-lg">
|
|
<summary class="collapse-title text-xs font-semibold py-2 min-h-0 px-3 cursor-pointer text-warning">
|
|
○ Pending migrations
|
|
</summary>
|
|
<div class="collapse-content px-3 pb-3">
|
|
<div class="space-y-1">
|
|
{% for m in migrations %}
|
|
<div class="flex gap-2 items-start">
|
|
<span class="badge badge-xs badge-warning font-mono flex-shrink-0 mt-0.5">{{ m.id }}</span>
|
|
<span class="text-xs text-base-content/70">{{ m.description }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
<p class="text-xs text-base-content/40 mt-2">Run <code class="font-mono">ontoref migrate show <id></code> for instructions.</p>
|
|
</div>
|
|
</details>
|
|
{% endif %}
|