Skip to content

Commit d6822b3

Browse files
authored
Revert "feat(auth): migrate from Clerk to Better Auth (#543)" (#616)
This reverts commit 9ee8911. Reason: The Better Auth migration had unintended side effects: - Desktop app required database dependencies it doesn't need - Many desktop UI files (sidebar, workspace views) were accidentally deleted - Local-db migrations were removed that were already deployed to users We're reverting to unblock users and will re-implement Better Auth properly in a focused PR that only changes the auth implementation. Additional changes: - Reduced minimum desktop version from 0.0.44 to 0.0.39 to unblock existing users
1 parent 3166280 commit d6822b3

319 files changed

Lines changed: 17762 additions & 9233 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ NEXT_PUBLIC_MARKETING_URL=http://localhost:3002
2828
NEXT_PUBLIC_DOCS_URL=http://localhost:3004
2929

3030
# -----------------------------------------------------------------------------
31-
# Better Auth
31+
# Clerk Auth
3232
# -----------------------------------------------------------------------------
33-
BETTER_AUTH_SECRET=
33+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
34+
CLERK_SECRET_KEY=
35+
CLERK_WEBHOOK_SECRET=
3436
NEXT_PUBLIC_COOKIE_DOMAIN=localhost
3537

3638
# -----------------------------------------------------------------------------
@@ -52,6 +54,7 @@ BLOB_READ_WRITE_TOKEN=
5254
NEXT_PUBLIC_POSTHOG_KEY=
5355
POSTHOG_API_KEY=
5456
POSTHOG_PROJECT_ID=
57+
DESKTOP_AUTH_SECRET=
5558

5659
# -----------------------------------------------------------------------------
5760
# Freestyle

.github/workflows/deploy-preview.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ jobs:
170170
NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }}
171171
NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }}
172172
NEXT_PUBLIC_ADMIN_URL: https://${{ env.ADMIN_ALIAS }}
173-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
173+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
174+
CLERK_WEBHOOK_SECRET: ${{ secrets.CLERK_WEBHOOK_SECRET }}
175+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
176+
DESKTOP_AUTH_SECRET: ${{ secrets.DESKTOP_AUTH_SECRET }}
174177
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
175178
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
176179
GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }}
@@ -194,13 +197,16 @@ jobs:
194197
vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
195198
vercel build --token=$VERCEL_TOKEN
196199
VERCEL_URL=$(vercel deploy --prebuilt --token=$VERCEL_TOKEN \
200+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
201+
--env CLERK_WEBHOOK_SECRET=$CLERK_WEBHOOK_SECRET \
197202
--env DATABASE_URL=$DATABASE_URL \
198203
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
199204
--env BLOB_READ_WRITE_TOKEN=$BLOB_READ_WRITE_TOKEN \
200205
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
201206
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
202207
--env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \
203-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
208+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
209+
--env DESKTOP_AUTH_SECRET=$DESKTOP_AUTH_SECRET \
204210
--env GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID \
205211
--env GOOGLE_CLIENT_SECRET=$GOOGLE_CLIENT_SECRET \
206212
--env GH_CLIENT_ID=$GH_CLIENT_ID \
@@ -286,24 +292,28 @@ jobs:
286292
NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }}
287293
NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }}
288294
NEXT_PUBLIC_DOCS_URL: https://${{ env.DOCS_ALIAS }}
289-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
295+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
296+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
290297
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
291298
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
292299
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
300+
DESKTOP_AUTH_SECRET: ${{ secrets.DESKTOP_AUTH_SECRET }}
293301
NEXT_PUBLIC_SENTRY_DSN_WEB: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_WEB }}
294302
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
295303
NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }}
296304
run: |
297305
vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
298306
vercel build --token=$VERCEL_TOKEN
299307
VERCEL_URL=$(vercel deploy --prebuilt --token=$VERCEL_TOKEN \
308+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
300309
--env DATABASE_URL=$DATABASE_URL \
301310
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
302-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
311+
--env DESKTOP_AUTH_SECRET=$DESKTOP_AUTH_SECRET \
303312
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
304313
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
305314
--env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \
306315
--env NEXT_PUBLIC_DOCS_URL=$NEXT_PUBLIC_DOCS_URL \
316+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
307317
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
308318
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
309319
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \
@@ -360,7 +370,8 @@ jobs:
360370
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_MARKETING_PROJECT_ID }}
361371
NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }}
362372
NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }}
363-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
373+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
374+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
364375
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
365376
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
366377
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
@@ -371,9 +382,10 @@ jobs:
371382
vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
372383
vercel build --token=$VERCEL_TOKEN
373384
VERCEL_URL=$(vercel deploy --prebuilt --token=$VERCEL_TOKEN \
374-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
385+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
375386
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
376387
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
388+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
377389
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
378390
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
379391
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \
@@ -443,7 +455,8 @@ jobs:
443455
DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }}
444456
NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }}
445457
NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }}
446-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
458+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
459+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
447460
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
448461
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
449462
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
@@ -456,11 +469,12 @@ jobs:
456469
vercel pull --yes --environment=preview --token=$VERCEL_TOKEN
457470
vercel build --token=$VERCEL_TOKEN
458471
VERCEL_URL=$(vercel deploy --prebuilt --token=$VERCEL_TOKEN \
472+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
459473
--env DATABASE_URL=$DATABASE_URL \
460474
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
461-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
462475
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
463476
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
477+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
464478
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
465479
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
466480
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \

.github/workflows/deploy-production.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ jobs:
7373
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
7474
NEXT_PUBLIC_WEB_URL: ${{ secrets.NEXT_PUBLIC_WEB_URL }}
7575
NEXT_PUBLIC_ADMIN_URL: ${{ secrets.NEXT_PUBLIC_ADMIN_URL }}
76-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
76+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
77+
CLERK_WEBHOOK_SECRET: ${{ secrets.CLERK_WEBHOOK_SECRET }}
7778
BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
79+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
80+
DESKTOP_AUTH_SECRET: ${{ secrets.DESKTOP_AUTH_SECRET }}
7881
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
7982
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
8083
GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }}
@@ -98,13 +101,16 @@ jobs:
98101
vercel pull --yes --environment=production --token=$VERCEL_TOKEN
99102
vercel build --prod --token=$VERCEL_TOKEN
100103
vercel deploy --prod --prebuilt --token=$VERCEL_TOKEN \
104+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
105+
--env CLERK_WEBHOOK_SECRET=$CLERK_WEBHOOK_SECRET \
101106
--env DATABASE_URL=$DATABASE_URL \
102107
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
103108
--env BLOB_READ_WRITE_TOKEN=$BLOB_READ_WRITE_TOKEN \
104109
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
105110
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
106111
--env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \
107-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
112+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
113+
--env DESKTOP_AUTH_SECRET=$DESKTOP_AUTH_SECRET \
108114
--env GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID \
109115
--env GOOGLE_CLIENT_SECRET=$GOOGLE_CLIENT_SECRET \
110116
--env GH_CLIENT_ID=$GH_CLIENT_ID \
@@ -162,24 +168,28 @@ jobs:
162168
NEXT_PUBLIC_WEB_URL: ${{ secrets.NEXT_PUBLIC_WEB_URL }}
163169
NEXT_PUBLIC_MARKETING_URL: ${{ secrets.NEXT_PUBLIC_MARKETING_URL }}
164170
NEXT_PUBLIC_DOCS_URL: ${{ secrets.NEXT_PUBLIC_DOCS_URL }}
165-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
171+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
172+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
166173
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
167174
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
168175
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
176+
DESKTOP_AUTH_SECRET: ${{ secrets.DESKTOP_AUTH_SECRET }}
169177
NEXT_PUBLIC_SENTRY_DSN_WEB: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_WEB }}
170178
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
171179
NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }}
172180
run: |
173181
vercel pull --yes --environment=production --token=$VERCEL_TOKEN
174182
vercel build --prod --token=$VERCEL_TOKEN
175183
vercel deploy --prod --prebuilt --token=$VERCEL_TOKEN \
184+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
176185
--env DATABASE_URL=$DATABASE_URL \
177186
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
178-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
187+
--env DESKTOP_AUTH_SECRET=$DESKTOP_AUTH_SECRET \
179188
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
180189
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
181190
--env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \
182191
--env NEXT_PUBLIC_DOCS_URL=$NEXT_PUBLIC_DOCS_URL \
192+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
183193
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
184194
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
185195
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \
@@ -220,7 +230,8 @@ jobs:
220230
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_MARKETING_PROJECT_ID }}
221231
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
222232
NEXT_PUBLIC_WEB_URL: ${{ secrets.NEXT_PUBLIC_WEB_URL }}
223-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
233+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
234+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
224235
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
225236
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
226237
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
@@ -231,9 +242,10 @@ jobs:
231242
vercel pull --yes --environment=production --token=$VERCEL_TOKEN
232243
vercel build --prod --token=$VERCEL_TOKEN
233244
vercel deploy --prod --prebuilt --token=$VERCEL_TOKEN \
234-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
245+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
235246
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
236247
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
248+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
237249
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
238250
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
239251
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \
@@ -276,7 +288,8 @@ jobs:
276288
DATABASE_URL_UNPOOLED: ${{ secrets.DATABASE_URL_UNPOOLED }}
277289
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
278290
NEXT_PUBLIC_WEB_URL: ${{ secrets.NEXT_PUBLIC_WEB_URL }}
279-
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
291+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
292+
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
280293
NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }}
281294
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
282295
NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}
@@ -289,11 +302,12 @@ jobs:
289302
vercel pull --yes --environment=production --token=$VERCEL_TOKEN
290303
vercel build --prod --token=$VERCEL_TOKEN
291304
vercel deploy --prod --prebuilt --token=$VERCEL_TOKEN \
305+
--env CLERK_SECRET_KEY=$CLERK_SECRET_KEY \
292306
--env DATABASE_URL=$DATABASE_URL \
293307
--env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \
294-
--env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \
295308
--env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
296309
--env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \
310+
--env NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY \
297311
--env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \
298312
--env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \
299313
--env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \

.mcp.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66
"env": {
77
"NEON_API_KEY": "${NEON_API_KEY}"
88
}
9+
},
10+
"morph-warp-grep": {
11+
"command": "npx",
12+
"args": ["-y", "@morphllm/morphmcp"],
13+
"env": {
14+
"MORPH_API_KEY": "${MORPH_API_KEY}",
15+
"ENABLED_TOOLS": "warpgrep_codebase_search"
16+
}
917
}
1018
}
1119
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Superset monitors your running agents, notify you when changes are ready, and he
6969

7070
<img width="600" height="447" alt="Screenshot 2025-12-24 at 9 33 51 PM" src="https://github.com/user-attachments/assets/ff890049-67a8-432b-8edd-bf9ff846ae16" />
7171

72-
Superet is designed to be a superset of your existing tools. It works for any CLI agents that runs in the terminal. You can open your superset workspace in any apps like IDE, filesystem, terminal, etc.
72+
Superset is designed to be a superset of your existing tools. It works for any CLI agents that runs in the terminal. You can open your superset workspace in any apps like IDE, filesystem, terminal, etc.
7373

7474
<img width="602" height="445" alt="Screenshot 2025-12-24 at 9 34 04 PM" src="https://github.com/user-attachments/assets/1eb3fa42-db30-4a62-9a8f-22cb757b4866" />
7575

apps/admin/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"typecheck": "tsc --noEmit"
1212
},
1313
"dependencies": {
14+
"@clerk/nextjs": "^6.36.2",
1415
"@sentry/nextjs": "^10.32.1",
15-
"@superset/auth": "workspace:*",
1616
"@superset/db": "workspace:*",
1717
"@superset/shared": "workspace:*",
1818
"@superset/trpc": "workspace:*",
@@ -23,7 +23,6 @@
2323
"@trpc/client": "^11.7.1",
2424
"@trpc/server": "^11.7.1",
2525
"@trpc/tanstack-react-query": "^11.7.1",
26-
"better-auth": "^1.4.9",
2726
"date-fns": "^4.1.0",
2827
"drizzle-orm": "0.45.1",
2928
"import-in-the-middle": "2.0.1",

apps/admin/src/app/(dashboard)/components/AppSidebar/AppSidebar.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
SidebarRail,
2121
} from "@superset/ui/sidebar";
2222
import { usePathname } from "next/navigation";
23-
import { LuChevronRight, LuHouse, LuUsers } from "react-icons/lu";
23+
import { LuChevronRight, LuHouse, LuUsers, LuUserX } from "react-icons/lu";
2424

2525
import { AppSidebarHeader } from "./components/AppSidebarHeader";
2626
import { NavUser } from "./components/NavUser";
@@ -43,6 +43,11 @@ const sections = [
4343
url: "/users",
4444
icon: LuUsers,
4545
},
46+
{
47+
title: "Deleted Users",
48+
url: "/users/deleted",
49+
icon: LuUserX,
50+
},
4651
],
4752
},
4853
];

apps/admin/src/app/(dashboard)/components/AppSidebar/components/NavUser/NavUser.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { authClient } from "@superset/auth/client";
3+
import { useClerk } from "@clerk/nextjs";
44
import type { RouterOutputs } from "@superset/trpc";
55
import { Avatar, AvatarFallback, AvatarImage } from "@superset/ui/avatar";
66
import {
@@ -25,6 +25,7 @@ import {
2525
LuLogOut,
2626
LuSettings,
2727
} from "react-icons/lu";
28+
2829
import { env } from "@/env";
2930

3031
export interface NavUserProps {
@@ -33,22 +34,13 @@ export interface NavUserProps {
3334

3435
export function NavUser({ user }: NavUserProps) {
3536
const { isMobile } = useSidebar();
37+
const { signOut } = useClerk();
3638

3739
const userInitials = user.name
3840
.split(" ")
3941
.map((name) => name[0])
4042
.join("");
4143

42-
const handleSignOut = async () => {
43-
await authClient.signOut({
44-
fetchOptions: {
45-
onSuccess: () => {
46-
window.location.href = env.NEXT_PUBLIC_WEB_URL;
47-
},
48-
},
49-
});
50-
};
51-
5244
return (
5345
<SidebarMenu>
5446
<SidebarMenuItem>
@@ -59,7 +51,10 @@ export function NavUser({ user }: NavUserProps) {
5951
className="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
6052
>
6153
<Avatar className="h-8 w-8 rounded-lg">
62-
<AvatarImage src={user.image ?? undefined} alt={user.name} />
54+
<AvatarImage
55+
src={user.avatarUrl ?? undefined}
56+
alt={user.name}
57+
/>
6358
<AvatarFallback className="rounded-lg">
6459
{userInitials}
6560
</AvatarFallback>
@@ -80,7 +75,10 @@ export function NavUser({ user }: NavUserProps) {
8075
<DropdownMenuLabel className="p-0 font-normal">
8176
<div className="flex items-center gap-2 px-1 py-1.5 text-left text-sm">
8277
<Avatar className="h-8 w-8 rounded-lg">
83-
<AvatarImage src={user.image ?? undefined} alt={user.name} />
78+
<AvatarImage
79+
src={user.avatarUrl ?? undefined}
80+
alt={user.name}
81+
/>
8482
<AvatarFallback className="rounded-lg">
8583
{userInitials}
8684
</AvatarFallback>
@@ -107,7 +105,9 @@ export function NavUser({ user }: NavUserProps) {
107105
</DropdownMenuItem>
108106
</DropdownMenuGroup>
109107
<DropdownMenuSeparator />
110-
<DropdownMenuItem onClick={handleSignOut}>
108+
<DropdownMenuItem
109+
onClick={() => signOut({ redirectUrl: env.NEXT_PUBLIC_WEB_URL })}
110+
>
111111
<LuLogOut />
112112
Log out
113113
</DropdownMenuItem>

apps/admin/src/app/(dashboard)/components/LeaderboardTable/LeaderboardTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ interface LeaderboardEntry {
2323
userId: string;
2424
name: string;
2525
email: string;
26-
image: string | null;
26+
avatarUrl: string | null;
2727
count: number;
2828
}
2929

@@ -97,7 +97,7 @@ export function LeaderboardTable({
9797
<TableCell>
9898
<div className="flex items-center gap-3">
9999
<Avatar className="h-8 w-8">
100-
<AvatarImage src={entry.image ?? undefined} />
100+
<AvatarImage src={entry.avatarUrl ?? undefined} />
101101
<AvatarFallback>
102102
{entry.name
103103
.split(" ")

0 commit comments

Comments
 (0)