feat: robots.txt editor and tester screen

- golem15.seo.robots singleton (UI-SPEC C10): staging callout and the
  served file (P4); the plugin's own extension adds the editor, the
  tester and the AI bots tab, saved to the robots row with history
- field type robotstxt (E4, live lint, size meter; Decode refuses over
  500 KB) and widget golem15-seo-robotstester (E5) on robots_test, which
  tests the unsaved text and switches through grobotstxt
- saving rules that block a noindex address answers robots.blocks_noindex
This commit is contained in:
2026-10-27 11:51:41 +01:00
parent 3dd936202f
commit 51413fbda4
21 changed files with 1336 additions and 26 deletions

View File

@@ -2,6 +2,7 @@ plugin:
name: SEO
description: Search engine metadata for every content type, URL rules and global SEO settings.
nav:
robots: robots.txt
notfound: 404 log
redirects: Redirects
seo: SEO
@@ -38,6 +39,23 @@ robots:
inherit: Inherit
site_default: Site default
staging_title: This is not the production environment
title: "robots.txt"
tab_file: "robots.txt"
tab_bots: "AI bots"
staging_text: "Crawlers get “Disallow: /” and every page is sent with “X-Robots-Tag: noindex”, whatever you save here. The text below applies in production."
content: "robots.txt rules"
content_comment: "Sitemap lines and the AI bot rules are added automatically when the file is served."
tester: "Test an address"
served: "What crawlers get"
served_comment: "The saved version, as served at /robots.txt. Save to update it."
served_production: "Production"
too_large: "robots.txt may be at most 500 KB. Google ignores everything after that."
test: "Test URL"
test_invalid: "The test request is not valid."
url_required: "Enter an address starting with /."
blocks_noindex:
one: ":count noindex address is blocked by these rules, so Google cannot see its noindex: :list"
other: ":count noindex addresses are blocked by these rules, so Google cannot see their noindex: :list"
status:
rule_title: A URL rule overrides part of this tab
rule_text: The rule for “:url” sets :fields. Change them in SEO › URL rules.
@@ -268,3 +286,7 @@ notfound:
delete_selected_confirm:
one: "Remove :count address from the log? It is added again on its next 404."
other: "Remove :count addresses from the log? They are added again on their next 404."
bots:
search_comment: "AI search and answers. Off blocks it in robots.txt."
training_comment: "Collects content for AI training. Off blocks it in robots.txt."
user_comment: "Fetches a page when a user asks for it. Off blocks it in robots.txt."

View File

@@ -2,6 +2,7 @@ plugin:
name: SEO
description: Metadane dla wyszukiwarek we wszystkich typach treści, reguły adresów i globalne ustawienia SEO.
nav:
robots: robots.txt
notfound: Dziennik 404
redirects: Przekierowania
seo: SEO
@@ -38,6 +39,25 @@ robots:
inherit: Dziedzicz
site_default: Domyślne
staging_title: To nie jest środowisko produkcyjne
title: "robots.txt"
tab_file: "robots.txt"
tab_bots: "Boty AI"
staging_text: "Roboty dostają „Disallow: /”, a każda strona jest wysyłana z „X-Robots-Tag: noindex”, niezależnie od tego, co tu zapiszesz. Poniższy tekst obowiązuje na produkcji."
content: "Reguły robots.txt"
content_comment: "Wiersze Sitemap i reguły botów AI są dodawane automatycznie przy serwowaniu pliku."
tester: "Sprawdź adres"
served: "Co otrzymują roboty"
served_comment: "Zapisana wersja, tak jak jest serwowana pod /robots.txt. Zapisz, aby ją odświeżyć."
served_production: "Produkcja"
too_large: "robots.txt może mieć najwyżej 500 KB. Google ignoruje wszystko powyżej."
test: "Sprawdź adres"
test_invalid: "Żądanie testu jest nieprawidłowe."
url_required: "Wpisz adres zaczynający się od /."
blocks_noindex:
one: ":count adres z noindex jest blokowany przez te reguły, więc Google nie zobaczy noindex: :list"
few: ":count adresy z noindex są blokowane przez te reguły, więc Google nie zobaczy noindex: :list"
many: ":count adresów z noindex jest blokowanych przez te reguły, więc Google nie zobaczy noindex: :list"
other: ":count adresu z noindex jest blokowane przez te reguły, więc Google nie zobaczy noindex: :list"
status:
rule_title: Reguła adresu nadpisuje część tej zakładki
rule_text: 'Reguła dla „:url” ustawia: :fields. Zmień je w SEO › Reguły adresów.'
@@ -276,3 +296,7 @@ notfound:
few: "Usunąć :count adresy z dziennika? Wrócą przy następnym błędzie 404."
many: "Usunąć :count adresów z dziennika? Wrócą przy następnym błędzie 404."
other: "Usunąć :count adresu z dziennika? Wrócą przy następnym błędzie 404."
bots:
search_comment: "Wyszukiwanie i odpowiedzi AI. Wyłączenie blokuje go w robots.txt."
training_comment: "Zbiera treści do trenowania AI. Wyłączenie blokuje go w robots.txt."
user_comment: "Pobiera stronę na prośbę użytkownika. Wyłączenie blokuje go w robots.txt."