Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed `GET /api/mcp` hanging with zero bytes by returning `405 Method Not Allowed` per the MCP Streamable HTTP spec ([#1064](https://github.com/sourcebot-dev/sourcebot/pull/1064))

### Removed
- Removed "general" settings page with options to change organization name and domain. [#1065](https://github.com/sourcebot-dev/sourcebot/pull/1065)

## [4.16.3] - 2026-03-27

### Added
Expand Down
61 changes: 0 additions & 61 deletions packages/web/src/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import InviteUserEmail from "./emails/inviteUserEmail";
import JoinRequestApprovedEmail from "./emails/joinRequestApprovedEmail";
import JoinRequestSubmittedEmail from "./emails/joinRequestSubmittedEmail";
import { AGENTIC_SEARCH_TUTORIAL_DISMISSED_COOKIE_NAME, MOBILE_UNSUPPORTED_SPLASH_SCREEN_DISMISSED_COOKIE_NAME, SINGLE_TENANT_ORG_DOMAIN, SOURCEBOT_GUEST_USER_ID, SOURCEBOT_SUPPORT_EMAIL } from "./lib/constants";
import { orgDomainSchema, orgNameSchema } from "./lib/schemas";
import { ApiKeyPayload, RepositoryQuery, TenancyMode } from "./lib/types";
import { withAuthV2, withOptionalAuthV2 } from "./withAuthV2";
import { getBrowsePath } from "./app/[domain]/browse/hooks/utils";
Expand Down Expand Up @@ -186,54 +185,6 @@ export const withTenancyModeEnforcement = async<T>(mode: TenancyMode, fn: () =>
}

////// Actions ///////

export const updateOrgName = async (name: string, domain: string) => sew(() =>
withAuth((userId) =>
withOrgMembership(userId, domain, async ({ org }) => {
const { success } = orgNameSchema.safeParse(name);
if (!success) {
return {
statusCode: StatusCodes.BAD_REQUEST,
errorCode: ErrorCode.INVALID_REQUEST_BODY,
message: "Invalid organization url",
} satisfies ServiceError;
}

await prisma.org.update({
where: { id: org.id },
data: { name },
});

return {
success: true,
}
}, /* minRequiredRole = */ OrgRole.OWNER)
));

export const updateOrgDomain = async (newDomain: string, existingDomain: string) => sew(() =>
withTenancyModeEnforcement('multi', () =>
withAuth((userId) =>
withOrgMembership(userId, existingDomain, async ({ org }) => {
const { success } = await orgDomainSchema.safeParseAsync(newDomain);
if (!success) {
return {
statusCode: StatusCodes.BAD_REQUEST,
errorCode: ErrorCode.INVALID_REQUEST_BODY,
message: "Invalid organization url",
} satisfies ServiceError;
}

await prisma.org.update({
where: { id: org.id },
data: { domain: newDomain },
});

return {
success: true,
}
}, /* minRequiredRole = */ OrgRole.OWNER)
)));

export const completeOnboarding = async (domain: string): Promise<{ success: boolean } | ServiceError> => sew(() =>
withAuth((userId) =>
withOrgMembership(userId, domain, async ({ org }) => {
Expand Down Expand Up @@ -1164,18 +1115,6 @@ export const getInviteInfo = async (inviteId: string) => sew(() =>
}
}));

export const checkIfOrgDomainExists = async (domain: string): Promise<boolean | ServiceError> => sew(() =>
withAuth(async () => {
const org = await prisma.org.findFirst({
where: {
domain,
}
});

return !!org;
}));


export const getOrgMembers = async (domain: string) => sew(() =>
withAuth(async (userId) =>
withOrgMembership(userId, domain, async ({ org }) => {
Expand Down

This file was deleted.

This file was deleted.

58 changes: 0 additions & 58 deletions packages/web/src/app/[domain]/settings/(general)/page.tsx

This file was deleted.

Loading
Loading