Skip to content

GitHub bot email enables hobby account collaboration#372

Closed
queenvictoria wants to merge 3 commits into
hunvreus:mainfrom
queenvictoria:feature/github-bot-user
Closed

GitHub bot email enables hobby account collaboration#372
queenvictoria wants to merge 3 commits into
hunvreus:mainfrom
queenvictoria:feature/github-bot-user

Conversation

@queenvictoria

Copy link
Copy Markdown
Contributor

Previous (v1) commits from "email" contributors would use the github app's bot name and email address on commit messages.

Since v2 commits use the users name and email address in commit messages. As Github doesn't recognise them as Github users (as they're not) Vercel refuses to build and deploy the changes. This moves this CMS out of the hobby range (for self hosted versions at least).

This PR provides an environment variable and a method to switch back to using the app's address.

@hunvreus

Copy link
Copy Markdown
Owner

Happy to support this use case, but that's not the right way IMHO. It's probably best to support that int he config file. I can add something in the settings object, alongside the commit templates, to disable that change.

@queenvictoria

Copy link
Copy Markdown
Contributor Author

That would be great thank you. I see that my "fix" didn't fix it either ;( so I was trying to see what it used to do.

Hey also: Prettier is messing with your existing formats--I was going to try and guess your settings so that I make less of a mess when I make PRs. Would you prefer to do that yourself?

@queenvictoria

queenvictoria commented Mar 31, 2026

Copy link
Copy Markdown
Contributor Author

Your fix in 2.1.1 is working thank you very much! Though I can't confirm that its working without the setting:

settings:
  commit:
    identity: app
geopopos added a commit to geopopos/pagescms that referenced this pull request Apr 29, 2026
New "Activity" tab on the analytics dashboard that shows a chronological
log of work done on the site. Phase 1 ships two auto-ingest sources:

- GitHub commits classified by touched paths into blog_published /
  content_updated entries. Reuses the existing pages-cms-page-one-local
  installation token via getInstallationToken(). Bot commits filtered
  out (dependabot, github-actions[bot]). Raw commit messages stay in
  metadata for agency debugging only — UI surfaces synthesized titles.

- Netlify production deploys via the existing NETLIFY_PAT. State='ready'
  + context='production' filter; one entry per deploy.

Both sources dedupe via unique index on (site_id, source, external_id),
so re-runs are idempotent. Backfill is 30 days on every sync.

Schema:
- New analytics_activity table — siteId, date, kind, title, description,
  url, source, metadata jsonb, externalId. Migration 0014.
- types.ts — ActivityKind enum (10 kinds, 6 reserved for Phases 2-3),
  ActivitySource enum, ActivityRow type, ACTIVITY_KIND_LABELS map.

Library + routes:
- lib/analytics/activity.ts — provider module: classifyCommit() with
  first-match-wins rules (blog beats services beats locations beats
  site_info), syncGithubCommits(), syncNetlifyDeploys(), upsertActivity()
  with onConflictDoNothing, getActivityFeed() read helper.
- lib/analytics/sync.ts — extends SyncResult with `activity` field,
  hooks both ingestors into the daily sync per-site (errors caught
  per-source so one failing doesn't block the other).
- /api/[owner]/[repo]/analytics/activity GET endpoint.

Dashboard UI:
- New ActivityFeed component renders a vertical timeline grouped by
  bucket (Today / Yesterday / Earlier this week / Earlier this month /
  Older). Per-entry: kind icon, title, optional description, attribution
  chip, "View →" link.
- "Activity" tab inserted as 2nd tab (between Overview and Search) so
  it's prominent. Empty state explains where the feed populates from.

Reserves space for Phase 2 (DataForSEO Backlinks weekly + digest section)
and Phase 3 (manual entry via admin form). See kanban hunvreus#372 for scope.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants