Files
claude-mnemonic/ui/src/components/Timeline.vue
T
lukaszraczylo f79782a008 Release dec 2025 (#15)
* 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.
2025-12-19 17:57:11 +00:00

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>