You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8-1Lines changed: 8 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,12 @@ This project adheres to [Semantic Versioning](https://semver.org/).
7
7
8
8
## [Unreleased]
9
9
10
+
## [0.7.10] - 2026-06-19
11
+
12
+
### Fixed
13
+
14
+
-**Manual sync + IP whitelist:** valid `x-api-token` bypasses `GGHSTATS_WHITELIST` on protected paths so dashboard **Sync all** works remotely; clearer sync error messages (403/429) in the UI.
15
+
10
16
## [0.7.9] - 2026-06-16
11
17
12
18
### Added
@@ -327,7 +333,8 @@ This project adheres to [Semantic Versioning](https://semver.org/).
327
333
- Project naming and module path finalized as `gghstats` (binary, Docker image, `GGHSTATS_*` environment variables).
328
334
- Toolchain and build base image aligned to Go **1.26.1**.
Or extract a [Release](https://github.com/hrodrig/gghstats/releases) tarball, or `go install github.com/hrodrig/gghstats/cmd/gghstats@latest`. Pin a version: `VERSION=v0.7.9 curl -fsSL …/install.sh | sh`.
126
+
Or extract a [Release](https://github.com/hrodrig/gghstats/releases) tarball, or `go install github.com/hrodrig/gghstats/cmd/gghstats@latest`. Pin a version: `VERSION=v0.7.10 curl -fsSL …/install.sh | sh`.
127
127
128
128
Open <http://localhost:8080> if you did not use **`--open`**. Data is stored in `./data/gghstats.db` (override with `GGHSTATS_DB`). A first sync may take a while if the default filter includes many repositories — narrow `GGHSTATS_FILTER` in [Configuration](#configuration) when you move beyond this smoke test.
129
129
@@ -167,7 +167,7 @@ Open <http://localhost:8080>. The template [`.env.example`](.env.example) docume
167
167
curl -fsSL https://raw.githubusercontent.com/hrodrig/gghstats/main/scripts/install.sh | sh
168
168
```
169
169
170
-
Downloads the latest [release](https://github.com/hrodrig/gghstats/releases) archive for your OS/arch into `/usr/local/bin` (override with `BINDIR=~/bin`). Review [`scripts/install.sh`](scripts/install.sh) before piping to `sh`; pin with `VERSION=v0.7.9`.
170
+
Downloads the latest [release](https://github.com/hrodrig/gghstats/releases) archive for your OS/arch into `/usr/local/bin` (override with `BINDIR=~/bin`). Review [`scripts/install.sh`](scripts/install.sh) before piping to `sh`; pin with `VERSION=v0.7.10`.
171
171
172
172
**From source (recommended for developers):**
173
173
@@ -182,15 +182,15 @@ This installs the binary to `$GOBIN` (default `$HOME/go/bin`). Ensure `$GOBIN` i
|**Linux tarball**|`tar -xzf gghstats_*_linux_*.tar.gz` from [Releases](https://github.com/hrodrig/gghstats/releases); verify `checksums.txt`|
188
188
|**FreeBSD**|`gghstats_*_freebsd_*.tar.gz` on [Releases](https://github.com/hrodrig/gghstats/releases); port + developer guide [`contrib/freebsd/README.md`](contrib/freebsd/README.md) (`gmake` in repo, `make` in ports tree) |
189
189
|**OpenBSD**|`gghstats_*_openbsd_*.tar.gz` on [Releases](https://github.com/hrodrig/gghstats/releases); [`contrib/openbsd/README.md`](contrib/openbsd/README.md) and port [`contrib/openbsd/port/`](contrib/openbsd/port/)|
190
190
|**macOS / Windows archives**|`.tar.gz` / `.zip` on [Releases](https://github.com/hrodrig/gghstats/releases)|
191
-
|**OCI image**|`ghcr.io/hrodrig/gghstats:v0.7.9` or `:latest` (multi-arch) |
191
+
|**OCI image**|`ghcr.io/hrodrig/gghstats:v0.7.10` or `:latest` (multi-arch) |
192
192
193
-
Replace `v0.7.9` and `amd64` with your [release](https://github.com/hrodrig/gghstats/releases) version and architecture (e.g. `arm64`).
193
+
Replace `v0.7.10` and `amd64` with your [release](https://github.com/hrodrig/gghstats/releases) version and architecture (e.g. `arm64`).
194
194
195
195
After install, validate the UI locally:
196
196
@@ -415,6 +415,8 @@ gghstats supports optional IP-based access control via `GGHSTATS_WHITELIST`. Whe
415
415
416
416
By default the whitelist applies to **all routes** except `/metrics`, `/api/v1/healthz`, and **`/api/v1/badge/*`** (README embeds). Scope it to specific paths with `GGHSTATS_WHITELIST_PATHS` (comma-separated prefixes, e.g. `/api/,/h2h`). Paths not listed remain publicly accessible. Badge URLs stay public even when `/api/` is whitelisted.
417
417
418
+
When **`GGHSTATS_API_TOKEN`** is set, requests that include a matching **`x-api-token`** header bypass the IP whitelist on protected paths (the token is still validated by the API handler). This lets remote operators run **`POST /api/v1/sync`** from the dashboard without opening `/api/` to the whole internet.
0 commit comments