mirror of
https://github.com/lukaszraczylo/claude-mnemonic.git
synced 2026-06-08 23:39:40 +00:00
f79782a008
* Resolves issue #13 - Switched model to bge-small-en-v1.5 - Added lazy re-embedding - Added model version tracking per vector - Added conversion of vectors to the new model * Add lfs support to the workflow. * Implements importance scoring with decay + voting #6 * Resolves issue #5 by marking observations as superseeded and scheduled for deletion * Implement pattern detection #7 * Improve injections and observations accuracy - Session start: Recent observations for project context (recency-based) - User prompt: Semantically relevant observations (similarity-based with threshold) * Added two stage retrieval with bi and cross encoder #8 * Implement query expansion and reformulation #9 * Knowledge graph and relationships ( resolves #4 ) - File Overlap Detection: Detects relationships when observations modify/read the same files - Concept Overlap Detection: Detects relationships based on shared semantic concepts - Type Progression Detection: Infers relationships from natural observation type progressions (e.g., discovery → bugfix = "fixes") - Temporal Proximity Detection: Detects relationships between observations in the same session within 5 minutes - Narrative Mention Detection: Detects explicit relationship language in narratives (e.g., "fixes", "depends on", "supersedes") * Add visualisation of the relations to the dashboard. * fixup! Add visualisation of the relations to the dashboard. * Update documentation with new settings and screenshots.
50 lines
1.4 KiB
Vue
50 lines
1.4 KiB
Vue
<script setup lang="ts">
|
|
import type { FeedItem } from '@/types'
|
|
import ObservationCard from './ObservationCard.vue'
|
|
import PromptCard from './PromptCard.vue'
|
|
import SummaryCard from './SummaryCard.vue'
|
|
|
|
defineProps<{
|
|
items: FeedItem[]
|
|
loading: boolean
|
|
}>()
|
|
</script>
|
|
|
|
<template>
|
|
<div class="timeline">
|
|
<!-- Loading State -->
|
|
<div v-if="loading && items.length === 0" class="text-center py-12">
|
|
<i class="fas fa-spinner fa-spin text-3xl text-claude-500 mb-4" />
|
|
<p class="text-slate-400">Loading timeline...</p>
|
|
</div>
|
|
|
|
<!-- Empty State -->
|
|
<div v-else-if="items.length === 0" class="text-center py-12">
|
|
<i class="fas fa-inbox text-3xl text-slate-600 mb-4" />
|
|
<p class="text-slate-400">No items to display</p>
|
|
</div>
|
|
|
|
<!-- Items -->
|
|
<template v-else>
|
|
<template v-for="(item, index) in items" :key="`${item.itemType}-${item.id}`">
|
|
<ObservationCard
|
|
v-if="item.itemType === 'observation'"
|
|
:observation="item"
|
|
:highlight="index === 0"
|
|
:show-feedback="true"
|
|
/>
|
|
<PromptCard
|
|
v-else-if="item.itemType === 'prompt'"
|
|
:prompt="item"
|
|
:highlight="index === 0"
|
|
/>
|
|
<SummaryCard
|
|
v-else-if="item.itemType === 'summary'"
|
|
:summary="item"
|
|
:highlight="index === 0"
|
|
/>
|
|
</template>
|
|
</template>
|
|
</div>
|
|
</template>
|