{% extends "app_base.html" %} {% block title %}{{ frame.name or "Frame" }} ยท Configuration{% endblock %} {% block page_title %}{{ frame.name or "Frame " ~ frame.id }}{% endblock %} {% block device_status %}{% include "_device_status_bar.html" %}{% endblock %} {% block tabs %}{% include "_frame_tabs.html" %}{% endblock %} {% block content %}

Display settings

How a photo's aspect ratio is reconciled with the panel's: Crop to fill trims the excess; Crop to faces does the same but shifts the crop to keep people on screen; Stretch to fill fills the panel exactly without cropping (photos not matching the panel's aspect ratio look stretched); Shrink to fit shows the whole photo, letterboxed if needed.

Quiet hours times are interpreted in this timezone. The device may still wake once right at the start of quiet hours -- it can't know ahead of time -- but goes right back to sleep until they end.

Firmware update

{% if frame.device_board_variant %}Detected board: {{ frame.device_board_variant }} {% else %}Board not detected yet -- the frame reports it on its next check-in.{% endif %}

{% if frame.firmware_available_version %}Uploaded: v{{ frame.firmware_available_version }} -- the frame updates itself on its next wake if it's running something else.{% else %}No firmware uploaded yet.{% endif %}

Gitea repo: {{ frame.firmware_update_repo_url }}

While on, this frame installs whatever the repo above publishes next, with nobody reviewing it first -- only point it at a repo you trust.

Battery alerts

Sent once per discharge cycle to the frame owner's email (set in Settings) -- clear the field to disable. Needs SMTP configured by an admin.

Advanced configuration

Color-quantization values used when dithering photos for this panel -- approximations by default, since exact primaries aren't published. Tune them by comparing a rendered photo against the physical panel; different panel units can vary enough to be worth calibrating per frame.

{% set current_palette = frame.palette_rgb or default_palette_rgb %} {% set current_hex = palette_to_hex(current_palette) %} {% for label in palette_labels %} {% endfor %}
ColorHexRGB
{{ label }}

Image adjustments

1.00 is unchanged for color/ contrast. Dithering strength trades noise texture for smoother gradients as it goes down; 0 is a flat, un-dithered quantization. Use the preview below to compare.

Preview

The current photo, and exactly how it renders on the panel with this frame's saved settings above.

Now displaying

Original photo

How it will look on the frame

Rendered preview
{% endblock %} {% block scripts %} {% endblock %}