docs: add org total stars badge and star history to org profile#20
docs: add org total stars badge and star history to org profile#20lml2468 wants to merge 4 commits into
Conversation
yujiawei
left a comment
There was a problem hiding this comment.
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 404 — community/ 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):
- 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.githubrepo is probably the most natural target since the badge sits on the org profile sourced from this repo. - Add
LICENSEtocommunityin 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 — between badges
Using 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.
Review Addressed (146d078)Thanks @yujiawei for catching this! P1 — Broken license badge link ✅ - https://github.com/Mininglamp-OSS/community/blob/main/LICENSE
+ https://github.com/Mininglamp-OSS/.github/blob/main/LICENSEThe P2 — Ready for re-review. 🙏 |
yujiawei
left a comment
There was a problem hiding this comment.
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.githubrepo, retrieved at HEADmain)
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:
- 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.
- 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.:
(I verified
<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>
octo-server,octo-web,octo-adapters,octo-deployment,octo-matter,octo-smart-summary,octo-admin, andocto-libare 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=socialfrom the stars badge and add a Star icon vialogo=github(or usehttps://img.shields.io/github/stars/Mininglamp-OSS?affiliations=OWNER&color=blue&label=Total%20Stars). - All social: not really an option since shields.io's
socialstyle is GitHub-specific.
Recommend going all flat for visual consistency.
P2 — between badges
Files: profile/README.md lines 7–8, profile/README_zh.md lines 7–8
Using 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
- Must-fix: resolve the License badge / LICENSE mismatch (P0) in both files.
- Decide whether the Star History curation is deliberate; if yes, leave a one-line comment explaining the rule; if no, add
octo-admin(and optionallyocto-lib). - Unify badge styles.
- 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.mdin.githubrepo) 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.
- 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)
…as no LICENSE file)
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.
146d078 to
be77c2f
Compare
yujiawei
left a comment
There was a problem hiding this comment.
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> + 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=OWNERignores private repos by design, so adding/removing private repos likeocto-cliwon'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.
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
P2 — Badge style inconsistencyStars badge changed from P1 — Star History curationAdded HTML comment documenting the selection rule: P2 — Star History link syntaxSwitched clickable link anchor from legacy All changes applied symmetrically to both |
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.
Re-review feedback addressed (6d23196)P2 — Curation comment expanded: Now lists all exclusion categories (non-product repos: 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. |
yujiawei
left a comment
There was a problem hiding this comment.
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=blue → HTTP/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
MITas a second tone (e.g. a hybridApache 2.0 | MITshield).
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.comSVG 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 theirTimelinemode 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.
背景
按最佳实践建议,在组织 Profile 首页加 star 入口和 Star History 趋势图。
变更内容
profile/README.md & profile/README_zh.md(英中双语同步):
shields.io实时统计所有仓库 star 总数,点击跳转组织首页效果
访问 https://github.com/Mininglamp-OSS 即可看到徽章行和 Star History 图。
cc @lml2468 请 Review & Merge 🙏