GitHub Delegation
Added known-GitHub host filtering in config loading, host addition, and route checks so github.com cannot become an emulated Forgejo host.
The shim now refuses to treat known GitHub hosts as Forgejo, even when stale config says otherwise, and it renders simple GitHub CLI template probes used for clickable PR URLs.
Fixed a regression where Codex.app could see Forgejo PR data but GitHub repositories reported PR info unavailable. The local config contained github.com in the Forgejo allowlist; the shim now ignores that host and delegates GitHub repositories to the real gh. I also added simple --template rendering so Forgejo PR URL probes can return a bare URL for click-through behavior.
Added known-GitHub host filtering in config loading, host addition, and route checks so github.com cannot become an emulated Forgejo host.
Updated bootstrap so running it from a GitHub checkout does not add github.com or request Forgejo auth for that repo.
Implemented simple Go-template field substitution for JSON output, including nested selectors such as {{.currentBranch.url}} and the jq value form {{.}}.
Prevented a configured real-gh path from pointing back at a managed shim and recursing during delegated GitHub commands.
The observed machine config had hosts = ["git.deltaisland.io", "git.dirtydishes.dev", "github.com"]. Before this change, that made GitHub PR commands route through the Forgejo compatibility layer and return empty PR data. IslandFlow still produced URL fields in JSON, but newer Codex.app link probes may ask the GitHub CLI to format a single URL with --template; the shim parsed that flag but previously ignored it.
Config.is_forgejo_host("github.com") now returns false even if github.com is present in the stored config or FJ_SHIM_HOSTS.add_host("github.com") writes an empty host list instead of preserving an unsafe GitHub allowlist entry.{{.url}}, {{.currentBranch.url}}, and {{.}}, not full Go template logic.Focused excerpt rendered with Diffs server-side rendering via @pierre/diffs/ssr and embedded as static iframe content. It covers the host guard and template output path; regression tests and docs are summarized in prose to keep this file reviewable.
Codex.app should stop treating GitHub repositories as Forgejo, so GitHub PR info can come from the real GitHub CLI again. Forgejo repositories such as IslandFlow should keep returning PR data and can now answer URL-only template probes with a direct link like https://git.dirtydishes.dev/dirtydishes/islandflow/pulls/23.
python3 -m unittest -q: 93 tests passed.PYTHONPATH=src python3 -m compileall -q src tests: passed.github.com/dirtydishes/gh-forgejo-shim and routes git.dirtydishes.dev/dirtydishes/islandflow.gh pr status --json number,title,url --template '{{.currentBranch.url}}' returns the bare PR URL.gh repo view github.com/dirtydishes/gh-forgejo-shim --json nameWithOwner,url.0.1.0 until the local package is reinstalled or released. The source fix was validated with PYTHONPATH=src.github.com entry may remain in the text config file, but the runtime now ignores it. A future config write will omit it.range, conditionals, or formatting helpers.