Commit graph

160 commits

Author SHA1 Message Date
jlightner
63e350a882 fix: Auto-refresh EventLog every 10s for processing/queued videos
Previously the event log only loaded once when the row was expanded,
so mid-pipeline videos only showed start events. Now the EventLog
component accepts a status prop and polls every 10s when the video is
processing or queued, silently updating without showing a loading spinner.
2026-03-31 16:23:33 +00:00
jlightner
9497d8f0e4 feat: Add real-time pipeline visibility — auto-refresh, stage timeline, activity feed, bulk log
- Backend: Video list now includes active_stage, active_stage_status, and
  stage_started_at fields via DISTINCT ON subquery
- Backend: New GET /admin/pipeline/recent-activity endpoint returns
  latest stage completions/errors with video context
- Frontend: 15-second auto-refresh with change detection — video rows
  flash when status changes
- Frontend: Stage timeline dots on processing/complete/error videos
  showing progress through stages 2-5, active stage pulses
- Frontend: Collapsible Recent Activity feed at top showing last 8
  stage completions/errors with duration and creator
- Frontend: Bulk operation scrollable log showing per-video results
  as they complete
- Frontend: Auto-refresh checkbox toggle in header
2026-03-31 16:12:57 +00:00
jlightner
04ae6d0703 feat: Add bulk pipeline reprocessing — creator filter, multi-select, clean retrigger
- Backend: POST /admin/pipeline/clean-retrigger/{video_id} endpoint that
  deletes pipeline_events, key_moments, transcript_segments, and Qdrant
  vectors before retriggering the pipeline
- Backend: QdrantManager.delete_by_video_id() for vector cleanup
- Frontend: Creator filter dropdown on pipeline admin page
- Frontend: Checkbox selection column with select-all
- Frontend: Bulk toolbar with Retrigger Selected and Clean Reprocess
  actions, sequential dispatch with progress bar, cancel support
- Bulk dispatch uses 500ms delay between requests to avoid slamming API
2026-03-31 15:24:59 +00:00
jlightner
f3e6a9c885 feat: Created useDocumentTitle hook and wired descriptive, route-specif…
- "frontend/src/hooks/useDocumentTitle.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/pages/CreatorsBrowse.tsx"
- "frontend/src/pages/CreatorDetail.tsx"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/pages/SearchResults.tsx"

GSD-Task: S04/T02
2026-03-31 08:56:16 +00:00
jlightner
6845f5c349 feat: Demoted nav brand to span, promoted page headings to h1, added sk…
- "frontend/src/App.tsx"
- "frontend/src/App.css"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/pages/CreatorsBrowse.tsx"
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/pages/AdminReports.tsx"

GSD-Task: S04/T01
2026-03-31 08:52:48 +00:00
jlightner
85712c15eb feat: Added mobile hamburger menu with 44px touch targets, Escape/outsi…
- "frontend/src/App.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T02
2026-03-31 08:45:33 +00:00
jlightner
fea0afdec0 feat: Refactored SearchAutocomplete from heroSize boolean to variant st…
- "frontend/src/components/SearchAutocomplete.tsx"
- "frontend/src/App.tsx"
- "frontend/src/App.css"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/SearchResults.tsx"

GSD-Task: S03/T01
2026-03-31 08:42:15 +00:00
jlightner
fa1fc82d5a feat: Created shared TagList component with max-4 overflow, applied acr…
- "frontend/src/components/TagList.tsx"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/pages/CreatorDetail.tsx"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T03
2026-03-31 08:35:07 +00:00
jlightner
b01e5949b6 feat: Replaced run-on dot-separated topic stats on CreatorDetail with c…
- "frontend/src/pages/CreatorDetail.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T02
2026-03-31 08:32:09 +00:00
jlightner
a9b65fcea9 feat: Topics page loads with all categories collapsed; expand/collapse…
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T01
2026-03-31 08:30:55 +00:00
jlightner
df559bbca0 feat: Added GET /api/v1/techniques/random endpoint returning {slug}, fe…
- "backend/routers/techniques.py"
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S01/T02
2026-03-31 08:24:38 +00:00
jlightner
9e4f10b0af feat: Added scale(1.02) hover to all 6 card types, cardEnter stagger an…
- "frontend/src/App.css"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/pages/CreatorDetail.tsx"
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/pages/SearchResults.tsx"

GSD-Task: S01/T01
2026-03-31 08:22:37 +00:00
jlightner
d0bdc6f516 feat: Extracted inline typeahead from Home.tsx into shared SearchAutoco…
- "frontend/src/components/SearchAutocomplete.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T02
2026-03-31 06:39:01 +00:00
jlightner
836fcb2304 feat: Added @keyframes pageEnter (opacity 0→1, translateY 8→0, 250ms ea…
- "frontend/src/App.css"

GSD-Task: S03/T02
2026-03-31 06:27:12 +00:00
jlightner
cf0205bd5c feat: Extracted catSlug to shared utility; added category accent border…
- "frontend/src/utils/catSlug.ts"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T01
2026-03-31 06:26:06 +00:00
jlightner
c481bafc7b feat: Replaced plain list rendering of related techniques with a respon…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T02
2026-03-31 06:15:25 +00:00
jlightner
6a793c2c9a feat: Added SubTopicPage with breadcrumbs and creator-grouped technique…
- "frontend/src/pages/SubTopicPage.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.tsx"
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/App.css"
- "frontend/src/pages/Home.tsx"

GSD-Task: S01/T02
2026-03-31 06:03:18 +00:00
jlightner
348089d635 feat: Added featured technique spotlight section and converted recently…
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T02
2026-03-31 05:48:48 +00:00
jlightner
810f96a640 feat: Added sort=random|recent query param to list_techniques endpoint…
- "backend/routers/techniques.py"
- "frontend/src/api/public-client.ts"

GSD-Task: S03/T01
2026-03-31 05:46:31 +00:00
jlightner
5a959cc9b2 feat: Added /about page with three content sections (what, how, who) an…
- "frontend/src/pages/About.tsx"
- "frontend/src/App.tsx"
- "frontend/src/components/AppFooter.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T01
2026-03-31 05:41:54 +00:00
jlightner
5f7a8a6f77 feat: Added popular topics pill-link section to homepage that fetches f…
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S01/T02
2026-03-31 05:37:10 +00:00
jlightner
881629b5c3 feat: Added hero tagline "Production Knowledge, Distilled", value propo…
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S01/T01
2026-03-31 05:35:30 +00:00
jlightner
813920a653 feat: replace views stat with topic-category breakdown on creator detail page 2026-03-31 05:24:32 +00:00
jlightner
80439d43cf feat: Added key_moment_count correlated subquery to technique list API…
- "backend/schemas.py"
- "backend/routers/techniques.py"
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T01
2026-03-31 05:23:37 +00:00
jlightner
0c8bbb32d6 feat: Removed yellow semantic-search-unavailable banner from search res…
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/App.css"
- "frontend/src/components/AppFooter.tsx"
- "frontend/package.json"

GSD-Task: S02/T02
2026-03-31 05:14:58 +00:00
jlightner
d5144307b8 feat: Key moment search results now link to parent technique page with…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/pages/TechniquePage.tsx"

GSD-Task: S01/T02
2026-03-31 05:04:05 +00:00
jlightner
9c519f22b8 feat: add tooltips to Show Payload, System Prompt, User Prompt, and Response in pipeline event log 2026-03-31 03:23:30 +00:00
jlightner
c23bc2314d fix: use gear glyph for LLM call events in pipeline log 2026-03-31 02:56:50 +00:00
jlightner
1fa590b9e0 fix: swap robot emoji for diamond glyph on LLM call events 2026-03-31 02:52:25 +00:00
jlightner
5b663c1e62 feat: meaningful pipeline status lifecycle — Not Started → Queued → In Progress → Complete/Errored
Replace stage-level statuses (pending/transcribed/extracted/published) with
user-meaningful lifecycle states (not_started/queued/processing/error/complete).

Backend:
- ProcessingStatus enum: not_started, queued, processing, error, complete
- run_pipeline sets 'processing' before dispatching Celery chain
- stage5 sets 'complete' (was 'published')
- stage3 no longer sets intermediate status (stays 'processing')
- New mark_pipeline_error task wired as link_error on chain
- _set_error_status helper marks video on permanent failure
- Ingest sets 'queued' (was 'transcribed')
- Migration 008 renames all existing values

Frontend:
- StatusFilter shows fixed-order lifecycle tabs: Not Started | Queued | In Progress | Errored | Complete
- Per-video badges show friendly labels instead of raw enum values
- Badge colors mapped to new statuses
2026-03-31 02:43:49 +00:00
jlightner
21dcf2f517 feat: remove review workflow — unused gate that blocked nothing
773 key moments sat at 'pending' with 0 approved/edited/rejected.
review_status was never checked by any public-facing query — all content
was always visible regardless of review state.

Removed:
- backend/routers/review.py (10 endpoints)
- backend/tests/test_review.py
- frontend ReviewQueue, MomentDetail pages
- frontend client.ts (review-only API client)
- frontend ModeToggle, StatusBadge components
- Review link from AdminDropdown, Moments link from pipeline rows
- ReviewStatus, PageReviewStatus enums from models
- review_mode config flag
- review_status columns (migration 007)
- ~80 lines of mode-toggle CSS

Pipeline now always sets processing_status to 'published'.
Migration 007 drops columns, enums, and migrates 'reviewed' → 'published'.
2026-03-31 02:34:12 +00:00
jlightner
3c4c2f9439 feat: add tooltip to Debug Mode toggle explaining its purpose 2026-03-31 02:23:12 +00:00
jlightner
4e5b41c46f feat: deep-link Inspect Pipeline button — auto-expand and scroll to video
TechniquePage's 'Inspect pipeline' button passes ?video=<id> to AdminPipeline.
Previously the query param was ignored. Now AdminPipeline reads it on mount,
auto-expands the matching video row, and smooth-scrolls it into view.
2026-03-31 02:16:36 +00:00
jlightner
62a94d51c8 fix: restore complete project tree from ub01 canonical state
Auto-mode commit e57d425 accidentally deleted 78 files (14,814 lines) during M005
execution. Subsequent commits rebuilt some frontend files but backend/, alembic/,
tests/, whisper/, docker configs, and prompts were never restored in this repo.

This commit restores the full project tree by syncing from ub01's working directory,
which has all M001-M007 features running in production containers.

Restored: backend/ (config, models, routers, database, redis, search_service, worker),
alembic/ (6 migrations), docker/ (Dockerfiles, nginx, compose), prompts/ (4 stages),
tests/, whisper/, README.md, .env.example, chrysopedia-spec.md
2026-03-31 02:10:41 +00:00
jlightner
a980965705 feat: Added flex-wrap, max-width, and tighter mobile gaps to prevent ho…
- "frontend/src/App.css"

GSD-Task: S06/T01
2026-03-30 19:48:30 +00:00
jlightner
eae4da48f8 feat: Added overflow: hidden, word-break, max-width: 100%, and min-widt…
- "frontend/src/App.css"

GSD-Task: S05/T01
2026-03-30 19:41:41 +00:00
jlightner
031f6d3d5b feat: Pruned dead UI, renamed view toggle to Oldest/Newest first, added…
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T02
2026-03-30 19:36:47 +00:00
jlightner
4186c6e208 feat: Added DebugModeToggle component and StatusFilter pill bar to Admi…
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.css"

GSD-Task: S04/T01
2026-03-30 19:34:11 +00:00
jlightner
ff1b24867f feat: DebugPayloadViewer component with copy, export, collapsible sections 2026-03-30 19:01:17 +00:00
jlightner
ec9e307538 feat: Added AppFooter component displaying app version, build date, com…
- "frontend/src/components/AppFooter.tsx"
- "frontend/vite.config.ts"
- "frontend/src/App.tsx"
- "frontend/src/App.css"
- "frontend/src/vite-env.d.ts"

GSD-Task: S06/T01
2026-03-30 12:00:58 +00:00
jlightner
96d7bc6e75 feat: Rewrote TopicsBrowse.tsx from vertical accordion to responsive 2-…
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/App.css"

GSD-Task: S05/T02
2026-03-30 11:48:51 +00:00
jlightner
66bf79ed4a feat: Added Music Theory as 7th category in canonical_tags.yaml with 8…
- "config/canonical_tags.yaml"
- "frontend/src/App.css"

GSD-Task: S05/T01
2026-03-30 11:44:18 +00:00
jlightner
7058cba307 feat: Reordered technique page sidebar (plugins first), added prominent…
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T01
2026-03-30 11:34:14 +00:00
jlightner
d00639a2ea feat: Added Head/Tail segmented toggle to EventLog with order param wir…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T02
2026-03-30 11:15:21 +00:00
jlightner
cd9dd6d8f9 feat: Created AdminDropdown component with click-outside/Escape close,…
- "frontend/src/components/AdminDropdown.tsx"
- "frontend/src/App.tsx"
- "frontend/src/App.css"

GSD-Task: S01/T01
2026-03-30 11:02:23 +00:00
jlightner
93a643f1b8 feat: Split key moment card header into standalone h3 title and flex-ro…
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T01
2026-03-30 08:55:48 +00:00
jlightner
b0038f21f7 feat: Added CSS grid layout splitting technique page into prose (left)…
- "frontend/src/App.css"
- "frontend/src/pages/TechniquePage.tsx"

GSD-Task: S02/T01
2026-03-30 08:47:55 +00:00
jlightner
171775452e feat: Built AdminPipeline.tsx page at /admin/pipeline with video table,…
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.tsx"
- "frontend/src/App.css"

GSD-Task: S01/T03
2026-03-30 08:35:11 +00:00
jlightner
e57d42582b fix: Fixed syntax errors in pipeline event instrumentation — _emit_even…
- "backend/pipeline/stages.py"

GSD-Task: S01/T01
2026-03-30 08:27:53 +00:00
jlightner
81f0ed916f fix: Creators page 422 — limit=200 exceeded API max of 100, also fix error display for Pydantic validation arrays 2026-03-30 02:37:37 -05:00