From 92ae76168c63a38703e1043e41f1cef5df14bd3d Mon Sep 17 00:00:00 2001 From: Brendan Kellam Date: Fri, 28 Nov 2025 23:01:33 -0800 Subject: [PATCH 1/2] fix(web): Fix issue where creating a new Ask thread would result in a 404 (#641) --- CHANGELOG.md | 1 + .../migration.sql | 5 +++++ packages/db/prisma/schema.prisma | 4 ++-- packages/web/src/features/chat/actions.ts | 5 ++--- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 packages/db/prisma/migrations/20251129063148_change_chat_created_by_to_optional/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index fcb0cf8c..2bbcee6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed issue where single quotes could not be used in search queries. [#629](https://github.com/sourcebot-dev/sourcebot/pull/629) - Fixed issue where files with special characters would fail to load. [#636](https://github.com/sourcebot-dev/sourcebot/issues/636) - Fixed Ask performance issues. [#632](https://github.com/sourcebot-dev/sourcebot/pull/632) +- Fixed regression where creating a new Ask thread when unauthenticated would result in a 404. [#641](https://github.com/sourcebot-dev/sourcebot/pull/641) ## [4.10.0] - 2025-11-24 diff --git a/packages/db/prisma/migrations/20251129063148_change_chat_created_by_to_optional/migration.sql b/packages/db/prisma/migrations/20251129063148_change_chat_created_by_to_optional/migration.sql new file mode 100644 index 00000000..d0fd2ba0 --- /dev/null +++ b/packages/db/prisma/migrations/20251129063148_change_chat_created_by_to_optional/migration.sql @@ -0,0 +1,5 @@ +-- First, remove the NOT NULL constraint on the createdById column. +ALTER TABLE "Chat" ALTER COLUMN "createdById" DROP NOT NULL; + +-- Then, set all chats created by the guest user (id: 1) to have a NULL createdById. +UPDATE "Chat" SET "createdById" = NULL WHERE "createdById" = '1'; diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index 2e87ad4f..95460852 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -437,8 +437,8 @@ model Chat { name String? - createdBy User @relation(fields: [createdById], references: [id], onDelete: Cascade) - createdById String + createdBy User? @relation(fields: [createdById], references: [id], onDelete: Cascade) + createdById String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/packages/web/src/features/chat/actions.ts b/packages/web/src/features/chat/actions.ts index a987dbbc..a9053bd2 100644 --- a/packages/web/src/features/chat/actions.ts +++ b/packages/web/src/features/chat/actions.ts @@ -1,7 +1,6 @@ 'use server'; import { sew } from "@/actions"; -import { SOURCEBOT_GUEST_USER_ID } from "@/lib/constants"; import { ErrorCode } from "@/lib/errorCodes"; import { chatIsReadonly, notFound, ServiceError, serviceErrorResponse } from "@/lib/serviceError"; import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock'; @@ -34,13 +33,13 @@ const logger = createLogger('chat-actions'); export const createChat = async () => sew(() => withOptionalAuthV2(async ({ org, user, prisma }) => { - const isGuestUser = user?.id === SOURCEBOT_GUEST_USER_ID; + const isGuestUser = user === undefined; const chat = await prisma.chat.create({ data: { orgId: org.id, messages: [] as unknown as Prisma.InputJsonValue, - createdById: user?.id ?? SOURCEBOT_GUEST_USER_ID, + createdById: user?.id, visibility: isGuestUser ? ChatVisibility.PUBLIC : ChatVisibility.PRIVATE, }, }); From 41a6eb48a03955eaf7e0e6c6bcbcf08b7c1e7345 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 29 Nov 2025 20:43:12 +0000 Subject: [PATCH 2/2] Shrink Docker image size by ~1/3 by removing unnecessary ops (#642) * Remove duplicate copy, chown on copy * Add Dockerfile syntax * Revert entrypoint changes to avoid errors in some non-root cases --- Dockerfile | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1390914a..f49da949 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +# syntax=docker/dockerfile:1 # ------ Global scope variables ------ # Set of global build arguments. @@ -148,7 +149,7 @@ fi ENV SKIP_ENV_VALIDATION=0 # ------------------------------ - + # ------ Runner ------ FROM node-alpine AS runner # ----------- @@ -220,22 +221,23 @@ COPY --from=zoekt-builder \ /cmd/zoekt-index \ /usr/local/bin/ +RUN chown -R sourcebot:sourcebot /app + # Copy zoekt proto files (needed for gRPC client at runtime) -COPY vendor/zoekt/grpc/protos /app/vendor/zoekt/grpc/protos +COPY --chown=sourcebot:sourcebot vendor/zoekt/grpc/protos /app/vendor/zoekt/grpc/protos # Copy all of the things -COPY --from=web-builder /app/packages/web/public ./packages/web/public -COPY --from=web-builder /app/packages/web/.next/standalone ./ -COPY --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static +COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/public ./packages/web/public +COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/.next/standalone ./ +COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static -COPY --from=backend-builder /app/node_modules ./node_modules -COPY --from=backend-builder /app/packages/backend ./packages/backend +COPY --chown=sourcebot:sourcebot --from=backend-builder /app/node_modules ./node_modules +COPY --chown=sourcebot:sourcebot --from=backend-builder /app/packages/backend ./packages/backend -COPY --from=shared-libs-builder /app/node_modules ./node_modules -COPY --from=shared-libs-builder /app/packages/db ./packages/db -COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas -COPY --from=shared-libs-builder /app/packages/shared ./packages/shared -COPY --from=shared-libs-builder /app/packages/queryLanguage ./packages/queryLanguage +COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/db ./packages/db +COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/schemas ./packages/schemas +COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/shared ./packages/shared +COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/queryLanguage ./packages/queryLanguage # Fixes git "dubious ownership" issues when the volume is mounted with different permissions to the container. RUN git config --global safe.directory "*" @@ -245,9 +247,6 @@ RUN mkdir -p /run/postgresql && \ chown -R postgres:postgres /run/postgresql && \ chmod 775 /run/postgresql -# Make app directory accessible to both root and sourcebot user -RUN chown -R sourcebot:sourcebot /app -# Make data directory accessible to both root and sourcebot user RUN chown -R sourcebot:sourcebot /data COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf