Mike-to-PIP rename: identifiers, localStorage keys, DnD MIME types, admin branding
Four commits sweeping "Mike" out of cpatpa's codebase - browser-visible strings first, then internal TypeScript identifiers, then package names and localStorage keys - plus an admin-managed branding system for firm colour tokens and logo variants.
Browser-visible pass (74e803c2, +25/-24 across 10 files). Page title, OG metadata, Twitter card, global error page, support form copy, models page description, workflow "system" badge, column-prompt placeholders, site logo wordmark. metadataBase and the landing href on the site logo now read NEXT_PUBLIC_API_BASE_URL instead of the hardcoded mikeoss.com. Internal type names and the MikeIcon component are intentionally left for the follow-up.
Identifier rename (7d24a909, +359/-364 across 70 files). MikeProject, MikeChat, MikeDocument, MikeFolder, MikeMessage, MikeWorkflow, MikeIcon, MikeLayout → Pip*. mikeApi.ts → pipApi.ts; mike-icon.tsx → pip-icon.tsx. Drag-and-drop MIME-like strings application/mike-doc and application/mike-folder → pip-*. DOM custom event mike:close-row-actions → pip:close-row-actions. The backend system prompt in chatTools.ts is rewritten: "You are Mike, an AI legal assistant..." becomes a PIP-branded, AU-English-tuned prompt specifying AGLC4 citation, metric units, DD/MM/YYYY dates, a hallucination guard, and a not-legal-advice reminder. Tracked-change author and change-id prefix flip from "Mike" to "PIP".
Residuals (a6b6c0f3, +16/-9 across 7 files). package.json and lockfile name fields (mike → pip, mike-backend → pip-backend). localStorage key migration: the hook now reads from pip.selectedModel, falls back once to mike.selectedModel (migrating the value and removing the old key), then returns null - a clean one-time migration without breaking existing sessions. mikeoss.com placeholder URL in the support page → example.com.
Admin branding (8276afb9, migration 0021, +1107/-46 across 17 files). Adds brand_primary_hex, brand_secondary_hex, and brand_neutral_hex columns to org_settings (defaulting to Piper Alderman's brand guide values: #A93226, #36475C, #6E6E6E). Five logo variant columns: logo_full_colour_path, logo_full_white_path, logo_mark_path, logo_dark_mono_path, logo_favicon_path. Logo files are stored as plain files under ${DATA_ROOT}/branding - not through the AES-encrypted document storage driver, since logos are marketing material rather than client documents. Filenames are content-hashed so uploading a replacement invalidates browser caches automatically. Accepted MIME types: PNG, SVG, WebP, JPEG for general variants; PNG, SVG, ICO for the favicon.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?