diff --git a/docs/ross-030-verification.md b/docs/ross-030-verification.md new file mode 100644 index 000000000..03b576fa5 --- /dev/null +++ b/docs/ross-030-verification.md @@ -0,0 +1,58 @@ +# ROSS-030 authenticated application rebrand verification + +Date: 2026-07-16 + +Branch: `agent/ross-030-authenticated-app-rebrand` + +## Scope + +ROSS-030 replaces user-facing Mike identity in the inherited authenticated +Next.js application with the approved ROSS identity. It does not change routes, +API endpoints, database tables, authentication, authorization, document +storage, legal-source providers, model providers, workflows, or application +data. + +## Included + +- ROSS metadata, favicon, application logo, status icon, social card, sidebar, + sign-up links, support copy, account copy, export filenames, MFA device names, + prompts, and error-page title. +- Central product configuration integration for the application name, URLs, + beta statement, terms, and privacy links. +- An explicit CourtListener description as an optional inherited U.S. provider; + no Ontario source integration is claimed to be live. +- Upstream Mike workflow attribution and links remain visible where the app + still integrates with `Open-Legal-Products/mike-workflows`. + +## Deliberately preserved compatibility identifiers + +The following inherited internal identifiers remain unchanged because renaming +them could invalidate existing browser state, drag-and-drop contracts, events, +or imports: + +- `mike.selectedModel` +- `mike:mfa-verified-at` +- `mike:close-row-actions` +- `application/mike-doc` +- `application/mike-folder` +- `mikeApi.ts` and its existing imports +- `mike-icon.tsx` as a compatibility re-export of the new `RossIcon` + +These identifiers are not presented as product branding. + +## Verification result + +| Check | Result | Notes | +|---|---|---| +| ROSS branding contracts | Pass | 5 ROSS-030 contracts pass within the 23-test baseline suite | +| Authenticated frontend production build | Pass | Next.js production build completed; all inherited application routes remain present | +| Preserved repository baseline | Pass | 23/23 baseline tests pass; inherited lint ceiling remains 25 errors and 42 warnings | +| Full repository gate | Pass | Backend, authenticated frontend, public website, lint, and website route tests pass via `npm run check` | +| GitHub Actions | Pending | Runs after browser upload and pull-request creation | + +## Boundaries + +- This package does not enable Ontario legal-source integrations. +- Placeholder `.invalid` URLs remain production blockers. +- No hosted authenticated application, authentication configuration, or real + user data is created by this package. diff --git a/frontend/bun.lock b/frontend/bun.lock index 9d95d1e4f..10d778a73 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -3,7 +3,7 @@ "configVersion": 1, "workspaces": { "": { - "name": "mike", + "name": "ross-app", "dependencies": { "@aws-sdk/client-s3": "^3.1025.0", "@aws-sdk/s3-request-presigner": "^3.1025.0", diff --git a/frontend/next.config.ts b/frontend/next.config.ts index 84dce26f7..32f7700d8 100644 --- a/frontend/next.config.ts +++ b/frontend/next.config.ts @@ -1,8 +1,17 @@ import type { NextConfig } from "next"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const repositoryRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); const nextConfig: NextConfig = { - /* config options here */ reactCompiler: true, + turbopack: { + root: repositoryRoot, + }, async rewrites() { return [ { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a0a6a2d40..88e973806 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mike", + "name": "ross-app", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mike", + "name": "ross-app", "version": "0.1.0", "dependencies": { "@aws-sdk/client-s3": "^3.1025.0", diff --git a/frontend/package.json b/frontend/package.json index a76e08c96..f6eb2b855 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "mike", + "name": "ross-app", "version": "0.1.0", "private": true, "scripts": { diff --git a/frontend/public/link-image.jpg b/frontend/public/link-image.jpg deleted file mode 100644 index 796213e11..000000000 Binary files a/frontend/public/link-image.jpg and /dev/null differ diff --git a/frontend/public/ross-social-card.png b/frontend/public/ross-social-card.png new file mode 100644 index 000000000..ab805e8ff Binary files /dev/null and b/frontend/public/ross-social-card.png differ diff --git a/frontend/public/ross-social-card.svg b/frontend/public/ross-social-card.svg new file mode 100644 index 000000000..5cf7120fe --- /dev/null +++ b/frontend/public/ross-social-card.svg @@ -0,0 +1,15 @@ + + ROSS — Ontario-first legal work + Invitation-only beta for an Ontario-first open-source legal workspace. + + + + + + ROSS + RANADE OSS + Ontario-first legal work. + Preserved open-source workspace · Canadian foundation + + INVITATION-ONLY BETA + diff --git a/frontend/src/app/(pages)/account/api-keys/page.tsx b/frontend/src/app/(pages)/account/api-keys/page.tsx index f9da3d36f..801f310ab 100644 --- a/frontend/src/app/(pages)/account/api-keys/page.tsx +++ b/frontend/src/app/(pages)/account/api-keys/page.tsx @@ -44,7 +44,7 @@ const OTHER_API_KEY_FIELDS = [ label: "CourtListener API Key", placeholder: "Token...", description: - "Add a CourtListener API key if you want the latest CourtListener data. Otherwise, Mike will use the bulk data hosted by us.", + "Add a CourtListener API key for optional inherited U.S. case-law research. Otherwise, ROSS uses the inherited bulk CourtListener dataset when configured by the operator.", }, ] as const; @@ -59,7 +59,7 @@ export default function ApiKeysPage() {

You must provide your own API keys for the app to work or add your API keys into the .env file if you are running your own - instance of Mike. All API keys are encrypted in storage. + instance of ROSS. All API keys are encrypted in storage.

{MODEL_API_KEY_FIELDS.map((field, index) => ( diff --git a/frontend/src/app/(pages)/account/privacy-data/page.tsx b/frontend/src/app/(pages)/account/privacy-data/page.tsx index 2347ede54..96c324a95 100644 --- a/frontend/src/app/(pages)/account/privacy-data/page.tsx +++ b/frontend/src/app/(pages)/account/privacy-data/page.tsx @@ -90,7 +90,7 @@ export default function PrivacyDataPage() { return; } const { blob, filename } = await exportAccountData(); - downloadBlob(blob, filename ?? "mike-account-export.json"); + downloadBlob(blob, filename ?? "ross-account-export.json"); } catch (error) { devLog("[privacy-data/mfa] export account failed", { isMfaRequired: isMfaRequiredError(error), @@ -115,7 +115,7 @@ export default function PrivacyDataPage() { return; } const { blob, filename } = await exportChatData(); - downloadBlob(blob, filename ?? "mike-chat-export.json"); + downloadBlob(blob, filename ?? "ross-chat-export.json"); } catch (error) { devLog("[privacy-data/mfa] export chats failed", { isMfaRequired: isMfaRequiredError(error), @@ -140,7 +140,7 @@ export default function PrivacyDataPage() { return; } const { blob, filename } = await exportTabularReviewsData(); - downloadBlob(blob, filename ?? "mike-tabular-reviews-export.json"); + downloadBlob(blob, filename ?? "ross-tabular-reviews-export.json"); } catch (error) { devLog("[privacy-data/mfa] export tabular reviews failed", { isMfaRequired: isMfaRequiredError(error), diff --git a/frontend/src/app/(pages)/account/security/page.tsx b/frontend/src/app/(pages)/account/security/page.tsx index 18d332ab1..61af5f9cd 100644 --- a/frontend/src/app/(pages)/account/security/page.tsx +++ b/frontend/src/app/(pages)/account/security/page.tsx @@ -253,7 +253,7 @@ export default function SecurityPage() { let { data, error } = await supabase.auth.mfa.enroll({ factorType: "totp", - friendlyName: "Mike", + friendlyName: "ROSS", }); if (error && isDuplicateFriendlyNameError(error)) { traceMfa("[security/mfa] retrying enrollment with unique name", { @@ -261,7 +261,7 @@ export default function SecurityPage() { }); const retry = await supabase.auth.mfa.enroll({ factorType: "totp", - friendlyName: `Mike ${Date.now()}`, + friendlyName: `ROSS ${Date.now()}`, }); data = retry.data; error = retry.error; diff --git a/frontend/src/app/(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx b/frontend/src/app/(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx index d89229240..816bf7b33 100644 --- a/frontend/src/app/(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx +++ b/frontend/src/app/(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx @@ -43,7 +43,7 @@ import { PdfView } from "@/app/components/shared/views/PdfView"; import { SpreadsheetView } from "@/app/components/shared/views/SpreadsheetView"; import { OwnerOnlyPopup } from "@/app/components/popups/OwnerOnlyPopup"; import { DocxView } from "@/app/components/shared/views/DocxView"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import { useAuth } from "@/app/contexts/AuthContext"; import { useUserProfile } from "@/app/contexts/UserProfileContext"; import { useSidebar } from "@/app/contexts/SidebarContext"; @@ -132,7 +132,7 @@ function AssistantGreeting({ username }: { username: string }) { "transform 900ms cubic-bezier(0.25, 0.46, 0.45, 0.94)", }} > - +

{ diff --git a/frontend/src/app/components/assistant/AssistantMessage.tsx b/frontend/src/app/components/assistant/AssistantMessage.tsx index 2c3b74ad6..a90d3a1f5 100644 --- a/frontend/src/app/components/assistant/AssistantMessage.tsx +++ b/frontend/src/app/components/assistant/AssistantMessage.tsx @@ -31,7 +31,7 @@ interface Props { events?: AssistantEvent[]; isStreaming?: boolean; isError?: boolean; - /** Human-readable error text rendered alongside the red Mike icon. */ + /** Human-readable error text rendered alongside the red ROSS icon. */ errorMessage?: string; citations?: Citation[]; citationStatus?: "started" | "partial" | "final"; diff --git a/frontend/src/app/components/assistant/CaseLawPanel.tsx b/frontend/src/app/components/assistant/CaseLawPanel.tsx index e60e536d6..21dfd8b29 100644 --- a/frontend/src/app/components/assistant/CaseLawPanel.tsx +++ b/frontend/src/app/components/assistant/CaseLawPanel.tsx @@ -13,7 +13,7 @@ import { Download, ExternalLink, } from "lucide-react"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import type { CaseCitationQuote } from "../shared/types"; import { clearDocxQuoteHighlights, @@ -492,7 +492,7 @@ export function CaseLawPanel({ {loading && (
- +
)} diff --git a/frontend/src/app/components/assistant/InitialView.tsx b/frontend/src/app/components/assistant/InitialView.tsx index 07a079420..0f4b1f19f 100644 --- a/frontend/src/app/components/assistant/InitialView.tsx +++ b/frontend/src/app/components/assistant/InitialView.tsx @@ -3,7 +3,7 @@ import { useEffect, useLayoutEffect, useRef, useState } from "react"; import { useAuth } from "@/app/contexts/AuthContext"; import { useUserProfile } from "@/app/contexts/UserProfileContext"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import { ChatInput } from "./ChatInput"; import { SelectAssistantProjectModal } from "./SelectAssistantProjectModal"; import type { Message } from "../shared/types"; @@ -56,7 +56,7 @@ export function InitialView({ onSubmit }: InitialViewProps) { "transform 900ms cubic-bezier(0.25, 0.46, 0.45, 0.94)", }} > - +

- diff --git a/frontend/src/app/components/chat/mike-icon.tsx b/frontend/src/app/components/chat/mike-icon.tsx index 145cc94ee..a0b0568c9 100644 --- a/frontend/src/app/components/chat/mike-icon.tsx +++ b/frontend/src/app/components/chat/mike-icon.tsx @@ -1,320 +1,2 @@ -"use client"; - -import React, { useId } from "react"; - -const DEGREES = [0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330]; -const STOP_TRANSITION = "stop-color 220ms ease, stop-opacity 220ms ease"; -const FLOOD_TRANSITION = "flood-color 220ms ease, flood-opacity 220ms ease"; - -type IconPalette = { - shadowColor: string; - shadowOpacity: number; - fillStops: [string, string, string, string]; - fillOpacities: [number, number, number, number]; - specularStops: [number, number, number, number]; - borderStops: [string, string, string]; - borderOpacities: [number, number, number]; - innerStops: [string, string, string, string]; - innerOpacities: [number, number, number, number]; -}; - -const DEFAULT_PALETTE: IconPalette = { - shadowColor: "#000000", - shadowOpacity: 0.3, - fillStops: ["#0a0a0a", "#151515", "#080808", "#111111"], - fillOpacities: [0.9, 0.8, 0.85, 0.9], - specularStops: [0.5, 0.2, 0, 0], - borderStops: ["#ffffff", "#666666", "#ffffff"], - borderOpacities: [0.3, 0.1, 0.2], - innerStops: ["#ffffff", "#777777", "#222222", "#ffffff"], - innerOpacities: [0, 0.08, 0.05, 0], -}; - -const DONE_PALETTE: IconPalette = { - shadowColor: "#166534", - shadowOpacity: 0.18, - fillStops: ["#4ade80", "#86efac", "#22c55e", "#bbf7d0"], - fillOpacities: [0.95, 0.88, 0.9, 0.94], - specularStops: [0.68, 0.32, 0.03, 0], - borderStops: ["#f0fdf4", "#86efac", "#dcfce7"], - borderOpacities: [0.42, 0.24, 0.3], - innerStops: ["#ffffff", "#dcfce7", "#4ade80", "#ffffff"], - innerOpacities: [0, 0.16, 0.08, 0], -}; - -const ERROR_PALETTE: IconPalette = { - shadowColor: "#991b1b", - shadowOpacity: 0.18, - fillStops: ["#f87171", "#fca5a5", "#ef4444", "#fecaca"], - fillOpacities: [0.95, 0.88, 0.9, 0.94], - specularStops: [0.68, 0.32, 0.03, 0], - borderStops: ["#fef2f2", "#fca5a5", "#fee2e2"], - borderOpacities: [0.42, 0.24, 0.3], - innerStops: ["#ffffff", "#fee2e2", "#f87171", "#ffffff"], - innerOpacities: [0, 0.16, 0.08, 0], -}; - -function Blades({ ids }: { ids: Record }) { - return ( - - {DEGREES.map((deg) => ( - - - - - - - ))} - - ); -} - -export function MikeIcon({ - spin = false, - done = false, - error = false, - mike = false, - size = 24, - style, -}: { - spin?: boolean; - done?: boolean; - error?: boolean; - mike?: boolean; - size?: number; - style?: React.CSSProperties; -}) { - void mike; - const id = useId().replace(/:/g, ""); - const palette = error - ? ERROR_PALETTE - : done - ? DONE_PALETTE - : DEFAULT_PALETTE; - const m = { - shadow: `${id}-m-shadow`, - glassFill: `${id}-m-glassFill`, - specular: `${id}-m-specular`, - glassBorder: `${id}-m-glassBorder`, - innerLight: `${id}-m-innerLight`, - topClip: `${id}-m-topClip`, - blade: `${id}-m-blade`, - }; - - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -} +// Compatibility re-export for inherited imports outside the authenticated UI. +export { RossIcon as MikeIcon } from "./ross-icon"; diff --git a/frontend/src/app/components/chat/ross-icon.tsx b/frontend/src/app/components/chat/ross-icon.tsx new file mode 100644 index 000000000..3a6d83f57 --- /dev/null +++ b/frontend/src/app/components/chat/ross-icon.tsx @@ -0,0 +1,39 @@ +"use client"; + +import type { CSSProperties } from "react"; + +export function RossIcon({ + spin = false, + done = false, + error = false, + size = 24, + style, +}: { + spin?: boolean; + done?: boolean; + error?: boolean; + size?: number; + style?: CSSProperties; +}) { + const accent = error ? "#dc2626" : done ? "#16a34a" : "#0f8b8d"; + + return ( + + ); +} diff --git a/frontend/src/app/components/modals/PeopleModal.tsx b/frontend/src/app/components/modals/PeopleModal.tsx index b94ea8fb5..a28cae9c1 100644 --- a/frontend/src/app/components/modals/PeopleModal.tsx +++ b/frontend/src/app/components/modals/PeopleModal.tsx @@ -47,7 +47,7 @@ type RosterRow = { }; /** - * Roster of every Mike member with access to the project, with controls to + * Roster of every ROSS member with access to the project, with controls to * add/remove members. Mirrors AddDocumentsModal's frame. */ export function PeopleModal({ diff --git a/frontend/src/app/components/shared/AddUserInput.tsx b/frontend/src/app/components/shared/AddUserInput.tsx index cd5aa3cb0..0915668ee 100644 --- a/frontend/src/app/components/shared/AddUserInput.tsx +++ b/frontend/src/app/components/shared/AddUserInput.tsx @@ -56,7 +56,7 @@ export function AddUserInput({ const user = await lookupUserByEmail(email); if (!user.exists) { - setError(`${email} does not belong to a Mike user.`); + setError(`${email} does not belong to a ROSS user.`); return; } diff --git a/frontend/src/app/components/shared/AppSidebar.tsx b/frontend/src/app/components/shared/AppSidebar.tsx index 9fb96bea0..bacf20e98 100644 --- a/frontend/src/app/components/shared/AppSidebar.tsx +++ b/frontend/src/app/components/shared/AppSidebar.tsx @@ -17,7 +17,7 @@ import { useUserProfile } from "@/app/contexts/UserProfileContext"; import { useChatHistoryContext } from "@/app/contexts/ChatHistoryContext"; import { useRouter, usePathname } from "next/navigation"; import Link from "next/link"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import { SidebarChatItem } from "@/app/components/shared/SidebarChatItem"; import { listProjects } from "@/app/lib/mikeApi"; import type { Project } from "@/app/components/shared/types"; @@ -155,13 +155,13 @@ export function AppSidebar({ isOpen, onToggle }: AppSidebarProps) { href="/assistant" className="flex items-center gap-1.5 hover:opacity-80 transition-opacity" > - + - Mike + ROSS diff --git a/frontend/src/app/components/shared/types.ts b/frontend/src/app/components/shared/types.ts index 33a1e9c99..b07b4c514 100644 --- a/frontend/src/app/components/shared/types.ts +++ b/frontend/src/app/components/shared/types.ts @@ -1,4 +1,4 @@ -// Shared TypeScript types for Mike AI legal assistant +// Shared TypeScript types for the ROSS legal assistant export interface Folder { id: string; diff --git a/frontend/src/app/components/site-logo.tsx b/frontend/src/app/components/site-logo.tsx index 6438300a2..4d0348f60 100644 --- a/frontend/src/app/components/site-logo.tsx +++ b/frontend/src/app/components/site-logo.tsx @@ -1,5 +1,6 @@ import Link from "next/link"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; +import { rossBrand } from "@/app/lib/rossBrand"; interface SiteLogoProps { size?: "sm" | "md" | "lg" | "xl"; @@ -16,10 +17,7 @@ export function SiteLogo({ animate = false, asLink = false, }: SiteLogoProps) { - const landingHref = - process.env.NODE_ENV === "production" - ? "https://mikeoss.com" - : "http://localhost:3000"; + const landingHref = rossBrand.websiteUrl; const sizeClasses = { sm: "text-xl", md: "text-2xl", @@ -43,9 +41,9 @@ export function SiteLogo({ - + - Mike + {rossBrand.name}

); diff --git a/frontend/src/app/components/tabular/AddColumnModal.tsx b/frontend/src/app/components/tabular/AddColumnModal.tsx index 62fb7a26c..3471d29d7 100644 --- a/frontend/src/app/components/tabular/AddColumnModal.tsx +++ b/frontend/src/app/components/tabular/AddColumnModal.tsx @@ -511,7 +511,7 @@ export function AddColumnModal({ open, existingCount, onClose, onAdd, editingCol prompt: e.target.value, }) } - placeholder="Write the analysis prompt — describe what Mike should extract from each document for this column…" + placeholder="Write the analysis prompt — describe what ROSS should extract from each document for this column…" className="mt-2 min-h-36" /> diff --git a/frontend/src/app/components/tabular/TRChatPanel.tsx b/frontend/src/app/components/tabular/TRChatPanel.tsx index be9af5467..29a9ec5d4 100644 --- a/frontend/src/app/components/tabular/TRChatPanel.tsx +++ b/frontend/src/app/components/tabular/TRChatPanel.tsx @@ -13,7 +13,7 @@ import { ChevronLeft, Trash2, } from "lucide-react"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import { streamTabularChat, getTabularChats, @@ -321,10 +321,9 @@ function TRResponseStatus({ isActive }: { isActive: boolean }) { return (
-
@@ -1848,7 +1847,7 @@ export function TRChatPanel({ > {messages.length === 0 && !isLoadingMessages && (
- +

Ask a question about this tabular review.

diff --git a/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx b/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx index bfd2ccf9f..3aff64a35 100644 --- a/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx +++ b/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx @@ -315,8 +315,8 @@ export function OpenSourceWorkflowModal({ htmlFor="open-source-disclosure-consent" className="cursor-pointer" > - GitHub repository and on the - mikeoss.com website. + upstream GitHub repository and on + the upstream Mike website.

diff --git a/frontend/src/app/components/workflows/WFEditColumnModal.tsx b/frontend/src/app/components/workflows/WFEditColumnModal.tsx index 0ec1912f9..704ffb0f4 100644 --- a/frontend/src/app/components/workflows/WFEditColumnModal.tsx +++ b/frontend/src/app/components/workflows/WFEditColumnModal.tsx @@ -288,7 +288,7 @@ export function WFEditColumnModal({ column, onClose, onSave, onDelete }: Props) rows={6} value={draft.prompt} onChange={(e) => update({ prompt: e.target.value })} - placeholder="Write the analysis prompt — describe what Mike should extract from each document for this column…" + placeholder="Write the analysis prompt — describe what ROSS should extract from each document for this column…" className="mt-2 min-h-36" /> diff --git a/frontend/src/app/components/workflows/WorkflowList.tsx b/frontend/src/app/components/workflows/WorkflowList.tsx index fa7fb2757..c333bfe23 100644 --- a/frontend/src/app/components/workflows/WorkflowList.tsx +++ b/frontend/src/app/components/workflows/WorkflowList.tsx @@ -21,7 +21,7 @@ import { UseWorkflowModal } from "./UseWorkflowModal"; import { NewWorkflowModal } from "./NewWorkflowModal"; import { TableToolbar } from "../shared/TableToolbar"; import { RowActionMenuItems, RowActions } from "../shared/RowActions"; -import { MikeIcon } from "@/app/components/chat/mike-icon"; +import { RossIcon } from "@/app/components/chat/ross-icon"; import { PageHeader } from "@/app/components/shared/PageHeader"; import { workflowDetailPath } from "./workflowRoutes"; import { @@ -610,7 +610,7 @@ export function WorkflowList() { {wf.is_system ? ( - + System ) : wf.is_owner !== false ? ( diff --git a/frontend/src/app/favicon.ico b/frontend/src/app/favicon.ico deleted file mode 100644 index 8c51e6a0a..000000000 Binary files a/frontend/src/app/favicon.ico and /dev/null differ diff --git a/frontend/src/app/global-error.tsx b/frontend/src/app/global-error.tsx index f72e10512..9ebc00b71 100644 --- a/frontend/src/app/global-error.tsx +++ b/frontend/src/app/global-error.tsx @@ -15,7 +15,7 @@ export default function GlobalError({ return ( - Something went wrong – Mike + Something went wrong – ROSS