Skip to content

feat(projects): distinguish internal and external projects - #517

Merged
TheMeinerLP merged 2 commits into
mainfrom
feat/project-audience
Oct 11, 2026
Merged

TheMeinerLP merged 2 commits into
mainfrom
feat/project-audience

Conversation

@TheMeinerLP

Copy link
Copy Markdown
Collaborator

Summary

Projects now declare an audience: external or internal.

  • The overview splits into two sections: "For everyone" (external) and "Used in our network" (internal). Each has a short intro. A section without projects is not rendered. Sort order within a section is unchanged.
  • Project cards, the detail page and the team profile grid show a text badge: "Public" / "Internal" (DE: "Öffentlich nutzbar" / "Intern"). External is a filled chip, internal an outlined one, so the audience is not conveyed by colour alone.
  • Internal detail pages carry a short note: artefacts are not publicly available, the source code is open.
  • The overview's ItemList follows the displayed order.

Rule

The audience follows the Maven repository a project deploys to on repo.onelitefeather.dev (decided by the maintainer):

  • external: artefacts go to releases / snapshots, which are public. Non-Maven projects that are published to a public registry or are usable publicly are external too.
  • internal: artefacts go to onelitefeather-releases / onelitefeather-snapshots, which require login.

Classification (checked against each repository's publishing config)

Project Audience Evidence
anti-redstoneclock-remastered external Hangar (non-Maven)
bettergopaint external Hangar (non-Maven)
cyano external build.gradle.kts publishes to /releases or /snapshots
falco external build.gradle.kts publishes to /releases or /snapshots; docs/contributing/publishing.md
feedback-fusion external npm / GHCR (non-Maven)
renovate-presets external publicly referenceable (non-Maven)
workflows external publicly referenceable reusable workflows (non-Maven)
apus internal telemetry-addon and paper-worldpush publish to onelitefeather-*
aves internal build.gradle.kts publishes to onelitefeather-*
butterfly internal bukkit and minestom publish to onelitefeather-*
cygnus internal setup/build.gradle.kts publishes to onelitefeather-*
guira internal build.gradle.kts publishes to onelitefeather-*
ingot internal publishing repositories use onelitefeather-*
otis internal velocity-plugin and java-client publish to onelitefeather-*
titan internal no Maven publishing found in the build files; download link is GitHub Releases
voyager internal no Maven publishing found (service, not a library)
xerus internal build.gradle.kts publishes to onelitefeather-*

All Maven-based classifications match the maintainer's list. No contradiction was found. Titan and Voyager publish nothing to Maven, so the rule applies only through the maintainer's decision for them.

Changes

  • content.config.ts: required audience: z.enum(['external', 'internal']) on the projects schema.
  • layers/content-core: audience added to ProjectSummary and to the list query columns.
  • content/projects/{de,en}/*.md: audience set on all 34 files.
  • layers/projects: PROJECT_AUDIENCES, groupProjectsByAudience, ProjectAudienceBadge; ProjectCard shows the badge.
  • pages/projects/index.vue: two sections, empty ones hidden.
  • pages/projects/[...slug].vue: badge and internal note.
  • i18n/locales/{de,en}.json: projects.audience.*.
  • Tests: frontmatter rules (required audience, agreement across translations, every document declares one), grouping unit tests, card badge test, adapter column list.

Test plan

  • pnpm test: 185 files, 1676 tests passing
  • pnpm quality: ESLint errors 186 (baseline 186), TypeScript 3 (baseline 3); no rise
  • pnpm typecheck: only the 3 existing errors in layers/community-poi and layers/home
  • pnpm build: passes; the generated D1 dump for projects_de has the audience column
  • Visual check of the overview and detail pages at phone width

https://claude.ai/code/session_019zws4ceJu2jctk3XT48fMX

Each project declares an `audience`: external when its artefacts are public
(public Maven repository or public registry), internal when they sit behind
the network's Maven login. The overview splits into two sections, and the
project card and detail page show the audience as a badge.

Claude-Session: https://claude.ai/code/session_019zws4ceJu2jctk3XT48fMX
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
launchpad 5b5813a Commit Preview URL

Branch Preview URL
Oct 11 2026, 03:21 PM

@TheMeinerLP
TheMeinerLP merged commit da07127 into main Oct 11, 2026
8 checks passed
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