Make project name a link to the actual repo on forge.marvin8.zone #19

Closed
opened 2026-08-15 07:56:10 +00:00 by marvin8 · 3 comments
Owner

The repo / project name shown in BOARD.md should be a direct link to the repo on forge.marvin8.zone

The repo / project name shown in BOARD.md should be a direct link to the repo on forge.marvin8.zone
Collaborator

Documenting the design discussion for this issue.

Edit surface

{owner}/{repo} is rendered in three places in renderer.py, each becoming [{owner}/{repo}](https://forge.marvin8.zone/{owner}/{repo}):

  • summary table cell: | {owner}/{repo} | ...
  • prose heading: ### {owner}/{repo}
  • Notes footnote: ¹ **{owner}/{repo}** — {status_md}

The monorepo sub-rows (· pkg-a) are packages, not repos — leave plain.

The one real decision: host source of truth

render_board(repos, date) takes no config, and the host is hardcoded in two independent places that already disagree:

  • config.py: base_url = "https://forge.marvin8.zone/api/v1" (the API host, configurable)
  • http_client.py raw_url: hardcodes https://forge.marvin8.zone/.../raw/branch/main/, ignoring api.base_url

So today a codeberg.org api.base_url sends API calls to Codeberg but raw-file fetches still hit forge.marvin8.zone — a pre-existing inconsistency. The link needs the web host (neither of those directly). Cleanest: derive a web base from api.base_url (strip /api/v1) or add an explicit web.base_url config field, and pass it into render_board. Avoid hardcoding a third forge.marvin8.zone literal. This is a good moment to collapse all host references onto one source of truth (ties into the config-drift cleanup already flagged in #17).

Test impact

  • Most table-row tests search "alice/myrepo" in line — still matches inside [alice/myrepo](...), so they survive.
  • Three tests do result.index("### alice/myrepo") and break when the heading becomes ### [alice/myrepo](...) — update those.
  • Add a test asserting the href is correct.

Minor decisions

  • Link the footnote name too (suggested, for consistency).
  • URL-encoding: Forgejo slugs are [a-z0-9._-], so no escaping needed today; revisit only if a repo name ever carries a special char.

Non-issues

Pure rendering change — no data-model, snapshot, or diff change. Independent of #17/#18; can land on its own branch.

Documenting the design discussion for this issue. ## Edit surface `{owner}/{repo}` is rendered in three places in `renderer.py`, each becoming `[{owner}/{repo}](https://forge.marvin8.zone/{owner}/{repo})`: - summary table cell: `| {owner}/{repo} | ...` - prose heading: `### {owner}/{repo}` - Notes footnote: `¹ **{owner}/{repo}** — {status_md}` The monorepo sub-rows (`· pkg-a`) are packages, not repos — leave plain. ## The one real decision: host source of truth `render_board(repos, date)` takes no config, and the host is hardcoded in two independent places that already disagree: - `config.py`: `base_url = "https://forge.marvin8.zone/api/v1"` (the API host, configurable) - `http_client.py` `raw_url`: hardcodes `https://forge.marvin8.zone/.../raw/branch/main/`, ignoring `api.base_url` So today a codeberg.org `api.base_url` sends API calls to Codeberg but raw-file fetches still hit forge.marvin8.zone — a pre-existing inconsistency. The link needs the *web* host (neither of those directly). Cleanest: derive a web base from `api.base_url` (strip `/api/v1`) or add an explicit `web.base_url` config field, and pass it into `render_board`. Avoid hardcoding a third `forge.marvin8.zone` literal. This is a good moment to collapse all host references onto one source of truth (ties into the config-drift cleanup already flagged in #17). ## Test impact - Most table-row tests search `"alice/myrepo" in line` — still matches inside `[alice/myrepo](...)`, so they survive. - Three tests do `result.index("### alice/myrepo")` and break when the heading becomes `### [alice/myrepo](...)` — update those. - Add a test asserting the href is correct. ## Minor decisions - Link the footnote name too (suggested, for consistency). - URL-encoding: Forgejo slugs are `[a-z0-9._-]`, so no escaping needed today; revisit only if a repo name ever carries a special char. ## Non-issues Pure rendering change — no data-model, snapshot, or diff change. Independent of #17/#18; can land on its own branch.
Collaborator

Finalized plan (board-automation design):

  • Add _repo_link(owner, repo, web_base) helper; render_board gains web_base (derived from api.base_url).
  • Link owner/repo in the table cell, prose heading, and Notes footnote; monorepo sub-rows stay plain.
  • Branch: feat/issue-19-repo-links
Finalized plan (board-automation design): - Add _repo_link(owner, repo, web_base) helper; render_board gains web_base (derived from api.base_url). - Link owner/repo in the table cell, prose heading, and Notes footnote; monorepo sub-rows stay plain. - Branch: feat/issue-19-repo-links
Collaborator

Closed via commit 7706ac3: project names in BOARD.md are now clickable links to their repositories on forge.marvin8.zone.

Closed via commit 7706ac3: project names in BOARD.md are now clickable links to their repositories on forge.marvin8.zone.
Sign in to join this conversation.
No labels
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
marvin8/yilan#19
No description provided.