- Added confirmSaveProfile() — calls POST /api/ai/chat/confirm with
action='save_profile', extracting the quoted improved text from the
LLM's message automatically
- Green 'Save to Profile' button appears on profile_draft messages
(actionType === 'profile_draft'), distinct from the ticket confirm flow
- actionLabel() extended with 'save_profile' key
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ChatMessage gains actionType, userQuery, confirmed fields.
ChatResponse gains action_type from backend.
Action buttons now render below assistant messages:
- Navigation actions (open_help_search, open_billing, etc.) show a link
chip to the correct dashboard section via navUrl()
- ticket_pending / create_ticket action shows a 'Create Support Ticket'
button that calls POST /api/ai/chat/confirm, marks the message
confirmed (hides the button), and appends the ticket result as a new
assistant message
Helper functions navUrl() and actionLabel() map suggested_action keys
to dashboard URLs and human-readable labels respectively.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AiChatWidget.tsx's local API constant was still "/api/gateway", a path
that only exists via the dev-only vite proxy and has no equivalent in
production (the gateway's resolve_upstream() has no "/api/gateway"
prefix). The usage-summary fetch had been patched to add auth headers
but this constant was left broken, and the two chat-send calls
(/chat/ask, /chat/message - the widget's core send-message path) were
untouched and doubly broken (wrong prefix plus a duplicated "/api").
Every send would 404 in production. Changed API to "/api" and dropped
the duplicated segment from both chat-send calls.
Also corrected a comment in CompanyJobsPage.tsx that incorrectly
described its own local API constant as "/api/gateway" (it's "/api");
no behavior change there, that fetch was already correct.
help-center.ts's uncommitted change (adding an "/api/gateway" prefix to
already-correct direct "/api/kb" calls) was reverted separately since it
introduced the same class of bug rather than fixing anything - it now
matches HEAD with no diff.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Add AI cover letter generation button on JobSeekerJobsPage
- Generate cover letters via /api/ai/generate-cover-letter
- Show generated cover letter preview before applying
- Update AI Chat Widget quick actions to focus on support & KB search
- Update welcome message to explain Ask Ash capabilities
- Add AiChatWidget component with floating button in bottom-right
- Routes to /api/ai/chat/message for chat, ticket, form, cover letter intents
- Quick action buttons for common tasks
- Appears on all public pages via app.tsx root layout
- Appears on all dashboard pages via DashboardShell