Commit graph

234 commits

Author SHA1 Message Date
jlightner
342a62ca6b style: purple (#c084fc) accent touches — plugin pills, stat numbers, section labels, ToC border, back-link hover 2026-04-03 07:21:29 +00:00
jlightner
e5badbbf75 style: thinner gradient border on featured technique card (2px → 1px) 2026-04-03 07:18:35 +00:00
jlightner
b132c4ac7b feat: restructure technique page — bibliography key moments, ToC-only sidebar, sticky title bar, solid featured border
- Move key moments below prose as bibliography-style sources with [N] indices
- Move signal chains and related techniques to main column below key moments
- Sidebar now dedicated to ToC only, sticky with scroll tracking
- Replace position:fixed reading header with sticky title bar within content area
- ToC smooth-scrolls on click with history.replaceState for hash updates
- Featured technique card: solid cyan-to-purple gradient border (border-image)
- Remove ReadingHeader component (replaced by title bar)
- Hide sidebar ToC on mobile (single-column reading)
- Related techniques grid defaults to 2-column in main content area
2026-04-03 07:16:03 +00:00
jlightner
6d910f504a fix: move scroll-spy hooks above early returns to fix React hooks ordering crash
M016 added useState/useMemo/useEffect hooks after conditional early
returns (loading/notFound/error), violating React rules of hooks.
Moved all hooks above the early returns so they execute on every render.
2026-04-03 06:46:16 +00:00
jlightner
4f8f612d77 chore: auto-commit after complete-milestone
GSD-Unit: M016
2026-04-03 06:27:26 +00:00
jlightner
c3e5a8fe86 feat: add embed-status endpoint for per-video embedding/Qdrant detail
GET /admin/pipeline/embed-status/{video_id} returns technique pages
linked to the video, Qdrant vector count, and last stage 6 event —
provides data for the currently non-functional Embed tab in admin UI.
2026-04-03 06:24:58 +00:00
jlightner
7d4168c048 feat: Added .section-heading utility class to unify four heading styles…
- "frontend/src/App.css"
- "frontend/src/pages/Home.tsx"

GSD-Task: S06/T02
2026-04-03 06:22:11 +00:00
jlightner
e98f43193e feat: Lifted scroll-spy state from TableOfContents to TechniquePage, cr…
- "frontend/src/components/ReadingHeader.tsx"
- "frontend/src/components/TableOfContents.tsx"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"

GSD-Task: S05/T01
2026-04-03 06:01:13 +00:00
jlightner
a16559e668 fix: add /app to sys.path for Celery forked workers importing services.avatar 2026-04-03 05:58:14 +00:00
jlightner
44e5905bd7 feat: auto-avatar integration with TheAudioDB
- Added avatar_url, avatar_source, avatar_fetched_at columns to Creator
  model with Alembic migration 014
- New backend/services/avatar.py — TheAudioDB lookup with token-based
  name similarity scoring and genre overlap bonus
- New Celery task fetch_creator_avatar for background avatar fetching
- Admin endpoints: POST /creators/{id}/fetch-avatar (single) and
  POST /creators/fetch-all-avatars (batch for missing avatars)
- Wired avatar_url into CreatorRead, CreatorInfo, and CreatorBrowseItem
  schemas so all API responses include avatar data
2026-04-03 05:55:42 +00:00
jlightner
89ef2751fa feat: Added IntersectionObserver scroll-spy to ToC highlighting the act…
- "frontend/src/components/TableOfContents.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T02
2026-04-03 05:54:14 +00:00
jlightner
0743d80b6a feat: Moved Table of Contents from main prose column to sidebar top; re…
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/components/TableOfContents.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T01
2026-04-03 05:52:47 +00:00
jlightner
61546bf25b perf: eliminate N+1 queries in stale-pages, add videos pagination, cache related techniques
- Rewrote stale-pages endpoint to use a single query with row_number
  window function instead of per-page queries for latest version + creator
- Added optional offset/limit/status/creator_id params to videos endpoint
  (backward compatible — defaults return all results)
- Added 1-hour Redis cache to _find_dynamic_related technique scoring
2026-04-03 05:50:53 +00:00
jlightner
46983ae43b feat: Added inline SVG logo mark (cyan arc + dot from favicon) to heade…
- "frontend/src/App.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T02
2026-04-03 05:47:05 +00:00
jlightner
094e832032 feat: Added favicon (SVG + 32px PNG), apple-touch-icon, OG social image…
- "frontend/public/favicon.svg"
- "frontend/public/favicon-32.png"
- "frontend/public/apple-touch-icon.png"
- "frontend/public/og-image.png"
- "frontend/index.html"

GSD-Task: S03/T01
2026-04-03 05:45:51 +00:00
jlightner
657d604e5b fix: Added collapse arrow styling, stage chevrons, filter right-alignme…
- "frontend/src/App.css"
- "frontend/src/pages/AdminPipeline.tsx"

GSD-Task: S02/T01
2026-04-03 05:38:10 +00:00
jlightner
5b9612e03f feat: Unified homepage layout: 42rem max-width on 5 sections, removed b…
- "frontend/src/App.css"

GSD-Task: S01/T01
2026-04-03 05:31:46 +00:00
jlightner
caedc9c224 fix: remove moments from recent cards, pin footer to bottom of card 2026-04-03 05:14:17 +00:00
jlightner
00cb865507 fix: admin dropdown hover gap bridge + recent card footer layout (creator left, moments, date right) 2026-04-03 05:07:06 +00:00
jlightner
c012afc0d3 chore: auto-commit after complete-milestone
GSD-Unit: M015
2026-04-03 04:44:59 +00:00
jlightner
4735463649 feat: Added hover-to-open with 150ms leave delay and matchMedia desktop…
- "frontend/src/components/AdminDropdown.tsx"

GSD-Task: S05/T01
2026-04-03 04:41:04 +00:00
jlightner
8b912e5a6f feat: Added Trending Searches section to homepage with real-time popula…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S04/T01
2026-04-03 04:37:36 +00:00
jlightner
3c5985f012 feat: Homepage displays a stats scorecard showing live article and crea…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S03/T02
2026-04-03 04:29:21 +00:00
jlightner
1f783c4216 feat: Added GET /api/v1/stats endpoint returning live technique_count (…
- "backend/routers/stats.py"
- "backend/main.py"

GSD-Task: S03/T01
2026-04-03 04:25:58 +00:00
jlightner
9f0b0922b0 feat: add GET /api/v1/stats endpoint with technique and creator counts 2026-04-03 04:24:58 +00:00
jlightner
b35082602f feat: Added "Last updated: Mon D" to creators browse rows and subtle da…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/CreatorsBrowse.tsx"
- "frontend/src/pages/Home.tsx"
- "frontend/src/App.css"

GSD-Task: S02/T02
2026-04-03 04:19:52 +00:00
jlightner
8d3f9fd74f feat: render last-updated dates on creators page and homepage cards 2026-04-03 04:17:53 +00:00
jlightner
18c76dd8ec feat: Added last_technique_at correlated subquery to creators API endpo…
- "backend/schemas.py"
- "backend/routers/creators.py"

GSD-Task: S02/T01
2026-04-03 04:16:47 +00:00
jlightner
8c81c472ea fix: pass last_technique_at through row unpacking 2026-04-03 04:15:39 +00:00
jlightner
acd0567e3c feat: add last_technique_at to creators API endpoint 2026-04-03 04:12:31 +00:00
jlightner
ea8a77be59 feat: Deployed search logging and popular searches endpoint to ub01, ra…
GSD-Task: S01/T02
2026-04-03 04:07:10 +00:00
jlightner
f64a0c1107 perf: Added SearchLog model, Alembic migration 013, Pydantic schemas, f…
- "backend/models.py"
- "backend/schemas.py"
- "backend/routers/search.py"
- "alembic/versions/013_add_search_log.py"

GSD-Task: S01/T01
2026-04-03 04:02:55 +00:00
jlightner
6940f172a3 fix: Serialize BodySection Pydantic models to dicts before JSONB storage
Stage 5 parses LLM output into list[BodySection] (Pydantic models) but
SQLAlchemy's JSONB column needs plain dicts. Added _serialize_body_sections()
helper that calls .model_dump() on each BodySection before DB write.
Fixes 'Object of type BodySection is not JSON serializable' errors.
2026-04-03 03:38:32 +00:00
jlightner
5a71539a2b fix: StageTabView limit 500→200 to stay within API max 2026-04-03 03:32:34 +00:00
jlightner
995d0c900d fix: StageTabView useCallback dependency loop — use ref for initial tab selection 2026-04-03 03:30:45 +00:00
jlightner
c7a4d8aa27 feat: Stage tab view for pipeline runs, rename stale→orphaned pages
- Expanded runs now show horizontal stage tabs (Segment→Extract→Classify→Synthesize→Embed)
- Each tab has status indicator dot (idle/running/done/error) with pulse animation
- Clicking a tab shows that stage's events with summary stats (LLM calls, tokens, duration)
- Error events auto-expanded with monospace error detail block
- Auto-selects the error stage or latest active stage on expand
- Renamed 'stale pages' to 'orphaned pages' in admin header
2026-04-03 03:24:43 +00:00
jlightner
fd48435a84 fix: MCP server API URL patterns — path params not JSON body, stage name mapping 2026-04-03 03:07:39 +00:00
jlightner
f27c18b555 fix: MCP server SQL uses correct column names (video_id, not pipeline_run_id) 2026-04-03 03:05:59 +00:00
jlightner
6375ce667e fix: MCP server port 8097→8101 (8097 already allocated on ub01) 2026-04-03 02:58:57 +00:00
jlightner
567f69a480 feat: Chrysopedia MCP server — 25 tools for pipeline, infra, content, observability, embeddings, prompts
Runs as chrysopedia-mcp container in Docker Compose with direct DB, Redis,
Docker socket, and API access. Streamable HTTP transport on port 8097.
Clients connect via http://ub01:8097/mcp
2026-04-03 02:57:27 +00:00
jlightner
bbea843235 feat: Show article + creator count stats on admin techniques page 2026-04-03 02:38:09 +00:00
jlightner
baa2a87243 style: Admin technique pages — full CSS styling, description text 2026-04-03 02:33:23 +00:00
jlightner
8be26d5ad2 chore: auto-commit after complete-milestone
GSD-Unit: M014
2026-04-03 02:21:29 +00:00
jlightner
989ca41162 feat: Added technique_section result rendering with Section badge, deep…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/pages/SearchResults.tsx"
- "frontend/src/components/SearchAutocomplete.tsx"

GSD-Task: S07/T02
2026-04-03 02:15:07 +00:00
jlightner
57b8705e26 feat: Added per-section embedding to stage 6 for v2 technique pages wit…
- "backend/schemas.py"
- "backend/pipeline/stages.py"
- "backend/pipeline/qdrant_client.py"
- "backend/search_service.py"
- "backend/pipeline/test_section_embedding.py"

GSD-Task: S07/T01
2026-04-03 02:12:56 +00:00
jlightner
7d805b80e3 feat: Built AdminTechniquePages page at /admin/techniques with table, e…
- "frontend/src/pages/AdminTechniquePages.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.tsx"
- "frontend/src/components/AdminDropdown.tsx"

GSD-Task: S06/T02
2026-04-03 01:59:49 +00:00
jlightner
495d1fa489 feat: Added paginated GET /admin/pipeline/technique-pages endpoint with…
- "backend/routers/pipeline.py"
- "backend/schemas.py"

GSD-Task: S06/T01
2026-04-03 01:55:35 +00:00
jlightner
5a5295ae3f fix: Deployed v2-aware frontend to ub01 and verified production site lo…
GSD-Task: S05/T02
2026-04-03 01:46:22 +00:00
jlightner
48bcf26bee feat: Added format-aware v2 body_sections rendering with nested TOC, ci…
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/components/TableOfContents.tsx"
- "frontend/src/utils/citations.tsx"
- "frontend/src/App.css"

GSD-Task: S05/T01
2026-04-03 01:42:56 +00:00
jlightner
7070ef3f51 test: Added 12 unit tests covering compose prompt construction, branchi…
- "backend/pipeline/test_compose_pipeline.py"

GSD-Task: S04/T02
2026-04-03 01:33:16 +00:00