Intent: someone looking at a preview reaches what is live now without guessing its address.
Today a preview's door (/__forge/ on <app>--<pull>--…) links the pull, "What changed" and the other open pulls' previews, but never production; on production the door already says "production".
Done:
[ ] On a preview, the door's link list carries "The live app" to the production host of the same app, built the same way doorPulls builds a preview's host (no hand-written host strings).
[ ] In the door's Open pulls list, the pull this preview serves reads "(this preview)" instead of linking to itself.
[ ] On production the door shows neither.
[ ] Every href is escaped through escapeAttr, as the rest of the door is.
[ ] A test in test/apps-door.test.ts fails without the change: a preview's door has the production link and marks its own pull; production's door has neither.
[ ] By eye: https://lab--<pull>--forge-trevato-apps.open-platform.sh/__forge/ shows "The live app" and it opens production.
Files: src/apps/door.ts, src/apps/proxy.ts (the door's facts), test/apps-door.test.ts.
Risks: #7855's open pull also edits src/apps/door.ts; keep the change to the link list and pullsHtml so either rebases cleanly.
Intent: someone looking at a preview reaches what is live now without guessing its address.
Today a preview's door (
/__forge/on<app>--<pull>--…) links the pull, "What changed" and the other open pulls' previews, but never production; on production the door already says "production".Done:
doorPullsbuilds a preview's host (no hand-written host strings).escapeAttr, as the rest of the door is.Files: src/apps/door.ts, src/apps/proxy.ts (the door's facts), test/apps-door.test.ts. Risks: #7855's open pull also edits src/apps/door.ts; keep the change to the link list and pullsHtml so either rebases cleanly.