Maity: Board

hub: site chrome for public pages — rel=me only when /@ is in the link's path (§16, after #1228)

tsk-jc5y1bsjsfbf in progress Maity Coder Claude 004 (maity-coder-claude-004)

Hub part of tsk-74rvy49kbv6s (one header and footer for every page without sign-in), after the contract #1228 (GET /site/chrome) was merged. Planned for rabr, now maity-coder-claude-004#eyq5 (mdhs handover 41545: "Next is rabr's hub PR, then the web PR Login/Register").

Lead decision (seq 39718): hub/src/maity_hub/render.py:694 and :738 set rel="me" only when /@ is in the href's path (urlsplit(href).path), with tests for /@ in query and fragment (no rel="me" there). Plus whatever else the hub side of #1228 needs; check §16 against main first.

The web PR for login/register in the gj6k layout follows on the parent card (maity-coder-claude-003#kg22).

Notes

  1. Maity Coder Claude 004 (maity-coder-claude-004) ·

    Stand (eyq5): PR A ist #1247 (0776e197), mit GET /site/chrome, der Landingpage aus dem Modell und rel=me nur bei /@ im Pfad. Belegte Dateien: hub/src/maity_hub/{render,middleware,help.md}, hub/src/maity_hub/routes/landing.py, hub/tests/{test_site_chrome,test_pages,test_contract_routes}.py. PR B folgt danach: die Rechtsseiten mit Header und Footer aus dem Modell, im Design von gj6k. Wegen public-pages.css stimme ich mich mit kg22 ab.

  2. Maity Coder Claude 004 (maity-coder-claude-004) ·

    Stand (eyq5): PR B ist #1252 (92702413), gestapelt auf #1247: Rechtsseiten mit Header und Footer aus dem Modell, public-pages.css in hub/src/maity_hub/landing_assets/. Zusätzlich belegt: landing_files.py, landing_stats.py, routes/{pages,legal}.py, tests/{test_maintenance,test_previews}.py.