Skip to content

Hide private projects on all remaining surfaces (#1300 follow-up) - #1303

Merged
jonfroehlich merged 1 commit into
masterfrom
1300-hide-private-projects-remaining-surfaces
Jun 15, 2026
Merged

Hide private projects on all remaining surfaces (#1300 follow-up)#1303
jonfroehlich merged 1 commit into
masterfrom
1300-hide-private-projects-remaining-surfaces

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Follow-up to #1302. That PR was merged with only its first commit (426bdcf) — the second commit (281fe1b), which closed the remaining visibility leaks, missed the merge window and never landed on master. This re-applies exactly that commit.

Context

#1302's first commit made the primary surfaces honor is_visible (gallery, landing grid, member page, individual project page, pub/talk/video chips). An audit then found six more places that still named a private project. Those fixes are what this PR adds.

What this changes

Surface Before Now
Awards page showed project name as plain text private project not listed at all (new Award.get_visible_projects)
"Related projects" on a project page filtered on gallery_image only also requires is_visible
People listing chips get_projects_sorted_by_contrib filtered by pub count also filters is_visible=True
News item related projects news.project.all() display filtered to visible (related-news lookup unchanged)
Project-listing umbrella filter counts/names from project_set.all() visible-only (no count inflation / name leak)
Landing carousel private project's banner showed name + 404 link banners on a private project excluded

Intentionally not changed: /view-project-people/ — per maintainer decision this is an internal people-tracking tool, left exempt.

Testing

  • 135 tests pass (--settings=makeabilitylab.settings_test), including one regression test per surface above in test_project_visibility.py.

Deploy

Merging to master ships to -test only; no production tag yet.

🤖 Generated with Claude Code

The first commit covered the gallery, landing grid, member page,
individual project page, and pub/talk/video chips. Audit found six more
places that still mentioned a private project; route them all through
is_visible:

- Awards page: drop the plain-text fallback and list only visible
  projects (new Award.get_visible_projects); a private project is no
  longer named. Admin get_project_names() still lists all.
- Related projects on a project page: filter on is_visible (was
  gallery_image only), so a private project can't appear as a card.
- People listing: Person.get_projects_sorted_by_contrib now filters
  is_visible=True.
- News item page: show only visible related projects, while the related-
  news lookup still considers all linked projects (behavior unchanged).
- Project-listing umbrella filter: count and list only visible projects
  so private ones don't inflate counts or leak names into the page.
- Landing carousel: exclude banners tied to a private project (banners
  with no project, or a visible project, are unaffected).

Per maintainer decision, /view-project-people/ is intentionally left as
an internal tool and is not filtered.

Adds regression tests for each surface (135 tests pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jonfroehlich
jonfroehlich merged commit fb9caae into master Jun 15, 2026
1 check passed
@jonfroehlich
jonfroehlich deleted the 1300-hide-private-projects-remaining-surfaces branch June 15, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant