- Home sidebar icon: always cyan, bg-accent-dim only when route is "/"
- Mobile TopBar: add left padding so hamburger isn't hidden behind logo
- Landing page: bump card border color (#1e2130 → #2a2f3d) for better contrast
- Replace all font-label references (40 occurrences, 19 files) with font-mono or font-sans
- Remove deprecated --font-label CSS variable from index.css
- Convert hardcoded hex in layout inline styles to CSS variables (light-mode ready)
- Add @types/react-syntax-highlighter for script builder types
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Stat cards get 3px colored left border matching their icon color
- Guided/Chat toggle uses tab-active-shadow on selected state
- Rail icons increased to 24px with 1.6 stroke width
- Rail labels increased to 10px with font-sans (not mono)
- More vertical spacing between rail items
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Glass-card, text-gradient-brand, active-glow, bg-gradient-brand-hover
shims removed. All components migrated to v4 flat dark theme.
font-label alias kept temporarily (still referenced in ~10 files).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace glass/gradient/blur effects with flat dark theme:
- Solid bg-[#14161d] cards instead of glass surfaces
- Solid #22d3ee buttons instead of gradient CTAs
- #67e8f9 text instead of gradient text
- Flat nav background (no backdrop-filter blur)
- Subtle radial-gradient hero glow instead of animated pulses
- Featured pricing card uses border-[#22d3ee]
- Remove all transition: all per lesson 81
- Update color tokens: #e2e5eb foreground, #848b9b muted, #1e2130 borders
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove shadow-primary remnants and fix double text-xs from font-label
replacement in CopilotToggle, ValidationSummary, TemplateDetailModal,
and ParameterSchemaBuilder/ParameterDetectorStepper.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Grid cell was clipping the drawer at 72px. Now uses position: fixed
with left: 72px so it overlays the main content area and links
are clickable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove onMouseLeave from individual rail items — only the outer
wrapper handles close. Items only handle onMouseEnter to switch
which drawer is shown. Prevents premature drawer dismissal.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
120ms was too fast — mouse couldn't traverse the gap between
rail icon and drawer panel without triggering close.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sentry-style drawer slides out from rail edge, fills viewport height.
Drag handle on right edge to resize (180-400px range).
No more tooltip-style popups that cause layout jitter.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Flyout uses absolute positioning relative to parent item (not fixed)
- Both rail and pinned sidebar stretch to full viewport height
- Pin icon has proper bottom padding to avoid cutoff
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Home, Work, Knowledge, Insights, Help — each with hover flyout
showing sub-items. Sidebar now stretches to full viewport height.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72px icon rail with hover flyouts, pin-to-expand toggle (260px),
keyboard accessible, mobile hamburger overlay. Flat TopBar styling
(no blur/glass). New BrandLogo mark (gradient square + lightning bolt).
BrandWordmark uses solid text color instead of gradient.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New flat dark color tokens, remove glass/gradient utilities,
add compatibility shims for phased migration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract JSONB messages array from script_builder_sessions into a proper
script_builder_messages table with individual columns for role, content,
script, tokens, etc. Migration handles data migration from JSONB to rows.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace unsafe `as string` casts with type guard functions
(isScriptGenerationAction, isScriptBuilderAction, getActionType)
for compile-time safety on step content parsing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Date range filters were sending midnight (start of day) for the end
date, excluding sessions created later that day. Now sends 23:59:59.999
for both flow sessions and AI sessions date filters.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the Flow/AI session type toggle tabs. Both session types now
display on a single page — FlowPilot sessions at top, flow sessions
below, each with their own filters.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Message bar now fixed-positioned above action bar with full-width
layout (respects both app sidebar and session sidebar)
- Added abandon_session endpoint (POST /ai-sessions/{id}/abandon)
- Added "Close" button to FlowPilot action bar with confirmation dialog
- Session can now be closed without resolving or escalating
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The message bar was in normal document flow but the action bar uses
position:fixed at bottom:0, covering it. Now the message bar is also
fixed-positioned at bottom:60px (above the action bar), matching the
same left offset pattern. Added extra bottom padding to the
conversation column for clearance.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add language field to ScriptTemplateListItem frontend type
- Add mine/shared params to scriptsApi.getTemplates
- Update scriptGeneratorStore.loadTemplates to accept filter params
- Reorganize ScriptLibraryPage with tab bar (My Scripts / Team Scripts)
- Add "Build a New Script" button linking to /script-builder
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ScriptCodeBlock: collapsed code preview with syntax highlighting (first 5 lines)
- ScriptBuilderInput: auto-resize chat input with Enter-to-send
- ScriptBuilderChat: message list with markdown rendering and code blocks
- ScriptPreviewModal: fullscreen script viewer with line numbers
- SaveToLibraryDialog: save script with name, description, category, team sharing
- ScriptBuilderPage: language selector, session management, FlowPilot handoff
- Added route, sidebar nav item (fuchsia), and mobile nav entry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(landing): design audit fixes — hamburger menu, dead links, branding, spacing
- Add mobile hamburger menu with animated open/close and click-outside dismiss
- Create Privacy and Terms pages (footer links were dead # anchors)
- Change "Decision Tree Platform" to "AI-Powered Troubleshooting for MSPs" on login, register, and HTML title
- Fix register page icon color (was red/coral via CSS invert, now uses BrandLogo directly)
- Replace "0 Ticket Notes Written by Hand" stat with "100% Auto-Generated Documentation"
- Increase nav link touch targets to 44px minimum
- Fix heading hierarchy: section titles are now <h2>, standardize H3 to 1.25rem
- Tighten section spacing (6rem → 4rem padding, remove extra 5rem spacer)
- Add color-scheme: dark to HTML element
- Replace all transition: all with specific properties (10 occurrences)
- Fix loading ellipsis (... → …)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(mobile): responsive modals + landing preview overflow
- PrepareSessionModal: bottom-sheet on mobile, centered on desktop
- IntakeFormModal: bottom-sheet on mobile, responsive padding
- ShareTreeModal: bottom-sheet on mobile, full-width on small screens
- Landing preview: hide URL bar and window controls on mobile (<900px)
to prevent 189px horizontal overflow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(mobile): collapse search bar to icon on mobile
On mobile (<640px), the full search bar with placeholder text and ⌘K
badge was taking too much space in the topbar. Now shows just a
magnifying glass icon that opens the same command palette on tap.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: chihlasm <michael@resolutionflow.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add escalation_count to sidebar stats (team-wide requesting_escalation)
- Show badge on Escalations nav item in sidebar
- Remove user_id filter from escalation queue — show all team escalations
including your own (needed for solo users and visibility)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shows a confirmation modal when user tries to navigate away during an
active troubleshooting session. Options: "Stay in Session" or "Pause &
Leave" which auto-pauses the session before navigating.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When user types a problem on the dashboard and hits Enter, skip the
intake form and start the session immediately — no double-enter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace QuickStartPage with FlowPilot-centric dashboard
- Add StartSessionInput with Guided/Chat mode toggle
- Add PendingEscalations, ActiveFlowPilotSessions, PerformanceCards
- Add KnowledgeBaseCards, TeamSummary, RecentFlowPilotSessions
- Every number/card is a portal to its detail page
- Restructure sidebar: Resolve/Knowledge/Insights sections
- Remove redundant nav items (FlowPilot, Flow Editor, Flow Assist, etc.)
- Wire prefill from dashboard input to FlowPilot intake
- Update mobile nav to match new sidebar structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previous approach tried to fix the flex height chain, but it proved fragile
across grid → main → outlet → page transitions. New approach: action bar is
position:fixed at the bottom of the viewport, offset by sidebar width via
CSS variable --sidebar-w. Conversation area has pb-20 for clearance.
This works regardless of the height chain, email verification banner,
or any other variable-height elements above the session.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The flex height chain through grid → main → outlet → page doesn't reliably
constrain height, causing the action bar to overflow below viewport. The tree
editor already solves this with h-[calc(100vh-56px)] (subtracting the topbar).
Apply the same proven pattern to FlowPilotSessionPage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root cause found via DOM inspection: main-content (a CSS grid item) had
default min-height:auto, which prevented the grid from constraining it
below its content height. Content grew to 994px in a 975px viewport,
pushing the FlowPilot action bar (Resolve/Escalate/Pause) 75px below
the visible area. overflow:hidden on the grid clipped it invisibly.
Fix: min-h-0 on main-content allows the grid to shrink it to fit,
completing the height chain all the way down to the action bar.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root cause: ViewTransitionOutlet wrapping <Outlet> had flex-1 min-h-0 but
display:block (no flex flex-col). Child pages using h-full flex-col couldn't
resolve height against a block parent, so content overflowed and the
FlowPilot action bar (Resolve/Escalate/Pause) rendered below the viewport.
Fix: Add flex flex-col to the outlet wrapper so the full flex height chain
works: app-shell grid → main flex-col → outlet flex-col → page flex-col.
Also removed the h-0 workaround from FlowPilotSessionPage since this
addresses the actual root cause.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two issues:
1. AI context messages (teal bubble) rendered raw markdown (**bold** etc.)
instead of parsed markdown — switched from <p> to <MarkdownContent>
2. Action bar still hidden — added h-0 to flex-1 wrapper to force explicit
height allocation so h-full on FlowPilotSession resolves correctly
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The FlowPilotSession component uses h-full flex-col to position the action
bar at the bottom, but its parent div in FlowPilotSessionPage only had
flex-1 min-h-0 without flex flex-col. This broke the height chain, causing
the action bar to render below the visible area.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>