Spaces:
Sleeping
Sleeping
Commit History
-
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
-
Remove enrollment gate, add 15-session monthly cap
- App.jsx: enrollment no longer blocks access — removed the voiceprint status check and the blocking EnrollView screen. Voice training stays available in Account menu as an optional setting. - main.py: /api/prepare/start checks monthly session count before processing; returns 429 when >= 15 sessions used this month. New /api/usage endpoint returns used/limit/remaining/resets_on. - UploadView: shows a subtle session usage bar (turns orange at ≤3 remaining, red at 0) and disables the upload button when limit is hit. Refreshes usage count after each successful analysis. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>edee3c4
-
Major feature update: Google Meet recording, cumulative mirror feed, UX overhaul
Backend: - Fix talk ratio inflation for multi-speaker Google Meet calls (use all_other_segs) - Add user_perspective field to InsightGenerator — user now feels personally seen - Mirror feed is now cumulative: items persist, evolve, and grow across sessions (v4) - Expose per-speaker WPM timeline in /api/sessions for history chart - Bump _MF_VERSION to 4 to force feed regeneration with new cumulative logic Frontend: - Google Meet WebRTC recording: content-meet.js + meet-webrtc-injector.js + offscreen audio pipeline - Speaker timeline chart in History tab (who spoke when, WPM per participant) - ProfileView: Portrait section moved above Mirror Feed (it's the centrepiece) - ProfileView: Recurring Themes section added (coaching areas flagged across sessions) - ResultsView: Summary tab removed, summary_sentence block removed - ResultsView: "Your Perspective" section added (user_perspective from InsightGenerator) - ResultsView: Visual 3-segment talk split bar (You / Others / Silence) - Results…5748a9d
-
Rename to mirror., scroll reveal animations, waveform logo, deployment config
- Renamed app from Behavioral Mirror to mirror. throughout - Added waveform SVG logo (option 2A) to all pages replacing emoji placeholders - Added scroll reveal animations (Reveal/RevealItem) to all pages - Cleaned requirements.txt: removed unused anthropic, openai-whisper, whisperx, sqlalchemy - Added Dockerfile with CPU-only torch and ffmpeg for Railway deployment - Updated CORS to allow chrome-extension:// origins via regex + FRONTEND_URL env var - Added .env.example template Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>d1cde70
-
Profile intelligence, context-aware baselines, and Mirror Feed
Core additions: - Personality synthesis with paragraph + 5 scored dimensions (PersonalitySynthesizer) - Context-specific baselines: population norms per context type → personal context average once 3+ same-context sessions exist. Eliminates false-positive coaching (e.g. high talk ratio in evaluative contexts no longer flagged as domination) - Mirror Feed: per-session highlight feed on profile page, collapsed with peek effect - Reflect tab: pre-computed session Q&A (generate_reflection_questions) - Transcript quotes extracted and passed to profile synthesis for grounded narratives - Onboarding flow (3-step, localStorage gated) - Session delta: flags dimension score changes ≥8pts after each new session - Blind spots: top 3 context gaps the mirror hasn't seen - Profile completeness bar with depth label - Context detector pipeline stage (ContextDetector via Groq) - Voice enrollment UI (EnrollView) with 1–3 round recording - Auth UI (AuthView), Supabase client, API client - SSE-based pr…d4c6e81
-
Parallel transcription, SSE reliability fixes, HistoryView optimisation
- Parallelize Whisper + pyannote in prepare job using ThreadPoolExecutor (~4 min saved) - Add voiceprint.py speaker embedding module (pyannote/embedding, 70/30 blend) - Fix SSE done message dropped on stream close (asyncio.sleep flush before break) - Add onerror fallback: fetch result from DB if SSE drops after job completes - Reset UploadView to idle state after results delivered (no stuck finalizing screen) - Keep HistoryView always mounted; re-fetch only on tab activation (stops GET flooding) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>bd77e3e
-
Better diarization with pyannote, interruption detection, conversation summary with transcript
77265ce
-
MVP working - audio analysis pipeline with Whisper, MFCC diarization, Groq insights
b2eef7c