From 9271c2b9967c278e1f7540ed05ca21b0d308b789 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 23 Aug 2026 16:52:41 +0000 Subject: [PATCH] hands: cross-board footer nav on the release board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The one-tap board family (mind, brain, heart, memory, organism) as a footer nav — every board now links its siblings, each skipping its own entry. Owner from the snapshot as elsewhere; PyAutoScientist is allowlisted for this surface in the Mind's tenant-firewall baseline. Co-Authored-By: Claude --- autohands/board.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/autohands/board.py b/autohands/board.py index 4cfb2c1..6c97512 100644 --- a/autohands/board.py +++ b/autohands/board.py @@ -266,6 +266,22 @@ def _heart_board_url(snapshot: dict) -> str: return f"https://{owner}.github.io/PyAutoHeart/" if owner else "" +# The one-tap board family — the cross-board footer nav every board carries, +# each board skipping its own entry. Owner comes from the snapshot, so no +# instance name lives here beyond the family's repo identities. +BOARD_FAMILY = (("mind", "PyAutoMind"), ("brain", "PyAutoBrain"), + ("heart", "PyAutoHeart"), ("memory", "PyAutoMemory"), + ("organism", "PyAutoScientist")) + + +def _boards_nav(snapshot: dict) -> str: + owner = str(snapshot.get("owner") or "").lower() + if not owner: + return "" + return " · ".join(f'{name}' + for name, repo in BOARD_FAMILY) + + def _latest(snapshot: dict) -> dict | None: """The headline: the newest released version across the library set.""" libs = [(k, i, l) for i, l in enumerate(snapshot.get("libraries") or []) @@ -472,6 +488,7 @@ def _render_html(snapshot: dict) -> str:
Rendered by autohands/board.py from the GitHub + PyPI APIs · generated {_html.escape(str(snapshot.get('generated') or '?'))} · Hands executes, never gates.
+

Boards: {_boards_nav(snapshot)}

"""