From f90abb6e9a20e7a61bb1c533cfa26a94dceaa7d1 Mon Sep 17 00:00:00 2001 From: SMTP Relay & Email - Free Send <60409540+msgwing@users.noreply.github.com> Date: Thu, 10 Sep 2026 20:59:33 +0200 Subject: [PATCH 1/2] fix(tools): agree verb number in the SELF-HOSTED.md not-covered sentence przecinki() already returned a bare name for a one-element list, but the sentence around it was hardcoded plural ("are in the same position... They are missing"). Wiki.js landing in data/apps.json (#434) shrank the uncovered list to one entry (Portainer) and exposed it: "Portainer are in the same position" instead of "is". zdanie_nieobjete() now agrees is/It with are/They based on list length. --- docs/SELF-HOSTED.md | 2 +- tools/build-app-pages.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/SELF-HOSTED.md b/docs/SELF-HOSTED.md index 8233008..f060f24 100644 --- a/docs/SELF-HOSTED.md +++ b/docs/SELF-HOSTED.md @@ -29,7 +29,7 @@ Each page names the exact settings, quotes where they came from, and states the ## What is not here -Portainer are in the same position and are not covered yet. They are missing because nobody has read their documentation carefully enough to name the settings without guessing, not because they do not fit. +Portainer is in the same position and is not covered yet. It is missing because nobody has read their documentation carefully enough to name the settings without guessing, not because they do not fit. [Tell us which one you run](https://github.com/msgwing/ZeroSMTP/issues/new/choose) and it moves up the list. diff --git a/tools/build-app-pages.py b/tools/build-app-pages.py index 778310b..3dd332f 100644 --- a/tools/build-app-pages.py +++ b/tools/build-app-pages.py @@ -157,6 +157,23 @@ def przecinki(nazwy): return ", ".join(nazwy[:-1]) + " and " + nazwy[-1] +def zdanie_nieobjete(nieobjete): + """Zdanie o niepokrytych aplikacjach z czasownikiem odmienionym przez liczbe. + + Dla jednego elementu potrzebne jest "is"/"It", nie "are"/"They" - + przecinki() sam zwraca pojedyncza nazwe, ale zdanie wokol niej + zakladalo mnoga liczbe. + """ + nazwy = [n["name"] for n in nieobjete] + byc, zaimek = ("is", "It") if len(nazwy) == 1 else ("are", "They") + return ( + f"{przecinki(nazwy)} {byc} in the same position and {byc} not " + f"covered yet. {zaimek} {byc} missing because nobody has read their " + "documentation carefully enough to name the settings without " + "guessing, not because they do not fit." + ) + + def zbuduj_indeks(wpisy, aktualizacja, nieobjete=()): w = [ "---", @@ -198,11 +215,7 @@ def zbuduj_indeks(wpisy, aktualizacja, nieobjete=()): "", "## What is not here", "", - (przecinki([n["name"] for n in nieobjete]) + - " are in the same position and are not covered yet. They " - "are missing because nobody has read their documentation carefully " - "enough to name the settings without guessing, not because they do " - "not fit.") if nieobjete else + zdanie_nieobjete(nieobjete) if nieobjete else "Every application measured as a candidate now has a page. Tell us " "which one you run and it goes on the list.", "", From e2c3b7cad1df92e6ba2ca83d20c25ef37e0e5a05 Mon Sep 17 00:00:00 2001 From: SMTP Relay & Email - Free Send <60409540+msgwing@users.noreply.github.com> Date: Sun, 20 Sep 2026 14:15:15 +0200 Subject: [PATCH 2/2] chore: regenerate llms-full.txt for the verb-agreement fix --- docs/llms-full.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/llms-full.txt b/docs/llms-full.txt index 075d592..35413bd 100644 --- a/docs/llms-full.txt +++ b/docs/llms-full.txt @@ -1105,7 +1105,7 @@ Each page names the exact settings, quotes where they came from, and states the ## What is not here -Portainer are in the same position and are not covered yet. They are missing because nobody has read their documentation carefully enough to name the settings without guessing, not because they do not fit. +Portainer is in the same position and is not covered yet. It is missing because nobody has read their documentation carefully enough to name the settings without guessing, not because they do not fit. [Tell us which one you run](https://github.com/msgwing/ZeroSMTP/issues/new/choose) and it moves up the list.