Outcome
The pages that are public on GitHub are public here. A signed-out visitor can browse /issues and the other repository surfaces that read from public repositories, exactly as they can on github.com.
Current behavior
Per-repository issue lists and issue detail pages already serve signed-out readers through the :forge_issues live session — reading issues on a public repository is a public activity. But the global workspace at /issues (and the sibling global workspaces such as /projects) sit inside the authenticated live session behind require_authenticated_user, so a signed-out visitor is bounced to sign-in even though every row it would show comes from a public repository.
Work
- Move
/issues out of the authenticated session into a session that serves both signed-in and signed-out viewers, rendering through list_visible_issues_page/2 with an anonymous viewer that resolves to the public-repository predicate.
- Audit the remaining GitHub-style surfaces and apply the same treatment where the GitHub counterpart is public: repository file browsing, commit history, labels and milestones views, release/tag pages, and organization or user profile pages.
- Keep write affordances (new issue, comment, react, assign) hidden or redirected to sign-in for anonymous visitors; reads stay open, writes keep their guards.
- Keep private-repository rows invisible to anonymous viewers under every filter, search term, and page.
- Preserve the existing authenticated experience for signed-in users; no behavior change beyond what anonymity allows.
Acceptance criteria
- A signed-out visitor to
/issues sees the public-repository issue stream without a redirect.
- Every surface opened by this change renders correctly for anonymous viewers, including empty states and pagination.
- No private-repository data reaches an anonymous response in any surface touched here.
- Signed-in users see no regression.
Verification
LiveView tests for anonymous mounts of each opened surface, an authorization test proving private rows never render anonymously, and mix precommit.
Outcome
The pages that are public on GitHub are public here. A signed-out visitor can browse
/issuesand the other repository surfaces that read from public repositories, exactly as they can on github.com.Current behavior
Per-repository issue lists and issue detail pages already serve signed-out readers through the
:forge_issueslive session — reading issues on a public repository is a public activity. But the global workspace at/issues(and the sibling global workspaces such as/projects) sit inside the authenticated live session behindrequire_authenticated_user, so a signed-out visitor is bounced to sign-in even though every row it would show comes from a public repository.Work
/issuesout of the authenticated session into a session that serves both signed-in and signed-out viewers, rendering throughlist_visible_issues_page/2with an anonymous viewer that resolves to the public-repository predicate.Acceptance criteria
/issuessees the public-repository issue stream without a redirect.Verification
LiveView tests for anonymous mounts of each opened surface, an authorization test proving private rows never render anonymously, and
mix precommit.