Repository navigation
v0.7.0
Nothing to configure by hand. git fetch --tags && git checkout v0.7.0 && cd infra/selfhost && ./upgrade.sh; on Coolify or Dokploy, redeploy with the new tag. The migrate container fills the new fifteen-minute rollups from your history once, so this upgrade's migrate step runs longer than usual. If you upgrade without stopping the stack first, the first start can log one history fill … failed line: the history is complete, the line does not repeat, and the next release removes it. Details in SELF-HOSTING.md, "Upgrades and going back".
Added
- Every timezone. Reports are assembled from fifteen-minute rollups instead of hourly ones, so a site can report on any IANA timezone, including offsets that are not a whole hour — India (+05:30), Nepal (+05:45), Chatham (+12:45). Local days, hours and daylight-saving days are cut exactly. 0.6.0 refused those zones.
- Every site has a reporting timezone, set in Settings → General. The dashboard, widgets, the share page, MCP and the assistant all read on it, so "today" means the same day to everyone on the team. A reader can switch their own view from the header without changing it for anyone else. Existing sites take their owner's account timezone, or UTC.
- Site cards carry numbers. The sites grid shows all-time visitors, pageviews and revenue per site, with a weekly visitors line.
GET /v1/sitescarries them, from one query for all listed sites, cached for five minutes. - A tag that cannot count says so. A tag loaded on a host the allowed domains refuse — localhost, a preview deployment — writes one console line naming that host, and the dashboard's waiting screens name it with "Allow this domain". A site that has never received an event says so instead of showing zeros.
- Five share posters. Sources, countries, live visitors and top pages each have one beside the overview, on the same card and in both themes. Share copies the image and offers X, Bluesky and LinkedIn; on a phone it opens the system share sheet.
Sopens the dialog. - AI referrals. A card for visits sent by ChatGPT, Claude, Perplexity, Gemini and Copilot, with their share of all visitors. A visit counts when the assistant is the referrer, or when it arrived without one and the assistant's utm tag names it — which is how clicks from the ChatGPT apps stop reading as Direct. The public board has the same card.
- Devices, Browsers and OS now share one card with a picker.
Changed
- The hourly rollup tables are no longer written. They stay as frozen history; a later release drops them.
PATCH /v1/sites/{id}refusesreporting_timezone: nullwith a 400 — every site has a zone now.- Every service's log has a ceiling: three files of 100 MB, in all three compose files. Docker's default never rotates.
- Fewer metric lines: without a remote-write backend an unchanged gauge is logged at most once a minute; with one, the exporter is the only sink.
- The tracker is MIT.
apps/tracker/and theoa.jsit builds carry the MIT licence; the rest of the product stays AGPL-3.0. It is the one file that runs in your visitors' browsers rather than on your server, so embedding it should never have raised a copyleft question.
Fixed
- The ClickHouse migration CLI now reads
*_FILEvariables;CLICKHOUSE_MIGRATION_PASSWORD_FILEhad read as no password at all. - MinIO is pulled from Quay.
minio/miniostopped resolving on Docker Hub, so the optional object-storage profile failed to start. - Sources and Top pages are ranked by the number they show. Both ordered by pageviews underneath while printing visitors, so a list could read 27, 2, 27, 18.
- The Coolify and Dokploy blueprints pin this release. Both shipped with 0.6.0 still pinning the 0.5.0 images, so a platform install ran the previous release.
- Why a country can read Unknown is written down: a visitor arriving over IPv6 reaches the collector as the Docker bridge gateway and so has no country. (#6)
Coming later
The hourly tables this release stops writing are dropped in a later release; its notes will say what that asks of an install that skipped 0.7.0.