feat: CV navigation links in chat responses (GPS for the CV)

Agent instruction now requires markdown links to CV anchors:
- Companies: [Olympic Broadcasting](#exp-olympic-broadcasting)
- Projects: [Immich Photo Manager](#proj-immich-photo-manager)
- Sections: [Skills](#skills), [Experience](#experience)

formatResponse converts [text](#anchor) → clickable green links
that close the chat panel, smooth-scroll to the target, and
pulse a green highlight for 2 seconds.

All existing CV anchor IDs used: exp-{companyID}, proj-{projectID},
course-{courseID}, plus section IDs (experience, projects, skills, etc.)
This commit is contained in:
juanatsap
2026-04-08 17:11:22 +01:00
parent 160be31b31
commit c44e9e8c67
4 changed files with 81 additions and 0 deletions
+46
View File
@@ -182,6 +182,33 @@
font-size: 0.75rem;
}
/* ==========================================================================
Navigation Links in Chat Messages
========================================================================== */
.chat-nav-link {
color: var(--accent-green, #27ae60);
text-decoration: none;
font-weight: 600;
cursor: pointer;
border-bottom: 1px dotted var(--accent-green, #27ae60);
}
.chat-nav-link:hover {
color: #1e8c4c;
border-bottom-style: solid;
}
/* Highlight animation when scrolled to from chat */
.chat-highlight {
animation: chatHighlight 2s ease;
}
@keyframes chatHighlight {
0%, 100% { box-shadow: none; }
20%, 80% { box-shadow: 0 0 0 3px var(--accent-green, #27ae60); border-radius: 4px; }
}
/* ==========================================================================
Typing Indicator
========================================================================== */
@@ -532,3 +559,22 @@
.theme-clean .chat-typing-dot {
background: #555555;
}
.theme-clean .chat-nav-link {
color: #2ecc71;
border-bottom-color: #2ecc71;
}
.theme-clean .chat-nav-link:hover {
color: #27ae60;
border-bottom-color: #27ae60;
}
.theme-clean .chat-highlight {
animation: chatHighlightDark 2s ease;
}
@keyframes chatHighlightDark {
0%, 100% { box-shadow: none; }
20%, 80% { box-shadow: 0 0 0 3px #2ecc71; border-radius: 4px; }
}