Spaces:
Sleeping
Sleeping
Commit History
-
Drop reflective_question from dimension-event cards
Not wanted on this card type after seeing it rendered. Removed end to end rather than just hiding it in the UI — the prompt no longer asks Claude to generate it, so there's no wasted output tokens on text that was never going to be shown. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>99aec30 -
Route dimension-event phrasing through Claude, batched (Option B)
Home feed's maturity cards (Vocabulary Richness, Pace, etc.) were pure Python string templates — the same one-of-five sentence shapes forever, which is why they read as flat next to Session Recap's Claude-written cards, and why the same dimension crossing into "steady" in two scopes at once produced two near-duplicate cards back to back. The trigger decision itself (trigger_detector.py's if/elif logic — which of the 5 rules applies) is untouched and stays fully deterministic; that decision is a numeric threshold comparison and must stay reliable, not a place for LLM judgment. Only the phrasing step changes: every event that fires in one finalize run is now batched into a single Claude call (new pipeline/event_phraser.py) with the decided facts, the same dimension's state in its sibling scope, a few neighboring signals from the session, and the dimension's last-fired note for anti-repetition. Events for the same dimension firing in multiple scopes in one run are grouped into ONE card i…70d37d2
-
Richer empty states for new users on Home and You
Bare "your mirror is waiting" text gave no sense of what's coming and no next action. Home now shows a real example card (faded "Example" badge) so a new user sees the feed instead of just reading about it; You lists what the standing portrait will contain. Both add an "Open Google Meet" CTA since recording can only start from an actual call. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>0338292 -
Recording segment cap, 4-step onboarding, Google OAuth fix, upgrade card, Home feed polish
- offscreen.js/background.js: recording now hard-caps at MAX_CHUNKS=2 (40 min total) instead of continuing indefinitely. The final segment routes through background.js's normal handleStop() (WebRTC-timeline flush before stopping) instead of a plain boundary cut, so the last chunk's speaker timeline is complete. The 30s pre-boundary warning now distinguishes "continuing automatically" from "recording will end." - AuthView.jsx: fixed the Google sign-in button being hidden specifically inside the extension (display:none leftover from before the chrome.identity.launchWebAuthFlow path existed) — handleGoogle() already supported both contexts, only the button visibility was wrong. Added diagnostic logging for the OAuth callback failure path. - OnboardingView.jsx: rebuilt to 4 steps (Concept/How/Preview/Trust) — Preview is new, showing an example portrait card (real quote+tags format, not numeric scores) plus a compact "Already reflected back" hint and an honest "what …401c4a8
-
Home recap: drop resonance vote, add colored signal label
The vote already lives on the session detail page (voting twice on the same observation was redundant); Home's card now just shows the observation and its reflective question. Also replaces the hardcoded signal->color lookup (which only covered old signal-key names and silently fell back to gray for the free-form names the LLM actually generates, e.g. "topic_transition") with a deterministic hash-based color picker shared between Home and the session detail page, so every signal gets a real color and the same signal reads the same color on both surfaces.b6afdb8 -
Rebuild History/session-detail into 3 CLAUDE.md-compliant tabs
Replaces the old Dimensions tab (numeric 1-5 trait scores) and the per-participant speaker-timeline chart (rule #8: persisted behavioral signals for every other room participant, indefinitely) with: - Session Spectrum: 7 composites (Speech Style, Vocal Arousal, Rapport, Power Balance, Turn-taking Courtesy, Fluency, Responsive Engagement), each a self-relative "more/less than your usual" read computed by z-scoring components against their own history at read-time, never a stored raw score. New evidence_gate.py layer, verified with 18 synthetic checks. - Overview: metrics-first ordering, Notable Pattern removed (redundant + violated rule #3), Behavioral Observations horizontal-scroll with the resonance-vote layout fixed (vote now sits against the observation, not the adjacent reflective question) and tips attached via existing coaching_suggestions[].dimension_key matching. - HistoryView: dropped the numeric score dots and the speaker-timeline chart, added one self-re…31abd7f
-
Home feed v2: 15-dimension evidence engine + trigger-detection + interleaved feed
Replaces the static 9-signal/5-card-type Home feed with a real evidence-gated system: 15 tracked dimensions (was 9, plus 3 fold-in sub-signals), a new categorical evidence path for signals whose mean sits near zero (pacing/energy arc), and a trigger-detection engine that diffs each session's evidence against persisted state to fire one of 5 event types (first-time-steady, drift, recurring, context-shift, single-session anomaly) with a shared 2-session cooldown. Home now interleaves an unconditional per-session recap card with these frozen, dated dimension events instead of recomputing static cards from live evidence on every read. Also reformulates 5 signal computations (curiosity as a rate, room-wide interruptions, a 4-input reweighted drive score, a building-on-others denominator fix, and fixed-window vocabulary richness to remove a session-length confound), and adds two new Supabase tables (signal_evidence_state, dimension_events) to support the trigger engine. Co-Authored-By: Cla…9ceaaad
-
Fix still-forming cards mislabeling stable-but-noisy signals; add audio diagnostics
still_forming (Home + You page) was including signals that already had enough samples but were still too variable (high CV) to call steady — these showed as "6 of 5 sessions" and would never resolve since more sessions alone don't fix variance. Now omitted entirely once the sample floor is met but steadiness still isn't reached (say nothing rather than mislabel), confirmed against the exact real-account scenario that surfaced this. Also clamps both progress-bar widths defensively. Adds non-invasive diagnostic logging (track mute/unmute, AudioContext state, RTCPeerConnection connection state) to the WebRTC injector and offscreen recorder, investigating intermittent audio dropout reports during live testing — pure logging, no behavior change. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>c1392fe
-
Phase B3 second slice: replace Mirror Feed with evidence-gated Home feed
Retires the LLM free-form mirror_feed/recurring_coaching system (no dismissal awareness, session-count-gated patterns) in favor of five card types built from already-computed evidence and portrait data: strength, observation, how-it-may-land, progress, and still-forming. Cards are self-relative, carry their evidence, and are dismissable via a new dismissed_cards table — dismissing a growth_area/observation framing of a signal shares one key so it holds even if the portrait LLM later reclassifies it. Home is now the app's default landing tab. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>7d68132