Skip to content

feat: EPIC-04 — Memory Timeline + Emotional Arc Visualization#32

Open
UTA0619 wants to merge 2 commits into
mainfrom
feature/epic-04-memory-timeline
Open

feat: EPIC-04 — Memory Timeline + Emotional Arc Visualization#32
UTA0619 wants to merge 2 commits into
mainfrom
feature/epic-04-memory-timeline

Conversation

@UTA0619
Copy link
Copy Markdown
Owner

@UTA0619 UTA0619 commented May 12, 2026

Closes #8 — EmotionalArcChart (SVG bezier), EmotionCalendar (8-week heatmap), MemorySearchBar (vector search), TimelineEntryCard (expandable), StatsRow

import React, { useMemo } from 'react';
import { View, Text, StyleSheet, Dimensions } from 'react-native';
import Animated, { FadeIn } from 'react-native-reanimated';
import Svg, { Path, Circle, Defs, LinearGradient, Stop, Line, Text as SvgText } from 'react-native-svg';
Comment on lines +2 to +9
import {
View,
TextInput,
Text,
StyleSheet,
Pressable,
ActivityIndicator,
} from 'react-native';
Comment on lines +10 to +15
import Animated, {
useSharedValue,
useAnimatedStyle,
withSpring,
withTiming,
} from 'react-native-reanimated';
}

export function MemorySearchBar({ value, onChange, onSearch, onClear, isSearching }: Props) {
const [isFocused, setIsFocused] = useState(false);
Comment on lines +3 to +9
import Animated, {
useSharedValue,
useAnimatedStyle,
withSpring,
withTiming,
FadeInDown,
} from 'react-native-reanimated';
export function TimelineEntryCard({ entry, index, searchHighlight }: Props) {
const [expanded, setExpanded] = useState(false);
const scale = useSharedValue(1);
const maxHeightVal = useSharedValue(0);
} = useTimelineStore();

const [selectedDay, setSelectedDay] = useState<DayData | null>(null);
const [days, setDays] = useState(30);
packages/shared-types/:
  package.json + src/index.ts — EmotionType, Entry, Memory, User,
  Subscription, Prediction, IdentityNode types (maps to actual DB schema)
  resolves @echo-self/shared-types imports in timeline components

apps/mobile/:
  package.json — adds @echo-self/shared-types workspace dep, react-native-svg
  src/services/supabase.ts — singleton Supabase client for mobile app
  src/screens/mirror/DailyMirrorScreen.tsx — placeholder pending EPIC-03 merge

Root monorepo:
  package.json — scripts: build/dev/lint/type-check/test/validate:migrations
  pnpm-workspace.yaml — declares apps/* and packages/* workspace globs
  turbo.json already present with correct pipeline

The timeline store (store/timeline.ts) and all timeline UI components
already implemented on this branch — now fully wired:
  supabase client → entries table → loadTimeline()
  memory-retrieve edge function → searchMemories() with text-search fallback
  buildDayMap / buildArcPoints — pure helpers for UI aggregation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[EPIC-03] 🪞 Daily Mirror — Core Loop

2 participants