A change Steward can't see happen (a config edited, a disk swapped) is recorded by whoever made it: what was done, its area, when (in the reader's own zone), the hosts, what it was done to and a detail. Its author or an admin edits or deletes it; recording, editing and deleting are audited and those audit rows stay off the timeline. log_change records one as "<user> via MCP", editable by the token's user. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
1.2 KiB
HTML
29 lines
1.2 KiB
HTML
{# A host's newest timeline entries, loaded into its page: what happened to it
|
|
lately, with the whole of it a click away. #}
|
|
{% from "_macros.html" import empty_state %}
|
|
{% from "timeline/_entry.html" import entry_what %}
|
|
<section class="card" aria-labelledby="host-history">
|
|
<div style="display:flex;align-items:baseline;justify-content:space-between;gap:1rem;">
|
|
<h3 id="host-history" class="section-title">History</h3>
|
|
<span class="field-hint">
|
|
{%- if session.user_role in ('operator', 'admin') %}<a href="/timeline/changes/new?host={{ host.name|urlencode }}&back={{ ('/hosts/' ~ host.id)|urlencode }}">Record a change</a> · {% endif -%}
|
|
<a href="/timeline/?host={{ host.name|urlencode }}">All of {{ host.name }}'s history</a>
|
|
</span>
|
|
</div>
|
|
{% if items %}
|
|
<table class="table">
|
|
<tbody>
|
|
{% for item in items %}
|
|
<tr>
|
|
<td class="nowrap" style="width:1%;">{{ item.entry.at|when }}</td>
|
|
<td>{{ entry_what(item, '/hosts/' ~ host.id) }}</td>
|
|
<td class="nowrap" style="width:1%;">{{ item.entry.actor }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% else %}
|
|
{{ empty_state("Nothing has happened to " ~ host.name ~ " that the timeline records yet.") }}
|
|
{% endif %}
|
|
</section>
|