Payload
{
"ref": "refs/heads/main",
"before": "3cc03a621b918e4d767d11a09b8b904d98b56b7f",
"after": "e505a0b47bdfc7881a17d79e2f577700f5949376",
"repository": {
"id": 1104067867,
"node_id": "R_kgDOQc69Gw",
"name": "nixmac-web",
"full_name": "darkmatter/nixmac-web",
"private": true,
"owner": {
"name": "darkmatter",
"email": "hello@dm.sh",
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/darkmatter",
"html_url": "https://github.com/darkmatter",
"followers_url": "https://api.github.com/users/darkmatter/followers",
"following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
"gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
"starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
"organizations_url": "https://api.github.com/users/darkmatter/orgs",
"repos_url": "https://api.github.com/users/darkmatter/repos",
"events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
"received_events_url": "https://api.github.com/users/darkmatter/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/darkmatter/nixmac-web",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/darkmatter/nixmac-web",
"forks_url": "https://api.github.com/repos/darkmatter/nixmac-web/forks",
"keys_url": "https://api.github.com/repos/darkmatter/nixmac-web/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/darkmatter/nixmac-web/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/darkmatter/nixmac-web/teams",
"hooks_url": "https://api.github.com/repos/darkmatter/nixmac-web/hooks",
"issue_events_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/events{/number}",
"events_url": "https://api.github.com/repos/darkmatter/nixmac-web/events",
"assignees_url": "https://api.github.com/repos/darkmatter/nixmac-web/assignees{/user}",
"branches_url": "https://api.github.com/repos/darkmatter/nixmac-web/branches{/branch}",
"tags_url": "https://api.github.com/repos/darkmatter/nixmac-web/tags",
"blobs_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/darkmatter/nixmac-web/statuses/{sha}",
"languages_url": "https://api.github.com/repos/darkmatter/nixmac-web/languages",
"stargazers_url": "https://api.github.com/repos/darkmatter/nixmac-web/stargazers",
"contributors_url": "https://api.github.com/repos/darkmatter/nixmac-web/contributors",
"subscribers_url": "https://api.github.com/repos/darkmatter/nixmac-web/subscribers",
"subscription_url": "https://api.github.com/repos/darkmatter/nixmac-web/subscription",
"commits_url": "https://api.github.com/repos/darkmatter/nixmac-web/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac-web/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/darkmatter/nixmac-web/contents/{+path}",
"compare_url": "https://api.github.com/repos/darkmatter/nixmac-web/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/darkmatter/nixmac-web/merges",
"archive_url": "https://api.github.com/repos/darkmatter/nixmac-web/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/darkmatter/nixmac-web/downloads",
"issues_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues{/number}",
"pulls_url": "https://api.github.com/repos/darkmatter/nixmac-web/pulls{/number}",
"milestones_url": "https://api.github.com/repos/darkmatter/nixmac-web/milestones{/number}",
"notifications_url": "https://api.github.com/repos/darkmatter/nixmac-web/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac-web/labels{/name}",
"releases_url": "https://api.github.com/repos/darkmatter/nixmac-web/releases{/id}",
"deployments_url": "https://api.github.com/repos/darkmatter/nixmac-web/deployments",
"created_at": 1764093224,
"updated_at": "2026-05-27T21:18:35Z",
"pushed_at": 1780241603,
"git_url": "git://github.com/darkmatter/nixmac-web.git",
"ssh_url": "git@github.com:darkmatter/nixmac-web.git",
"clone_url": "https://github.com/darkmatter/nixmac-web.git",
"svn_url": "https://github.com/darkmatter/nixmac-web",
"homepage": null,
"size": 69231,
"stargazers_count": 1,
"watchers_count": 1,
"language": "TypeScript",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 0,
"license": null,
"allow_forking": false,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [],
"visibility": "internal",
"forks": 0,
"open_issues": 0,
"watchers": 1,
"default_branch": "main",
"stargazers": 1,
"master_branch": "main",
"organization": "darkmatter",
"custom_properties": {}
},
"pusher": {
"name": "czxtm",
"email": "1325802+czxtm@users.noreply.github.com"
},
"forced": false,
"organization": {
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"url": "https://api.github.com/orgs/darkmatter",
"repos_url": "https://api.github.com/orgs/darkmatter/repos",
"events_url": "https://api.github.com/orgs/darkmatter/events",
"hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
"issues_url": "https://api.github.com/orgs/darkmatter/issues",
"members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
"public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"description": ""
},
"enterprise": {
"id": 469843,
"slug": "darkmatter",
"name": "darkmatter",
"node_id": "E_kgDOAAcrUw",
"avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
"description": "",
"website_url": "darkmatter.io",
"html_url": "https://github.com/enterprises/darkmatter",
"created_at": "2025-09-07T16:01:00Z",
"updated_at": "2026-05-09T15:34:55Z"
},
"sender": {
"login": "czxtm",
"id": 1325802,
"node_id": "MDQ6VXNlcjEzMjU4MDI=",
"avatar_url": "https://avatars.githubusercontent.com/u/1325802?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/czxtm",
"html_url": "https://github.com/czxtm",
"followers_url": "https://api.github.com/users/czxtm/followers",
"following_url": "https://api.github.com/users/czxtm/following{/other_user}",
"gists_url": "https://api.github.com/users/czxtm/gists{/gist_id}",
"starred_url": "https://api.github.com/users/czxtm/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/czxtm/subscriptions",
"organizations_url": "https://api.github.com/users/czxtm/orgs",
"repos_url": "https://api.github.com/users/czxtm/repos",
"events_url": "https://api.github.com/users/czxtm/events{/privacy}",
"received_events_url": "https://api.github.com/users/czxtm/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"installation": {
"id": 131074261,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
},
"created": false,
"deleted": false,
"base_ref": null,
"compare": "https://github.com/darkmatter/nixmac-web/compare/3cc03a621b91...e505a0b47bdf",
"commits": [
{
"id": "3f19b7cb95d559236f9b47c7e737e8c99790d1b0",
"tree_id": "c8f4586194c2159dc23b86a4d0f07e625399d7e3",
"distinct": true,
"message": "refactor(db): migrate Postgres → two-D1 architecture\n\nReplace the postgres-js Drizzle client (and its module-load\n`DATABASE_URL` requirement) with a per-request `makeDb(d1: D1Database)`\nfactory over `drizzle-orm/d1`. D1 bindings are per-request on Cloudflare\nWorkers, so there is deliberately no module-level `db` singleton.\n\nSplit storage into two D1 databases:\n- AUTH_DB — owned by Better Auth (user/session/account/verification),\n schema applied via @better-auth/cli + wrangler, not Drizzle-tracked.\n- APP_DB — application tables (feedback, polar, userLitellmKey), tracked\n by Drizzle.\n\nCascading changes required by the per-request model:\n- auth: `makeAuth(env)` builds the Better Auth instance per request from\n `env.AUTH_DB` / `env.APP_DB` instead of a shared singleton.\n- api: `createContext` now receives `auth` as a param rather than\n importing the singleton.\n- env: drop `DATABASE_URL` and `BETTER_AUTH_SECRET` from the znv schema\n (they arrive per-request on `c.env`); keeping them re-introduced the\n module-load crash that forced api-proxy lazy-loading.\n- hono-api: build auth + db per request from `c.env`.\n\nDrop the todo feature (router + schema + queries) and the standalone\nauth/user Drizzle schema. Reset migrations to a single D1 baseline and\nremove the legacy Postgres migration history. Swap `db:push`/`db:generate`/\n`db:migrate` scripts for `db:dev`/`db:diff`, and drop the now-unused\n`@effect/sql-pg` catalog entry.",
"timestamp": "2026-05-31T08:26:23-07:00",
"url": "https://github.com/darkmatter/nixmac-web/commit/3f19b7cb95d559236f9b47c7e737e8c99790d1b0",
"author": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:26:23-07:00",
"username": "czxtm"
},
"committer": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:26:23-07:00",
"username": "czxtm"
},
"added": [
"packages/db/src/migrations/20260529025218_flaky_exiles/migration.sql",
"packages/db/src/migrations/20260529025218_flaky_exiles/snapshot.json",
"packages/db/src/queries/litellmKey.ts",
"packages/db/src/schema/userLitellmKey.ts"
],
"removed": [
"packages/api/src/routers/todo.ts",
"packages/db/src/Db.ts",
"packages/db/src/migrations-legacy/20260221_create_feedback.sql",
"packages/db/src/migrations-legacy/20260223_add_feedback_type_issue_error.sql",
"packages/db/src/migrations-legacy/20260414_add_polar_processed_order.sql",
"packages/db/src/migrations-legacy/20260414_add_user_litellm_virtual_key.sql",
"packages/db/src/migrations-legacy/meta/_journal.json",
"packages/db/src/migrations/20260523171127_migration/migration.sql",
"packages/db/src/migrations/20260523171127_migration/snapshot.json",
"packages/db/src/queries/user.ts",
"packages/db/src/schema/auth.ts",
"packages/db/src/schema/todo.ts"
],
"modified": [
"package.json",
"packages/api/src/context.ts",
"packages/api/src/routers/index.ts",
"packages/auth/package.json",
"packages/auth/src/index.ts",
"packages/auth/src/lib/credit-packs.ts",
"packages/auth/src/lib/litellm.ts",
"packages/auth/src/lib/payments.ts",
"packages/db/drizzle.config.ts",
"packages/db/package.json",
"packages/db/src/index.ts",
"packages/db/src/queries/polar.ts",
"packages/db/src/schema/feedback.ts",
"packages/db/src/schema/index.ts",
"packages/db/src/schema/polar.ts",
"packages/env/src/web.ts",
"packages/hono-api/src/index.ts",
"packages/hono-api/src/routes/llm-proxy.ts",
"packages/hono-api/src/services/feedback.ts",
"turbo.json"
]
},
{
"id": "f4bb00b0086b56dc7d5b4e4a12838188b2fe5914",
"tree_id": "aa5ec9a7c9d61faebbb7312166a20978ecc2b214",
"distinct": true,
"message": "feat(infra): extract @nixmac/infra + provision two D1 databases in alchemy\n\nAdd a shared `@nixmac/infra` workspace package holding the deploy\nhelpers that previously lived inline in alchemy.run.ts: `SOPS_AGE_KEY`\nconfig, `selectSecret`, `isEphemeralStage`, and the\n`getWebHostname`/`getDocsHostname` stage→hostname mappers. Register it\nas a TS project reference and root workspace dependency.\n\nRewrite alchemy.run.ts for the two-D1 architecture:\n- Provision `AUTH_DB` and `APP_DB` via `Cloudflare.D1Database`, with\n `APP_DB` migrations applied from the Drizzle migrations dir\n (recursive .sql discovery).\n- Bind both D1 databases into the Web worker env (`AUTH_DB`, `APP_DB`)\n instead of injecting a `DATABASE_URL` secret.\n- Drop the Neon project/branch/Drizzle-schema resources and the\n `@effect/sql-pg`-era `Output`/`Config`/`Redacted` inline plumbing,\n importing the extracted helpers from `@nixmac/infra/utils`.\n\nUpdate tests/alchemy-stack.test.ts assertions for the D1 outputs\n(D1 database IDs + migrationsDir) in place of the Neon\nconnection-string/branch assertions.",
"timestamp": "2026-05-31T08:26:50-07:00",
"url": "https://github.com/darkmatter/nixmac-web/commit/f4bb00b0086b56dc7d5b4e4a12838188b2fe5914",
"author": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:26:50-07:00",
"username": "czxtm"
},
"committer": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:26:50-07:00",
"username": "czxtm"
},
"added": [
"packages/infra/src/constants.ts",
"packages/infra/src/index.ts",
"packages/infra/src/utils.ts"
],
"removed": [],
"modified": [
"alchemy.run.ts",
"packages/infra/package.json",
"tests/alchemy-stack.test.ts",
"tsconfig.json"
]
},
{
"id": "854514711dd83dccc34277b2f51b416fef9dbfbf",
"tree_id": "1baedac6c63f5095c757a9fc60ec977d3e7e188b",
"distinct": true,
"message": "refactor: rename apps/web-rwsdk → apps/web\n\nThe RedwoodSDK app is now the canonical web app; drop the transitional\n`-rwsdk` suffix from the directory, workspace name (`web-rwsdk` → `web`),\nand Cloudflare worker name in wrangler.jsonc (`nixmac-web-rwsdk` →\n`nixmac-web`). Update every reference site: alchemy.run.ts `webRoot`,\ndeploy.yaml push path filter + prebuild step, .stack/config.nix path,\nREADME image src, .ruler/bts.md paths, dangerfile coverage path, and the\nworker-configuration.d.ts regen hint. Regenerate bun.lock + bun.nix for\nthe workspace rename.\n\nFixes the stale `turbo -F web dev` filter that previously resolved no\nworkspace (the dir was `web-rwsdk` while the script targeted `web`).",
"timestamp": "2026-05-31T08:27:15-07:00",
"url": "https://github.com/darkmatter/nixmac-web/commit/854514711dd83dccc34277b2f51b416fef9dbfbf",
"author": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:15-07:00",
"username": "czxtm"
},
"committer": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:15-07:00",
"username": "czxtm"
},
"added": [
"apps/web/package.json",
"apps/web/public/images/shot-widget.png",
"apps/web/src/app/Document.tsx",
"apps/web/src/app/globals.css",
"apps/web/src/app/headers.ts",
"apps/web/src/app/pages/Dashboard.tsx",
"apps/web/src/app/pages/Home.tsx",
"apps/web/src/app/pages/Login.tsx",
"apps/web/src/app/pages/Lp2.tsx",
"apps/web/src/app/pages/Placeholder.tsx",
"apps/web/src/app/pages/PrivacyPolicy.tsx",
"apps/web/src/app/pages/Success.tsx",
"apps/web/src/app/pages/Support.tsx",
"apps/web/src/app/routes/api-proxy.ts",
"apps/web/src/app/routes/docs.ts",
"apps/web/src/app/routes/download.ts",
"apps/web/src/client.tsx",
"apps/web/src/components/brand-mark.tsx",
"apps/web/src/components/crypto-address-block.tsx",
"apps/web/src/components/hover-accordion.tsx",
"apps/web/src/components/icon-badge.tsx",
"apps/web/src/components/loader.tsx",
"apps/web/src/components/providers.tsx",
"apps/web/src/components/sign-in-form.tsx",
"apps/web/src/components/sign-up-form.tsx",
"apps/web/src/components/ui/accordion.tsx",
"apps/web/src/components/ui/badge.tsx",
"apps/web/src/components/ui/button.tsx",
"apps/web/src/components/ui/card.tsx",
"apps/web/src/components/ui/checkbox.tsx",
"apps/web/src/components/ui/input.tsx",
"apps/web/src/components/ui/label.tsx",
"apps/web/src/lib/auth-client.ts",
"apps/web/src/lib/config/configAsCodeExample.ts",
"apps/web/src/lib/config/faq.ts",
"apps/web/src/lib/config/support.ts",
"apps/web/src/lib/docs-url.ts",
"apps/web/src/lib/trpc.ts",
"apps/web/src/lib/utils.ts",
"apps/web/src/worker.tsx",
"apps/web/tsconfig.json",
"apps/web/types/css.d.ts",
"apps/web/types/rw.d.ts",
"apps/web/types/vite.d.ts",
"apps/web/vite.config.mts",
"apps/web/worker-configuration.d.ts",
"apps/web/wrangler.jsonc"
],
"removed": [
"apps/web-rwsdk/package.json",
"apps/web-rwsdk/public/images/shot-widget.png",
"apps/web-rwsdk/src/app/Document.tsx",
"apps/web-rwsdk/src/app/globals.css",
"apps/web-rwsdk/src/app/headers.ts",
"apps/web-rwsdk/src/app/pages/Dashboard.tsx",
"apps/web-rwsdk/src/app/pages/Home.tsx",
"apps/web-rwsdk/src/app/pages/Login.tsx",
"apps/web-rwsdk/src/app/pages/Lp2.tsx",
"apps/web-rwsdk/src/app/pages/Placeholder.tsx",
"apps/web-rwsdk/src/app/pages/PrivacyPolicy.tsx",
"apps/web-rwsdk/src/app/pages/Success.tsx",
"apps/web-rwsdk/src/app/pages/Support.tsx",
"apps/web-rwsdk/src/app/pages/Todos.tsx",
"apps/web-rwsdk/src/app/routes/api-proxy.ts",
"apps/web-rwsdk/src/app/routes/docs.ts",
"apps/web-rwsdk/src/app/routes/download.ts",
"apps/web-rwsdk/src/client.tsx",
"apps/web-rwsdk/src/components/brand-mark.tsx",
"apps/web-rwsdk/src/components/crypto-address-block.tsx",
"apps/web-rwsdk/src/components/hover-accordion.tsx",
"apps/web-rwsdk/src/components/icon-badge.tsx",
"apps/web-rwsdk/src/components/loader.tsx",
"apps/web-rwsdk/src/components/providers.tsx",
"apps/web-rwsdk/src/components/sign-in-form.tsx",
"apps/web-rwsdk/src/components/sign-up-form.tsx",
"apps/web-rwsdk/src/components/ui/accordion.tsx",
"apps/web-rwsdk/src/components/ui/badge.tsx",
"apps/web-rwsdk/src/components/ui/button.tsx",
"apps/web-rwsdk/src/components/ui/card.tsx",
"apps/web-rwsdk/src/components/ui/checkbox.tsx",
"apps/web-rwsdk/src/components/ui/input.tsx",
"apps/web-rwsdk/src/components/ui/label.tsx",
"apps/web-rwsdk/src/lib/auth-client.ts",
"apps/web-rwsdk/src/lib/config/configAsCodeExample.ts",
"apps/web-rwsdk/src/lib/config/faq.ts",
"apps/web-rwsdk/src/lib/config/support.ts",
"apps/web-rwsdk/src/lib/docs-url.ts",
"apps/web-rwsdk/src/lib/trpc.ts",
"apps/web-rwsdk/src/lib/utils.ts",
"apps/web-rwsdk/src/worker.tsx",
"apps/web-rwsdk/tsconfig.json",
"apps/web-rwsdk/types/css.d.ts",
"apps/web-rwsdk/types/rw.d.ts",
"apps/web-rwsdk/types/vite.d.ts",
"apps/web-rwsdk/vite.config.mts",
"apps/web-rwsdk/worker-configuration.d.ts",
"apps/web-rwsdk/wrangler.jsonc"
],
"modified": [
".github/workflows/deploy.yaml",
".ruler/bts.md",
".stack/config.nix",
"README.md",
"bun.lock",
"bun.nix",
"dangerfile.ts"
]
},
{
"id": "e505a0b47bdfc7881a17d79e2f577700f5949376",
"tree_id": "fa66b6f04178b87e527cfdb7f50aceb391e7a587",
"distinct": true,
"message": "fix(justfile): silence gum check so deploy stage prompt works\n\n`which gum || echo ...` leaked gum's path to stdout and, combined with\n`&&`, could swallow the stage-selection prompt. Redirect the probe to\n/dev/null so the deploy recipe only installs gum when actually missing.",
"timestamp": "2026-05-31T08:27:22-07:00",
"url": "https://github.com/darkmatter/nixmac-web/commit/e505a0b47bdfc7881a17d79e2f577700f5949376",
"author": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:22-07:00",
"username": "czxtm"
},
"committer": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:22-07:00",
"username": "czxtm"
},
"added": [],
"removed": [],
"modified": [
"justfile"
]
}
],
"head_commit": {
"id": "e505a0b47bdfc7881a17d79e2f577700f5949376",
"tree_id": "fa66b6f04178b87e527cfdb7f50aceb391e7a587",
"distinct": true,
"message": "fix(justfile): silence gum check so deploy stage prompt works\n\n`which gum || echo ...` leaked gum's path to stdout and, combined with\n`&&`, could swallow the stage-selection prompt. Redirect the probe to\n/dev/null so the deploy recipe only installs gum when actually missing.",
"timestamp": "2026-05-31T08:27:22-07:00",
"url": "https://github.com/darkmatter/nixmac-web/commit/e505a0b47bdfc7881a17d79e2f577700f5949376",
"author": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:22-07:00",
"username": "czxtm"
},
"committer": {
"name": "cooper",
"email": "1325802+czxtm@users.noreply.github.com",
"date": "2026-05-31T08:27:22-07:00",
"username": "czxtm"
},
"added": [],
"removed": [],
"modified": [
"justfile"
]
}
}