feat: remove app name and logo customization feature

Users can no longer customize the app name or logo. The branding API
endpoints, permission, frontend UI, env vars (APP_NAME, MAX_LOGO_SIZE_KB),
and all related tests are removed. Includes a migration to clean up
branding data from existing databases.
This commit is contained in:
SnapOtter
2026-05-07 19:41:30 +08:00
parent 25a1dd7aba
commit 16af9c573a
29 changed files with 52 additions and 977 deletions
+1 -52
View File
@@ -122,15 +122,6 @@ test.describe("GUI Settings - General Tab", () => {
});
test.describe("GUI Settings - System Settings Tab", () => {
test("shows App Name input", async ({ loggedInPage: page }) => {
await openSettings(page);
await page.getByRole("button", { name: /system settings/i }).click();
await expect(page.getByText("App Name")).toBeVisible();
const appNameInput = page.locator("input[type='text']").first();
await expect(appNameInput).toBeVisible();
});
test("shows File Upload Limit input", async ({ loggedInPage: page }) => {
await openSettings(page);
await page.getByRole("button", { name: /system settings/i }).click();
@@ -167,7 +158,7 @@ test.describe("GUI Settings - System Settings Tab", () => {
await page.getByRole("button", { name: /system settings/i }).click();
// Wait for section to load
await expect(page.getByText("App Name")).toBeVisible();
await expect(page.getByText("File Upload Limit (MB)")).toBeVisible();
// Click save
await page.getByRole("button", { name: /save settings/i }).click();
@@ -372,45 +363,3 @@ test.describe("GUI Settings - Product Analytics Tab (deep)", () => {
expect(toggleVisible || disabledVisible).toBe(true);
});
});
test.describe("GUI Settings - Save and Persistence", () => {
test("System Settings save persists after dialog close and reopen", async ({
loggedInPage: page,
}) => {
// Navigate to System Settings tab
await openSettings(page);
await page.getByRole("button", { name: /system settings/i }).click();
await expect(page.getByText("App Name")).toBeVisible({ timeout: 5_000 });
// Wait for the input to load
const appNameInput = page.locator("input[type='text']").first();
await expect(appNameInput).toBeVisible();
const originalName = await appNameInput.inputValue();
const testName = originalName === "SnapOtter" ? "TestApp" : "SnapOtter";
// Change the App Name
await appNameInput.fill(testName);
// Save
await page.getByRole("button", { name: /save settings/i }).click();
await expect(page.getByText("Settings saved.")).toBeVisible({ timeout: 5_000 });
// Close the dialog
await page.keyboard.press("Escape");
await expect(page.locator("h2").filter({ hasText: "Settings" })).not.toBeVisible();
// Reopen the dialog and go to System Settings
await openSettings(page);
await page.getByRole("button", { name: /system settings/i }).click();
await expect(page.getByText("App Name")).toBeVisible();
// Verify the setting persisted
const persistedName = await page.locator("input[type='text']").first().inputValue();
expect(persistedName).toBe(testName);
// Restore original name
await page.locator("input[type='text']").first().fill(originalName);
await page.getByRole("button", { name: /save settings/i }).click();
await expect(page.getByText("Settings saved.")).toBeVisible({ timeout: 5_000 });
});
});
+1 -1
View File
@@ -331,7 +331,7 @@ base.describe("RBAC Full — Custom Role User", () => {
const writeRes = await fetch(`${API}/api/v1/settings`, {
method: "PUT",
headers: authJson(bearerToken),
body: JSON.stringify({ appName: "hacked" }),
body: JSON.stringify({ testSetting: "hacked" }),
});
expect(writeRes.status).toBe(403);
+2 -2
View File
@@ -174,7 +174,7 @@ base.describe("RBAC - User sees restricted tabs", () => {
const settingsRes = await fetch(`${API}/api/v1/settings`, {
method: "PUT",
headers: authJson(bearerToken),
body: JSON.stringify({ appName: "hacked" }),
body: JSON.stringify({ testSetting: "hacked" }),
});
expect(settingsRes.status).toBe(403);
});
@@ -280,7 +280,7 @@ base.describe("RBAC - Editor sees collaborative tabs", () => {
const settingsRes = await fetch(`${API}/api/v1/settings`, {
method: "PUT",
headers: authJson(token as string),
body: JSON.stringify({ appName: "hacked" }),
body: JSON.stringify({ testSetting: "hacked" }),
});
expect(settingsRes.status).toBe(403);
});