Skip to content

docs: add org total stars badge and star history to org profile#20

Open
lml2468 wants to merge 4 commits into
mainfrom
feat/org-profile-star-badges
Open

docs: add org total stars badge and star history to org profile#20
lml2468 wants to merge 4 commits into
mainfrom
feat/org-profile-star-badges

Conversation

@lml2468
Copy link
Copy Markdown
Contributor

@lml2468 lml2468 commented May 16, 2026

背景

按最佳实践建议,在组织 Profile 首页加 star 入口和 Star History 趋势图。

变更内容

profile/README.md & profile/README_zh.md(英中双语同步):

变更 说明
组织总 star 徽章 shields.io 实时统计所有仓库 star 总数,点击跳转组织首页
Apache 2.0 徽章 许可证快速标识
Discord 徽章 社区入口
Star History 图 覆盖 6 个核心仓库,展示增长趋势,可点击跳转

效果

访问 https://github.com/Mininglamp-OSS 即可看到徽章行和 Star History 图。


cc @lml2468 请 Review & Merge 🙏

Copy link
Copy Markdown

@yujiawei yujiawei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — PR #20 (.github)

Thanks for the polish on the org profile. The intent (a stars badge + license/discord chips + a Star History trend chart, mirrored EN/ZH) is reasonable, the diff is small and bilingual, and the badge image and Star History URL both render. One blocker, plus a couple of low-priority notes.

Verdict summary

Item Status Evidence
Org stars badge URL renders https://img.shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER&style=social&label=Total%20Stars returns 200 SVG, count 115
License badge link target https://github.com/Mininglamp-OSS/community/blob/main/LICENSE returns HTTP/2 404community/ repo currently contains only .github/, GOVERNANCE.md, README.md, README.zh.md. No LICENSE file.
Discord link ⚠️ Not verified (invite codes are not introspectable without joining). Worth confirming https://discord.gg/vj9Vsj9hSB is a permanent invite, not a 7-day one.
Star History image URL https://api.star-history.com/svg?repos=… returns 301 → CDN, image renders
All 6 chart repos exist & public octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary all confirmed public
EN/ZH parity Same block added in both profile/README.md and profile/README_zh.md

Findings

P1 — broken license badge link (both languages)

profile/README.md:8 and profile/README_zh.md:8:

<a href="https://github.com/Mininglamp-OSS/community/blob/main/LICENSE">
  <img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="License" />
</a>

The community repository does not contain a LICENSE file at main. Clicking the badge from the org landing page lands on GitHub's 404 page — a visible regression on the public face of the org.

Two clean fixes (pick one):

  1. Repoint the link to a repo that already ships an Apache-2.0 LICENSE. Mininglamp-OSS/.github/blob/main/LICENSE, octo-server/blob/main/LICENSE, etc. all return 200. The .github repo is probably the most natural target since the badge sits on the org profile sourced from this repo.
  2. Add LICENSE to community in a tiny follow-up PR before merging this one, so the link is valid at merge time.

Given the badge is asserting "the org is Apache-2.0," option 1 is also slightly more honest — community/ is a hub for discussions, not the canonical license source.

P2 — affiliations=OWNER excludes member-owned repos but includes forks

Worth being explicit: the badge counts stars on every public org-owned repo, which today includes the two upstream forks (openclaw, hermes-agent). If those forks rack up stars from upstream traffic, the org "Total Stars" number will drift away from "stars our team's work earned." Probably fine for now (forks have ~0 stars), but if you ever want a tighter number, switch to affiliations=OWNER&fork=false or use a custom endpoint. Non-blocking.

P2 — Star History repo curation diverges from the badge

The badge counts all owner repos (currently includes octo-lib, octo-admin, the forks, community, .github). The Star History chart hard-codes 6 repos (octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary). That's a deliberate curation, but every time you add a real product repo (e.g. a future octo-lib promotion), someone has to remember to extend this URL in two files. Not a bug — just a maintenance note. If you want to avoid the drift, a comment near the URL listing the curation rule ("core product repos only — exclude libs/admin/community/forks") would help future-you.

Nit — &nbsp; between badges

Using &nbsp; between the three badges works in GitHub's renderer but the visual gap is identical to a regular space. You could drop them with no visible change. Pure stylistic, ignore freely.

Recommendation

CHANGES_REQUESTED — the broken license link is the only blocker, and it's a one-line edit in two files. Everything else is fine to ship.

@lml2468
Copy link
Copy Markdown
Contributor Author

lml2468 commented May 16, 2026

Review Addressed (146d078)

Thanks @yujiawei for catching this!

P1 — Broken license badge link
Fixed in both profile/README.md and profile/README_zh.md:

- https://github.com/Mininglamp-OSS/community/blob/main/LICENSE
+ https://github.com/Mininglamp-OSS/.github/blob/main/LICENSE

The .github repo already ships LICENSE at main — this is also the more natural target since the badge lives in a file sourced from this repo.

P2 — affiliations=OWNER scope — Acknowledged, forks currently have ~0 stars, fine for now.
P2 — Star History curation — Noted. Will add a comment to the URL if we add more product repos.
Nit — &nbsp; — Keeping as-is, no functional concern.

Ready for re-review. 🙏

@lml2468 lml2468 requested a review from yujiawei May 16, 2026 09:37
Copy link
Copy Markdown

@yujiawei yujiawei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — PR #20 (.github)

Summary

Small, low-risk docs change: adds a badge row (Total Stars / License / Discord) and a Star History chart to both the English and Chinese org-profile READMEs. Implementation is clean and mirrored between the two files. However, the License badge has a factual mismatch with the LICENSE it links to, which should be fixed before merge.

Verdict: CHANGES_REQUESTED — one P0 accuracy issue, plus a few P2 polish suggestions.


1. Verification Checklist

Item Result Notes
Both READMEs updated symmetrically profile/README.md and profile/README_zh.md get the same 10-line additions in the same positions.
Total Stars badge URL valid https://img.shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER&style=social&label=Total%20Stars returns 200. affiliations=OWNER correctly excludes forks.
Star History image URL valid api.star-history.com/svg?repos=...&type=Date returns 200 (301 → lowercased path, expected).
Discord invite URL format https://discord.gg/vj9Vsj9hSB matches the existing Discord reference further down in the same README.
License badge text matches target file Badge label says Apache 2.0, but the linked Mininglamp-OSS/.github/blob/main/LICENSE is CC-BY-4.0 (Creative Commons Attribution 4.0). See P0 below.
Star History repo list completeness ⚠️ 6 repos listed. Two non-archived public OSS repos under the org are omitted: octo-admin (14 stars) and octo-lib (5 stars). octo-admin actually has more stars than 3 of the included repos. See P1 below.

2. Findings

P0 — License badge points to a license file with a different license

Files: profile/README.md line 8, profile/README_zh.md line 8

<a href="https://github.com/Mininglamp-OSS/.github/blob/main/LICENSE">
  <img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="License" />
</a>

The badge advertises Apache 2.0, but the file it links to is:

Creative Commons Attribution 4.0 International License (CC-BY-4.0)
Copyright (c) 2026 Mininglamp-OSS
(LICENSE in .github repo, retrieved at HEAD main)

A visitor who clicks the badge to verify the license will land on a CC-BY-4.0 page and reasonably conclude the badge is wrong (or the LICENSE file is). It is also internally inconsistent with the bottom-of-README copy:

"Projects under Mininglamp-OSS are released under their respective open-source licenses. See each repository for details."

This sentence (correctly) says there is no single org-wide license, which the badge contradicts.

Two acceptable fixes — pick one:

  1. Recommended: drop the License badge entirely. It conflicts with the "each repo has its own license" stance, and the org profile is not a single licensed artifact.
  2. If you want to keep a license signal, change the badge to reflect the projects and link to a representative project's LICENSE — e.g.:
    <a href="https://github.com/Mininglamp-OSS/octo-server/blob/main/LICENSE">
      <img src="https://img.shields.io/badge/Projects-Apache_2.0-blue.svg" alt="Projects License" />
    </a>
    (I verified octo-server, octo-web, octo-adapters, octo-deployment, octo-matter, octo-smart-summary, octo-admin, and octo-lib are all Apache-2.0, so this claim would be accurate for the OSS project lineup.)

Either fix must be applied to both README.md and README_zh.md.


P1 — Star History curation excludes two qualifying OSS repos

Files: profile/README.md line 105, profile/README_zh.md line 105

The Star History chart covers:
octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary

The org also has these public, non-archived, Apache-2.0 repos that look like part of the Octo project family:

Repo Stars
octo-admin 14
octo-lib 5

octo-admin has more stars than octo-server (10), so omitting it is noticeable to anyone who scans the org list. If the chart is intentionally a "6 flagship products" cut, fine — but please confirm that scope decision is deliberate, and ideally encode it in a brief comment so future contributors don't have to guess (e.g., a <!-- Star History: flagship product repos only; admin/lib intentionally excluded --> next to the chart).

Star-history.com supports more repos in a single chart, so there is no technical reason to leave them out.


P2 — Badge style mismatch

Files: profile/README.md lines 7–9, profile/README_zh.md lines 7–9

The Total Stars badge uses style=social (GitHub-style with star count), while the License and Discord badges use the default flat style. Side-by-side they look visually disjoint — different heights, different typography, different background.

Two consistent options:

  • All flat: drop style=social from the stars badge and add a Star icon via logo=github (or use https://img.shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER&color=blue&label=Total%20Stars).
  • All social: not really an option since shields.io's social style is GitHub-specific.

Recommend going all flat for visual consistency.


P2 — &nbsp; between badges

Files: profile/README.md lines 7–8, profile/README_zh.md lines 7–8

Using &nbsp; between three <a> blocks works but is a bit unusual. Most org profiles either rely on the natural whitespace from line breaks inside <p> or use CSS (<p style="display: flex; gap: 8px; ...">). Not blocking — just a minor readability nit.


P2 — Star History link anchor uses legacy &-joined syntax

Files: profile/README.md line 105, profile/README_zh.md line 105

https://star-history.com/#Mininglamp-OSS/octo-web&Mininglamp-OSS/octo-server&...&Date

This older #A&B&C&Date anchor format still works on star-history.com, but the documented modern form is:

https://star-history.com/#Mininglamp-OSS/octo-web,Mininglamp-OSS/octo-server,...&Date

(comma-separated repos, then &Date). Not breaking, but worth bringing in line with the same comma-separated list that the image src already uses — that keeps the two URLs symmetric and easier to maintain.


3. Suggestions

  1. Must-fix: resolve the License badge / LICENSE mismatch (P0) in both files.
  2. Decide whether the Star History curation is deliberate; if yes, leave a one-line comment explaining the rule; if no, add octo-admin (and optionally octo-lib).
  3. Unify badge styles.
  4. Optional: swap the link anchor to comma-separated form.

The change is otherwise safe to merge: docs-only, no code, no CI impact, no security surface.


4. Additional Observations (out of scope of this PR but worth a note)

  • The bottom-of-README "Security Policy" link target (SECURITY.md in .github repo) was checked and exists — no change needed, but good to know it's not silently broken.
  • If you later want a single source-of-truth license signal, consider adding an org-licenses.md (or similar) that lists each repo with its SPDX id; then a "License: Mixed (Apache-2.0 / CC-BY-4.0)" badge linking to that page would be accurate.

lml2468 and others added 3 commits May 17, 2026 21:42
- Add shields.io org total stars badge (real-time sum of all repos)
- Add Apache 2.0 and Discord badges to header
- Add Star History chart covering 6 core repos
- Apply to both English (README.md) and Chinese (README_zh.md)
P0 — License badge pointed to .github/LICENSE (CC-BY-4.0) but claimed
Apache-2.0. Fixed by:
  - Linking to octo-server/LICENSE (actual Apache-2.0)
  - Changing badge text to 'Projects-Apache_2.0' to reflect per-project
    licensing stance (consistent with bottom-of-README text)

P2 — Unified badge styles: replaced style=social on stars badge with
flat style (color=blue) to match the License and Discord badges.

P2 — Star History link: switched from legacy &-separated anchor syntax
to modern comma-separated form for consistency with the image src URL.

P1 — Star History curation: added HTML comment documenting the repo
selection rule (flagship product repos only; libs/admin excluded).

Applied symmetrically to both README.md and README_zh.md.
@lml2468 lml2468 force-pushed the feat/org-profile-star-badges branch from 146d078 to be77c2f Compare May 17, 2026 13:43
Copy link
Copy Markdown

@yujiawei yujiawei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — PR #20 (.github)

Summary

Docs-only change that adds three badges (Total Stars, License, Discord) and a Star History chart to both the English and Simplified Chinese org profile READMEs. Scope is tight (22 additions, 0 deletions, 2 files), bilingual edits stay symmetric, and the intent is documented inline.

Overall this is a low-risk, ship-ready change. A couple of minor observations below — none block merge.

Verification

Item Status Notes
EN/ZH README in sync Same <p> badge block and Star History section inserted at the same anchors in both files. Only the section heading differs (Star History / Star 趋势), which is expected.
Total Stars badge shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER correctly aggregates only org-owned repos (excludes collaborator/fork entries).
License badge All product repos (octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary, octo-lib, octo-admin) are Apache-2.0, so a single "Apache 2.0" badge is accurate today.
Star History repo scope Included: octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary. Excluded: octo-lib, octo-admin (per inline comment), plus the non-product repos .github, community, openclaw-channel-octo, and the private/fork repos — reasonable curation.
Insertion points Badges land right under the tagline / language switcher; Star History sits between Security and License — natural placement.
Markdown rendering <p> + &nbsp; spacing is standard GitHub-flavored markdown; no nested-list or whitespace traps.

Findings

P2 — License badge may drift if future repos diverge

The new badge hard-codes Apache_2.0 and links to octo-server/LICENSE, while the existing License section explicitly says "Projects under Mininglamp-OSS are released under their respective open-source licenses." All current product repos are Apache-2.0, so today this is accurate. If the org ever adds a non-Apache repo, the badge becomes misleading without a corresponding code change.

Suggestion (non-blocking): consider a generic License-Apache_2.0_/_per_repo wording, or simply License-See_per_repo, to avoid a future silent inconsistency. Keeping as-is is also fine — just be aware of the assumption.

P2 — Inline comment under-enumerates exclusions

<!-- Star History: flagship product repos only; octo-lib and octo-admin intentionally excluded (libraries/admin tooling) -->

The comment names octo-lib and octo-admin but the chart also implicitly excludes community and openclaw-channel-octo. Those exclusions are obviously correct (not products), but if the goal is to leave breadcrumbs for the next editor, the comment could mention "non-product repos also excluded" so future contributors don't second-guess the omission.

P2 — Discord invite permanence

discord.gg/vj9Vsj9hSB is a short invite code. If it isn't a permanent / vanity invite, it will silently 404 on the org profile once it expires. Worth confirming the invite is set to "Never expire / unlimited uses" in Discord server settings.

Additional Observations (no action required)

  • The Star History image is an external request to api.star-history.com; if that service is unreachable, the badge will degrade gracefully (alt text shown). Acceptable trade-off for OSS profiles.
  • shields.io/github/stars/...?affiliations=OWNER ignores private repos by design, so adding/removing private repos like octo-cli won't perturb the total — correct behavior for a public profile.
  • No need to touch the existing License section copy; the new badge complements it rather than contradicts.

Verdict

The change does exactly what the description promises, in both languages, with sensible placement and a documented curation rule. No correctness issues, no security implications, no merge risk. Commenting with minor nits only.

@lml2468
Copy link
Copy Markdown
Contributor Author

lml2468 commented May 17, 2026

Review Feedback Resolution (be77c2f)

Addressed all findings from both review rounds by @yujiawei:

P0 — License badge mismatch (CRITICAL)

The badge claimed "Apache 2.0" but linked to .github/LICENSE which is CC-BY-4.0. Fixed:

  • Link target:octo-server/blob/main/LICENSE (verified Apache-2.0)
  • Badge text: → "Projects-Apache_2.0" to reflect per-project licensing (consistent with the bottom-of-README statement "released under their respective open-source licenses")

P2 — Badge style inconsistency

Stars badge changed from style=social to flat style (color=blue) to match License and Discord badges visually.

P1 — Star History curation

Added HTML comment documenting the selection rule: <!-- Star History: flagship product repos only; octo-lib and octo-admin intentionally excluded (libraries/admin tooling) -->

P2 — Star History link syntax

Switched clickable link anchor from legacy &-separated form to modern comma-separated form, matching the image src URL.

All changes applied symmetrically to both README.md and README_zh.md.

Reviewer noted the inline comment only mentioned octo-lib and
octo-admin but implicitly excluded community, .github, and
openclaw-channel-octo. Updated to list all excluded categories
so future editors don't second-guess the omission.
@lml2468
Copy link
Copy Markdown
Contributor Author

lml2468 commented May 17, 2026

Re-review feedback addressed (6d23196)

P2 — Curation comment expanded: Now lists all exclusion categories (non-product repos: .github, community, openclaw-channel-octo; internal tooling: octo-lib, octo-admin) so future editors see the full picture.

P2 — License drift / Discord permanence: Acknowledged. Current badge is accurate for all 8 product repos today. Will revisit if a non-Apache repo is added. Discord invite should be confirmed as permanent in server settings.

All other items (P0 license fix, badge style, Star History link syntax) were resolved in the prior push.

Copy link
Copy Markdown

@yujiawei yujiawei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — PR #20 (.github)

Summary

Docs-only change: adds three badges (org total stars, Apache 2.0, Discord) under the title block and a Star History chart before the License section, mirrored in both profile/README.md and profile/README_zh.md. No code, no CI, no runtime risk. The diff is symmetric across the two locales, all external endpoints resolve, and the chart's exclusion rationale is captured inline. Safe to merge after addressing two small accuracy nits below.

Verification

Check Result Evidence
EN/ZH parity Same 6-line <p> block and identical Star History markup added at the same anchor points in both files (profile/README.md L7-11, L103-106 and profile/README_zh.md L7-11, L103-106).
Total-stars shield endpoint GET https://img.shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER&label=Total%20Stars&color=blueHTTP/2 200 image/svg+xml, renders Total Stars · 134.
Apache 2.0 license link target repos/Mininglamp-OSS/octo-server/contents/LICENSE exists.
Star History repos All 6 repos (octo-web, octo-server, octo-adapters, octo-deployment, octo-matter, octo-smart-summary) return 200.
Alt text on <img> All three badges and the chart image carry alt="…".
Click-through wrapping Each badge is wrapped in an <a href>; the chart image is wrapped in the star-history.com interactive link.
Layout inside <div align="center"> Badges render centered alongside the title; preserves existing language-switcher line.

Findings

P2 — "Projects: Apache 2.0" badge is not accurate org-wide

profile/README.md L9 and profile/README_zh.md L9 advertise Projects: Apache 2.0, but at least two public org repos are MIT-licensed (openclaw, hermes-agent; per GET orgs/Mininglamp-OSS/repos). A reader who clicks the badge lands on octo-server/LICENSE and may infer the whole org is Apache 2.0. Suggested fixes (pick one):

  • Rename to OCTO Apache 2.0 (scope the claim to the OCTO product family).
  • Drop the badge entirely — the per-repo LICENSE files are the source of truth.
  • Keep the badge but add MIT as a second tone (e.g. a hybrid Apache 2.0 | MIT shield).

P2 — Star History exclusion comment is incomplete

The HTML comment at profile/README.md L104 / profile/README_zh.md L104 enumerates exclusions as .github, community, openclaw-channel-octo, octo-lib, octo-admin. Three other public repos in the org are also not in the chart and not in the comment: octo-cli, openclaw, hermes-agent. Either:

  • Add them to the exclusion list with a one-word reason (e.g. openclaw/hermes-agent: separate product line; octo-cli: tooling), or
  • Include them in the repos= query string if they are intended to be flagship OCTO product repos.

This isn't user-visible, but the comment is meant to be the future maintainer's playbook for "which repo do I add when we ship N+1?" — so an exhaustive list saves the next person from the same triage.

P3 — Discord badge label not localized in ZH README

profile/README_zh.md L10 uses Discord-Join; for consistency with the surrounding translated copy you could use 加入 (e.g. ?label=Discord&message=加入). Optional polish, not blocking.

P3 — affiliations=OWNER parameter is correct but worth pinning in the comment

affiliations=OWNER excludes forks/collaborated repos from the org total — that's the intended behavior here. Worth a short HTML comment next to the badge so a future editor doesn't "simplify" the URL and silently change the counted set.

Suggestions (non-blocking)

  • Consider adding loading="lazy" to the Star History <img> equivalent — N/A because the markdown link form (![...](...)) doesn't accept attributes; ignore unless you switch to raw <img>.
  • The api.star-history.com SVG is fetched on every profile view and is cached aggressively by their CDN; if you ever want a deterministic snapshot, swap to &type=Date (already set) plus their Timeline mode in the click-through URL.

Verdict

No blockers. The change is low-risk documentation polish that improves the org profile's discoverability and social proof. Recommending the two P2 accuracy nits be addressed in this PR or a follow-up, but they are not merge-blocking.

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.

2 participants