{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}{{ friendly_name }} - Drivers{% endblock %} {# Drivers tab: the whole HardwareDriver.json staged in the browser, saved in one go through a review step (views/images_drivers.py). The list is drawn by the script at the bottom from #drvData; the server re-lints the staged map after every edit (/drivers/check). One line per entry; the rest of the entry, its findings and what the staged changes clear are in the row body. #} {% block extra_head %} {% endblock %} {% block content %} {% set header_actions %} {% if last_save %}
{% else %} Undo last save: nothing saved from this page yet {% endif %} {% endset %} {% set header_subtitle = 'Deploy/Control/HardwareDriver.json' %} {% include "_image_header.html" %}
First match wins, and there is no OS filter. Win11 entries must sit above Win10 entries for the same model.

At imaging PESetup reads this map and takes the first entry, from the top, that has a model token contained in the PC's WMI model (case-insensitive). Latitude, OptiPlex and Precision PCs only look at entries whose family contains that word. A PC that matches nothing still images, with no drivers. Edits, moves and removals are staged until Review and save. The Hardware Models list (user_selections.json) is the Media Creator Lite build selection; PESetup does not read it.

{% if load_error %}
{{ load_error }}. The list is empty and saving is off until the file is fixed.
{% endif %} {% if hw_drivers_extra %}
This image also has Deploy/Control/hw_drivers.json. PESetup never reads it; only the map below counts.
{% endif %}

Driver map

Add
Status key
{# ==================== Unregistered zips ==================== #} {# Zips no image uses come first and can be deleted. Zips another image's map uses (the driver tree is shared) are folded away: they can be added to this map but never deleted from here. #} {% set free = orphans | selectattr('used_by', 'equalto', []) | list %} {% set shared = orphans | rejectattr('used_by', 'equalto', []) | list %} {% macro orphan_row(o, hidden=False) %} {% if o.used_by %} {% else %} {% endif %}
{{ o.name }}
{{ o.folder or '(top folder)' }}
{{ (o.size or 0) | filesizeformat }}
{{ o.mtime | local_dt if o.mtime else '' }}
{% if o.used_by %}{% for u in o.used_by %}{{ ui.chip(u, 'neutral') }} {% endfor %}{% else %}No image{% endif %} {% endmacro %}
Unregistered zips {{ ui.chip(free | length ~ ' unused', 'warn' if free else 'neutral') }} Zips under Out-of-box Drivers that this map does not use {% if orphans %}
{% for o in free %}{{ orphan_row(o) }}{% endfor %} {% if not free %}{% endif %} {% if shared %} {% for o in shared %}{{ orphan_row(o, hidden=True) }}{% endfor %} {% endif %}
FileSize and dateUsed by
No zip here is unused: every one is in this map or in another image's map.
Only zips no image uses can be deleted. Add to map stages a new entry; it is written with the next save.
{% else %}
None: every zip under Out-of-box Drivers is in this map.
{% endif %}

{# ==================== Edit entry modal ==================== #} {# ==================== Move dialog ==================== #} {% endblock %} {% block extra_scripts %} {% endblock %}