Skip to content

feat(telemetry): tell your own uploads apart from real usage in Umami - #16

Merged
beastyrabbit merged 3 commits into
mainfrom
t3/track-cli-usage-analytics
Oct 24, 2026
Merged

beastyrabbit merged 3 commits into
mainfrom
t3/track-cli-usage-analytics

Conversation

@beastyrabbit

@beastyrabbit beastyrabbit commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Note

🤖 Claude Opus 5.5 responding on behalf of beastyrabbit

Umami counted 46 publications between Oct 21 and 23, but couldn't say whose they were. 44 were files, and their timing matched the PR screenshots the operator's own agents upload through Schaffa. With no owner on the event, real outside usage was impossible to separate from the operator's own automation.

content-published now carries two more bounded properties:

  • owner: operator for admin-issued tokens with no account behind them (how per-workstation agent tokens are issued), user for tokens created from a signed-in account, anonymous for tokenless pages. Pages, files and finished guides all get it.
  • format (files only): image, video, audio, pdf, text, archive or other, derived from the stored media type.

No identifier reaches Umami. Both values come from fixed lists, so the documented promise of "bounded categorical properties only, with no visitor headers or identifiers" and the privacy policy text still hold. docs/deployment.md lists the new properties. Existing properties (kind, anonymous, interactive) are unchanged.

When Umami is not configured, no owner lookup runs. The independent review caught that the file and guide paths ran these queries before discarding the event, and both now check the configuration first, like the page path already did.

Verification

  • New tests cover the format mapping, a file published with an account token reporting owner: user and format: text, a presentation published with the bootstrap token reporting owner: operator, and publishing a page, file and guide through the HTTP routes with Umami disabled sending nothing.
  • Telemetry, guide, scanner and publication tests pass. tsc, Biome and gitleaks are clean. In the full server suite the only failure is test/video.test.ts, which needs a Chrome install that this machine lacks.
  • Independent review by GPT-6.1 Sol (high): one P3 (the disabled-Umami lookups above), fixed. The follow-up round had no findings.

Events recorded before this release have no owner or format.

Dependency fix to unblock CI

A new high-severity zod advisory (GHSA-mrhx-c7xc-m3w5, zod < 4.6.6) failed the pnpm audit step through puppeteer-core → chromium-bidi (zod 3) and @scalar/types (zod 4.4). puppeteer-core 25.16.0 is inside the existing range and uses a chromium-bidi on zod ^4.6.5, so updating the lockfile with pnpm resolves every path to zod 4.6.7 without an override. pnpm also raised the puppeteer-core spec to ^25.16.0. The audit has no high findings left. CLI tests and the packed-CLI artifact check pass.

🤖 Generated with Claude Code

beastyrabbit and others added 2 commits October 24, 2026 11:18
content-published now carries a bounded owner category (operator for
admin-issued tokens without an account, user for account tokens,
anonymous) and, for files, a format category derived from the media
type. Operators can separate their own agents' uploads from other
usage without sending any identifier to Umami.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Guide finishes and file publications now check the Umami configuration
before resolving the owner category, matching the page path, so
disabled telemetry runs no extra queries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T09:39:55.024233Z 965e489 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

The high-severity zod advisory (< 4.6.6) failed the CI audit through
puppeteer-core > chromium-bidi (zod 3) and @scalar/types (zod 4.4).
puppeteer-core 25.16.0, within the existing range, uses a chromium-bidi
on zod ^4.6.5; refreshing the lockfile resolves every path to 4.6.7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqube-skyway-gmbh

Copy link
Copy Markdown

@beastyrabbit
beastyrabbit merged commit 01aaa34 into main Oct 24, 2026
4 checks passed
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.

1 participant