From f4f45304a6df9eb9f5c5968c27eae6ed6a7300db Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 19 Oct 2026 14:44:41 +0800 Subject: [PATCH] bring the journey graph onto the cyan edge palette The canvas renderer branched on isDark for every color, but isDark has been a constant true since the theme switch was removed, so half of each ternary was unreachable. Resolve the values directly and shift the hues from the old pale blue to the accent cyan, keeping alpha as the only thing that varies between idle and focused edges. useTheme is no longer referenced here and is dropped from the imports. --- .../client/src/views/hermes/JourneyView.vue | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/client/src/views/hermes/JourneyView.vue b/packages/client/src/views/hermes/JourneyView.vue index 92e85dd..8d869a8 100644 --- a/packages/client/src/views/hermes/JourneyView.vue +++ b/packages/client/src/views/hermes/JourneyView.vue @@ -3,7 +3,6 @@ import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue' import { useMessage } from '@/composables/useMessage' import { useI18n } from 'vue-i18n' import { fetchJourneyGraph, type JourneyGraphResponse, type JourneyMemory, type JourneyNode } from '@/api/hermes/journey' -import { useTheme } from '@/composables/useTheme' interface SceneNode extends JourneyNode { x: number @@ -40,7 +39,6 @@ const MAX_ZOOM = 2.4 const { t } = useI18n() const message = useMessage() -const { isDark } = useTheme() const data = ref(null) const loading = ref(false) @@ -284,13 +282,12 @@ function drawEdges(projectedById: Map, activeId: string, const active = !!activeId && (edge.source === activeId || edge.target === activeId) const categoryActive = !!hoverCategory.value && (source.category === hoverCategory.value || target.category === hoverCategory.value) const nearby = activeNeighbors.has(edge.source) || activeNeighbors.has(edge.target) - const alpha = active ? 0.62 + pulse * 0.28 : categoryActive ? 0.46 : nearby ? 0.4 : isDark.value ? 0.1 : 0.22 - ctx.lineWidth = isDark.value ? 1 : 1.15 + const alpha = active ? 0.62 + pulse * 0.28 : categoryActive ? 0.46 : nearby ? 0.4 : 0.1 + ctx.lineWidth = 1 ctx.shadowColor = 'transparent' ctx.shadowBlur = 0 - ctx.strokeStyle = isDark.value - ? `rgba(180, 210, 255, ${alpha})` - : `rgba(42, 58, 78, ${alpha})` + // 青色系与全站强调色一致;亮度差异由 alpha 控制,不换色相。 + ctx.strokeStyle = `rgba(45, 212, 191, ${alpha})` const curve = edgeCurve(source, target, `${edge.source}:${edge.target}`) drawCurvedEdge(source, target, curve) if (active) drawPulseEdge(source, target, curve, pulse, now) @@ -326,8 +323,8 @@ function drawPulseEdge(source: ProjectedNode, target: ProjectedNode, curve: { cx const head = (now * 0.0018) % 1 const tail = Math.max(0, head - 0.24) const points = sampleCurve(source, target, curve, 1 - head, 1 - tail, 18).reverse() - const glowColor = isDark.value ? 'rgba(180, 225, 255, 0.92)' : 'rgba(74, 144, 217, 0.78)' - const coreColor = isDark.value ? 'rgba(255, 255, 255, 0.96)' : 'rgba(255, 255, 255, 0.9)' + const glowColor = 'rgba(45, 212, 191, 0.92)' + const coreColor = 'rgba(235, 255, 252, 0.96)' ctx.save() ctx.lineJoin = 'round' ctx.lineCap = 'round' @@ -383,7 +380,8 @@ function drawNode(node: ProjectedNode, activeId: string, activeNeighbors: Set