From 81aa849ad368322dec071e393325959cde46b4b3 Mon Sep 17 00:00:00 2001 From: Threepwood-7 Date: Fri, 30 Oct 2026 12:26:52 +0100 Subject: [PATCH 1/2] docs: define focused text-only public site --- AGENTS.md | 21 +++---- README.md | 8 +-- docs/SITE-HANDBOOK.md | 128 +++++++++++++++--------------------------- 3 files changed, 59 insertions(+), 98 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 520cc5e..d71c5f7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,15 +13,11 @@ edition. Everything below is this repo's local deltas only. ## Hard Rules -- Do not publish mascot, screenshot, copied application artwork, or other brand - image assets from this repository unless explicitly approved. The current - image exceptions are the header logo at - `assets/brand/emulebb-broadband-edition-logo.png`, the favicon at - `assets/brand/emulebb-favicon.ico`, and Team/lore raster images under - `assets/team/`. -- Keep the site text-first outside the header logo and bounded Team/lore - imagery. Do not add image fields to metadata or structured data unless this - policy changes again. +- Keep every HTML page text-only. Do not publish in-page logos, mascots, + screenshots, copied application artwork, or other raster assets. The browser + favicon at `assets/brand/emulebb-favicon.ico` is the only image exception. +- Use the text wordmark `eMuleBB` in page headers. Do not add logo or image + fields to metadata or structured data unless this policy changes first. - Treat `emulebb-tooling` active/reference docs as the source of truth. Pages summarizes and links; it does not invent feature or release facts. - Treat `..\emulebb-tooling\manifests\public-presence.v1.json` as the source @@ -31,9 +27,10 @@ edition. Everything below is this repo's local deltas only. homepage feature/catalog copy. - Keep English canonical. Only the homepage and FAQ have localized variants. Their copy is frozen, minimal, and evergreen: do not add versions, beta - targets, ETAs, or time-sensitive release status. The English-only `/rust/` - page owns current Rust product positioning. Locale pages keep the English - section structure, reciprocal `hreflang` links, and `index,follow`. + targets, ETAs, or time-sensitive release status. The English homepage owns + current Rust product positioning. `/rust/` is only a no-index compatibility + redirect. Locale pages keep the English section structure, reciprocal + `hreflang` links, and `index,follow`. - Use `/languages/` as the language selector. Do not add generic compatibility locale chooser URLs such as `/pt/` unless they are real indexable locale pages with their own maintained copy. diff --git a/README.md b/README.md index b6dcee4..2cbb3aa 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ testing channel and eMuleBB MFC `0.7.x` as the maintained Windows line. Beta 3 is expected after a few more weeks of implementation and stabilization. Rust development is best-effort, and contributors are welcome. -The canonical English-only Rust product page is published at `/rust/`. Only the -homepage and FAQ have localized variants. Localized copy is deliberately -minimal and evergreen: it does not carry versions, beta targets, ETAs, or -release-cycle status. +The homepage is the single canonical product page. `/rust/` is retained only as +a no-index compatibility redirect. Only the homepage and FAQ have localized +variants. Localized copy is deliberately minimal and evergreen: it does not +carry versions, beta targets, ETAs, or release-cycle status. The public site is expected to publish at: diff --git a/docs/SITE-HANDBOOK.md b/docs/SITE-HANDBOOK.md index 29f91c9..2dc98b4 100644 --- a/docs/SITE-HANDBOOK.md +++ b/docs/SITE-HANDBOOK.md @@ -61,50 +61,35 @@ repositories. ## Voice And Brand - Tone: technical, credible, direct, and readable for power users. -- Dry humor and eMule lore are allowed, especially in bounded sections such as - Team, but factual sections must remain precise. +- Dry humor and eMule lore are allowed in supporting documentation, but public + homepage copy must remain focused and precise. - Avoid marketing fog. Prefer concrete behavior: upload slots, Kad, REST, shared libraries, validation, release gates. -- Keep the site text-first outside the header logo and bounded Team/lore - imagery. -- Do not publish screenshot, copied application artwork, or arbitrary brand - image assets from this repository. +- Keep every HTML page text-only. Use the `eMuleBB` text wordmark in headers. +- Do not publish logos, screenshots, copied application artwork, mascots, or + arbitrary raster assets from this repository. - Do not add copied application resource images such as `Logo.jpg`. -- The current brand assets are - `assets/brand/emulebb-broadband-edition-logo.png`, used in the site header, - and `assets/brand/emulebb-favicon.ico`, used as the browser favicon. -- The Team/lore section may use small generated raster illustrations under - `assets/team/` when explicitly requested. They must stay decorative, - section-local, and separate from favicon or external product screenshots. +- The browser favicon at `assets/brand/emulebb-favicon.ico` is the only image + exception. - Structured data must not include logo or image fields unless this policy is explicitly changed first. ## Homepage Section Contract -The English homepage is canonical. Keep this order unless a deliberate site -structure update changes the contract: - -1. Header and primary navigation -2. Hero -3. Intro -4. Why/motivation -5. Features -6. Short guide -7. Team/lore -8. Docs -9. Implementation method -10. Automation -11. Release -12. Repositories -13. Footer +The English homepage is canonical. Keep this focused order: + +1. Hero with Rust nightlies as the primary action and MFC as a secondary link +2. Product proof +3. Essential downloads and documentation +4. Focused repositories Rules: - Required navigation anchors must resolve to existing section IDs. -- Keep one homepage capability section: `Features`. Do not add separate - Highlights, Catalog, or similar duplicate feature sections. -- The homepage feature copy may highlight only landed, documented, - passed, release-proven, or otherwise source-confirmed features. +- Do not add separate feature catalogs, highlights, team/lore, implementation, + automation, or release sections. Link to the product docs instead. +- Homepage proof may highlight only landed, documented, passed, + release-proven, or otherwise source-confirmed behavior. - MFC feature copy must be labeled as stable shipped capability, not active broad development. Rust capability claims must be nightly beta-channel specific and evidence-bound. @@ -118,47 +103,23 @@ Rules: - Public navigation and Docs-section links should target rendered pages under `https://emulebb.github.io/emulebb-tooling/`; link to GitHub blob Markdown only when a rendered page does not exist. -- The Why section may explain the learning and modernization exercise behind - the project, but it must not blur planned release status or imply a rewrite. -- The Implementation method section may summarize engineering practice, - compatibility boundaries, API contracts, and release proof, but source docs - remain authoritative for detailed procedures. -- The Team section may use sarcasm and lore, but it must not obscure product - facts or make claims about unshipped behavior. - -## Feature Policy - -Feature entries should be short, verifiable, and grouped by operator mental -model: - -- Broadband upload and seeding -- Large-library and file handling -- Search, server, and Kad -- VPN/interface binding and WebServer exposure policy -- Modern performance limits -- Kad hardening and peer protection -- NAT/UPnP and network adversity validation -- REST, controllers, and automation -- Desktop power-user ergonomics -- Reliability and release proof - -Before adding or changing a feature entry: - -- Confirm the claim against `emulebb-tooling` docs or the relevant source repo. -- Refresh `docs/reference/GUIDE-EMULEBB.md` and focused guide chapters first - when the homepage is summarizing newly landed behavior. -- Use `docs/reference/DEVELOPMENT-GUIDE.md` for the recurring product-guide and - development-guide refresh workflow. -- Avoid ambiguous labels like "modernized" unless the concrete behavior is named. -- If a feature is not landed, documented, or source-confirmed, keep it out of - homepage feature copy. -- Interface/VPN binding may be described as bind-target support and live-test - policy. Do not describe the external VPN kill-switch design as built into - eMuleBB. -- Native Windows VPN work and qBittorrentBB integration are not forward - priorities. Do not present them as planned homepage features. -- If a feature has changed status, update the source documentation first or link - to the updated source. +- Keep explanatory history, implementation method, automation detail, and lore + in the rendered documentation site rather than duplicating them on the + homepage. + +## Homepage Proof Policy + +Proof entries stay short, verifiable, and limited to the active Rust product: + +- live eD2K/Kad network testing +- CI-gated native packages +- checksums and provenance +- the next beta milestone only when the public-presence contract authorizes it + +Confirm every claim against `emulebb-tooling` docs, the public-presence +contract, or the owning source repository. Put protocol detail, feature catalogs, +controller workflows, historical releases, and future backlog in the rendered +documentation rather than expanding the homepage. ## Localization Policy @@ -176,7 +137,7 @@ Before adding or changing a feature entry: renderer rules in `tools/render_pages.py`, then rendered through the Jinja2 templates under `templates/`. - Localized homepage and FAQ copy is intentionally frozen, minimal, and - evergreen. It may link to `/rust/` and GitHub Releases, but must not contain + evergreen. It may link to GitHub Releases and the Rust product docs, but must not contain versions, beta targets, ETAs, nightly status, or other release-cycle claims. Future Rust status changes are made only in canonical English surfaces. - Completed locale pages use `index,follow`. @@ -187,8 +148,8 @@ Before adding or changing a feature entry: `/pt-br/faq/`, `/pt-pt/faq/`, `/fr/faq/`, `/de/faq/`, `/pl/faq/`, `/nl/faq/`, `/ru/faq/`, `/tr/faq/`, `/uk/faq/`, `/ko/faq/`, `/ar-ae/faq/`, `/zh-cn/faq/`, and `/ja/faq/`. -- `/rust/` is the canonical English-only Rust product page. Do not generate - localized `/rust/` variants or add `hreflang` alternates to that page. +- `/rust/` is a no-index compatibility redirect to `/`. Do not add product + content, localized variants, `hreflang` alternates, or a sitemap entry there. - Do not add generic compatibility chooser URLs such as `/pt/`; Portuguese is represented by the real regional pages `/pt-br/` and `/pt-pt/`. - Complete localized pages must: @@ -214,7 +175,7 @@ Every indexable page must have: - `robots` policy - canonical URL - reciprocal `hreflang` alternates for localized homepage and FAQ families; - the English-only `/rust/` product page intentionally has none + the `/rust/` compatibility redirect intentionally has none - Open Graph title, description, type, and URL where appropriate - structured data only when it can be kept accurate @@ -224,8 +185,7 @@ Search/publishing rules: - `sitemap.xml` must include only complete, indexable pages. - Locale stubs and non-indexable compatibility chooser pages stay out of `sitemap.xml`. -- Metadata and structured data must not mention or point to logos/images. The - header logo is a visible page asset only. +- Metadata and structured data must not mention or point to logos or images. ## Layout And CSS Policy @@ -360,9 +320,13 @@ foreach ($file in $files) { throw "Missing x-default: $file" } if ($file -match '\\rust\\index\.html$' -and $html -match 'hreflang=') { - throw "English-only Rust page must not publish hreflang alternates: $file" + throw "Rust redirect must not publish hreflang alternates: $file" + } + if ($file -match '\\rust\\index\.html$') { + if ($html -notmatch 'content="noindex,follow"') { throw "Rust redirect is indexable: $file" } + } elseif ($html -notmatch 'content="index,follow"') { + throw "Locale not indexable: $file" } - if ($html -notmatch 'content="index,follow"') { throw "Locale not indexable: $file" } } if (Test-Path -LiteralPath 'pt/index.html') { throw 'Unexpected generic Portuguese chooser' } ``` @@ -385,7 +349,7 @@ mobile rendering before pushing. Current public files: - `index.html`: canonical English page -- `rust/index.html`: canonical English-only eMuleBB Rust product page +- `rust/index.html`: no-index compatibility redirect to the homepage - locale `index.html` files under the stock eMule language directories listed in the Localization Policy - `languages/index.html`: indexable language selector From f66fdaa93d1cea3655ec58d6c459f857f90f61f2 Mon Sep 17 00:00:00 2001 From: Threepwood-7 Date: Fri, 30 Oct 2026 12:27:10 +0100 Subject: [PATCH 2/2] feat: consolidate homepage around Rust nightlies --- ar-ae/faq/index.html | 8 +- ar-ae/index.html | 221 ++--- .../brand/emulebb-broadband-edition-logo.png | Bin 243266 -> 0 bytes assets/team/kad-trail-mule.png | Bin 207508 -> 0 bytes assets/team/release-pack-mule.png | Bin 220667 -> 0 bytes assets/team/upload-mule.png | Bin 158559 -> 0 bytes ast/index.html | 223 ++--- bg/index.html | 221 ++--- br/index.html | 221 ++--- ca-valencia-racv/index.html | 223 ++--- ca-valencia/index.html | 223 ++--- ca/index.html | 223 ++--- cs/index.html | 221 ++--- da/index.html | 221 ++--- de/faq/index.html | 8 +- de/index.html | 221 ++--- el/index.html | 221 ++--- es/faq/index.html | 8 +- es/index.html | 221 ++--- et/index.html | 221 ++--- eu/index.html | 221 ++--- fa/index.html | 221 ++--- faq/index.html | 8 +- fi/index.html | 221 ++--- fr/faq/index.html | 8 +- fr/index.html | 223 ++--- gl/index.html | 221 ++--- he/index.html | 221 ++--- hu/index.html | 221 ++--- index.html | 439 +++------ it/faq/index.html | 8 +- it/index.html | 221 ++--- ja/faq/index.html | 8 +- ja/index.html | 221 ++--- ko/faq/index.html | 8 +- ko/index.html | 221 ++--- lt/index.html | 221 ++--- lv/index.html | 221 ++--- mt/index.html | 223 ++--- nb/index.html | 221 ++--- nl/faq/index.html | 8 +- nl/index.html | 221 ++--- nn/index.html | 221 ++--- pl/faq/index.html | 8 +- pl/index.html | 221 ++--- pt-br/faq/index.html | 8 +- pt-br/index.html | 221 ++--- pt-pt/faq/index.html | 8 +- pt-pt/index.html | 221 ++--- ro/index.html | 221 ++--- ru/faq/index.html | 8 +- ru/index.html | 221 ++--- rust/index.html | 167 +--- sitemap.xml | 6 - sl/index.html | 221 ++--- sq/index.html | 221 ++--- styles.css | 26 +- sv/index.html | 221 ++--- templates/faq.html.j2 | 4 +- templates/home.html.j2 | 203 +--- templates/rust.html.j2 | 169 ---- tools/render_pages.py | 913 ++++-------------- tr/faq/index.html | 8 +- tr/index.html | 221 ++--- ug-cn/index.html | 221 ++--- uk/faq/index.html | 8 +- uk/index.html | 221 ++--- vi/index.html | 221 ++--- zh-cn/faq/index.html | 8 +- zh-cn/index.html | 221 ++--- zh-tw/index.html | 221 ++--- 71 files changed, 3202 insertions(+), 8368 deletions(-) delete mode 100644 assets/brand/emulebb-broadband-edition-logo.png delete mode 100644 assets/team/kad-trail-mule.png delete mode 100644 assets/team/release-pack-mule.png delete mode 100644 assets/team/upload-mule.png delete mode 100644 templates/rust.html.j2 diff --git a/ar-ae/faq/index.html b/ar-ae/faq/index.html index f723941..11cff40 100644 --- a/ar-ae/faq/index.html +++ b/ar-ae/faq/index.html @@ -111,15 +111,13 @@