From 29c1bcd2044e8484990e61ae18795aa0df69f826 Mon Sep 17 00:00:00 2001 From: Michael Chihlas Date: Wed, 4 Feb 2026 00:22:47 -0500 Subject: [PATCH] =?UTF-8?q?docs:=20Add=20rebranding=20info=20to=20CLAUDE.m?= =?UTF-8?q?d=20(Patherly=20=E2=86=92=20ResolutionFlow)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document the frontend rebrand including brand colors, fonts, logo locations, CSS utilities, and naming conventions for future development. Co-Authored-By: Claude Opus 4.5 --- CLAUDE.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index f9d2cc68..29406064 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,13 +1,13 @@ -# CLAUDE.md - Patherly Project Context +# CLAUDE.md - Patherly / ResolutionFlow Project Context > **Purpose:** This file provides Claude Code with essential context for working on the Patherly project. -> **Last Updated:** February 3, 2026 (improved by claude-md-improver) +> **Last Updated:** February 4, 2026 --- ## Project Overview -**Patherly** is a troubleshooting decision tree application designed for MSP engineers. It guides engineers through proven troubleshooting paths, captures decisions and notes automatically, and generates professional ticket documentation. +**Patherly** (user-facing brand: **ResolutionFlow**) is a troubleshooting decision tree application designed for MSP engineers. It guides engineers through proven troubleshooting paths, captures decisions and notes automatically, and generates professional ticket documentation. **Tagline:** "Take the path MOST traveled." @@ -15,6 +15,30 @@ **Goal:** Michael uses this tool for 50% of his tickets within 3 months. +### Branding + +The project was rebranded from "Patherly" to "ResolutionFlow" in the frontend (PR #26, commit `cfbd815`). The naming is split: + +| Context | Name Used | +|---------|-----------| +| Repository / directory name | `patherly` | +| Backend (FastAPI, env vars, APP_NAME) | Patherly | +| Database / Docker container | `patherly` / `patherly_postgres` | +| Production URLs | `app.patherly.com` / `api.patherly.com` | +| **Frontend UI (header, login, register)** | **ResolutionFlow** | +| **Browser tab title** | **ResolutionFlow - Decision Tree Platform** | + +**Brand details:** + +- **Colors:** Purple gradient (`#818cf8` → `#a78bfa`) +- **Fonts:** Plus Jakarta Sans (headings), Inter (body), Outfit (labels) - loaded via Google Fonts +- **Logo:** Inline SVG in `AppLayout.tsx` and `LoginPage.tsx` (decision-tree icon with gradient) +- **Brand assets:** `brand-assets/` (source SVGs), `frontend/src/assets/brand/` (app assets), `frontend/public/icons/` (favicon) +- **CSS utilities:** `text-gradient-brand`, `bg-gradient-brand`, `bg-gradient-brand-hover` (defined in `tailwind.config.js` and `index.css`) +- **Rebrand guide:** [REBRAND-IMPLEMENTATION-GUIDE.md](REBRAND-IMPLEMENTATION-GUIDE.md) + +When adding new frontend pages or components, use "ResolutionFlow" for any user-visible branding. Use `font-heading` for heading elements and the `text-gradient-brand` utility for brand-colored text. + --- ## Current State @@ -62,10 +86,16 @@ - Full-text search endpoint - Popular tags endpoint - Rating/review system with verified use tracking +- **Frontend Rebrand (PR #26):** + - Renamed from "Patherly" to "ResolutionFlow" in all user-facing UI + - Purple gradient theme, custom fonts (Plus Jakarta Sans, Inter, Outfit) + - Custom SVG logo in header and auth pages + - Updated favicon and browser tab title ### What's In Progress -- Step Library frontend UI (Phase 2.5 continuation) +- Custom step continuation flow refinements (Phase 2.5) +- Tree forking from sessions with custom steps ### Deployment @@ -87,7 +117,8 @@ ### Frontend - **Framework:** React 19 + Vite + TypeScript -- **Styling:** Tailwind CSS v3 +- **Styling:** Tailwind CSS v3 with ResolutionFlow brand theme (purple gradient) +- **Fonts:** Plus Jakarta Sans (headings), Inter (body), Outfit (labels) via Google Fonts - **State:** Zustand (with immer + zundo for undo/redo) - **Routing:** React Router v7 - **API Client:** Axios with token interceptors @@ -138,11 +169,16 @@ patherly/ │ ├── requirements.txt │ └── .env # Environment variables │ +├── brand-assets/ # Source brand SVGs and guides +│ ├── frontend/ +│ ├── public/ +│ │ └── icons/ # Favicon and PWA icons │ ├── src/ │ │ ├── main.tsx │ │ ├── App.tsx │ │ ├── router.tsx +│ │ ├── assets/brand/ # Brand logos (SVG) │ │ ├── api/ # Axios API client │ │ │ ├── client.ts # Axios instance with interceptors │ │ │ ├── auth.ts @@ -179,6 +215,7 @@ patherly/ ├── CURRENT-STATE.md # Quick status reference ├── LESSONS-LEARNED.md # Bugs and fixes (READ THIS!) ├── PROGRESS.md # Detailed progress log +├── REBRAND-IMPLEMENTATION-GUIDE.md # Patherly → ResolutionFlow rebrand guide ├── 01-PROJECT-OVERVIEW.md # Vision and goals ├── 02-TECHNICAL-ARCHITECTURE.md # System design, API specs ├── 03-DEVELOPMENT-ROADMAP.md # Phases and timeline @@ -438,6 +475,32 @@ if settings.ALLOW_RAILWAY_ORIGINS: ``` When using `allow_origin_regex` for wildcard patterns, also include `allow_origins` for explicit custom domains. The regex alone won't match custom domains like `app.patherly.com`. +### findNode Requires Tree Structure Parameter + +```tsx +// WRONG - Always returns null (structure defaults to undefined) +const node = findNode(nodeId) + +// CORRECT - Pass tree structure explicitly +const node = findNode(nodeId, tree?.tree_structure) +// For custom steps, also check: +const customStep = findCustomStep(nodeId) +``` + +### Frontend/Backend API Path Alignment + +Always verify frontend API paths match backend route definitions. Example: backend serves `/steps/tags/popular` but frontend called `/steps/popular-tags`. Check `backend/app/api/router.py` and endpoint files for actual paths. + +### Custom Step Flow in Tree Navigation + +The custom step insertion flow in `TreeNavigationPage.tsx` chains through multiple modals: + +1. `CustomStepModal` (create/browse) → 2. `PostStepActionModal` (save/use/both) → 3. `ContinuationModal` (pick descendant or build branch) → 4. Custom step view with "Continue to" button + +Key state: `pendingStep`, `pendingContinuationNodeId`, `customBranchMode`, `branchOriginNodeId` +Custom steps are stored in session JSONB (`custom_steps` field) and referenced by UUID in `pathTaken`. +`findNode()` only searches tree structure -- use `findCustomStep()` for custom step UUIDs. + --- ## API Endpoints Reference @@ -707,6 +770,7 @@ backend/**/__pycache__/ | Bug Fixes | [LESSONS-LEARNED.md](LESSONS-LEARNED.md) | | Feature Specs | [04-FEATURE-SPECIFICATIONS.md](04-FEATURE-SPECIFICATIONS.md) | | Phase 2.5 Spec | [PHASE-2.5-PERSONAL-BRANCHING.md](PHASE-2.5-PERSONAL-BRANCHING.md) | +| Rebrand Guide | [REBRAND-IMPLEMENTATION-GUIDE.md](REBRAND-IMPLEMENTATION-GUIDE.md) | ---