- 2025-12-04: Added `scripts/build_site.rb` to read the JSON-based config, echo the `VERSION`, respect `LANGUAGES` overrides, emit `dynamic/selected-languages.yml`, log failures into `build_site.err.txt`, and run Jekyll through the generated config so Docker and development use the same workflow.
- 2025-12-04: Centralized install-mode metadata in `htdocs/_data/install_modes.yml`, normalized the string keys in `devices.html`, and let the template honor shared URLs/labels plus per-device overrides instead of duplicating the logic.
- 2025-12-04: Reworked the `/devices` compatibility column to show a descriptive level (Generally/Highly compatible) while keeping the scoring logic hidden; the thresholds are now documented in `README.md`.
- 2025-12-04: Implemented the compatibility scoring table inside `htdocs/_i18n/en/pages/devices.html`, scoring each device on bootloader state, build type, certification status, Play Integrity, Rootbeer results, and channel weight, while FP6 and Sunfish now expose the input map.
- 2025-12-04: Centralized install-mode metadata in `htdocs/_data/install_modes.yml`, normalized the string keys in `devices.html`, and let the template honor shared URLs/labels plus per-device overrides instead of duplicating the logic.
- 2025-12-04: Added `scripts/build_site.rb` to read the JSON-based config, echo the `VERSION`, respect `LANGUAGES` overrides, emit `dynamic/selected-languages.yml`, log failures into `build_site.err.txt`, and run Jekyll through the generated config so Docker and development use the same workflow.
- 2025-12-03: Noted that the public Docker image `jekyll/jekyll:4` is the supported tag that bundles the Jekyll 4.4.1 runtime required for this project.
- 2025-12-03: Documented the docker commands (`docker run --rm -v "$PWD/htdocs:/srv/jekyll" -p 4000:4000 -it jekyll/jekyll:4 jekyll serve`) to regenerate the Gemfile.lock and to serve the site locally for validation after dependency bumps.
- 2025-12-03: Adopted `hadolint` (via `docker run --rm -i hadolint/hadolint < Dockerfile.jekyll`) as the targeted lint step for Dockerfile updates and combined related RUN commands to satisfy rule DL3059.
Every run of `scripts/build_site.rb` clears `build_site.err.txt` and appends only fatal log entries with timestamps. Inspect this file before making changes so you can resolve the most recent failure faster.
## Compatibility scoring
The `/devices` page now computes an aggregated compatibility score instead of relying solely on Safetynet/Rootbeer flags. Each device entry in `htdocs/_data/devices` can supply the following `compatibility` map, and those values are rendered directly inside `htdocs/_i18n/en/pages/devices.html`:
The `/devices` page now computes an aggregated compatibility score but displays only a descriptive level (Generally/Highly compatible) for clarity. Each device entry in `htdocs/_data/devices` can supply the following `compatibility` map, and those values are rendered directly inside `htdocs/_i18n/en/pages/devices.html` to produce the level:
| Key | Points | Notes |
|---|---|---|
@@ -87,6 +87,13 @@ The `/devices` page now computes an aggregated compatibility score instead of re
| `rootbeer` | `pass`: 1, others: 0 | Falls back to the existing `rootbeer_pass` value when the map is absent. |
Example data for FP6 and Sunfish are already present inside their respective YAML files. Devices without the map still render a score (using the defaults above) so the column never breaks.