Images linting: ensure that all images conform specification (#3802)
* Change all icons to be white background * assets: re-processed all *.png images to 1-bit * assets: also stripped profile data from .pngs * assets: also stripped datetime from metadata (`-define png:exclude-chunks=date,time`) * scripts: added image linter and formatter; fbt: added `lint_img` && `format_img` targets; github: integrated image lint step into CI * scripts: imglint: fixed deprecation warning * images: applied `format_img` * fbt: added `lint_all` and `format_all` targets; docs: updated for new targets Co-authored-by: hedger <hedger@nanode.su> Co-authored-by: hedger <hedger@users.noreply.github.com>
16
.github/workflows/lint_and_submodule_check.yml
vendored
|
@ -95,6 +95,22 @@ jobs:
|
||||||
echo "C Lint: all good ✨" >> $GITHUB_STEP_SUMMARY;
|
echo "C Lint: all good ✨" >> $GITHUB_STEP_SUMMARY;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: 'Check image assets'
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
set +e;
|
||||||
|
./fbt -s lint_img 2>&1 | tee lint-assets.log;
|
||||||
|
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
|
||||||
|
# Save multiline output
|
||||||
|
echo "errors=1" >> $GITHUB_OUTPUT;
|
||||||
|
printf "Image Lint errors:\n\`\`\`\n" >> $GITHUB_STEP_SUMMARY;
|
||||||
|
echo "$(cat lint-assets.log)" >> $GITHUB_STEP_SUMMARY;
|
||||||
|
printf "\n\`\`\`\n" >> $GITHUB_STEP_SUMMARY;
|
||||||
|
exit 1;
|
||||||
|
else
|
||||||
|
echo "Image Lint: all good ✨" >> $GITHUB_STEP_SUMMARY;
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Report code formatting errors
|
- name: Report code formatting errors
|
||||||
if: ( steps.syntax_check_py.outputs.errors || steps.syntax_check_cpp.outputs.errors ) && github.event.pull_request
|
if: ( steps.syntax_check_py.outputs.errors || steps.syntax_check_cpp.outputs.errors ) && github.event.pull_request
|
||||||
run: |
|
run: |
|
||||||
|
|
40
SConstruct
|
@ -322,7 +322,12 @@ firmware_env.Append(
|
||||||
"SConstruct",
|
"SConstruct",
|
||||||
"firmware.scons",
|
"firmware.scons",
|
||||||
"fbt_options.py",
|
"fbt_options.py",
|
||||||
]
|
],
|
||||||
|
IMG_LINT_SOURCES=[
|
||||||
|
# Image assets
|
||||||
|
"applications",
|
||||||
|
"assets",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -359,6 +364,39 @@ distenv.PhonyTarget(
|
||||||
PY_LINT_SOURCES=firmware_env["PY_LINT_SOURCES"],
|
PY_LINT_SOURCES=firmware_env["PY_LINT_SOURCES"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Image assets linting
|
||||||
|
distenv.PhonyTarget(
|
||||||
|
"lint_img",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"${PYTHON3}",
|
||||||
|
"${FBT_SCRIPT_DIR}/imglint.py",
|
||||||
|
"check",
|
||||||
|
"${IMG_LINT_SOURCES}",
|
||||||
|
"${ARGS}",
|
||||||
|
]
|
||||||
|
],
|
||||||
|
IMG_LINT_SOURCES=firmware_env["IMG_LINT_SOURCES"],
|
||||||
|
)
|
||||||
|
|
||||||
|
distenv.PhonyTarget(
|
||||||
|
"format_img",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"${PYTHON3}",
|
||||||
|
"${FBT_SCRIPT_DIR}/imglint.py",
|
||||||
|
"format",
|
||||||
|
"${IMG_LINT_SOURCES}",
|
||||||
|
"${ARGS}",
|
||||||
|
]
|
||||||
|
],
|
||||||
|
IMG_LINT_SOURCES=firmware_env["IMG_LINT_SOURCES"],
|
||||||
|
)
|
||||||
|
|
||||||
|
distenv.Alias("lint_all", ["lint", "lint_py", "lint_img"])
|
||||||
|
distenv.Alias("format_all", ["format", "format_py", "format_img"])
|
||||||
|
|
||||||
|
|
||||||
# Start Flipper CLI via PySerial's miniterm
|
# Start Flipper CLI via PySerial's miniterm
|
||||||
distenv.PhonyTarget(
|
distenv.PhonyTarget(
|
||||||
"cli",
|
"cli",
|
||||||
|
|
Before Width: | Height: | Size: 576 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 301 B |
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 258 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 226 B |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 576 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 583 B After Width: | Height: | Size: 98 B |
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 100 B |
BIN
applications/system/hid_app/assets/Alt_active_17x9.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 93 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 111 B |
Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 113 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 73 B |
Before Width: | Height: | Size: 172 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 173 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 180 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 179 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 179 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 73 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 102 B |
BIN
applications/system/hid_app/assets/Cmd_active_17x9.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 102 B |
BIN
applications/system/hid_app/assets/Ctrl_active_17x9.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 232 B |
BIN
applications/system/hid_app/assets/Enter_11x7.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 106 B |
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 94 B |
Before Width: | Height: | Size: 600 B After Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 126 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 92 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 90 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 89 B |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 126 B After Width: | Height: | Size: 94 B |
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 84 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 112 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 101 B |
BIN
applications/system/hid_app/assets/Tab_19x12.png
Executable file → Normal file
Before Width: | Height: | Size: 984 B After Width: | Height: | Size: 109 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 77 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 77 B |
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 85 B |
BIN
applications/system/hid_app/assets/backslash_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 90 B |
BIN
applications/system/hid_app/assets/backspace_19x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 105 B |
BIN
applications/system/hid_app/assets/backspace_hovered_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 94 B |
BIN
applications/system/hid_app/assets/backtick_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 84 B |
BIN
applications/system/hid_app/assets/brace_left_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 92 B |
BIN
applications/system/hid_app/assets/brace_right_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 92 B |
BIN
applications/system/hid_app/assets/equals_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 80 B |
BIN
applications/system/hid_app/assets/hash_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 88 B |
BIN
applications/system/hid_app/assets/percent_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 98 B |
BIN
applications/system/hid_app/assets/quote_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 85 B |
BIN
applications/system/hid_app/assets/slash_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 90 B |
BIN
applications/system/hid_app/assets/sq_bracket_left_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 89 B |
BIN
applications/system/hid_app/assets/sq_bracket_right_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 89 B |
BIN
applications/system/hid_app/assets/underscore_button_9x11.png
Executable file → Normal file
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 151 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 969 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 88 B |
Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 402 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 416 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 459 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 404 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 413 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 392 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 404 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 394 B |