[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80314":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},80314,"ReleaseBar","steipete\u002FReleaseBar","steipete","Release freshness dashboard for open source maintainers","https:\u002F\u002Frelease.bar",null,"TypeScript",76,11,1,0,3,5,3.24,"MIT License",false,"main",true,[],"2026-06-12 02:04:00","# 📦 ReleaseBar\n\nRelease freshness dashboard for public GitHub users and orgs.\n\nReleaseBar tracks public GitHub repository release health: latest version, release date, commits since release, activity, stars, language, topics, open work, CI status, and recent stargazer audience signals. It serves cached dashboards for routes like `https:\u002F\u002Frelease.bar\u002Fsteipete`, `https:\u002F\u002Frelease.bar\u002Fopenclaw`, and `https:\u002F\u002Frelease.bar\u002Fmicrosoft`.\n\nOwner dashboards show visible public repositories immediately with lightweight repo metadata, then progressively hydrate release, commit, PR, and CI data in the background.\n\n## Configure\n\nEdit `releasebar.config.json`:\n\n- `owners`: GitHub users or orgs to scan\n- `includeForks`: include forked repositories\n- `includeArchived`: include archived repositories\n- `includeUnreleased`: include repositories without GitHub releases in static builds\n- `excludeRepos`: full `owner\u002Fname` entries to hide\n- `canonicalDomain`: primary public dashboard domain\n\n## Build\n\n```sh\nnpm run build\n```\n\nSet `GITHUB_TOKEN` for higher API limits. GitHub Actions uses the built-in token. Static builds read `releasebar.config.json`; the public service reads owner routes through the Worker API.\n\n## Generic Dashboards\n\n- `\u002F` loads `ReleaseBar Hot`, a cached board built from recently requested public dashboards\n- `\u002F:owner` loads the Worker API for that owner\n- query options: `forks=true`, `archived=true`, `unreleased=false`\n- add public sources with `owners=openclaw,steipete` or `repos=owner\u002Fname`\n- the settings panel can add public users, orgs, or explicit repos to the current URL\n- signed-in dashboard owners can save added public sources and local visibility as the public default for their clean owner route\n- custom URLs are capped at 8 added public sources\n- settings can hide visible owners or repos locally without changing the shared cache\n- GitHub App login uses `\u002Fapi\u002Fauth\u002Flogin`, `\u002Fapi\u002Fauth\u002Fcallback`, `\u002Fapi\u002Fauth\u002Finstall`, `\u002Fapi\u002Fauth\u002Flogout`, and `\u002Fapi\u002Fme`\n- `Connect GitHub` signs the user in, checks GitHub App installations, and sends them to install the app when the current dashboard source is not covered\n- GitHub App installation gives ReleaseBar dedicated GitHub API quota for the selected account\u002Frepositories; public unsynced dashboards stay metadata-only and skip release hydration\n- repository audience backfill is GitHub App-only and warms bounded week\u002Fmonth stargazer trust caches for covered repositories\n- GitHub App installation gives ReleaseBar dedicated GitHub API quota for the selected account\u002Frepositories; once an account installation is known, public refreshes for that account can use its app quota even for anonymous viewers\n- private repositories are ignored even when selected in GitHub App installation; ReleaseBar only stores and renders public repository metadata\n- the need-attention metric filters repos with unreleased commits, stale releases, failing\u002Fcancelled CI, or issue\u002FPR pressure and rows show the reason inline\n- owner pages show bounded people trust or org signal profiles with GitHub age, reach, footprint, safety dimensions, weighted score factors, and recent repository evidence\n- repository detail pages include release cadence, recent releases, contributors, languages, commit\u002Fchurn charts, recent public stargazer audience signals, and 30-day issue\u002FPR trend counts when GitHub provides them\n- repository detail pages can show an AI summary of commit titles since the latest release when the Worker has an OpenAI API key\n\n## API And Cache\n\nThe Worker in `worker\u002Findex.ts` serves both the static app shell and the generic owner API. See [docs\u002Fapi.md](docs\u002Fapi.md) for the public REST contract, response shapes, cache semantics, and agent PR-triage guidance.\n\n- `GET \u002Fapi\u002F:owner` returns a cached dashboard for a public GitHub user or org\n- `GET \u002Fapi\u002F:owner\u002Fevents` streams cache updates for progressive rebuilds\n- `GET \u002Fapi\u002Fusers\u002F:login\u002Ftrust` returns cached public people trust or organization signal scoring, account age, score dimensions, and weighted score factors for one GitHub profile\n- `GET \u002Fapi\u002Frepos\u002F:owner\u002F:repo` returns repository detail stats\n- `GET \u002Fapi\u002Frepos\u002F:owner\u002F:repo\u002Faudience?range=week|month` returns cached recent stargazer scoring from public GitHub profile fields\n- `POST \u002Fapi\u002Frepos\u002F:owner\u002F:repo\u002Faudience\u002Fbackfill` warms bounded week\u002Fmonth stargazer trust caches with GitHub App quota only\n- `GET \u002Fopenapi.json`, `GET \u002Fapi\u002Fopenapi.json`, and `GET \u002Fapi\u002Fswagger.json` expose the public API as Swagger-compatible OpenAPI 3.1 JSON\n- `GET \u002Fapi\u002F_discover` and `GET \u002Fapi\u002F_hot` power the root dashboard\n\nDashboard builds validate public GitHub owners and scan up to the 200 most recently pushed public repositories per owner. Release hydration runs in 12-repository batches only when the dashboard is backed by GitHub App quota; unsynced public dashboards show bounded repository metadata without release, compare, commit, or check-run calls. Dashboard payloads, repo fragments, hot boards, app-installation coverage, profile settings, and auth session data live in Cloudflare KV. A Durable Object binding (`DASHBOARD_LOCKS`) prevents repeated cold requests from stampeding GitHub.\n\nFresh dashboard cache is served for about 1h. Stale or partial cache is shown while a background rebuild continues, so large owners can show useful rows before all release data finishes. Dashboard records are retained longer than the fresh window so older public data can remain visible during GitHub outages or rate limits, with the UI marking stale\u002Fpartial state.\n\nThe Worker writes structured `github_token_use` and `github_installation_token` logs without token values. Use Cloudflare Worker tail\u002Flogs to audit which area, route, quota source, account, status, and remaining rate-limit bucket handled public GitHub requests.\n\n### GitHub App Login\n\nConfigure these Worker secrets before enabling login:\n\n- `GITHUB_APP_CLIENT_ID`\n- `GITHUB_APP_CLIENT_SECRET`\n- `GITHUB_APP_ID`\n- `GITHUB_APP_PRIVATE_KEY`\n- `AUTH_COOKIE_SECRET`\n\n`GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` are required for dedicated GitHub App quota. Without them, users can still sign in, but dashboard rebuilds use the shared server token\u002Fcache. Optional: `GITHUB_APP_SLUG` defaults to `releasebar-app`, the current GitHub App slug.\n\nSet the GitHub App setup URL to `https:\u002F\u002Frelease.bar\u002Fapi\u002Fauth\u002Finstall` and enable redirect-on-update so users return to their dashboard after installing or changing repository access.\n\n### AI Release Summaries\n\nConfigure `OPENAI_API_KEY` as a Worker secret to summarize recent public activity and commit titles since the latest release. Optional: `OPENAI_SUMMARY_MODEL` defaults to `chat-latest`, OpenAI's GPT-5.5 Instant API alias.\n\n```sh\nwrangler secret put OPENAI_API_KEY\n```\n\nSummaries are generated server-side through the OpenAI Responses API without an explicit reasoning option. Release summaries are cached by repository, release tag, default-branch head SHA, model, and prompt version; activity summaries also refresh when the configured model changes.\n\n## Local Real-Data Testing\n\nUse Wrangler remote dev when you need local code with real Cloudflare execution, GitHub App secrets, and OpenAI\u002FGitHub tokens:\n\n```sh\nnpm run dev:worker:real\n```\n\nOpen `http:\u002F\u002Flocalhost:8787\u002Fsteipete` or any other route. This runs the current checkout on Cloudflare, so cold dashboards can use the same GitHub App credentials and real API paths as `release.bar`.\n\nFor frontend hot reload, run both processes:\n\n```sh\nnpm run dev\nnpm run dev:worker:real\n```\n\nThe Vite app falls back to `http:\u002F\u002F127.0.0.1:8787` for API calls. `npm run dev:worker` stays fully local and is useful for UI shape and tests, but it does not have production secrets unless you provide local `.dev.vars`.\n\nBecause `wrangler.toml` defines a KV `preview_id`, remote dev uses the preview KV namespace instead of the production cache. It can fetch real data and warm that preview cache without mutating the live `release.bar` cache.\n\n## Deploy\n\nThe combined app\u002FAPI Worker deploys with Wrangler through `.github\u002Fworkflows\u002Fdeploy.yml` on pushes to `main`:\n\n```sh\nnpm run build\nwrangler deploy\n```\n\n`wrangler.toml` binds `dist` as Worker static assets, `DASHBOARD_CACHE` as KV, and `DASHBOARD_LOCKS` as the Durable Object single-flight lock. The Worker runs first so `\u002Fapi\u002F*` stays dynamic and owner routes like `\u002Fopenclaw` return the app shell with HTTP 200. Deploy CI smokes the root page, an owner page, a repository detail page, the discovery API, and live JS\u002FCSS asset hashes after Wrangler deploys.\n\nThe deployed Worker service is still named `releasedeck-api` in Cloudflare for continuity. The canonical product, repo, package, and config names are ReleaseBar \u002F `releasebar`.\n","ReleaseBar 是一个面向开源项目维护者的发布新鲜度仪表板。它能够追踪公共GitHub仓库的健康状况，包括最新版本、发布日期、自上次发布以来的提交次数、活动情况、星标数、语言、话题、开放工作项、持续集成状态以及最近的星标用户信号等。该项目使用TypeScript开发，具有轻量级的仓库元数据展示，并在后台逐步加载更详细的发布、提交、拉取请求和CI数据。适用于需要监控和管理多个开源项目的个人或组织，帮助他们更好地了解项目的活跃程度与社区反馈。通过配置文件可自定义跟踪的用户或组织，同时支持通过GitHub Actions进行构建部署。",2,"2026-06-11 04:00:18","CREATED_QUERY"]