feat: links settings and outbound rules in resolve

- migration 202610280003: settings links_new_tab (default on),
  nofollow_domains and sponsored_domains; robots llms_enabled and
  llms_intro (used by the llms.txt commit)
- SEO settings Links tab: the new-tab switch and the two domain lists,
  one domain per line, lowercased, refused with settings.domain_invalid
  naming the line; writable through seo_update_settings
- the resolve answer of an ok page carries outbound {new_tab,
  nofollow_domains, sponsored_domains}; no existing key changes
This commit is contained in:
Jakub Zych
2026-11-04 13:26:31 +01:00
parent 26193ae4eb
commit 49d3879954
11 changed files with 283 additions and 12 deletions

View File

@@ -75,6 +75,13 @@ settings:
tab_indexing: Indexing
tab_urls: Addresses
tab_verification: Verification
tab_links: Links
links_new_tab: Open links to other sites in a new tab
links_new_tab_comment: "On: links to other sites open in a new tab with rel=noopener, and screen readers hear that they do. Off: they open in the same tab. Their nofollow, sponsored and ugc attributes apply either way."
nofollow_domains: Domains that always get nofollow
sponsored_domains: Domains that always get sponsored
domains_comment: One domain per line, e.g. example.com (subdomains included).
domain_invalid: "Line :line: “:value” is not a domain. Write it without https:// and without a path."
site_name: Site name
site_name_comment: Replaces %site% in title templates.
title_template: Title template

View File

@@ -77,6 +77,13 @@ settings:
tab_indexing: Indeksowanie
tab_urls: Adresy
tab_verification: Weryfikacja
tab_links: Linki
links_new_tab: Otwieraj linki do innych witryn w nowej karcie
links_new_tab_comment: "Włączone: linki do innych witryn otwierają się w nowej karcie z rel=noopener, a czytniki ekranu o tym informują. Wyłączone: otwierają się w tej samej karcie. Atrybuty nofollow, sponsored i ugc działają w obu przypadkach."
nofollow_domains: Domeny zawsze z nofollow
sponsored_domains: Domeny zawsze ze sponsored
domains_comment: Jedna domena w wierszu, np. example.com (razem z subdomenami).
domain_invalid: "Wiersz :line: „:value” nie jest domeną. Wpisz ją bez https:// i bez ścieżki."
site_name: Nazwa witryny
site_name_comment: Zastępuje %site% w szablonach tytułów.
title_template: Szablon tytułu